Dynamické programování je optimalizační metoda založená na postupném řešení menších podúloh a složení konečného výsledku z těchto dílčích řešení, každé dílčí řešení je typicky mnohokrát využito.
Hranici v obraze si v této úloze definujeme jako cestu z pixelů o minimální celkové intenzitě vedoucí z jedné strany obrazu k protější straně (pro nalezení maximální cesty použijeme negativ obrazu). Cesta do pixelu Y může vést rovně nebo šikmo, ale nikdy ne ze strany ani se nesmí vracet:
X1 X2 X3 \ | / Y |
Jestliže známe optimální cestu path(Xi) do pixelů X1...3 a její cenu cost(Xi), pak optimální cesta do Y vede přes arg min(cost(Xi)) a její cena je cost(Y) = intensity(Y)+min(cost(Xi)). Pokud tedy hledáme cestu z horního okraje ke spodnímu, postupujeme po řádcích:
Algoritmus lze upravit pro více "kličkující" cesty rozšířením množiny povolených kroků v cestě (s případným zvýšením ceny delších kroků), ale všechny musí vést z předchozího řádku. Povolení kroků zpět by vedlo na Dijkstrův algoritmus pro nalezení nejkratší cesty v grafu (který také patří do kategorie dynamického programování).