Big-Ω ও Big-Θ নোটেশন
এই পাঠে যা শিখবেন
- Big-Omega ($\Omega$)-এর আনুষ্ঠানিক সংজ্ঞা — লোয়ার বাউন্ড
- Big-Theta ($\Theta$)-এর আনুষ্ঠানিক সংজ্ঞা — টাইট বাউন্ড (O এবং Ω একসাথে)
- $3n^2+5n+2=\Theta(n^2)$-এর একটি সম্পূর্ণ, উভয়দিকের worked প্রমাণ
- O/Ω/Θ-কে ≤/≥/= এর সাথে তুলনা করে সহজে মনে রাখার পদ্ধতি
১ · Big-Omega ($\Omega$) — লোয়ার বাউন্ড
L37-এ Big-O দেখিয়েছিল একটি ফাংশন সর্বোচ্চ কত দ্রুত বাড়তে পারে। কিন্তু কখনো কখনো আমরা উল্টো প্রশ্ন করতে চাই — একটি ফাংশন সর্বনিম্ন কত দ্রুত বাড়ে তার একটি গ্যারান্টি। এই কাজ করে Big-Omega ($\Omega$)Big-Omegaএকটি ফাংশনের বৃদ্ধির হারের নিচের সীমা (lower bound) বর্ণনা করার নোটেশন — বলে "এই ফাংশন এর চেয়ে ধীরে বাড়ে না"। —
$f(n) = \Omega(g(n))$ যদি এবং কেবল যদি ধনাত্মক ধ্রুবক $c$ এবং $n_0$ থাকে এমন যে —
$$f(n) \geq c \cdot g(n) \quad \text{সব } n \geq n_0 \text{-এর জন্য}$$
লক্ষ্য করুন — এটি Big-O-এর সংজ্ঞার ঠিক আয়না-প্রতিবিম্ব (mirror image), শুধু $\leq$-এর বদলে $\geq$।
২ · Big-Theta ($\Theta$) — টাইট বাউন্ড
যখন একটি ফাংশনের উপরের ও নিচের সীমা একই growth rate-এ মিলে যায়, তখন আমরা বলতে পারি সেই ফাংশনের growth rate ঠিক ততটাই — এই ধারণাটি ধরে Big-Theta ($\Theta$)Big-Thetaএকটি ফাংশনের বৃদ্ধির হারের টাইট (tight) বাউন্ড — একই সাথে upper ও lower bound, অর্থাৎ ফাংশনটি ঠিক এই হারে বাড়ে, ধ্রুবক গুণক বাদে। —
$$f(n) = \Theta(g(n)) \quad \Longleftrightarrow \quad f(n) = O(g(n)) \ \text{এবং} \ f(n) = \Omega(g(n))$$
অর্থাৎ $f$ এবং $g$-এর growth rate ধ্রুবক গুণক পর্যন্ত হুবহু সমান — $f$ কখনো $g$-এর চেয়ে দ্রুতও বাড়ে না, ধীরেও বাড়ে না।
৩ · Worked উদাহরণ — $3n^2+5n+2=\Theta(n^2)$
L37-এ আমরা ইতিমধ্যে দেখিয়েছি উপরের বাউন্ড। এখন নিচের বাউন্ডও দেখানো দরকার।
উপরের বাউন্ড (L37 থেকে): $c=10, n_0=1$ দিয়ে, সব $n \geq 1$-এ $3n^2+5n+2 \leq 10n^2$।
নিচের বাউন্ড (নতুন): $c=3, n_0=1$ বেছে নিন। সব $n \geq 1$-এর জন্য $5n+2 > 0$ (স্পষ্টতই, যেহেতু $n \geq 1$), তাই —
$$3n^2 + 5n + 2 \geq 3n^2 \quad \text{(তুচ্ছভাবে সত্য, কারণ } 5n+2 > 0 \text{)}$$
এই দুই বাউন্ড একসাথে দেখায় সব $n \geq 1$-এর জন্য —
$$3n^2 \leq 3n^2+5n+2 \leq 10n^2$$
অর্থাৎ $3n^2+5n+2$ সবসময় $n^2$-এর একটি ধ্রুবক গুণিতকের মধ্যে "স্যান্ডউইচ" হয়ে থাকে — এটিই $3n^2+5n+2=\Theta(n^2)$-এর প্রমাণ।
ok = True
for n in range(1, 51):
f = 3*n**2 + 5*n + 2
upper = 10*n**2 # c=10 (Big-O, L37 থেকে)
lower = 3*n**2 # c=3 (Big-Omega, এই পাঠে নতুন)
if not (lower <= f <= upper):
ok = False
print("n=1 থেকে 50 পর্যন্ত 3n^2 <= 3n^2+5n+2 <= 10n^2 ?", ok)
print("n=1: নিচের বাউন্ড", 3*1**2, "<=", 3*1**2+5*1+2, "<= উপরের বাউন্ড", 10*1**2)
print("n=50: নিচের বাউন্ড", 3*50**2, "<=", 3*50**2+5*50+2, "<= উপরের বাউন্ড", 10*50**2)
print()
print("দুই বাউন্ডই ধরে -> 3n^2+5n+2 = Theta(n^2) নিশ্চিত")
৪ · মনে রাখার সহজ ছক
O, Ω, Θ — এই তিনটি নোটেশনকে সংখ্যা তুলনার সাথে মিলিয়ে মনে রাখা সহজ —
$f$ সর্বোচ্চ $g$-এর সমান হারে বাড়ে (upper bound)
$f$ সর্বনিম্ন $g$-এর সমান হারে বাড়ে (lower bound)
$f$ ঠিক $g$-এর সমান হারে বাড়ে (tight bound — উভয় দিক)
O, Ω, Θ একসাথে অ্যালগরিদমের growth rate বর্ণনা করার একটি সম্পূর্ণ গাণিতিক ভাষা তৈরি করে — উপরের সীমা, নিচের সীমা এবং টাইট বাউন্ড। L39-এ আমরা এই ভাষা ব্যবহার করে সবচেয়ে সাধারণ জটিলতা ক্লাসগুলো ($O(1)$ থেকে $O(2^n)$ পর্যন্ত) সাজিয়ে দেখব।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ যদি একটি অ্যালগরিদমের জন্য $f(n)=O(n^2)$ প্রমাণিত থাকে কিন্তু $f(n)=\Omega(n^2)$ প্রমাণিত না থাকে, তাহলে কি আমরা বলতে পারি $f(n)=\Theta(n^2)$?
না। $\Theta$-এর সংজ্ঞা অনুযায়ী উভয় দিকই — $O$ এবং $\Omega$ — আলাদাভাবে প্রমাণ করতে হবে। শুধু উপরের বাউন্ড জানা থাকলে ফাংশনটি আসলে তার চেয়ে অনেক ধীরেও বাড়তে পারে (যেমন $f(n)=O(1)$ হলেও এটি $O(n^2)$-এর সংজ্ঞা সন্তুষ্ট করে, কিন্তু $\Omega(n^2)$ নয়)।
এই কারণেই L37-এ শুধু Big-O দেখানো এবং এই পাঠে (L38) আলাদাভাবে Big-Omega দেখানো দুটোই প্রয়োজন ছিল — $3n^2+5n+2$-এর ক্ষেত্রে দুটোই সত্য বলে আমরা $\Theta(n^2)$ দাবি করতে পেরেছি, কিন্তু এটি সবসময় স্বয়ংক্রিয়ভাবে হয় না।
প্র ০২ Quicksort-এর worst case $\Theta(n^2)$ কিন্তু average case $\Theta(n \log n)$ (L40-এ বিস্তারিত)। এই দুটো কি একে অপরের সাথে সাংঘর্ষিক?
না, সাংঘর্ষিক নয় — কারণ এই দুটো ভিন্ন প্রেক্ষাপটে (context) বলা দাবি। "$\Theta(n^2)$ worst case" মানে সবচেয়ে খারাপ ইনপুটে (যেমন ইতিমধ্যে সাজানো একটি অ্যারে, খারাপ pivot বাছাইয়ের সাথে) ঠিক $n^2$-এর হারে বাড়ে। "$\Theta(n \log n)$ average case" মানে র্যান্ডম/সাধারণ ইনপুটে গড়ে $n \log n$-এর হারে বাড়ে।
একই অ্যালগরিদমের বিভিন্ন ইনপুট-শ্রেণীর (input class) জন্য বিভিন্ন Θ-বাউন্ড থাকতে পারে — এটি কোনো অসামঞ্জস্যতা নয়, বরং একটি গুরুত্বপূর্ণ সূক্ষ্মতা যা L40-এ (সেরা/গড়/সবচেয়ে খারাপ কেস বিশ্লেষণ) বিস্তারিত কভার হবে।
প্র ০৩ $O(g(n))$ এবং $\Omega(g(n))$-এর সংজ্ঞায় $(c, n_0)$ কি একই মান হতে হবে?
না, একদমই না। উপরের worked উদাহরণেই দেখা গেছে — Big-O-তে আমরা $c=10$ ব্যবহার করেছি, কিন্তু Big-Omega-তে $c=3$। এই দুটো সম্পূর্ণ স্বাধীন প্রমাণ, প্রতিটির নিজস্ব $(c, n_0)$ বেছে নেওয়ার স্বাধীনতা আছে।
একমাত্র শর্ত হলো: Big-O-এর $c$ যথেষ্ট বড় হতে হবে যাতে $f(n) \leq c \cdot g(n)$ ধরে (উপরের দিকে মার্জিন), আর Big-Omega-এর $c$ যথেষ্ট ছোট হতে হবে যাতে $f(n) \geq c \cdot g(n)$ ধরে (নিচের দিকে মার্জিন)। এই দুই $c$ প্রায় সবসময়ই আলাদা হবে, এবং সেটাই স্বাভাবিক।
অনুশীলন
-
প্রমাণ করুন: $n^2 + 100 = \Omega(n^2)$ প্রমাণ করুন একটি নির্দিষ্ট $(c, n_0)$ জোড়া বেছে নিয়ে।
$c=1, n_0=1$ বেছে নিন। সব $n \geq 1$-এর জন্য $n^2+100 \geq n^2 = 1 \cdot n^2$ (তুচ্ছভাবে সত্য, কারণ $100 > 0$)। তাই সংজ্ঞা সন্তুষ্ট, $n^2+100=\Omega(n^2)$ প্রমাণিত। প্রকৃতপক্ষে এটি $O(n^2)$-ও (একই যুক্তিতে যেমন $3n^2+5n+2$-এর ক্ষেত্রে করা হয়েছে), তাই $n^2+100=\Theta(n^2)$।
-
কোড পরীক্ষা করুন: উপরের কোড সেলে
lower = 3*n**2-এর বদলেlower = 4*n**2বসিয়ে দেখুন সব $n=1..50$-এ ইনইকুয়ালিটি এখনো ধরে কি না, এবং কেন।$c=4$-এ, $n=1$-এ পরীক্ষা: $4(1)^2=4$, কিন্তু $3(1)^2+5(1)+2=10$। যেহেতু $10 \geq 4$, এই নির্দিষ্ট বিন্দুতে এখনো ঠিক আছে! কিন্তু বড় $n$-এ (যেমন $n=50$): $4(50)^2=10000$, আর $3(50)^2+5(50)+2=7752$। এখানে $7752 < 10000$ — ইনইকুয়ালিটি ভেঙে যায়। তাই $c=4$ সব $n$-এ কাজ করে না — এটি দেখায় $c$ বাছাই যত্নসহকারে করা জরুরি, ছোট $n$-এ কাজ করলেই যথেষ্ট নয়।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৪৪টি পাঠ পরবর্তী পাঠ — সাধারণ জটিলতা ক্লাস, $O(1)$ থেকে $O(n!)$ পর্যন্ত, বাস্তব সংখ্যাসহ।
- Data Structures & Algorithms কোর্স সঙ্গী কোর্স O/Ω/Θ প্রতিটি সর্টিং ও সার্চিং অ্যালগরিদমের বিশ্লেষণে কীভাবে ব্যবহৃত হয় তা দেখতে DSA কোর্সটিও দেখুন।
- সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, DBMS, HTML & CSS ও Discrete Mathematics — সব এক জায়গায়।