Я читал Введение в алгоритмы от Cormen et al. и я читаю формулировку основной теоремы, начиная со страницы 73 . В случае 3 также существует условие регулярности, которое необходимо выполнить, чтобы использовать теорему:
... 3. Если
для некоторой константы и если
[ это условие регулярности ]
для некоторой константы и для всех достаточно больших , тогда ..н
Может кто-нибудь сказать мне, зачем нужно условие регулярности? Как теорема не выполняется, если условие не выполняется?
Ответы:
Не строгое доказательство, а объяснение «от макушки головы».
Вообразите повторение как дерево. Третий случай охватывает сценарий, когда корневой узел асимптотически доминирует во время выполнения, то есть большая часть работы выполняется в ничтожном узле на вершине дерева повторений. Тогда время запуска является Θ ( F ( п ) ) .Т( н / б ) + ф( н ) Θ ( ф( н ) )
Чтобы убедиться, что рут действительно делает больше, вам нужно
Это говорит о том, что (объем работы, выполненной в корне) должен быть по меньшей мере таким же большим, как сумма работы, выполненной на более низких уровнях. (Повторение называется раз на п / б входа.)е( н ) a н / б
Например, для повторения работа на уровне ниже корня на одну четвертую больше и выполняется только дважды ( n / 4 + n / 4 ) по сравнению с n, поэтому корень доминирует ,T( n ) = 2 Тл( n / 4 ) + n ( н / 4 + н / 4 ) N
Но что, если функция не удовлетворяет условию регулярности? Например, вместо n ? Тогда работа, выполняемая на более низких уровнях, может быть больше, чем работа, выполняемая в корне, поэтому вы не уверены, что корень доминирует.соз( н ) N
источник
Пусть и b = 2 , так что T ( 2 n ) = n ∑ k = 0 f ( 2 k ) . Чтобы применить случай 3, нам нужно f ( n ) = Ω ( n ϵ ) (для некоторых ϵ > 0 ) и условие регулярности f ( n / 2 ) ≤ ( 1 - δ ) fа = 1 б = 2
Существует более общая теорема Акра-Бацци, в которой условие регулярности заменяется явной величиной, которая входит в результат.
источник