Friday, June 24, 2011

SW: Dynamicke programovanie

Dynamicke programovanie je metoda riesenia problemov, ktore vykazuju vlastnost prekryvajucich sa podproblemov, alebo optimalnej podstruktury. Prekryvajuce sa podproblemy znamenaju, ze rovnake podproblemy su pouzite pre stale vacsie problemy (down-top pristup - pozri algoritmus). Ak ma problem optimalnu podstrukturu, tak optimalne riesenie podproblemov vedie k rieseniu celeho problemu.

Dynamicke programovanie riesi napriklad najdenie optimalneho BVS, Fibonnaciho cisla, priechod ohodnotenym polom.

Najdenie optimalneho BVS 
Je dana mnozina prvkov, v ktorej chceme vyhladavat a pravdepodobnost, s ktorou budeme vyhladavat dany provok. Ulohou je zostavit BVS tak, aby priemerna doba vyhladania jedneho prvku bola co najmensia. Najcastejsie hladane prvky budu co najlbizsie ku korenu stromu.