Riešenie hlavolamov:
Parsovanie:
Riadenie robotov (agentov):
- Markovovský rozhodovací proces (MDP)
- V každom stave je množina možných akcií.
- Ako vybrať takú postupnosť akcií aby sme dosiahli želaný konečný stav?
Rozvrhovanie:
- Ako priradiť študentov do rozvrhových jednotiek tak, aby bola dodržanbá kapacita miestnosti a aby každý mal správne navrhnutý rozvrh?
- Ako priradiť stavebné stroje na stavby tak, aby sa dodržali postupy a termíny?
Príklad na problém rozvrhovania:
Máme A strojov, B stavieb a C dní.
Je daná množina obmedzení:
Pre každú stavbu je potrebná množina strojov A(n)
Niektoré stroje vyžadujú použitie iných strojov.
- napr. pred bagrom je potrebné použiť buldozér.
Naplánujte využitie strojov na ďalší mesiac.
Zostavenie rozvrhu pre študentov
Máme A študentov, B miestností a C predmetov.
Pre každý predmet rozmiestnite študentov do miestností tak, aby sa zmestili a aby v jednom čase boli na jednom mieste.
Constraint programming
Programátorská technika na riešenie kombinátorických úloh s obmedzeniami
Finálne riešenie:
Čiastkové riešenie:
i = 1
BACKTRACK(pre stĺpec i)
Ak i == 9 skonči lebo finálne riešenie sme našli.
for n=1 do 8
Umiestni i-tú kráľovnú do n-tého riadka a i-tého stĺpca.
Ak nie je kráľovná ohrozená,
BACKTRACK(i+1)
ak čiastkové riešenie existuje, ukonči.
Inak zdvihni kráľovnú
pokračuj ďalším n
ukonči, čiastkové riešenie neexistuje.
https://www.spiceworks.com/tech/devops/articles/what-is-dynamic-programming/
Dynamic programming is a computer programming technique where an algorithmic problem is first broken down into sub-problems, the results are saved, and then the sub-problems are optimized to find the overall solution — which usually has to do with finding the maximum and minimum range of the algorithmic query.
Richard Bellman