কখনও কখনও আমি মাঝে মাঝে কিছু সহ অদ্ভুত Θ চিহ্ন সহ see (এন) দেখতে পাই এবং কখনও কখনও কেবল ও (এন)। কেউ কীভাবে এই প্রতীকটি কীভাবে টাইপ করতে হয় তা জানে না বা এটির অর্থ কি অন্যরকম?
কখনও কখনও আমি মাঝে মাঝে কিছু সহ অদ্ভুত Θ চিহ্ন সহ see (এন) দেখতে পাই এবং কখনও কখনও কেবল ও (এন)। কেউ কীভাবে এই প্রতীকটি কীভাবে টাইপ করতে হয় তা জানে না বা এটির অর্থ কি অন্যরকম?
উত্তর:
যদি একটি অ্যালগরিদম Θ (g (n)) এর হয় তবে এর অর্থ এন (ইনপুট আকার) হিসাবে আলগোরিদমের চলমান সময়টি বৃহত্তর (g) এর সমানুপাতিক।
যদি একটি অ্যালগরিদম ও (জি (এন)) এর হয় তবে এর অর্থ হ'ল এন বড় হওয়ার সাথে সাথে অ্যালগরিদমের চলমান সময়টি সর্বাধিক আনুপাতিক জি (এন) এর সাথে হয়।
সাধারণত, লোকেরা ও (জি (এন)) সম্পর্কে কথা বলার পরেও তাদের আসলে mean (জি (এন)) বোঝায় তবে প্রযুক্তিগতভাবে, একটি পার্থক্য রয়েছে।
ও (এন) উপরি বাউন্ড উপস্থাপন করে। Θ (n) এর অর্থ টাইট বাঁধা। Ω (n) নিম্ন সীমাটি উপস্থাপন করে।
f (x) = Θ (g (x)) iff f (x) = O (g (x)) এবং f (x) = Ω (g (x))
মূলত যখন আমরা বলি একটি আলগোরিদিম হে (ঢ) হয়, এটিও হে (ঢ 2 হে (ঢ), 1000000 ), হে (2 এন ), ... কিন্তু একটি Θ (ঢ) আলগোরিদিম না Θ (ঢ 2 ) ।
আসলে, যেহেতু f (n) = Θ (g (n)) এর অর্থ n এর পর্যাপ্ত পরিমাণে বৃহত মান রয়েছে, f (n) c এর কিছু মানের জন্য c 1 g (n) এবং c 2 g (n) এর মধ্যে আবদ্ধ হতে পারে 1 এবং গ 2 , অর্থাত্ f এর বৃদ্ধির হার asyptotically g এর সমান: g একটি নিম্ন বাউন্ড এবং f এর উপরের সীমানা হতে পারে। এটি সরাসরি বোঝায় যে এফটি একটি নিম্ন বাউন্ড এবং উপরের বাউন্ডও হতে পারে। অতএব,
f (x) = Θ (g (x)) iff g (x) = Θ (f (x))
একইভাবে, f (n) = Θ (g (n)) দেখাতে, এটি g এর উপরের বাউন্ডের (যেমন f (n) = O (g (n))) দেখাতে যথেষ্ট এবং f এর একটি নিম্ন সীমা g (যেমন f (n) = Ω (g (n)) যা g (n) = O (f (n))) এর ঠিক একই জিনিস। concisely,
f (x) = Θ (g (x)) iff f (x) = O (g (x)) এবং g (x) = O (f (x))
ω
ফাংশনের আলগা উপরের এবং looseিলে boundালা সীমানাকে উপস্থাপন করে লিটল ওহ এবং লিটল ওমেগা ( ) স্বীকৃতিগুলিও রয়েছে।
সংক্ষেপ:
f(x) = O(g(x))
(বড়-OH) মানে যে বৃদ্ধির হারf(x)
এসিম্পটোটিকভাবে হয় কম বা সমান বৃদ্ধির হারg(x)
।
f(x) = Ω(g(x))
(বড়-ওমেগা) মানে যে বৃদ্ধির হারf(x)
এসিম্পটোটিকভাবে হয় তার চেয়ে অনেক বেশী বা সমান বৃদ্ধির হারg(x)
f(x) = o(g(x))
(অল্প OH) মানে যে বৃদ্ধির হারf(x)
এসিম্পটোটিকভাবে হয় কম বৃদ্ধির হারg(x)
।
f(x) = ω(g(x))
(অল্প ওমেগা) মানে যে বৃদ্ধির হারf(x)
এসিম্পটোটিকভাবে হয় তার চেয়ে অনেক বেশী বৃদ্ধির হারg(x)
f(x) = Θ(g(x))
(থেটা) মানে যে বৃদ্ধির হারf(x)
এসিম্পটোটিকভাবে হয় সমান বৃদ্ধির হারg(x)
আরও বিশদ আলোচনার জন্য, আপনি উইকিপিডিয়ায় সংজ্ঞাটি পড়তে পারেন বা Cormen et al দ্বারা পরিচিতি অ্যালগরিদমের মতো ক্লাসিক পাঠ্যপুস্তকের সাথে পরামর্শ করতে পারেন ।
>= \Omega(...)
মানে? আমি যদি এটি বলি যে এটির সদস্য \Omega(...)
, তবে এটি এর চেয়ে বড় যদি হয়? এটি কী বোঝায়?
কোন স্বরলিপি মানে কী তা মনে রাখার জন্য একটি সহজ উপায় (একটি কৌশল, আমি অনুমান করি)।
সমস্ত বিগ-ও স্বরলিপিগুলিতে একটি বার রয়েছে বলে মনে করা যেতে পারে।
যখন একটি at এ খুঁজছেন, বারটি নীচে রয়েছে, সুতরাং এটি একটি (অ্যাসিপটোটিক) নীচের দিকে আবদ্ধ।
যখন একটি at তাকানো হয়, বারটি অবশ্যই মাঝখানে থাকে। সুতরাং এটি একটি (asympotic) আঁটসাঁট আবদ্ধ।
হে হস্তাক্ষর যখন, আপনি সাধারণত শীর্ষে শেষ, এবং একটি স্কিগল আঁকুন। সুতরাং ও (এন) হ'ল ফাংশনের উপরের সীমা bound সত্য কথা বলতে গেলে, এটি বেশিরভাগ ফন্টের সাথে কাজ করে না, তবে এটি নামের আসল সমর্থনযোগ্যতা।
একটি বড় "ও"
একটি হ'ল বিগ থেটা
http://en.wikipedia.org/wiki/Big_O_notation
বিগ হে মানে আপনার অ্যালগরিদম প্রদত্ত এক্সপ্রেশন ছাড়া আর কোনও পদক্ষেপে কার্যকর হবে (n ^ 2)
বড় ওমেগা মানে আপনার অ্যালগরিদম প্রদত্ত অভিব্যক্তিটির চেয়ে কম পদক্ষেপে কার্যকর হবে (n ^ 2)
যখন উভয় শর্ত একই অভিব্যক্তির জন্য সত্য হয়, আপনি বড় থিটা স্বরলিপি ব্যবহার করতে পারেন ....
ইতিমধ্যে এখানে সুন্দরভাবে সংক্ষিপ্তিত একটি তাত্ত্বিক সংজ্ঞা প্রদানের পরিবর্তে আমি একটি সাধারণ উদাহরণ দেব:
অনুমান রান টাইম f(i)
হয় O(1)
। নীচে একটি কোড খণ্ড রয়েছে যার অ্যাসিম্পটোটিক রানটাইম Θ(n)
। এটি সর্বদা ফাংশনটির f(...)
n
সময়কে কল করে । নিম্ন এবং উপরের উভয় প্রান্তই n।
for(int i=0; i<n; i++){
f(i);
}
নীচের দ্বিতীয় কোড খণ্ডটিতে অসম্পূর্ণ রানটাইম রয়েছে O(n)
। এটি f(...)
বেশিরভাগ n
সময়ে ফাংশনটি কল করে । উপরের গণ্ডিটি এন, তবে নীচের গণ্ডিটি ভিতরে হতে পারে তার উপর নির্ভর করে Ω(1)
বা হতে পারে ।Ω(log(n))
f2(i)
for(int i=0; i<n; i++){
if( f2(i) ) break;
f(i);
}
Θ(n)
রেখাযুক্তভাবে বৃদ্ধি পাবে যেমন এন বৃদ্ধি পাবে, যেমন রানটাইম টি টি টি (এন) = আ * এন + বি হিসাবে প্রকাশ করা যেতে পারে। এন এর ছোট মানগুলির জন্য (যেমন এন = 1 বা 2) আচরণের বর্ণনা দেওয়ার পক্ষে এটি সর্বোত্তম উপায় নাও হতে পারে - সম্ভবত আপনার কিছু সূচনা কোড রয়েছে যা f (i) এর চেয়ে অনেক বেশি সময় নেয়।
থিতা হ'ল সংক্ষিপ্ত পন্থাটি একটি বিশেষ সিটেশন হিসাবে উল্লেখ করা যেখানে বড় ও ওমেগা একই।
সুতরাং, যদি এক দাবী The Theta is expression q
, তারপর তারা অগত্যা যে দাবি করছেন Big O is expression q
এবং Omega is expression q
।
রুক্ষ সাদৃশ্য:
যদি: থিটা দাবি করে, "সেই প্রাণীর 5 পা রয়েছে" " তারপরে এটি অনুসরণ করে: বিগ ও সত্য ("সেই প্রাণীর 5 টির চেয়ে কম বা সমান অংশ রয়েছে" ") এবং ওমেগা সত্য (" এই প্রাণীটির 5 টিরও বেশি বা তার সমান রয়েছে "")
এটি কেবল মোটামুটি উপমা কারণ অভিব্যক্তিগুলি নির্দিষ্টভাবে নির্দিষ্ট সংখ্যা নয়, পরিবর্তে লগ (এন), এন, এন n 2, (ইত্যাদি) এর আকারের বিভিন্ন ক্রমের ক্রিয়াকলাপ।
একটি চার্ট পূর্ববর্তী উত্তরগুলি বুঝতে সহজ করে তুলতে পারে:
ইংরেজীতে,
বামদিকে, লক্ষ্য করুন যে এখানে একটি উপরের বাউন্ড এবং নীচে একটি আবদ্ধ রয়েছে যা উভয়ই একই মানের আকারের (যেমন জি (এন) )। ধ্রুবকগুলিকে উপেক্ষা করুন এবং যদি উপরের বাউন্ড এবং নিম্ন সীমাটির পরিমাণ একই মাত্রার হয় তবে, কেউ বৈধভাবে বলতে পারেন f (n) = Θ (g (n)) বা f (n) g (n) এর বৃহত থিটারে ।
ঠিক আছে, সহজ উদাহরণ শুরু করে, বলছে উপরের বাউন্ড ছ (ঢ) কেবল মাত্রার ক্রম এবং উপেক্ষা করে ধ্রুবক গ (সমস্ত ঠিক যেমন বড় হে স্বরলিপি না)।
f(n)
জন্যে O(n)
যদি ইতিবাচক বিদ্যমান k
যেমনf(n)<=k*n
f(n)
জন্যে Θ(n)
যদি ইতিবাচক বিদ্যমান k1
, k2
যেমনk1*n<=f(n)<=k2*n
আসুন বিবেচনা করুন f(n) > 0
এবং সবার g(n) > 0
জন্য n
। এটি বিবেচনা করা ঠিক আছে, কারণ দ্রুততম আসল অ্যালগরিদমে কমপক্ষে একটি অপারেশন রয়েছে এবং শুরুর পরে তার কার্যকরকরণ সম্পন্ন করে। এটি ক্যালকুলাসকে সহজতর করবে, কারণ আমরা f(n)
পরম মানের ( |f(n)|
) পরিবর্তে মান ( ) ব্যবহার করতে পারি ।
f(n) = O(g(n))
সাধারণ:
f(n)
0 ≤ lim ──────── < ∞
n➜∞ g(n)
এর জন্য g(n) = n
:
f(n)
0 ≤ lim ──────── < ∞
n➜∞ n
উদাহরণ:
Expression Value of the limit
------------------------------------------------
n = O(n) 1
1/2*n = O(n) 1/2
2*n = O(n) 2
n+log(n) = O(n) 1
n = O(n*log(n)) 0
n = O(n²) 0
n = O(nⁿ) 0
Counterexamples:
Expression Value of the limit
-------------------------------------------------
n ≠ O(log(n)) ∞
1/2*n ≠ O(sqrt(n)) ∞
2*n ≠ O(1) ∞
n+log(n) ≠ O(log(n)) ∞
f(n) = Θ(g(n))
সাধারণ:
f(n)
0 < lim ──────── < ∞
n➜∞ g(n)
এর জন্য g(n) = n
:
f(n)
0 < lim ──────── < ∞
n➜∞ n
উদাহরণ:
Expression Value of the limit
------------------------------------------------
n = Θ(n) 1
1/2*n = Θ(n) 1/2
2*n = Θ(n) 2
n+log(n) = Θ(n) 1
Counterexamples:
Expression Value of the limit
-------------------------------------------------
n ≠ Θ(log(n)) ∞
1/2*n ≠ Θ(sqrt(n)) ∞
2*n ≠ Θ(1) ∞
n+log(n) ≠ Θ(log(n)) ∞
n ≠ Θ(n*log(n)) 0
n ≠ Θ(n²) 0
n ≠ Θ(nⁿ) 0
উপসংহার: আমরা বড় ও, বড় big এবং বড় Ω কে একই জিনিস হিসাবে বিবেচনা করি।
কেন? আমি নীচের কারণটি বলব:
প্রথমত, আমি একটি ভুল বক্তব্য পরিষ্কার করব, কিছু লোক মনে করে যে আমরা কেবল সবচেয়ে খারাপ সময়ের জটিলতা যত্নশীল, তাই আমরা সর্বদা বড় of এর পরিবর্তে বড় ও ব্যবহার করি θ আমি বলব এই লোকটি বোকা লাগছে। উপরের এবং নিম্ন সীমাটি একটি ফাংশন বর্ণনা করতে ব্যবহৃত হয়, সময়ের জটিলতা বর্ণনা করতে ব্যবহৃত হয় না। সবচেয়ে খারাপ সময় ফাংশনটির উপরের এবং নিম্ন সীমাবদ্ধ থাকে; সেরা সময় ফাংশন এর উচ্চ এবং নিম্ন সীমাবদ্ধ আছে।
বড় ও ও বড় between এর মধ্যে স্পষ্টভাবে সম্পর্কটি ব্যাখ্যা করার জন্য, আমি প্রথমে বড় ও ও ছোট ও এর মধ্যে সম্পর্কটি ব্যাখ্যা করব। সংজ্ঞা থেকে, আমরা সহজেই জানতে পারি যে ছোট ও বড় ও এর একটি উপসেট example উদাহরণস্বরূপ :
টি (এন) = এন ^ 2 + এন, আমরা টি (এন) = ও (এন ^ 2), টি (এন) = ও (এন ^ 3), টি (এন) = ও (এন ^ 4) বলতে পারি। তবে ছোট ও এর জন্য টি (এন) = ও (এন ^ 2) ছোট ও এর সংজ্ঞা পূরণ করে না। সুতরাং কেবল টি (এন) = ও (এন ^ 3), টি (এন) = ও (এন ^ 4) ছোট ও এর জন্য সঠিক। অপ্রয়োজনীয় টি (এন) = ও (এন ^ 2) কী? এটা বড় θ!
সাধারণত, আমরা বলি বড় হে হ'ল হে (এন ^ 2), টি (এন) = ও (এন ^ 3), টি (এন) = ও (এন ^ 4) বলা খুব কমই। কেন? কারণ আমরা বড় ওকে অবচেতনভাবে বড় হিসাবে বিবেচনা করি।
একইভাবে, আমরা অবচেতনভাবেও বড়কে বড় হিসাবে বিবেচনা করি।
এক কথায়, বড় ও, বড় θ এবং বড় the সংজ্ঞা থেকে একই জিনিস নয়, তবে তারা আমাদের মুখ এবং মস্তিষ্কে একই জিনিস।