Динамическое программирование
Краткий обзор задач динамического программирования
Download 328,24 Kb.
|
Динамическое программирование
- Bu sahifa navigatsiya:
- Реализация на примере задачи о вычислении чисел Фибоначчи
Краткий обзор задач динамического программированияМетодом динамического программирования решается очень много задач. Вот краткий их перечень:
В 1202 г. появилась на свет знаменитая «Книга абака» Леонардо Пизанского (более известного под прозвищем Фибоначчи – сын Боначчи), крупнейшего европейского математика эпохи Средневековья. Этот объемный труд стал настоящей энциклопедией математических знаний того времени и сыграл важную роль в их распространении в странах Западной Европы в следующие несколько столетий. Наиболее известной по сей день остается, конечно же, задача о размножении кроликов, впервые появившаяся в «Liber abaci». Спрашивается, сколько пар кроликов родится за год от одной пары, если кролики начинают приносить потомство со второго месяца и каждая пара через месяц производит на свет еще одну пару? Ее решение привело Фибоначчи к открытию едва ли ни самой знаменитой числовой последовательности 1, 1, 2, 3, 5, 8, 13, ... , названной впоследствии его именем и породившей множество исследований Числа Фибоначчи являются элементами числовой последовательности, где каждое последующее число образуется посредством суммирования двух предыдущих, например: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89…. Как правило, записывается такая последовательность формулой: Очевидно, что данная задача имеет рекурсивное решение благодаря рекуррентной записи для вычисления элемента: F(n) = F(n-1) + F(n-2). Простое рекурсивное решение неэффективно, т.к. приходится многократно вычислять одни и те же значения элементов ряда. Например, из формул F(4)=F(3)+F(2) и F(3)=F(2)+F(1) следует, что для вычисления F(4) значение F(2) приходится вычислять дважды. Найдем сложность рекурсивного алгоритма вычисления значения n-го числа Фибоначчи. Пусть T(n) – количество операций, необходимых для вычисления n-го числа Фибоначчи, тогда в соответствии с алгоритмом для T(n) можно записать следующие соотношения Здесь с1 и с2 количество операций для проверки условия и сложения двух чисел. Будем искать решение в виде T(n) = xn, при n > 1. Это позволяет переписать уравнение в виде xn = xn-1 + xn-2+c2 Разделим на xn и, переходя к пределу при с учетом того, что , находим Download 328,24 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling