Головна теорема — це інструмент, який використовується для вирішення рекурентних співвідношень, які виникають під час аналізу алгоритмів «розділяй і володарюй». Основна теорема забезпечує систематичний спосіб розв’язування рекурентних співвідношень виду:
T(n) = aT(n/b) + f(n)
- де a, b і f(n) — позитивні функції, а n — розмір проблеми. Основна теорема забезпечує умови для того, щоб розв’язок рекуррентної проблеми мав форму O(n^k) для деякої константи k, і вона дає формулу для визначення значення k.
- Розширена версія Основної теореми надає більш загальну форму теореми, яка може обробляти рекурентні співвідношення, складніші за основну форму. Розширена версія головної теореми може обробляти повторення з декількома термінами та складнішими функціями.
- Важливо зазначити, що Головна теорема не застосовна до всіх рекурентних співвідношень, і вона не завжди може забезпечити точне розв’язання даної рекурентності. Однак це корисний інструмент для аналізу складності часу алгоритмів «розділяй і володарюй» і забезпечує хорошу відправну точку для вирішення більш складних рецидивів.
Основна теорема використовується для визначення часу роботи алгоритмів (алгоритмів «розділяй і володарюй») у термінах асимптотичних нотацій.
Розглянемо задачу, яка розв’язується за допомогою рекурсії.
function f (input x size n) if (n else divide x into a subproblems of size n/b call f recursively to solve each subproblem Combine the results of all sub-problems>
Наведений вище алгоритм ділить задачу на a підзадачі, кожна розміром n/b, і розв’язувати їх рекурсивно для обчислення проблеми, а додаткова робота, виконана для проблеми, визначається f(n), тобто час для створення підпроблем і об’єднання їх результатів у наведеній вище процедурі.
Таким чином, згідно з головною теоремою, час виконання наведеного вище алгоритму можна виразити як:
T(n) = aT(n/b) + f(n)>
де n = розмір проблеми
a = кількість підпроблем у рекурсії та a>= 1
n/b = розмір кожної підпроблеми
f(n) = вартість роботи, виконаної за межами рекурсивних викликів, як-от поділ на підпроблеми, і вартість їх об’єднання для отримання рішення.
Не всі рекурентні співвідношення можна розв’язати за допомогою головної теореми, тобто якщо
- T(n) не є монотонним, наприклад: T(n) = sin n
- f(n) не є поліномом, наприклад: T(n) = 2T(n/2) + 2п
Ця теорема є попередньою версією основної теореми, яку можна використовувати для визначення часу роботи алгоритмів «розділяй і володарюй», якщо повторення має такий вигляд:

де n = розмір проблеми
a = кількість підпроблем у рекурсії та a>= 1
n/b = розмір кожної підпроблеми
b> 1, k>= 0 і p — дійсне число.
Потім,
- якщо a> bk, то T(n) = θ(nжурналba)
- якщо a = bk, потім
(a) якщо p> -1, то T(n) = θ(nжурналbaжурналp+1п)
(b) якщо p = -1, то T(n) = θ(nжурналbaloglogn)
(c) якщо p <-1, то T(n) = θ(nжурналba)
- якщо k, тоді
(a) якщо p>= 0, то T(n) = θ(nkжурналсторп)
(b) якщо p <0, то T(n) = θ(nk)
Аналіз складності часу –
- Приклад 1: двійковий пошук – T(n) = T(n/2) + O(1)
a = 1, b = 2, k = 0 і p = 0
bk= 1. Отже, a = bkі p> -1 [Випадок 2.(a)]
T(n) = θ(nжурналbaжурналp+1п)
T(n) = θ(logn) Приклад 2: Сортування злиттям – T(n) = 2T(n/2) + O(n)
a = 2, b = 2, k = 1, p = 0
bk= 2. Отже, a = bkі p> -1 [Випадок 2.(a)]
T(n) = θ(nжурналbaжурналp+1п)
T(n) = θ(nlogn) Приклад 3: T(n) = 3T(n/2) + n2
a = 3, b = 2, k = 2, p = 0
bk= 4. Отже, a k і p = 0 [Випадок 3.(a)]
T(n) = θ(nkжурналсторп)
T(n) = θ(n2)
Приклад-4: T(n) = 3T(n/2) + log2п
a = 3, b = 2, k = 0, p = 2
bk= 1. Отже, a> bk[Випадок 1]
T(n) = θ(nжурналba)
T(n) = θ(nжурнал23)
Приклад-5: T(n) = 2T(n/2) + nlog2п
a = 2, b = 2, k = 1, p = 2
bk= 2. Отже, a = bk[Випадок 2.(a)]
T(n) = θ(nжурналbaжурналp+1n )
T(n) = θ(nжурнал22журнал3п)
T(n) = θ(nlog3п)
Приклад-6: T(n) = 2пT(n/2) + nп
Це повторення не можна розв’язати за допомогою вищезазначеного методу, оскільки функція не має вигляду T(n) = aT(n/b) + θ(nkжурналсторп)
GATE Практичні запитання –
- GATE-CS-2017 (Набір 2) | Питання 56
- GATE IT 2008 | Питання 42
- GATE CS 2009 | Питання 35
Ось кілька важливих моментів, про які слід пам’ятати щодо основної теореми:
- Повторення «розділяй і володарюй»: головна теорема спеціально розроблена для вирішення рекурентних співвідношень, які виникають під час аналізу алгоритмів «розділяй і володарюй».
- Форма повторення: Головна теорема застосовується до рекурентних співвідношень у формі T(n) = aT(n/b) + f(n), де a, b і f(n) — додатні функції, а n — розмір проблеми.
- Складність у часі: головна теорема забезпечує умови для того, щоб розв’язок повторення був у формі O(n^k) для деякої константи k, і вона дає формулу для визначення значення k.
- Розширена версія: розширена версія Основної теореми надає більш загальну форму теореми, яка може обробляти рекурентні співвідношення, які є складнішими, ніж основна форма.
- Обмеження: Основна теорема не застосовна до всіх рекурентних співвідношень, і вона не завжди може забезпечити точне розв’язання даного повторення.
- Корисний інструмент: незважаючи на свої обмеження, Основна теорема є корисним інструментом для аналізу складності часу алгоритмів «розділяй і володарюй» і забезпечує хорошу відправну точку для розв’язання більш складних рецидивів.
- Доповнено іншими техніками: у деяких випадках головну теорему може знадобитися доповнити іншими техніками, такими як метод підстановки або метод ітерації, щоб повністю розв’язати задане рекурентне співвідношення.