Практическое занятие 8
Рекуррентные соотношения
1.
2.
3.
4.

Теоретические сведения
Контрольные вопросы
Указания по выполнению заданий
Задания
Теоретические сведения
Многие алгоритмы основаны на принципе рекурсивного разбиения
большой задачи на меньшие, когда решения подзадач используются
для решения исходной задачи.
Рекурсивное разбиение алгоритма напрямую проявляется в его анализе.
Например, время выполнения подобных алгоритмов определяется
величиной и номером подзадачи, а также временем, необходимым для
разбиения задачи. Математически зависимость времени выполнения
алгоритма для ввода величиной N от времени выполнения при
меньшем количестве вводов легко задается с помощью рекуррентных
соотношений. Такие формулы точно описывают производительность
алгоритмов: для вычисления времени выполнения необходимо решить
эти рекурсии.
Рекуррентные соотношения на сложность алгоритма выводятся
непосредственно из вида алгоритма, однако с их помощью нельзя
быстро вычислить эту сложность. Для этого следует привести
рекуррентные соотношения к замкнутому виду, отказавшись от их
рекуррентной природы. Производится такое приведение посредством
последовательных подстановок, позволяющих определить общий
принцип.
Теоретические сведения
Пример 1. В рекурсивной программе, где при каждой
итерации цикла количество вводов уменьшается
на единицу, возникает следующее рекуррентное
соотношение: CN = CN – 1 + N, где N ≥ 2 и C1 = 1.
Показать, что CN порядка N2 / 2.
Для решения рекурсии ее можно раскрыть, применяя
саму к себе следующим образом:
CN = CN – 1 + N = CN – 2 + (N – 1) + N = CN – 3 + (N – 2) + + (N
– 1) + N = … = C1 + 2 + … + (N – 2) + (N – 1) + + N =
1 + 2 + … + (N – 2) + (N – 1) + N = N(N+1)/2.
Теоретические сведения
Пример 2. В рекурсивной программе, где на каждом
шаге количество вводов уменьшается вдвое,
возникает следующее рекуррентное соотношение:
CN = CN/2 + 1, где N ≥ 2 и C1 = 1. Показать, что CN
порядка log2N.
Уравнение имеет смысл в том случае, когда N четно,
или же предполагается, что N/2 является
целочисленным делением. Предположим, что N =
2n, чтобы рекурсия была всегда определена. Тогда
рекурсию можно раскрыть следующим образом:CN
= CN/2 + 1 = CN/4 + 1 + 1 = CN/8 + 1 + 1 + 1 = … =
=
C1 + n = 1 + n = log2N + 1.
Теоретические сведения
Основной метод является своего рода «сборником рецептов»,
по которым строятся решения рекуррентных соотношений
вида
CN = aCN/b + f(N),
где a ≥ 1 и b > 1 – константы, а f(N) – асимптотически
положительная функция.
Указанное рекуррентное соотношение описывает время
работы алгоритма, в котором задача размером N
разбивается на a вспомогательных задач, размером N/b
каждая, где a и b – положительные константы. Полученные
в результате разбиения a подзадач решаются рекурсивным
методом, причем время их решения равно T(N/b) = CN/b.
Время, требуемое для разбиения задачи и объединения
результатов, полученных при решении вспомогательных
задач, описывается функцией f(N).
Теоретические сведения

Основной метод базируется на теореме, согласно которой
асимптотическое поведение функции T(n) = aT(n/b) + f(n)
(a ≥ 1, b > 1) можно выразить следующим образом.
1.

Если

f ( n) = O ( n

log b a −ε

)

для некоторой константы ε > 0, то

T ( n) = Θ(n log b a )

2.
то

Если

f (n) = Θ(n

T ( n) = Θ ( n

log b a

log b a

)

log 2 n)

f ( n) = Ω( n

log b a+ ε

)

1. Если
для некоторой константы ε > 0, и если af(n/b) ≤ cf(n) для
некоторой константы c < 1 и всех достаточно больших n,
то T(n) = Θ(f(n)).
Теоретические сведения
Необходимо отметить, что указанными выше тремя случаями
не исчерпываются все возможности поведения функции
f(n). Между случаями 1 и 2 есть промежуток, в котором
n log b a
функция f(n) меньше функции
, но не полиномиально
меньше. Аналогичный промежуток имеется между
случаями 2 и 3, когда функция f(n) больше этой функции ,
но не полиномиально больше. Если функция f(n) попадает
в один из этих промежутков, или если для нее не
выполняется условие регулярности из случая 3, основной
метод
неприменим
для
решения
рекуррентных
соотношений.
Пример 3. К рекуррентному соотношению
T(n) = 2T(n/2) + nlog2n основной метод не применим, так как
оно находится в «промежуточном состоянии» между
случаями 2 и 3.
Контрольные вопросы
1.
2.
3.
4.
5.
6.

Принцип рекурсивного разбиения задачи на подзадачи.
Время работы алгоритма с рекурсивным разбиением.
Рекуррентные соотношения.
Приведение рекуррентного соотношения к замкнутому виду.
Общий вид рекуррентного соотношения для применения
основного метода.
Условие получение решения рекуррентного уравнения

Θ(n log b a )

для функции T(n).
7.
Условие получение решения рекуррентного уравнения для

Θ(n log b a log 2 n)
функции T(n).
8.
Условие получение решения Θ(f(n)) рекуррентного уравнения для
функции T(n) имеющей слагаемое f(n).
9.
Условия неприменимости основного метода.
10. Условия неприменимости основного метода к рекуррентному
соотношению из примера 3.
Указания по выполнению заданий
1.
2.
3.
4.

Получить задание
Получить решение задачи.
Подготовить отчет по выполнению задания. Отчет
должен включать задание и описание этапов
выполнения задания.
Ответить на вопросы по выполнению задания и
контрольные вопросы
Задания
1.
2.
3.
4.
5.
6.
7.

8.

Определить асимптотическую верхнюю границу рекуррентного
соотношения CN = ЗCN/2 + N.
Доказать, что решение рекуррентного соотношения CN = CN/3 + + C2N/3
+ сN, где c – константа, ведет себя как Ω(nlog2n).
Для соотношения CN = 4CN/2 + cN, где с — константа, найти точную
асимптотическую границу его решения.
Найти точную асимптотическую оценку решения рекуррентного
соотношения CN = CN - a + C a + cN, где a ≥ 1 и c > 0 – константы.
Найти точную асимптотическую оценку решения рекуррентного
соотношения CN = CαN + C (1 - α)N + cN, где 0 < α < 1 и c > 0 – константы.
С помощью основной теоремы найти точные асимптотические
границы следующих рекуррентных соотношений:
1) T(n) = 4T(n/2) + n; 2) T(n) = 4T(n/2) + n2; 3) T(n) = 4T(n/2) + n3.
Рекуррентное соотношение T(n) = 7T(n/2) + n2 описывает время
работы алгоритма A. Время работы альтернативного алгоритма A'
выражается рекуррентным соотношением T’(n) = aT’(n/2) + n2. Чему
равно наибольшее целое значение a, при котором алгоритм A'
работает асимптотически быстрее, чем алгоритм A.
Можно ли применить основной метод к рекуррентному соотношению
T(n) = 4T(n/2) + n2log2n? Если можно, то найти асимптотическую
верхнюю границу решения этого рекуррентного соотношения.

практика 8

  • 1.
    Практическое занятие 8 Рекуррентныесоотношения 1. 2. 3. 4. Теоретические сведения Контрольные вопросы Указания по выполнению заданий Задания
  • 2.
    Теоретические сведения Многие алгоритмыоснованы на принципе рекурсивного разбиения большой задачи на меньшие, когда решения подзадач используются для решения исходной задачи. Рекурсивное разбиение алгоритма напрямую проявляется в его анализе. Например, время выполнения подобных алгоритмов определяется величиной и номером подзадачи, а также временем, необходимым для разбиения задачи. Математически зависимость времени выполнения алгоритма для ввода величиной N от времени выполнения при меньшем количестве вводов легко задается с помощью рекуррентных соотношений. Такие формулы точно описывают производительность алгоритмов: для вычисления времени выполнения необходимо решить эти рекурсии. Рекуррентные соотношения на сложность алгоритма выводятся непосредственно из вида алгоритма, однако с их помощью нельзя быстро вычислить эту сложность. Для этого следует привести рекуррентные соотношения к замкнутому виду, отказавшись от их рекуррентной природы. Производится такое приведение посредством последовательных подстановок, позволяющих определить общий принцип.
  • 3.
    Теоретические сведения Пример 1.В рекурсивной программе, где при каждой итерации цикла количество вводов уменьшается на единицу, возникает следующее рекуррентное соотношение: CN = CN – 1 + N, где N ≥ 2 и C1 = 1. Показать, что CN порядка N2 / 2. Для решения рекурсии ее можно раскрыть, применяя саму к себе следующим образом: CN = CN – 1 + N = CN – 2 + (N – 1) + N = CN – 3 + (N – 2) + + (N – 1) + N = … = C1 + 2 + … + (N – 2) + (N – 1) + + N = 1 + 2 + … + (N – 2) + (N – 1) + N = N(N+1)/2.
  • 4.
    Теоретические сведения Пример 2.В рекурсивной программе, где на каждом шаге количество вводов уменьшается вдвое, возникает следующее рекуррентное соотношение: CN = CN/2 + 1, где N ≥ 2 и C1 = 1. Показать, что CN порядка log2N. Уравнение имеет смысл в том случае, когда N четно, или же предполагается, что N/2 является целочисленным делением. Предположим, что N = 2n, чтобы рекурсия была всегда определена. Тогда рекурсию можно раскрыть следующим образом:CN = CN/2 + 1 = CN/4 + 1 + 1 = CN/8 + 1 + 1 + 1 = … = = C1 + n = 1 + n = log2N + 1.
  • 5.
    Теоретические сведения Основной методявляется своего рода «сборником рецептов», по которым строятся решения рекуррентных соотношений вида CN = aCN/b + f(N), где a ≥ 1 и b > 1 – константы, а f(N) – асимптотически положительная функция. Указанное рекуррентное соотношение описывает время работы алгоритма, в котором задача размером N разбивается на a вспомогательных задач, размером N/b каждая, где a и b – положительные константы. Полученные в результате разбиения a подзадач решаются рекурсивным методом, причем время их решения равно T(N/b) = CN/b. Время, требуемое для разбиения задачи и объединения результатов, полученных при решении вспомогательных задач, описывается функцией f(N).
  • 6.
    Теоретические сведения Основной методбазируется на теореме, согласно которой асимптотическое поведение функции T(n) = aT(n/b) + f(n) (a ≥ 1, b > 1) можно выразить следующим образом. 1. Если f ( n) = O ( n log b a −ε ) для некоторой константы ε > 0, то T ( n) = Θ(n log b a ) 2. то Если f (n) = Θ(n T ( n) = Θ ( n log b a log b a ) log 2 n) f ( n) = Ω( n log b a+ ε ) 1. Если для некоторой константы ε > 0, и если af(n/b) ≤ cf(n) для некоторой константы c < 1 и всех достаточно больших n, то T(n) = Θ(f(n)).
  • 7.
    Теоретические сведения Необходимо отметить,что указанными выше тремя случаями не исчерпываются все возможности поведения функции f(n). Между случаями 1 и 2 есть промежуток, в котором n log b a функция f(n) меньше функции , но не полиномиально меньше. Аналогичный промежуток имеется между случаями 2 и 3, когда функция f(n) больше этой функции , но не полиномиально больше. Если функция f(n) попадает в один из этих промежутков, или если для нее не выполняется условие регулярности из случая 3, основной метод неприменим для решения рекуррентных соотношений. Пример 3. К рекуррентному соотношению T(n) = 2T(n/2) + nlog2n основной метод не применим, так как оно находится в «промежуточном состоянии» между случаями 2 и 3.
  • 8.
    Контрольные вопросы 1. 2. 3. 4. 5. 6. Принцип рекурсивногоразбиения задачи на подзадачи. Время работы алгоритма с рекурсивным разбиением. Рекуррентные соотношения. Приведение рекуррентного соотношения к замкнутому виду. Общий вид рекуррентного соотношения для применения основного метода. Условие получение решения рекуррентного уравнения Θ(n log b a ) для функции T(n). 7. Условие получение решения рекуррентного уравнения для Θ(n log b a log 2 n) функции T(n). 8. Условие получение решения Θ(f(n)) рекуррентного уравнения для функции T(n) имеющей слагаемое f(n). 9. Условия неприменимости основного метода. 10. Условия неприменимости основного метода к рекуррентному соотношению из примера 3.
  • 9.
    Указания по выполнениюзаданий 1. 2. 3. 4. Получить задание Получить решение задачи. Подготовить отчет по выполнению задания. Отчет должен включать задание и описание этапов выполнения задания. Ответить на вопросы по выполнению задания и контрольные вопросы
  • 10.
    Задания 1. 2. 3. 4. 5. 6. 7. 8. Определить асимптотическую верхнююграницу рекуррентного соотношения CN = ЗCN/2 + N. Доказать, что решение рекуррентного соотношения CN = CN/3 + + C2N/3 + сN, где c – константа, ведет себя как Ω(nlog2n). Для соотношения CN = 4CN/2 + cN, где с — константа, найти точную асимптотическую границу его решения. Найти точную асимптотическую оценку решения рекуррентного соотношения CN = CN - a + C a + cN, где a ≥ 1 и c > 0 – константы. Найти точную асимптотическую оценку решения рекуррентного соотношения CN = CαN + C (1 - α)N + cN, где 0 < α < 1 и c > 0 – константы. С помощью основной теоремы найти точные асимптотические границы следующих рекуррентных соотношений: 1) T(n) = 4T(n/2) + n; 2) T(n) = 4T(n/2) + n2; 3) T(n) = 4T(n/2) + n3. Рекуррентное соотношение T(n) = 7T(n/2) + n2 описывает время работы алгоритма A. Время работы альтернативного алгоритма A' выражается рекуррентным соотношением T’(n) = aT’(n/2) + n2. Чему равно наибольшее целое значение a, при котором алгоритм A' работает асимптотически быстрее, чем алгоритм A. Можно ли применить основной метод к рекуррентному соотношению T(n) = 4T(n/2) + n2log2n? Если можно, то найти асимптотическую верхнюю границу решения этого рекуррентного соотношения.