EMZETT.
Войти

Динамическое программирование: Фибоначчи, рюкзак и мемоизация

Коротко: Динамическое программирование решает задачи с перекрывающимися подзадачами, сохраняя промежуточные результаты вместо их повторного вычисления; так экспоненциальные вычисления становятся полиномиальными.

Подробнее: Если рекурсивное решение снова и снова решает одни и те же подзадачи, результаты сохраняют. Два способа: мемоизация (сверху вниз: рекурсия + кеш) и табуляция (снизу вверх: заполнение таблицы).

Подробности

Пример: Фибоначчи

`fib(n) = fib(n−1) + fib…

См. также: рекурсия, жадные алгоритмы, О-нотация