পাঠ ১৩ · ৫৭-এর মধ্যে · মডিউল ৩
Home / Courses / Design and Analysis of Algorithms / রিকারেন্স রিলেশন

মাস্টার থিওরেম

The master theorem
১৫ মিনিট পড়া কঠিন · Advanced Python কোডসহ সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • মাস্টার থিওরেমের সুনির্দিষ্ট বিবৃতি — তিনটি case, প্রতিটির শর্তসহ
  • তিনটি জেনুইন সংখ্যাগত উদাহরণ, প্রতিটি case-এর জন্য একটি করে, ধাপে ধাপে যাচাই করা
  • রেগুলারিটি কন্ডিশন (case ৩) কী এবং কেন এটি প্রয়োজন
  • মাস্টার থিওরেমের সীমাবদ্ধতা — কখন এটি প্রযোজ্য নয়
  • একটি ডেরিভ করা বাউন্ড সত্যিকারের কোড দিয়ে পরীক্ষামূলকভাবে যাচাই করা

১ · মাস্টার থিওরেম — বিবৃতি

মাস্টার থিওরেমMaster Theoremএকটি নির্দিষ্ট আকৃতির (aT(n/b)+f(n)) রিকারেন্সের অ্যাসিম্পটোটিক সমাধান সরাসরি বলে দেওয়ার একটি সুত্র, যা f(n)-কে n^(log_b a)-এর সাথে তুলনা করে তিনটি case-এ ভাগ করে। ধরা যাক $a \ge 1$ এবং $b > 1$ ধ্রুবক, এবং $f(n)$ একটি অ্যাসিম্পটোটিকভাবে ধনাত্মক ফাংশন। তাহলে নিচের রিকারেন্সের সমাধান (যেখানে $n/b$-কে $\lfloor n/b \rfloor$ বা $\lceil n/b \rceil$ ধরা হয় — এই টেকনিক্যাল পার্থক্য অ্যাসিম্পটোটিক ফলাফল পরিবর্তন করে না):

$$T(n) = aT(n/b) + f(n)$$

নির্ভর করে $f(n)$-কে "ওয়াটারশেড" ফাংশন $n^{\log_b a}$-এর সাথে কীভাবে তুলনা করা যায়, তার উপর — এই মান হলো, স্বজ্ঞাতভাবে, গাছের লিফ সংখ্যা (L12-এর রিকার্সন ট্রির ভাষায়, যদি প্রতিটি লিফের খরচ $\Theta(1)$ হতো)।

f(n) বনাম n^(log_b a) তুলনা করো Case ১ · f(n) ছোট f(n)=O(n^(log_b a − ε)) Case ২ · f(n) সমতুল্য f(n)=Θ(n^(log_b a)·logᵏn) Case ৩ · f(n) বড় f(n)=Ω(n^(log_b a + ε)) + regularity Θ(n^(log_b a)) Θ(n^(log_b a)·logᵏ⁺¹n) Θ(f(n))
লিফের মোট কাজ ($n^{\log_b a}$) না রুটের কাজ ($f(n)$) — কে প্রাধান্য পায় সেটাই নির্ধারণ করে কোন case প্রযোজ্য।
Case ১
যদি $f(n) = O(n^{\log_b a - \epsilon})$ হয় কোনো ধ্রুবক $\epsilon>0$-এর জন্য (অর্থাৎ $f(n)$ পলিনমিয়ালি ছোট), তাহলে $T(n) = \Theta(n^{\log_b a})$ — লিফগুলো প্রাধান্য পায়।
Case ২
যদি $f(n) = \Theta(n^{\log_b a}\log^k n)$ হয় কোনো ধ্রুবক $k\ge0$-এর জন্য (সাধারণত $k=0$: $f(n)=\Theta(n^{\log_b a})$), তাহলে $T(n) = \Theta(n^{\log_b a}\log^{k+1} n)$ — সব স্তর সমান অবদান রাখে।
Case ৩
যদি $f(n) = \Omega(n^{\log_b a + \epsilon})$ হয় ($\epsilon>0$) এবং রেগুলারিটি কন্ডিশন $a f(n/b) \le c f(n)$ কোনো ধ্রুবক $c<1$-এর জন্য সত্য হয়, তাহলে $T(n) = \Theta(f(n))$ — রুট প্রাধান্য পায়।

২ · তিনটি জেনুইন সংখ্যাগত উদাহরণ — এক case, এক উদাহরণ

Case ১ · $T(n) = 8T(n/2) + n^2$

এখানে $a=8,\ b=2$, তাই $n^{\log_b a} = n^{\log_2 8} = n^3$। আর $f(n)=n^2$। প্রশ্ন: $n^2$ কি $n^3$-এর চেয়ে পলিনমিয়ালি ছোট? হ্যাঁ — $\epsilon=1$ নিলে $n^2 = O(n^{3-1}) = O(n^2)$ ✓। সুতরাং case ১ প্রযোজ্য:

$$T(n) = \Theta(n^3)$$

(লক্ষ্য করুন — এটি ঠিক ন্যায়ভ, "ট্রিক ছাড়া" ডিভাইড অ্যান্ড কনকার ম্যাট্রিক্স গুণনের রিকারেন্স, যেখানে $2\times2$ ব্লক গুণনে $8$টি রিকার্সিভ গুণন লাগে — ফলাফল সাধারণ $O(n^3)$ ইটারেটিভ পদ্ধতির সমান। L18-এ দেখা যাবে স্ট্রাসেনের চতুর কৌশল ঠিক এই $a=8$-কে $a=7$-এ নামিয়ে আনে, যা $\Theta(n^{\log_2 7})\approx\Theta(n^{2.807})$ দেয় — এই একই কেস-১ যুক্তি দিয়েই।)

Case ২ · $T(n) = 2T(n/2) + n$

এখানে $a=2,\ b=2$, তাই $n^{\log_b a} = n^{\log_2 2} = n^1 = n$। আর $f(n) = n = \Theta(n^1 \cdot \log^0 n)$, অর্থাৎ $k=0$। সুতরাং case ২ প্রযোজ্য:

$$T(n) = \Theta(n^1 \log^{0+1} n) = \Theta(n\log n)$$

এটি ঠিক L11-এ সাবস্টিটিউশন মেথড দিয়ে যা প্রমাণ করা হয়েছিল, তার সাথে হুবহু মিলে যায় — কিন্তু এবার কোনো ইনডাকশন বা রিকার্সন ট্রি না এঁকেই, শুধু $a, b, f(n)$ বসিয়েই উত্তর পাওয়া গেল। এটাই এই রিকারেন্সটি, যা L15-এ মার্জ সর্টের বিশ্লেষণেও হুবহু আবার দেখা যাবে।

Case ৩ · $T(n) = 2T(n/2) + n^2$

লক্ষ্য করুন — এটি ঠিক L12-এর রিকার্সন ট্রি উদাহরণ! এখানে $a=2,\ b=2$, তাই $n^{\log_b a} = n^1 = n$। আর $f(n)=n^2$। প্রশ্ন: $n^2$ কি $n$-এর চেয়ে পলিনমিয়ালি বড়? হ্যাঁ — $\epsilon=1$ নিলে $n^2 = \Omega(n^{1+1})$ ✓। কিন্তু case ৩ প্রয়োগ করার আগে রেগুলারিটি কন্ডিশন যাচাই করতে হবে — এটাই একমাত্র case যেখানে একটি বাড়তি শর্ত লাগে:

$$a\,f(n/b) \le c\,f(n) \quad \text{কোনো ধ্রুবক } c<1 \text{-এর জন্য}$$

এখানে $a f(n/b) = 2 \cdot (n/2)^2 = 2 \cdot n^2/4 = n^2/2 = 0.5 \cdot f(n)$ — অর্থাৎ $c=0.5<1$ দিয়ে শর্তটি সন্তুষ্ট হয় ✓। (স্বজ্ঞাতভাবে: রেগুলারিটি কন্ডিশন নিশ্চিত করে যে রুটের নিজস্ব খরচ প্রতিটি পুনরাবৃত্তিতে "যথেষ্ট দ্রুত" কমছে যেন উপ-সমস্যাগুলোর মোট খরচ কখনো রুটের খরচকে ছাড়িয়ে না যায় — L12-এর জ্যামিতিক-সিরিজ যুক্তিরই একটি আনুষ্ঠানিক রূপ।) উভয় শর্ত পূরণ হওয়ায় case ৩ প্রযোজ্য:

$$T(n) = \Theta(f(n)) = \Theta(n^2)$$

এটি ঠিক L12-এ রিকার্সন ট্রি এঁকে যে ফলাফল পাওয়া গিয়েছিল (এবং কোড দিয়ে $T(n)/n^2 \to 2$ পরীক্ষামূলকভাবে যাচাই করা হয়েছিল), তার সাথে হুবহু মেলে — তিনটি ভিন্ন পদ্ধতি (রিকার্সন ট্রি, সরাসরি গণনা, এবং এখন মাস্টার থিওরেম) একই সিদ্ধান্তে পৌঁছেছে।

৩ · সত্যিকারের কোড — Case ২-এর বাউন্ড যাচাই

যেহেতু case ২-এর $T(n)=2T(n/2)+n$ রিকারেন্সটি M4-এ মার্জ সর্টের বিশ্লেষণে সরাসরি ব্যবহৃত হবে, চলুন এটিকেই পরীক্ষামূলকভাবে যাচাই করি — কিন্তু এবার ভিন্ন একটি কোণ থেকে: $T(n)/(n\log_2 n)$ অনুপাতের বদলে, $n$ দ্বিগুণ হলে $T(n)$ কত গুণ বাড়ে তা দেখব। যদি $T(n)$ প্রকৃতপক্ষে $\Theta(n)$ হতো (কোনো log ফ্যাক্টর ছাড়াই), তাহলে $n$ দ্বিগুণ হলে $T(n)$ও ঠিক দ্বিগুণ হতো। কিন্তু case ২ বলছে এখানে একটি বাড়তি $\log n$ ফ্যাক্টর আছে — তাই অনুপাতটা $2$-এর চেয়ে সামান্য বেশি হওয়ার কথা, এবং $n$ বাড়ার সাথে সাথে ধীরে ধীরে $2$-এর দিকে নামতে থাকার কথা।

Python
def T(n):
    if n <= 1:
        return 1                 # বেস কেস T(1) = 1
    return 2 * T(n // 2) + n     # case ২-এর রিকারেন্স

sizes = [8, 16, 32, 64, 128, 256]
values = [(n, T(n)) for n in sizes]

print(f"{'n':>5} | {'T(n)':>8}")
for n, t in values:
    print(f"{n:>5} | {t:>8}")

print("\nn দ্বিগুণ হলে T(n) কত গুণ বাড়ে (T(2n)/T(n)):")
for i in range(1, len(values)):
    n_prev, t_prev = values[i - 1]
    n_cur, t_cur = values[i]
    ratio = t_cur / t_prev
    print(f"n={n_prev}->{n_cur}: {ratio:.4f}x  (বিশুদ্ধ Θ(n) হলে ঠিক 2.0000x হতো)")

    
আউটপুটে $T(n)$-এর মান হবে $32, 80, 192, 448, 1024, 2304$ ($n=8,16,32,64,128,256$-এর জন্য), এবং $T(2n)/T(n)$ অনুপাত হবে ক্রমান্বয়ে $2.5,\ 2.4,\ 2.333,\ 2.286,\ 2.25$ — লক্ষ্য করুন এটি সবসময় $2.0$-এর উপরে থাকছে, কিন্তু ধীরে ধীরে $2.0$-এর দিকে নামছে। এটাই ঠিক $\Theta(n\log n)$-এর স্বাক্ষর: $T(n)=n\log_2n+n$ এই বেস কেসের সঠিক বদ্ধ-আকারের সমাধান হওয়ায়, $T(2n)/T(n) = \frac{2\log_2 n + 4}{\log_2 n + 1}$, যা $n\to\infty$ হলে $2$-এর দিকে এগোয় কিন্তু কখনো ঠিক $2$-এ পৌঁছায় না ছোট $n$-এর জন্য। যদি এই রিকারেন্সটি প্রকৃতপক্ষে বিশুদ্ধ $\Theta(n)$ হতো, অনুপাতটি প্রতিটি ধাপে হুবহু $2.0000$ থাকত — এই সূক্ষ্ম কিন্তু ধারাবাহিক পার্থক্যই ($2.5 \to 2.4 \to 2.33 \to \cdots \to 2$) মাস্টার থিওরেমের case ২-এর ভবিষ্যদ্বাণী করা অতিরিক্ত $\log n$ ফ্যাক্টরের প্রকৃত, কম্পিউটেড প্রমাণ।

৪ · মাস্টার থিওরেমের সীমাবদ্ধতা

মাস্টার থিওরেম শক্তিশালী কিন্তু সর্বজনীন নয়। এটি প্রযোজ্য হয় না যদি:

  • উপসমস্যাগুলো অসম আকারের হয় (যেমন $T(n) = T(n/3) + T(2n/3) + n$) — এখানে "একক $a,b$" ধরে নেওয়া যায় না।
  • $f(n)$ কোনো case-এর সাথেই ঠিক মেলে না — একে "ফাঁক" (gap) বলা হয়। যেমন $T(n) = 2T(n/2) + n/\log n$: এখানে $n^{\log_2 2}=n$, আর $f(n)=n/\log n$ হলো $n$-এর চেয়ে সামান্য ছোট, কিন্তু কোনো পলিনমিয়াল ফ্যাক্টর ($n^\epsilon$) দিয়ে ছোট নয় (শুধু একটি $\log$ ফ্যাক্টর দিয়ে) — case ১ এর শর্ত পূরণ হয় না, আবার এটি case ২-এর $\Theta(n\log^k n)$ ফর্মেও নেই ($k$ ঋণাত্মক হতে হতো)। এমন ক্ষেত্রে মাস্টার থিওরেম "উত্তর নেই" বলে দেয় — সাবস্টিটিউশন বা আরও উন্নত টুল (যেমন Akra-Bazzi পদ্ধতি) লাগবে।
  • case ৩-এ রেগুলারিটি কন্ডিশন সত্য না হয় — যদিও $f(n)$ পলিনমিয়ালি বড়, তবু বাউন্ড $\Theta(f(n))$ নাও হতে পারে যদি $f(n)$ অতিরিক্ত "অনিয়মিত" হয় (ব্যবহারিক ক্ষেত্রে এই শর্ত ভাঙা বিরল, কিন্তু আনুষ্ঠানিক প্রমাণে এটি উল্লেখ করা আবশ্যক)।
মূল কথা · Key takeaway — মডিউল M3-এর সারাংশ

M3-এর চারটি পাঠ একসাথে একটি সম্পূর্ণ টুলকিট গঠন করে: L10 রিকারেন্স রিলেশন কী তা সংজ্ঞায়িত করেছে; L11 (সাবস্টিটিউশন) সবচেয়ে রিগোরাস কিন্তু সবচেয়ে শ্রমসাধ্য পদ্ধতি দিয়েছে (অনুমান + ইনডাকশন); L12 (রিকার্সন ট্রি) একটি ভিজ্যুয়াল, স্বজ্ঞাত পদ্ধতি দিয়েছে যা প্রায়ই সঠিক অনুমান নিজে থেকেই বের করে দেয়; এবং এই পাঠ (মাস্টার থিওরেম) সেই দুটোর সারমর্মকে একটি তাৎক্ষণিক কুকবুকে প্যাকেজ করেছে, যখন রিকারেন্সটি $aT(n/b)+f(n)$ আকৃতির হয়। M4-এ (ডিভাইড অ্যান্ড কনকার) আমরা এই কুকবুক বারবার প্রয়োগ করব — মার্জ সর্ট, কুইক সর্ট, বাইনারি সার্চ, এবং স্ট্রাসেনের ম্যাট্রিক্স গুণন, প্রতিটির রিকারেন্স মাস্টার থিওরেম দিয়ে সমাধান করে।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ কেন case ২-তে শুধু $f(n)=\Theta(n^{\log_b a})$ না বলে $f(n)=\Theta(n^{\log_b a}\log^k n)$ — এই সাধারণ (generalized) রূপ ব্যবহার করা হয়েছে?

কারণ অনেক গুরুত্বপূর্ণ রিকারেন্সে $f(n)$-এর সাথে একটি অতিরিক্ত $\log$ ফ্যাক্টর যুক্ত থাকে — যেমন $T(n) = 2T(n/2) + n\log n$ (এখানে $k=1$)। এই সাধারণ রূপ ছাড়া মাস্টার থিওরেম এমন রিকারেন্স হ্যান্ডল করতে পারত না, অথচ মূল যুক্তি (সব স্তর প্রায় সমান অবদান রাখে) ঠিক একইভাবে প্রযোজ্য থাকে, শুধু চূড়ান্ত উত্তরে একটি বাড়তি $\log$ ফ্যাক্টর ($\log^{k+1}n$) যোগ হয়।

প্র ০২ যদি $f(n)$ case ১ ও case ২-এর "ফাঁকে" পড়ে (যেমন $f(n) = n^{\log_b a}/\log n$), তাহলে কী করণীয়?

মাস্টার থিওরেম প্রযোজ্য নয় — এটি স্পষ্টভাবে স্বীকার করা উচিত, একটি ভুল case জোর করে প্রয়োগ করা নয়। এমন ক্ষেত্রে সাবস্টিটিউশন মেথড (L11) অথবা রিকার্সন ট্রি (L12) দিয়ে সরাসরি বিশ্লেষণ করতে হবে, অথবা আরও উন্নত Akra-Bazzi পদ্ধতি ব্যবহার করা যায় (এই কোর্সের সিলেবাসের বাইরে, কিন্তু উল্লেখযোগ্য যে এটি বিদ্যমান)। বাস্তবে, $T(n)=2T(n/2)+n/\log n$-এর প্রকৃত সমাধান হলো $\Theta(n\log\log n)$ — যা মাস্টার থিওরেমের কোনো case-এর সাথেই মেলে না, ঠিক যেমনটা প্রত্যাশিত।

প্র ০৩ Case ৩-এ রেগুলারিটি কন্ডিশন না থাকলে কী সমস্যা হতে পারত — এটা কি শুধু একটা আনুষ্ঠানিকতা?

না, এটা নিছক আনুষ্ঠানিকতা নয়। রেগুলারিটি কন্ডিশন ছাড়া, তাত্ত্বিকভাবে এমন একটি $f(n)$ কল্পনা করা সম্ভব যা পলিনমিয়ালি $n^{\log_b a}$-এর চেয়ে বড় (case ৩-এর প্রথম শর্ত পূরণ করে), অথচ এতটাই "অনিয়মিতভাবে দোদুল্যমান" (oscillating) যে রিকার্সিভ কলগুলোর সামগ্রিক অবদান রুটের খরচকে ছাড়িয়ে যেতে পারে। রেগুলারিটি কন্ডিশন ($af(n/b)\le cf(n),\ c<1$) নিশ্চিত করে যে $f(n)$ যথেষ্ট "সুবোধ" (well-behaved) — প্রতিটি পুনরাবৃত্তিতে এর অবদান একটি ধ্রুবক অনুপাতে কমছে, যা L12-এর জ্যামিতিক সিরিজ যুক্তিকে বৈধ রাখে। ব্যবহারিক ক্ষেত্রে (পলিনমিয়াল $f(n)$) এই শর্ত প্রায় সবসময় স্বয়ংক্রিয়ভাবে পূরণ হয়, তাই এটি প্রায়ই দ্রুত উল্লেখ করে এগিয়ে যাওয়া হয় — কিন্তু আনুষ্ঠানিক প্রমাণে এটি বাদ দেওয়া যায় না।

অনুশীলন

  1. চিন্তা করুন: $T(n) = 3T(n/4) + n\log n$-কে মাস্টার থিওরেম দিয়ে শ্রেণীবদ্ধ করুন। কোন case প্রযোজ্য, এবং $T(n)$ কত?

    এখানে $a=3, b=4$, তাই $n^{\log_b a} = n^{\log_4 3} \approx n^{0.7925}$। $f(n)=n\log n$ এই মানের চেয়ে পলিনমিয়ালি বড় (কারণ $n^1$ নিজেই $n^{0.7925}$-এর চেয়ে পলিনমিয়ালি বড়, $\epsilon\approx0.2$ নিয়ে, আর একটি বাড়তি $\log n$ ফ্যাক্টর শুধু একে আরও বড় করে) — তাই case ৩-এর প্রথম শর্ত পূরণ হয়। রেগুলারিটি যাচাই: $a f(n/b) = 3\cdot(n/4)\log(n/4) \approx \frac34 n\log n$ যখন $n$ বড়, যা $c=0.75<1$ দিয়ে $f(n)=n\log n$-এর একটি ধ্রুবক ভগ্নাংশ — শর্ত পূরণ হয়। সুতরাং case ৩ প্রযোজ্য: $T(n) = \Theta(n\log n)$ (এটি একটি সুপরিচিত CLRS পাঠ্যপুস্তকের ক্লাসিক উদাহরণ)।

  2. পরীক্ষা করুন: উপরের কোড সেলে রিকারেন্সটি পরিবর্তন করে T(n) = 4 * T(n // 2) + n**2 করুন এবং T(2n)/T(n) অনুপাত প্রিন্ট করুন। মাস্টার থিওরেম অনুযায়ী এখানে $a=4,b=2$, $n^{\log_2 4}=n^2=f(n)$ — case ২ ($k=0$), তাই $T(n)=\Theta(n^2\log n)$ ভবিষ্যদ্বাণী করা হচ্ছে। অনুপাত কি L13-এর মূল উদাহরণের মতোই ধীরে ধীরে $4$-এর দিকে নামবে (বিশুদ্ধ $\Theta(n^2)$ হলে যা হতো), নাকি $4$-এর উপরে থেকে যাবে?

    অনুপাতটি সবসময় $4.0$-এর উপরে থাকবে (যেমন ছোট $n$-এ প্রায় $4.5$-এর কাছাকাছি শুরু হয়ে) এবং $n$ বাড়ার সাথে সাথে ধীরে ধীরে $4.0$-এর দিকে নামবে — ঠিক মূল case-২ উদাহরণেরই ($2.5\to2.4\to\cdots\to2$) প্যাটার্নের পুনরাবৃত্তি, কিন্তু এবার $n^{\log_2 4}=n^2$-এর কারণে বেসলাইন অনুপাত $2$-এর বদলে $4$। এটি নিশ্চিত করে $\Theta(n^2\log n)$ ভবিষ্যদ্বাণীটি সঠিক — বিশুদ্ধ $\Theta(n^2)$ হলে অনুপাত ঠিক $4.0000$-এ স্থির থাকত।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

  • কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ অ্যাসিম্পটোটিক অ্যানালাইসিস, রিকারেন্স, ডিভাইড অ্যান্ড কনকার, গ্রিডি, DP, গ্রাফ অ্যালগরিদম, ব্যাকট্র্যাকিং, স্ট্রিং অ্যালগরিদম, অ্যামর্টাইজড অ্যানালাইসিস, NP-কমপ্লিটনেস ও অ্যাপ্রক্সিমেশন — বাকি পাঠগুলো শীঘ্রই যুক্ত হবে।
  • Data Structures & Algorithms কোর্স সহোদর কোর্স মার্জ সর্ট, কুইক সর্ট, বাইনারি সার্চের ইমপ্লিমেন্টেশন সেই কোর্সে দেখানো হয়েছে — M4-এ (পরবর্তী মডিউল) আমরা এই পাঠের মাস্টার থিওরেম দিয়ে তাদের রিকারেন্স সমাধান করব।
  • সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, DBMS, Discrete Mathematics, System Design, Cybersecurity, Cloud Computing & DevOps, Computer Networks, Operating Systems, Computer Architecture, Programming Languages & Compiler Design, Software Engineering & Git, Theory of Computation, Engineering Economics, Full-Stack Web Frameworks, Mobile App Development, Ethics in Computing & AI Safety, Software Testing & Quality Assurance ও Design and Analysis of Algorithms — সব এক জায়গায়।
আগের পাঠ
রিকার্সন ট্রি মেথড