-
Rozděl problém na (překrývající se) podproblémy.
-
Napiš rekurzivní algoritmus.
-
Urči správné pořadí počítání podproblémů tak, aby se každý počítal právě jednou (bottom-up přístup).
-
Pokud je to nutné, sestav z optimální hodnoty její realizaci (třeba cestu nebo něco).
-
Sepiš pseudokód.
-
Dokaž korektnost rekurentního vztahu, bottom-up pořadí a rekonstrukce (zejména terminace).
-
Okomentuj složitost.
Dynamické programování
- Dynamic Programming
-
-
Interval Scheduling
-
Parenthesization
-
Knapsack
-
CYK
-
Sequence Alignment
-
Bellman-Ford
-
Conclusion
-
- Problémy
-
-
Interval Scheduling (plánování přednášek)
-
Parenthesization (uzávorkování)
-
Knapsack (batoh)
-
Cocke-Younger-Kasami (CYK) (analýza bezkontextových jazyků)
-
Sequence alignment (rozdíl dvou řetězců)
-
Bellman-Forde-Moore (nejkratší cesta v orientovaném grafu)
-