sab123: (Default)
[personal profile] sab123
Как-то вот подход динамического программирования прошел мимо меня. Мне про него запомнилась только статья из "Юного техника", от которого у меня осталось ощущение, что это такой перебор вариантов. Но мне продолжают встречаться упоминания, так что я удосужился наконец-то поинтересоваться.

Выяснилось, что эта хрень по сути - рекурсия с мемоизацией. Ну, и перебор вариантов в ней может присутствовать, да, но необязательно. В частности, вычисление чисел Фибоначчи через рекурсию с мемоизацией тоже записывают в динамическое программирование, хоть и никакого перебора там нет. Такую хрень я уже делал, не зная, что это динамическое программирование.

Но это, видимо, более современный подход. В классическом подходе, который видимо и излагался в "Юном Технике", все пространство аргументов сначала упорядочивается каким-то образом, чтобы каждое решение для каждого аргумента могло зависеть только от решений с аргументами, идущими до него в порядке, а потом тупо хреначат и вычисляют лучшие решения для каждого аргумента по порядку, пока не дойдут до заданного.

Если оказывается, что все или почти все аргументы будут так или иначе использованы в рекурсии, то классический подход ничем не хуже рекурсии, а даже наоборот лучше, поскольку не требует глубокого стека. Так что, блин, всего около 30 лет прошло, и achievement unlocked, познал динамическое программирование.

Забавно, кстати, что тот "Юный Техник" вроде как ссылался на Колмогорова, а на самом деле эту хрень изобрел некто Ричард Беллман.

Почти

Date: 2018-10-29 11:23 pm (UTC)
From: [personal profile] malobukov
Для рекурсии не всегда нужен глубокий стек, современные компиляторы умеют делать tail recursion (при которой стек не растёт, если нужен только последний результат и можно забыть промежуточные).

А так вообще-то динамическое программирование это спортивный навык, вроде умения прыгать с шестом. За пределами олимпиад и прочих соревнований не очень часто нужен.

Re: Почти

Date: 2018-10-30 01:08 am (UTC)
From: [personal profile] provokatorz
Зато теперь у вас есть еще одна "цепь" для собеседования. :))

January 2026

S M T W T F S
     12 3
45 6 7 8 9 10
11 12 13 14 151617
1819202122 23 24
25 262728293031

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 27th, 2026 09:50 pm
Powered by Dreamwidth Studios