Простий приклад для тих, хто хоче зрозуміти динамічне програмування [закрито]


96

Я шукаю зрозумілий приклад для того, хто хоче навчитися динамічному програмуванню. Тут є гарні відповіді про те, що таке динамічне програмування . Послідовність Фібоначчі є чудовим прикладом, але вона занадто мала, щоб подряпати поверхню. Це виглядає чудовим предметом для вивчення, хоча я ще не брав уроки алгоритмів, сподіваюся, він є у моєму списку навесні.

Відповіді:


30

1
Перегляд цієї лекції з MIT video.mit.edu/watch/…, а потім вирішення вищезазначених проблем допоможе вам зрозуміти, чому DP є корисним.
pg2286

Справа в тому, що посилання на YouTube у коментарі вже порушено. Нове посилання: youtube.com/watch?v=OQ5jsbhAv_M
AJP

Ознайомтесь із цим набором відео, які, на мою думку, досить інтуїтивно
охоплюють

Схоже, MIT перемістив їхній вміст з головної сторінки на сторінку MIT OpenCourseWare, тому надане посилання @ pg2286 недійсне. Посилання тепер 19. Динамічне програмування I Повний список відтворення Вступ до алгоритмів також доступний
rite2hhh


7

Ідея динамічного програмування полягає в тому, що ви кешуєте (запам'ятовуєте) рішення підзадач, хоча я думаю, що в цьому є щось більше.

Є багато проблем із Google Code Jam, такі що рішення вимагають динамічного програмування, щоб бути ефективним. Приклади:

Ласкаво просимо до Code Jam (помірний)

Обман логічного дерева (помірний)

PermRLE (жорсткий)

Зверніть увагу, що кожен з практичних конкурсів Code Jam має розділ "Аналіз конкурсу", якщо ви намагаєтесь вирішити проблему.


Дякую за ресурси. Час від часу я вирішую одне або два запитання від euler проекту, і, здається, я справді застряг у деяких проблемах, які потребують знань про DP.
AraK

5
  1. Geeks для geeks має велику колекцію проблем динамічного програмування. Я вважаю, що цей набір є одним з найкращих, якщо ви готуєтесь до співбесіди.
  2. Якщо вам потрібні невеликі навчальні відео з проблем DP, ви можете перевірити цю проблему в MIT.

4

Обчислення відстаней Левенштейна було однією з перших проблем, яку я вирішив за допомогою динамічного програмування; Я думаю, що це гідний наступний крок із послідовності Фібоначчі з точки зору складності.

http://en.wikipedia.org/wiki/Levenshtein_distance

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.