open atlas
↑ К треку
Алгоритмы с нуля ALG · 10 · 08

Dynamic programming: тест со свободным воспроизведением

Подсказки на свободное воспроизведение по всему юниту DP. Сначала ответьте своими словами, затем раскройте образцовый ответ и сравните.

ALG Middle ◷ 14 min
Уровень
ОсновыJuniorMiddleSenior

Воспроизведение бьёт перечитывание. На каждую подсказку проговорите или запишите полный ответ по памяти, прежде чем открыть образец — именно усилие припоминания закрепляет материал.

Цель

Восстановите хребет юнита — два разрешающих свойства, memoization против tabulation, как спроектировать state и его transition, и как работает оптимизация памяти — не подсматривая в уроки.

Вспомните перед уходом
  1. 01
    Какие два свойства должна иметь задача, прежде чем применима dynamic programming, и что даёт каждое?
  2. 02
    Сравните memoization и tabulation. Когда выбрать каждое?
  3. 03
    Как спроектировать state для DP-задачи и что делает state корректным?
  4. 04
    Что такое transition и почему порядок обхода должен его уважать?
  5. 05
    Объясните, как работает оптимизация памяти (скользящий массив) и когда она безопасна.
  6. 06
    Возьмите Longest Increasing Subsequence: дайте O(n^2) DP, идею O(n log n) и ловушку быстрой версии.
Итог

Если вы смогли восстановить каждый ответ по памяти, вы держите хребет юнита: подтвердить overlapping subproblems и optimal substructure, выбрать memoization или tabulation по глубине стека и памяти (а не по big-O), спроектировать минимальный достаточный state, написать transition по каждому выбору и обходить в порядке, уважающем его, и свернуть таблицу в окно лишь когда ни одно ещё нужное значение не перезаписывается. Сложность одинакова — число state на работу на один state.

Что-то непонятно?

Задай вопрос по этому уроку. Вопросы анонимны и попадают напрямую автору — урок станет лучше.

хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.