PA163 Programování s omezujícími podmínkami podzim 2019 Základní informace -i* Web predmetu: na IS a průsvitky průběžně na ISu (interaktivní osnova, učební materiály) ± vzorové príklady z řešeními: ukázky pro písemku i domácí úkoly JS> UkonCení predmetu: Jr písemná práce: 80 bodů cca 7 otázek: přehledové, srovnávací, algoritmy, pojmy, príklady (model) cca 25 bodů: príklad(y) návrhu modelu problému - probíráno ve cvicení vzory písemné práce dostupné na webu predmetu a 2 domácí úkoly: 20 bodu za jednu domácí úlohu lze získat až 10 bodu podmínkou je získání alespon 8 bodů z celkového poCtu 20 bodů za D.Ú. Jr bonusové body: cca 12 bodu 1 bod za aktivní úcast na prednášce hodnocení: A více než 90, B 89-80, C 79-70, D 69-60, E 59-50 Hana Rudová, Omezující podmínky, 16. prosince 2019 2 Organizace predmetu Literatura & Dechter, R. Constraint processing. Morgan Kaufmann Publishers, 2003. A http://www.ics.uci.edu/~dechter/books/ -i* Tsang, E. Foundations of Constraint Satisfaction. Academic Press, 1993. & http://www.bracil.net/edward/FCS.html & Barták, R. On-line guide to constraint programming. A http://ktilinux.ms.mff.cuni.cz/~bartak/constraints/ Barták, R. Programovaní s omezujícími podmínkami, prednáška na MFF UK. -i- http://kti.ms.mff.cuni.cz/~bartak/podminky/index.html ií> Elektronické materiály viz web predmetu Hana Rudová, Omezující podmínky, 16. prosince 2019 3 Organizace predmetu Přehled přednášky M Úvod Konzistencní algoritmy Prohledávací algoritmy & OptimalizaCní problémy a rešení JS> Opakování v příkladech Omezující podmínky v navazujících p r ednáškách: ií> PA167 Rozvrhování Hana Rudová, Omezující podmínky, 16. prosince 2019 4 Organizace predmetu Cvičení -í* Účast na čvičeníčh povinná v prípade více než jedné absence nutné zpracovat doplňující príklady Jr pri vysokém poctu absencí na cvicení predmet absolvovat nelze M Cíl praktické procvicení příkladů s omezujícími podmínkami u pocítadj Obsah s> Úvod do programovacího jazyka OPL ILOG od firmy IBM & ňešení problémů: globální podmínky, modelování, rozvrhování, prohledávání Hana Rudová, Omezující podmínky, 16. prosince 2019 5 Organizace predmetu Software: IBM ILOG CPLEX Optimization Studio -i* Dostupné ke stažení ve Studijních materiálech & Licence dostupná výhradne pro studenty predmetu! Šírením porušíte licenci. JS> Optimization Programming Language (OPL) -fc přirozený matematický popis optimalizacních modelů vysoko-úrovňová syntaxe s jednoduchým a strucným kódem a rešení problému nejen s omezujícími podmínkami ale i pro matematické programování -fc https://www.ibm.com/analytics/optimization-modeling -í* Tutoriály a dokumentace ve Studijních materiálech https://is.muni.cz/auth/el/1433/podzim2019/PA163/ilog/ILOG02_course.zip Hana Rudová, Omezující podmínky, 16. prosince 2019 6 Organizace predmetu Optimization Programming Language (OPL) Společnost Volsay vyrábí sloučeniny NH3 (amoniak) a NH4CI (chlorid amonný). Volsay má k dispozici: 50 jednotek dusíku (N), 180 jednotek vodíku (H) a 40 jednotek chloru (Cl). Volsay má zisk 40 EUR za prodej jednotky NH3 a 50 EUR za jednotku NH4Cl. Jak Volsay maximalizuje zisk na základe skladových zásob? Hana Rudová, Omezující podmínky, 16. prosince 2019 7 Organizace predmetu Optimization Programming Language (OPL) Společnost Volsay vyrábí sloučeniny NH3 (amoniak) a NH4CI (chlorid amonný). Volsay má k dispozici: 50 jednotek dusíku (N), 180 jednotek vodíku (H) a 40 jednotek chloru (Cl). Volsay má zisk 40 EUR za prodej jednotky NH3 a 50 EUR za jednotku NH4Cl. Jak Volsay maximalizuje zisk na základe skladových zásob? using CP; dvar int+ gas; dvar int+ chloride; Hana Rudová, Omezující podmínky, 16. prosince 2019 7 Organizace predmetu Optimization Programming Language (OPL) Společnost Volsay vyrábí sloučeniny NH3 (amoniak) a NH4CI (chlorid amonný). Volsay má k dispozici: 50 jednotek dusíku (N), 180 jednotek vodíku (H) a 40 jednotek chloru (Cl). Volsay má zisk 40 EUR za prodej jednotky NH3 a 50 EUR za jednotku NH4Cl. Jak Volsay maximalizuje zisk na základe skladových zásob? using CP; dvar int+ gas; dvar int+ chloride; maximize 40 * gas + 50 * chloride Hana Rudová, Omezující podmínky, 16. prosince 2019 7 Organizace predmetu Optimization Programming Language (OPL) Společnost Volsay vyrábí sloučeniny NH3 (amoniak) a NH4CI (chlorid amonný). Volsay má k dispozici: 50 jednotek dusíku (N), 180 jednotek vodíku (H) a 40 jednotek chloru (Cl). Volsay má zisk 40 EUR za prodej jednotky NH3 a 50 EUR za jednotku NH4Cl. Jak Volsay maximalizuje zisk na základe skladových zásob? using CP; dvar int+ gas; dvar int+ chloride; maximize 40 * gas + 50 * chloride subject to { gas + chloride <= 50; 3 * gas + 4 * chloride <= 180; chloride <= 40; }; Hana Rudová, Omezující podmínky, 16. prosince 2019 7 Organizace predmetu Úvod do programování s omezujícími podmínkami Obsah přednášky Ukázkový príklad: sudoku Základní pojmy: omezení, ... Jak řešíme problémy s omezujícími podmínkami Příklady a aplikace Složitost a úplnost Hana Rudová, Omezující podmínky, 16. prosince 2019 9 Úvod do CP Sudoku: problém 2 5 9 7 3 2 9 6 2 4 9 7 6 9 1 8 4 1 6 3 8 6 8 Přiřaď prázdným polím císla tak, že: císla odlišná na řádku, ve sloupci a v bloku Příklad převzat z přednášky Ch.Schulte, University of Uppsala Hana Rudová, Omezující podmínky, 16. prosince 2019 10 Úvod do CP Sudoku: řádky 2 5 9 7 3 2 9 6 2 4 9 7 6 9 1 8 4 1 6 3 8 6 8 Pr i rad' prázdným polím císla tak, že: císla odlišná na řádku, ve sloupci a v bloku Hana Rudová, Omezující podmínky, 16. prosince 2019 Úvod do CP Sudoku: sloupce 2 5 9 7 3 2 9 6 2 4 9 7 6 9 1 8 4 1 6 3 8 6 8 Prirad' prázdným polím císla tak, že: císla odlišná na rádku, ve sloupci a v bloku Hana Rudová, Omezující podmínky, 16. prosince 2019 12 Úvod do CP Sudoku: bloky 2 5 9 7 3 2 9 6 2 4 9 7 6 9 1 8 4 1 6 3 8 6 8 Přiřaď prázdným polím císla tak, že: císla odlišná na řádku, ve sloupci a v bloku Hana Rudová, Omezující podmínky, 16. prosince 2019 13 Úvod do CP Propagace v bloku: vstup 8 6 3 Hana Rudová, Omezující podmínky, 16. prosince 2019 14 Úvod do CP Propagace v bloku: vstup 8 6 3 Žádné pole v bloku nemůže obsahovat Čísla 3,6,8 Hana Rudová, Omezující podmínky, 16. prosince 2019 14 Úvod do CP Propagace v bloku: promazání hodnot 1,2,4,5,7,9 8 1,2,4,5,7,9 1,2,4,5,7,9 6 3 1,2,4,5,7,9 1,2,4,5,7,9 1,2,4,5,7,9 Žádné pole v bloku nemuže obsahovat císla 3,6,8 a propagace do dalších polí v bloku Rádky a sloupce: podobně Hana Rudová, Omezující podmínky, 16. prosince 2019 15 Úvod do CP Propagace: jedno pole 2 5 9 7 3 2 9 6 2 4 9 7 6 9 1 8 4 1 6 3 8 6 8 Odstranení císel z polí tak, že: císla odlišná na rádku, ve sloupci a v bloku Hana Rudová, Omezující podmínky, 16. prosince 2019 16 1,2,3,4,5,6,7,8,9 Úvod do CP Propagace: jedno pole a rádek 2 5 9 7 3 2 9 6 2 4 9 7 6 9 1 8 4 1 6 3 8 6 8 Odstranení císel z polí tak, že: císla odlišná na rádku, ve sloupci a v bloku Hana Rudová, Omezující podmínky, 16. prosince 2019 17 1,3,5,6,7,8 Úvod do CP Propagace: jedno pole a sloupec 2 5 9 7 3 2 9 6 2 4 9 7 6 9 1 8 4 1 6 3 8 6 8 Odstřanení císel z polí tak, že: císla odlišná na řádku, ve sloupci a v bloku Hana Rudová, Omezující podmínky, 16. přosince 2019 18 1,3,6,7 Úvod do CP Propagace: jedno pole a blok 2 5 9 7 3 2 9 6 2 4 9 7 6 9 1 8 4 1 6 3 8 6 8 1,3,6 Odstranění císel z polí tak, že: císla odlišná na rádku, ve sloupci a v bloku Hana Rudová, Omezující podmínky, 16. prosince 2019 19 Úvod do CP Iterativní propagače 2 5 9 7 3 2 9 6 2 4 9 7 6 9 1 8 4 1 6 3 8 6 8 & Iterování propagačí pro rádky, sloupce, bloky JS> Pokud stále zůstává víče možností: prohledávání Hana Rudová, Omezující podmínky, 16. prosince 2019 20 Úvod do CP Sudoku a programování s omezujícími podmínkami 2 5 9 7 3 2 9 6 2 4 9 7 6 9 1 8 4 1 6 3 8 6 8 Proměnné: pro každé pole s* mají hodnoty: císla & udržování množiny možných císel Omezení: vyjadřují odlišnosti relace mezi promennými Modelování: proměnné, hodnoty, omezení Řešení: propagace, prohledávání Hana Rudová, Omezující podmínky, 16. prosince 2019 21 Úvod do CP Omezení (constraint) & Dána & množina (doménových) proměnných Y = [yi,... ,yk} ± konečná množina hodnot (doména) D = Di u ... u Dk Omezení (podmínka) c na Y je podmnožina Di x ... x Dk tj. relace -i- omezuje hodnoty, kterých mohou proměnné nabývat současné Hana Rudová, Omezující podmínky, 16. prosince 2019 22 Úvod do CP Omezení (constraint) Dána & množina (doménových) proměnných Y = [yi,... ,yk} ± konečná množina hodnot (doména) D = Di u ... u Dk Omezení (podmínka) c na Y je podmnožina Di x ... x Dk tj. relace -i- omezuje hodnoty, kterých mohou proměnné nabývat současné Příklad: -i- promenné: A,B domény: {0,1} pro A {1,2} pro B omezení: A=B nebo (A,B) g {(0,1),(0,2),(1,2)} Hana Rudová, Omezující podmínky, 16. prosince 2019 22 Úvod do CP Omezení (constraint) & Dána & množina (doménových) promenných Y = [yi,... ,yk} ± konečná množina hodnot (doména) D = Di u ... u Dk Omezení (podmínka) c na Y je podmnožina Di x ... x Dk tj. relace -i- omezuje hodnoty, kterých mohou promenné nabývat současne C Príklad: -i- promenné: A,B domény: {0,1} pro A {1,2} pro B omezení: A=B nebo (A,B) g {(0,1),(0,2),(1,2)} & Omezení c definováno na promenných yi, ...yk je splneno, pokud pro hodnoty di g Di, ...dk g Dk platí (di,... dk) g c J* príklad (pokracování): omezení splneno pro (0, i), (0, 2), (i, 2), není splneno pro (i, i) Hana Rudová, Omezující podmínky, 16. prosince 2019 22 Úvod do CP Problém splňování podmínek (CSP) & Dána & konecná množina promenných X = [x\,... ,xn} konecná množina hodnot (doména) D = D\ u ... u Dn & konecná množina omezení C = [c\,cm} omezení je definováno na podmnožine X Problém splňování podmínek je trojice (X,D,C) (constraint satisfaction problem) Hana Rudová, Omezující podmínky, 16. prosince 2019 23 Úvod do CP Problém splňování podmínek (CSP) & Dána & konečná množina promenných X = {x1,... ,xn} konečná množina hodnot (doména) D = D1 u ... u Dn & konečná množina omezení C = {c1,cm} omezení je definováno na podmnožině X Problém splňování podmínek je trojice (X,D,C) (constraint satisfaction problem) M Příklad: Jr promenne: A,B,C a domeny: A G {0,1} B 1 C G {0,1, 2} omezení: A=B B=C Hana Rudová, Omezující podmínky, 16. prosince 2019 23 Úvod do CP Rešení CSP Cástecné ohodnocení (prirazení) promenných (d\,dk),k < n J» nekteré promenné mají prirazenu hodnotu Úplné ohodnocení (prirazení) promenných (d\,dn) všechny promenné mají prirazenu hodnotu Hana Rudová, Omezující podmínky, 16. prosince 2019 24 Úvod do CP Řešení CSP Částečné ohodnočení (prirazení) promennýčh (d1,dk),k < n J» nekteré promenné mají prirazenu hodnotu Úplné ohodnočení (prirazení) promennýčh (d1,dn) všechny promenné mají prirazenu hodnotu Řešení CSP úplné ohodnocení proměnných, které splnuje všechna omezení & (didn) g D1 x ... x Dn je rešení (X, D, C) pro každé c g C na xii,...xik platí (dii,...dik) g ct Hana Rudová, Omezující podmínky, 16. prosince 2019 24 Úvod do CP Řešení CSP & CásteCné ohodnocení (p r i razení) promenných (di,dk),k < n s> některé proměnné mají přiřazenu hodnotu & Úplné ohodnocení (p r i razení) promenných (di,dn) všechny proměnné mají přiřazenu hodnotu & Řešení CSP Jt úplné ohodnocení promenných, které spinuje všechna omezení & (d\dn) g Di x ... x Dn je rešení (X, D, C) pro každé c g C na xii,...xik platí (dii,...dik) g ct & Hledáme: jedno rešení nebo všechna rešení nebo optimální rešení vzhledem k úcelové funkci, tj. rešíme optimalizacní problém s podmínkami (constraint optimization problem) Hana Rudová, Omezující podmínky, 16. prosince 2019 24 Úvod do CP Prístup CP k programování -i* Formulace daného problému pomocí omezení: modelování & Řešení vybrané reprezentace pomocí a doménove specifických metod a obecných metod Hana Rudová, Omezující podmínky, 16. prosince 2019 25 Úvod do CP Obecné metody Algoritmy propagace omezení (konzistenCní algoritmy) a umožnují odstranit nekonzistentní hodnoty z domén promenných a zjednodušují problém a udržují ekvivalenci mezi puvodním a zjednodušeným problémem a používají se pro výpocet lokální konzistence a aproximují tak globální konzistenci A G (0,1}, B = 1, C G (0,1, 2}, A = B, A = C Hana Rudová, Omezující podmínky, 16. prosince 2019 26 Úvod do CP Obecné metody Algoritmy propagace omezení (konzistencní algoritmy) a umožnují odstranit nekonzistentní hodnoty z domén proměnných a zjednodušují problém a udržují ekvivalenci mezi puvodním a zjednodušeným problémem a používají se pro výpocet lokální konzistence a aproximují tak globální konzistenci A g (0,1}, B = 1, C g (0,1, 2}, A = B, A = C po propagaci: A = 0, B = 1, C g (1,2} Hana Rudová, Omezující podmínky, 16. prosince 2019 26 Úvod do CP Obecné metody Algoritmy propagace omezení (konzistencní algoritmy) it umožnují odstranit nekonzistentní hodnoty z domén proměnných it zjednodušují problém it udržují ekvivalenci mezi puvodním a zjednodušeným problémem it používají se pro výpocet lokální konzistence it aproximují tak globální konzistenci A g {0,1}, B = 1, C G {0,1, 2}, A = B, A = C po propagaci: A = 0, B = 1, C g {1,2} Prohledávací algoritmy it prohledávání stavového prostoru rešení Jr príklady: backtracking, metoda vetví a mezí Hana Rudová, Omezující podmínky, 16. prosince 2019 26 Úvod do CP Prohledávání: príklad Prohledávání pomocí vetvení JS> vytvorení podproblému s dodatecnou informací umožní další propagaci omezení X: {4,5}, Y: {4,5} X >=Y X=4 X=4 X = 4, Y = 4 X >=Y X = 5, Y: {4,5} X >=Y Hana Rudová, Omezující podmínky, 16. prosince 2019 27 Úvod do CP Doménové specifické metody & Specializované algoritmy -i* Nazývány rešiCe omezení (constraint solvers) -í* Príklady: program pro rešení systému lineárních rovnic it knihovny pro lineární programování -i- implementace unifikacního algoritmu Hana Rudová, Omezující podmínky, 16. prosince 2019 28 Úvod do CP Doménove specifické metody & Specializované algoritmy -i* Nazývány ř ešice omezení (constraint solvers) ii> Príklady: program pro rešení systému lineárních rovnic J* knihovny pro lineární programování -i- implementace unifikacního algoritmu JS> Programování s omezujícími podmínkami ± široký pojem zahrnující radu oblastí a lineární algebra, globální optimalizace, lineární a celocíselné programování, ... JS> Existence doménove specifických metod => použití místo obecných metod -i- hledání doménove specifických metod tak, aby mohly být použity místo obecných metod Hana Rudová, Omezující podmínky, 16. prosince 2019 28 Úvod do CP Algebrogram Přiřaďte cifry 0, ... 9 písmenům S, E, N, D, M, O, R, Y tak, aby platilo: SEND + MORE MONEY různá písmena mají přiřazena různé cifry a S a M nejsoů 0 Jediné rešení: 9567 + 1085 10652 Proměnné: Hana Růdová, Omezující podmínky, 16. prosince 2019 29 Úvod do CP Algebrogram C Prirad'te cifry 0, ... 9 písmenům S, E, N, D, M, O, R, Y tak, aby platilo: SEND + MORE MONEY % různá písmena mají prirazena různé cifry a S a M nejsou 0 Jediné rešení: 9567 + 1085 10652 M Promenné: S,E,N,D,M,O,R,Y Domény: 1..9 pro S,M 0..9 pro E,N,D,O,R,Y Hana Rudová, Omezující podmínky, 16. prosince 2019 29 Úvod do CP Algebrogram: alternativy pro omezení rovnosti C 1 omezení rovnosti Hana Rudová, Omezující podmínky, 16. prosince 2019 30 Úvod do CP Algebřogřam: alternativy přo omezení rovnosti C 1 omezení rovnosti 1000*S + 100*E + 10*N + D SEND + 1000*M + 100*0 + 10*R + E + MORE = 10000*M + 1000*0 + 100*N + 10*E + Y MONEY Hana Rudová, Omezující podmínky, 16. prosince 2019 30 Úvod do CP Algebrogram: alternativy pro omezení rovnosti C 1 omezení rovnosti 1000*S + 100*E + 10*N + D SEND + 1000*M + 100*O + 10*R + E + MORE 10000*M + 1000*O + 100*N + 10*E + Y MONEY & 5 omezení rovnosti použití „prenosových" proměnných P1,P2,P3,P4 s doménami 0..1 D + E = 10*P1 + Y, P1 + N + R = 10*P2 + E, P2 + E + O = 10*P3 + N, P3 + S + M = 10*P4 + O P4 M Hana Rudová, Omezující podmínky, 16. prosince 2019 30 Úvod do CP Algebrogram: alternativy pro omezení nerovnosti Hana Rudová, Omezující podmínky, 16. prosince 2019 31 Úvod do CP Algebrogram: alternativy pro omezení nerovnosti 28 omezení nerovnosti: X = Y pro X,Y e {S,E,N,D,M,O,R,Y} Hana Rudová, Omezující podmínky, 16. prosince 2019 31 Úvod do CP Algebrogram: alternativy pro omezení nerovnosti -* 28 omezení nerovnosti: X = Y pro X,Y g {S,E,N,D,M,O,R,Y} & 1 omezení pro nerovnost pro promenné x1,...,xn s doménami D1,... ,Dn: all_different (x1,... ,xn) := {(d1,... ,dn) , di = dj pro i = j} Hana Rudová, Omezující podmínky, 16. prosince 2019 31 Úvod do CP Optimalizacní problém s podmínkami (COP) Problém splnování podmínek (X,D,C) Účelová funkce obj : Sol — W Optimalizační problém s podmínkami (constraint optimization problem) it nalezení rešení d pro (X,D, C) takové, že obj (d) je optimální optimální = maximální nebo minimální Hana Rudová, Omezující podmínky, 16. prosince 2019 32 Úvod do CP Problém batohu (knapsack problem) Je dán batoh velikosti m a n predmetu mzné velikosti a ceny. Vyberte takové predmety, aby se vešly do batohu a jejich celková cena byla maximální. & Batoh velikosti m -í* Predmety velikosti v1,...,vn a ceny c1,...,cn M Promenné: Hana Rudová, Omezující podmínky, 16. prosince 2019 33 Úvod do CP Problém batohu (knapsack problem) Je dán batoh velikosti m a n predmetu různé velikosti a ceny. Vyberte takové predmety, aby se vešly do batohů a jejich celková cena byla maximální. & Batoh velikosti m -í* Predmety velikosti vi,...,vn a ceny ci,...,cn M Proměnné: x\,...,xn JS* Domény: Hana Růdová, Omezůjící podmínky, 16. prosince 2019 33 Úvod do CP Problém batohu (knapsack problem) Je dán batoh velikosti m a n předmětů různé velikosti a ceny. Vyberte takové předměty, aby se vešly do batohů a jejich celková cena byla maximální. & Batoh velikosti m -í* Předmety velikosti vi,...,vn a ceny ci,...,cn M Proměnné: x\,...,xn & Domény: 0..1 & Omezení: Hana Růdová, Omezující podmínky, 16. prosince 2019 33 Úvod do CP Problém batohu (knapsack problém) Je dán batoh velikosti m a n predmetu různé velikosti a ceny. Vyberte takové predmety, aby se vešly do batohu a jejich celková cena byla maximální. & Batoh velikosti m -í* Predmety velikosti vi,...,vn a ceny ci,...,cn M Promenné: x\,...,xn & Domény: 0..1 n & Omezení: ^ vi.xi < m i=1 & Účelová funkce: Hana Rudová, Omezující podmínky, 16. prosince 2019 33 Úvod do CP Problém batohu (knapsack problem) Je dán batoh velikosti m a n predmetu různé velikosti a ceny. Vyberte takové predmety, aby se vešly do batohů a jejich celková cena byla maximální. & Batoh velikosti m -í* Predmety velikosti vi,...,vn a ceny ci,...,cn M Přomenné: x\,...,xn & Domény: 0..1 n & Omezení: ^ vi.xi < m i=1 n Účelová funkce: maximize ^ qxi i=1 Hana Růdová, Omezující podmínky, 16. prosince 2019 33 Úvod do CP Aplikace: přehled ifc Operační výzkum optimalizační problémy J* rozvrhování, plánování, alokace zdrojů & Zpracování přirozeného jazyka a konstrukce parserU -í* Počítačová grafika -i- geometrické vztahy pri analýze scény JS> Databáze J* obnovení/zajištení konzistence dat & Molekulární biologie DNA sekvencování Hana Rudová, Omezující podmínky, 16. prosince 2019 34 Úvod do CP Príklad aplikace z MU: univerzitní rozvrhování rozvrhovací systém Unitime http://www.unitime.org International Timetabling Competition 2019 co-organized by Fl MU: https://www.itc2019.org Hana Rudová, Omezující podmínky, 16. prosince 2019 35 Úvod do CP Univerzitní rozvrhování: promenné a omezení Doménové promenné JS> cas výuky predmetu I: Timel, hodnoty: možné casy -í* místnost výuky predmetu I: Rooml, hodnoty: identifikátory místností Hana Rudová, Omezující podmínky, 16. prosince 2019 36 Úvod do CP Univerzitní rozvrhování: proměnné a omezení Doménové proměnné JS> cas výůky predmetů I: Timel, hodnoty: možné casy & místnost výůky predmetů I: Rooml, hodnoty: identifikátory místností Omezující podmínky & zakázaný cas: Timel = Prohibited -í* minimální velikost místnosti: Rooml > ConstSize J* identifikátory místností ůsporádány podle velikosti iť ConstSize: nejmenší identifikátor místnosti s velikostí Size Hana Růdová, Omezůjící podmínky, 16. prosince 2019 36 Úvod do CP Univeřzitní řozvřhování: přomenné a omezení Doménové přomenné JS> cas výuky predmetu I: Timel, hodnoty: možné casy ii> místnost výuky predmetu I: Rooml, hodnoty: identifikátory místností Omezující podmínky & zakázaný cas: Timel = Prohibited -í* minimální velikost místnosti: Rooml > ConstSize J* identifikátory místností usporádány podle velikosti i* ConstSize: nejmenší identifikátor místnosti s velikostí Size & v jedné místnosti v každém case nejvýše jeden predmet iS* jeden vyucující ucí nejvýše jeden predmet v každém case Hana Rudová, Omezující podmínky, 16. prosince 2019 36 Úvod do CP Univerzitní rozvrhování: optimalizace Optimalizační kritéria & výuka v preferovaných časech J* cena za výuku předmětu I ve vybraném čase: CostTimel Jt CostTime = CostTime1 + CostTime2 + ■ ■ ■ Hana Rudová, Omezující podmínky, 16. prosince 2019 37 Úvod do CP Univerzitní rozvrhování: optimalizace Optimalizační kritéria & výuka v preferovaných časech J* cena za výůků předmetů I ve vybraném case: CostTimel & CostTime = CostTimel + CostTime2 + • • • JS> výuka v preferovaných místnostech %> cena za výůků předmetů I ve vybraném case: CostRooml CostRoom = CostRooml + CostRoom2 + ■ ■ ■ Hana Růdová, Omezůjící podmínky, 16. prosince 2019 37 Úvod do CP Univerzitní rozvrhování: optimalizace Optimalizační kritéria & výuka v preferovaných casech J* cena za výuku předmetu I ve vybraném čase: CostTimel Jt CostTime = CostTime1 + CostTime2 + • • • JS> výuka v preferovaných místnostech %> cena za výuku předmetu I ve vybraném case: CostRooml Jt CostRoom = CostRoom1 + CostRoom2 + • • • & dva predmety jednoho studenta by se nemely překrývat Jt dva předmety I,J zároven navštevuje SIJ studentu Hana Rudová, Omezující podmínky, 16. prosince 2019 37 Úvod do CP Univerzitní rozvrhování: optimalizace Optimalizační kritéria & výuka v preferovaných časech J* cena za výůků predmetu I ve vybraném case: CostTimel & CostTime = CostTime1 + CostTime2 + • • • JS> výuka v preferovaných místnostech %> cena za výůků predmetů I ve vybraném case: CostRooml CostRoom = CostRoom1 + CostRoom2 + • • • & dva predmety jednoho studenta by se nemely překrývat a dva predmety I,J zároven navštevuje SIJ stůdentů CostOverlap = ^ SIJ I,J: timeOverlap(I,J) Hana Růdová, Omezůjící podmínky, 16. prosince 2019 37 Úvod do CP Univerzitní rozvrhování: optimalizace Optimalizační kritéria & výuka v preferovaných časech J* cena za výuku předmětu I ve vybraném case: CostTimel & CostTime = CostTimel + CostTime2 + • • • JS> výuka v preferovaných místnostech s* cena za výuku předmetu I ve vybraném Case: CostRooml Jt CostRoom = CostRooml + CostRoom2 + • • • & dva predmety jednoho studenta by se nemely překrývat * dva předmety IJ zároven navštevuje SIJ studentu CostOverlap = ^ SIJ I,J: timeOverlap(I,J) & minimize (WTime * CostTime + WRoom * CostRoom + WOverlap * CostOverlap) Hana Rudová, Omezující podmínky, 16. prosince 2019 37 Úvod do CP Polynomiální a NP-úplné problémy Polynomiální problémy a existůje algoritmůs polynomiální složitosti pro r ešení problémů JS> NP-úplné problémy ± rešitelné nedeterministickým polynomiálním algoritmem Jr potenciální rešení lze ove r it v polynomiálním case a v nejhorším p rípade exponenciální složitost (pokůd neplatí P=NP) Hana Růdová, Omezůjící podmínky, 16. prosince 2019 38 Úvod do CP Složitost: polynomiální problémy Lineární rovnice nad reálnými Čísly a promenné nad doménami z R, omezení: lineární rovnice a Gaussova eliminace a polynomiální složitost Hana Rudová, Omezující podmínky, 16. prosince 2019 39 Úvod do CP Složitost: polynomiální problémy Lineární rovnice nad reálnými Císly a promenné nad doménami z R, omezení: lineární rovnice a Gaussova eliminace a polynomiální složitost JS> Lineární nerovnice nad reálnými Císly a lineární programování, simplexová metoda a casto stací polynomiální složitost Hana Rudová, Omezující podmínky, 16. prosince 2019 39 Úvod do CP Složitost: NP-úplné problémy Boolean omezení ^ 0/1 proměnné Jr omezení = Boolean formule (konjunkce, disjunkce, implikace, ...) p r íklad: promenné A,B, C, omezení (A v B), (C == A), CSP problém (A v B) a (C == A) Hana Rudová, Omezující podmínky, 16. prosince 2019 40 Úvod do CP Složitost: NP-úplné problémy Boolean omezení ifc 0/1 proměnné Jr omezení = Boolean formule (konjunkce, disjunkce, implikace, ...) príklad: promenné A,B, C, omezení (A v B), (C == A), CSP problém (A v B) a (C == A) it problém splnitelnosti Boolean formule (SAT problém): NP-úplný J* n promenných: Hana Rudová, Omezující podmínky, 16. prosince 2019 40 Úvod do CP Složitost: NP-úplné problémy Boolean omezení it 0/1 proměnné Jr omezení = Boolean formule (konjunkce, disjunkce, implikace, ...) príklad: promenné A,B, C, omezení (A v B), (C == A), CSP problém (A v B) a (C == A) it problém splnitelnosti Boolean formule (SAT problém): NP-úplný it n promenných: 2n možností Hana Rudová, Omezující podmínky, 16. prosince 2019 40 Úvod do CP Složitost: NP-úplné problémy Boolean omezení it 0/1 proměnné Jr omezení = Boolean formule (konjunkce, disjunkce, implikace, ...) príklad: promenné A,B, C, omezení (A v B), (C == A), CSP problém (A v B) a (C == A) it problém splnitelnosti Boolean formule (SAT problém): NP-úplný it n promenných: 2n možností * Omezení nad konečnými doménami obecný CSP problém it problém splnitelnosti nad obecnými relacemi it NP-úplný problém Jr n promenných, d maximální velikost domény: Hana Rudová, Omezující podmínky, 16. prosince 2019 40 Úvod do CP Složitost: NP-úplné problémy Boolean omezení it 0/1 proměnné Jr omezení = Boolean formule (konjunkce, disjunkce, implikace, ...) príklad: promenné A,B, C, omezení (A v B), (C == A), CSP problém (A v B) a (C == A) it problém splnitelnosti Boolean formule (SAT problém): NP-úplný it n promenných: 2n možností * Omezení nad konečnými doménami obecný CSP problém it problém splnitelnosti nad obecnými relacemi it NP-úplný problém Jr n promenných, d maximální velikost domény: dn možností Hana Rudová, Omezující podmínky, 16. prosince 2019 40 Úvod do CP Složitost a úplnost & Úplné vs. neúplné algoritmy -i- úplný algoritmus prozkoumává množinu všech rešení i* neúplný algoritmus: neprozkoumává celou množinu rešení ^ nevím jako možná odpoved', ziskem muže být efektivita -i- príklad: neúplný polynomiální algoritmus pro NP-úplný problém Hana Rudová, Omezující podmínky, 16. prosince 2019 41 Úvod do CP Složitost a úplnost & Úplné vs. neúplné algoritmy -i- úplný algoritmůs prozkoůmává množinů všech r ešení i* neúplný algoritmůs: neprozkoůmává celoů množinů r ešení ^ nevím jako možná odpoved', ziskem může být efektivita -i- p r íklad: neúplný polynomiální algoritmůs pro NP-úplný problém & Složitost rešice -i- Gaůssova eliminace (P), SAT r ešice (NP), obecný CSP r ešic (NP) Hana Růdová, Omezůjící podmínky, 16. prosince 2019 41 Úvod do CP Složitost a úplnost & Úplné vs. neúplné algoritmy -i- úplný algoritmus prozkoumává množinu všech r ešení i* neúplný algoritmus: neprozkoumává celou množinu r ešení ^ nevím jako možná odpoved', ziskem muže být efektivita -i- p r íklad: neúplný polynomiální algoritmus pro NP-úplný problém & Složitost rešiče -i- Gaussova eliminace (P), SAT r ešice (NP), obecný CSP r ešic (NP) * Složitost algoritmů propagace omezení vetšinou polynomiální neúplné algoritmy Hana Rudová, Omezující podmínky, 16. prosince 2019 41 Úvod do CP Složitost a úplnost & Úplné vs. neúplné algořitmy -i- úplný algoritmus prozkoumává množinu všech r ešení i* neúplný algoritmus: neprozkoumává celou množinu r ešení ^ nevím jako možná odpoved', ziskem muže být efektivita -i- p r íklad: neúplný polynomiální algoritmus pro NP-úplný problém & Složitost řešice -i- Gaussova eliminace (P), SAT r ešice (NP), obecný CSP r ešic (NP) * Složitost algořitmu přopagace omezení Jt vetšinou polynomiální neúplné algoritmy JS> Složitost přohledávacích algořitmu a úplné algoritmy, p ríklady: backtracking, generuj & testuj it neúplné algoritmy, neprohledávají celý prostor r ešení, p r íklad: omezení casu prohledávání Hana Rudová, Omezující podmínky, 16. prosince 2019 41 Úvod do CP Grafová reprezentace CSP & Reprezentace podmínek S» intenzionální (matematická/logická formůle) -4» extenzionální (výcet k-tic kompatibilních hodnot, 0-1 matice) Hana Růdová, Omezůjící podmínky, 16. prosince 2019 42 Úvod do CP Grafová reprezentace CSP Reprezentace podmínek S» intenzionální (matematická/logická formule) -4» extenzionální (výCet k-tic kompatibilních hodnot, 0-1 matice) Graf: vrcholy, hrany (hrana spojuje dva vrcholy) Hypergraf: vrcholy, hrany (hrana spojuje množinu vrcholU) Reprezentace CSP pomocí hypergrafu podmínek s> vrchol = promenná, hyperhrana = podmínka Hana Rudová, Omezující podmínky, 16. prosince 2019 42 Úvod do CP Grafová reprezentace CSP & Reprezentace podmínek S» intenzionální (matematická/logická formule) extenzionální (výCet k-tic kompatibilních hodnot, 0-1 matice) & Graf: vrcholy, hrany (hrana spojuje dva vrcholy) Hypergraf: vrcholy, hrany (hrana spojuje množinu vrcholU) JS> Reprezentace CSP pomocí hypergrafu podmínek s> vrchol = promenná, hyperhrana = podmínka M Príklad J* promenné x1,...,x6 s doménou {0,1} -i- omezení c1 : x1 + x2 + x6 = 1 c2: x1 - x3 + x4 = 1 c3 : x4 + x5 - x6 > 0 c4: x2 + x5 - x6 = 0 Hana Rudová, Omezující podmínky, 16. prosince 2019 42 /X 1 ^3 X "A 0, 1 0, 1 i. 0,1 \ 0, 1 0, 1 Úvod do CP Binární CSP Ji* Binární CSP a CSP, ve kterém jsoů poůze binární podmínky ůnární podmínky zakódovány do domény promenné & Graf podmínek pro binární CSP -i- není nůtné ůvažovat hypergraf, stací graf (podmínka spojůje poůze dva vrcholy) JS> CSP lze transformovat na binární CSP & Ekvivalence CSP a dva CSP problémy jsoů ekvivalentní, pokůd mají stejnoů množinů řešení M Rozšír ená ekvivalence CSP a ř ešení problémů lze mezi seboů „syntakticky" p ř evést Jt např: obecný CSP převedeme na binární CSP a porovnáme tyto binární CSP Hana Růdová, Omezující podmínky, 16. prosince 2019 43 Úvod do CP Duální problém Duální problém: původním omezením odpovídají nové duální promenné a promenné: k-ární podmínku ci převedeme na duální promennou vi s doménou obsahující konzistentní k-tice s» omezení: pro každou dvojici podmínek ci a Cj sdílející promenné zavedeme binární podmínku Rij mezi vi a Vj omezující duální promenné na k-tice, ve kterých mají sdílené promenné stejnou hodnotu P ríklad Jt promenné x1,...,x6 s doménou {0,1} Jt omezení c1 : x1 + x2 + x6 = 1 ...v1 c2: x1 - x3 + x4 = 1 ...v2 c3 : x4 + x5 - x6 > 0...v3 c4: x2 + x5 - x6 = 0 ...v4 (0,0,1), (0,1,0), R21 & R33 (1,0,0) R11 (0,0,1), (1,0,0), (1,1,1) R31 R22 & R33 Hana Rudová, Omezující podmínky, 16. prosince 2019 44 Úvod do CP Použití binarizace Konstrukce duálního problému a jedna z možných metod binarizace Výhody binarizace Jr získáváme unifikovaný tvar CSP problému a rada algoritmu navržena pro binární CSP Jt pro výukové úCely je vysvetlení na binárních CSP vhodné algoritmy jsou prehlednejší a jednodušší na pochopení verze pro nebinární podmínkyje casto prímým rozšírením obecné verze a tyto algoritmy jsou i aplikovatelné s pomocí binarizace na obecné CSP Ale: znacné zvetšení velikosti problému Hana Rudová, Omezující podmínky, 16. prosince 2019 45 Úvod do CP Použití binarizace -í* Konstrukce duálního problému a jedna z možných metod binarizace & Výhody binarizace Jr získáváme unifikovaný tvar CSP problému a rada algoritmu navržena pro binární CSP a pro výukové úcely je vysvetlení na binárních CSP vhodné algoritmy jsou p rehlednejší a jednodušší na pochopení verze pro nebinární podmínkyje casto p rímým rozšírením obecné verze a tyto algoritmy jsou i aplikovatelné s pomocí binarizace na obecné CSP -í* Ale: znacné zvetšení velikosti problému Nebinární podmínky & složitejší propagacní algoritmy lze využít jejich sémantiky pro lepší propagaci & p r íklad: all_different vs. množina binárních nerovností Hana Rudová, Omezující podmínky, 16. prosince 2019 45 Úvod do CP Hranová konzistence Propagace omezení Príklad: a promenné: A,B,C domény: A g {0,1} B=0 C g {0,1, 2, 3} omezení: A = B, B = C, A = C => A=1, B=0, C g {2, 3} Algoritmy pro propagaci omezení (konzistencní algoritmy) a umožnují odstranit nekonzistentní hodnoty z domén promenných a zjednodušují problém a udržují ekvivalenci mezi puvodním a zjednodušeným problémem Hana Rudová, Omezující podmínky, 16. prosince 2019 47 Hranová konzistence Vřcholová konzistence Vřcholová konzistence (node consistency) NC a unární podmínky p r evedeme do domén promenných & Vřchol reprezentující Ví je vřcholove konzistentní: ± každá hodnota z aktuální domény promenné Ví splnuje všechny unární podmínky s promennou Ví Hana Rudová, Omezující podmínky, 16. prosince 2019 48 Hranová konzistence Vrcholová konzistence Vrcholová konzistence (node consistency) NC it unární podmínky p r evedeme do domén proměnných Vrchol reprezentující Vi je vrcholove konzistentní: it každá hodnota z aktuální domény promenné Vi spinuje všechny unární podmínky s promennou Vi CSP problém je vrcholove konzistentní: it každý jeho vrchol je vrcholove konzistentní Hana Rudová, Omezující podmínky, 16. prosince 2019 48 Hranová konzistence Hranová konzistence (Arc Consistency AC) & Pouze pro binární CSP (až její rozšírení jsou pro nebinární CSP) Jr podmínka odpovídá hrane v grafu podmínek á* více podmínek na jedné hrane převedeme do jedné podmínky £ Hrana (Vi,Vj) je hranové konzistentní, práve když pro každou hodnotu x z aktuální domény Di existuje hodnota y v Dj tak, že ohodnocení [Vi = x,Vj = y] spinuje všechny binární podmínky nad Vi,Vj. Hana Rudová, Omezující podmínky, 16. prosince 2019 49 Hranová konzistence Hranová konzistence (Arc Consistency AC) Poůze pro binární CSP (až její rozšíření jsoů pro nebinární CSP) Jr podmínka odpovídá hrane v grafů podmínek a více podmínek na jedné hrane převedeme do jedné podmínky Hrana (Vi,Vj) je hranove konzistentní, práve když pro každoů hodnotů x z aktůální domény Di existůje hodnota y v Dj tak, že ohodnocení [Vi = x,Vj = y] splnůje všechny binární podmínky nad Vi,Vj. Hranová konzistence je smerová konzistence hrany (Vt,Vj) nezarůcůje konzistenci hrany (Vj,Vt) A I 3..7 A již zrevidované hrany opet nekonzistentní & Revize hrany opakujeme, dokud dochází ke zmenšení nejaké domény JS* procedure AC-1(G) repeat Changed := false for V hranu (i, j) g G do Changed := revise((i,j)) or Changed until not(Changed) end AC-1 Hana Rudová, Omezující podmínky, 16. prosince 2019 51 Hranová konzistence Algoritmus AC-1 Jak udelat CSP hranove konzistentní? & Provedeme revizi každé hrany A již zrevidované hrany opet nekonzistentní & Revize hrany opakujeme, dokud dochází ke zmenšení nejaké domény JS* procedure AC-1(G) repeat Changed := false for V hranu (i, j) g G do Changed := revise((i,j)) or Changed until not(Changed) end AC-1 == AB, BA, BC, CB, Hana Rudová, Omezující podmínky, 16. prosince 2019 51 Hranová konzistence Algoritmus AC-1 Jak udeiat CSP hranove konzistentní? & Provedeme revizi každé hrany A již zrevidované hrany opet nekonzistentní & Revize hrany opakujeme, dokud dochází ke zmenšení nejaké domény JS* procedure AC-1(G) repeat Changed := false for V hranu (i, j) g G do Changed := revise((i, j)) or Changed until not(Changed) end AC-1 => AB, BA, BC, CB, AB, BA, BC, CB, Hana Rudová, Omezující podmínky, 16. prosince 2019 51 Hranová konzistence Algoritmus AC-1 Jak udeiat CSP hranove konzistentní? & Provedeme revizi každé hrany A již zrevidované hrany opet nekonzistentní & Revize hrany opakujeme, dokud dochází ke zmenšení nejaké domény JS* procedure AC-1(G) repeat Changed := false for V hranu (í, j) g G do Changed := revise((í, j)) or Changed until not(Changed) end AC-1 => AB, BA, BC, CB, AB, BA, BC, CB, AB, BA, BC, CB Hana Rudová, Omezující podmínky, 16. prosince 2019 51 Hranová konzistence Složitost AC-1 proceduře AC-1(G) repeat Changed := false for V hranu (i, j) e G do Changed := revise((i,j)) or Changed until not(Changed) end AC-1 ii> k maximální velikost domény, e poCet hran, n poCet proměnných Hana Rudová, Omezující podmínky, 16. prosince 2019 52 Hranová konzistence Složitost AC-1 proceduře AC-1(G) repeat Changed := false for V hranu (i, j) e G do Changed := revise((i,j)) or Changed until not(Changed) end AC-1 ii> k maximální velikost domény, e poCet hran, n poCet proměnných M Složitost O(enk3) Hana Rudová, Omezující podmínky, 16. prosince 2019 52 Hranová konzistence Složitost AC-1 procedure AC-1(G) repeat Changed := false for V hranu (i, j) g G do Changed := revise((i,j)) or Changed until not(Changed) end AC-1 -í* k maximální velikost domény, e pocet hran, n pocet promenných M Složitost O(enk3) & cyklus p r es všechny hrany O(e) Hana Rudová, Omezující podmínky, 16. prosince 2019 52 Hranová konzistence Složitost AC-1 proceduře AC-1(G) repeat Changed := false for V hranu (i, j) g G do Changed := revise((i, j)) or Changed until not(Changed) end AC-1 ii> k maximální velikost domény, e pocet hran, n pocet proměnných M Složitost O(enk3) it cyklus pres všechny hrany O(e) it revise O(k2) Hana Rudová, Omezující podmínky, 16. prosince 2019 52 Hranová konzistence Složitost AC-1 proceduře AC-1(G) repeat Changed := false for V hranu (i, j) g G do Changed := revise((i, j)) or Changed until not(Changed) end AC-1 ii> k maximální velikost domény, e pocet hran, n pocet proměnných M Složitost O(enk3) & cyklus pres všechny hrany O(e) revise O(k2) s> jeden cyklus smaže (v nejhorším prípade) práve jednu hodnotu z domény promenné, celkem nk hodnot (každá promenná má v doméne až k hodnot) => O(nk) Hana Rudová, Omezující podmínky, 16. prosince 2019 52 Hranová konzistence Neefektivita AC-1 I když zmenšíme jedinoů doménů, provádí se revize všech hran. Tyto hrany ale revizí nemůsí být vůbec zasaženy. Jaké hrany tedy revidovat po zmenšení domény? Hana Růdová, Omezůjící podmínky, 16. prosince 2019 53 Hranová konzistence Neefektivita AC-1 I když zmenšíme jedinoů doménů, provádí se revize všech hran. Tyto hrany ale revizí nemůsí být vůbec zasaženy. Jaké hrany tedy revidovat po zmenšení domény? 3 ty, jejichž konzistence může být zmenšením domény promenné narůšena Jt jsoů to hrany (i,k), které vedoů do promenné Vk se zmenšenoů doménoů (il ,k) (k,m) V V k * m Hana Rudová, Omezující podmínky, 16. prosince 2019 54 Hranová konzistence Algoritmus AC-3 Opakování revizí můžeme delat pomocí fronty i> stací jediná fronta hran, které je potreba (znova) zrevidovat pridáváme tam jen hrany, jejichž konzistence mohla být narušena zmenšením domény V V m procedure AC-3(G) Q := {(i,j) | (i,j) e hrany(G), i = j} while Q non empty do vyber a smaž (k,m) z Q if revise((k,m)) then Q := Q u {(i, k) e hrany(G), i = k, i = m} end while end AC-3 % seznam hran pro revizi % pridání pouze hran, které % dosud nejsou ve fronte Hana Rudová, Omezující podmínky, 16. prosince 2019 54 Hranová konzistence Algoritmus AC-3 Opakování revizí mužeme delat pomocí fronty i> staCí jediná fronta hran, které je potreba (znova) zrevidovat pridávame tam jen hrany, jejichž konzistence mohla být narušena zmenšením domény V V m procedure AC-3(G) Q := {(i,j) | (i,j) g hrany(G), i = j} while Q non empty do vyber a smaž (k,m) z Q if revise((k, m)) then Q := Q u {(i, k) g hrany(G), i = k, i = m} end while ^ stací jediná fronta hran, které je potr eba (znova) zrevidovat p r idáváme tam jen hrany, jejichž konzistence mohla být narušena zmenšením domény V V m procedure AC-3(G) Q := {(í,j) | (í,j) g hrany(G), í = j} while Q non empty do vyber a smaž (k,m) z Q if revise((k,m)) then Q := Q u {(í, k) g hrany(G), í = k, í = m} end while ^® €<*(C Príklad: iniciální fronta: AB, BA, BC, CB; revize AB nep r idá nic (BA odpovídá m,k); % seznam hran pro revizi % p r idání pouze hran, které % dosud nejsou ve fronte Hana Rudová, Omezující podmínky, 16. prosince 2019 54 Hranová konzistence Algoritmus AC-3 Opakování revizí můžeme delat pomocí fronty i> stací jediná fronta hran, které je potřeba (znova) zrevidovat přidáváme tam jen hrany, jejichž konzistence mohla být narůšena zmenšením domény V V m % seznam hran pro revizi procedure AC-3(G) Q := {(i,j) I (i,j) g hrany(G), i = j} while Q non empty do vyber a smaž (k,m) z Q if revise((k,m)) then Q := Q u {(i, k) g hrany(G), i = k, i = m} end while A stací jediná fronta hran, které je potreba (znova) zrevidovat pridáváme tam jen hrany, jejichž konzistence mohla být narušena zmenšením domény V V m procedure AC-3(G) Q := ) I ) e hrany(G), i = j} while Q non empty do vyber a smaž (k,m) z Q if revise((k,m)) then Q := Q u {(i,k) e hrany(G), i = k, i = m} end while % seznam hran pro revizi % pridání pouze hran, které % dosud nejsou ve fronte end AC-3 Příklad: iniciální fronta: AB, BA, BC, CB; revize AB nepřidá nic (BA odpovídá m,k); revize BA nepřidá nic (AB odpovídá m,k a CB už je ve fronte); revize BC přidá AB (CB odpovídá m,k); Hana Rudová, Omezující podmínky, 16. prosince 2019 54 Hranová konzistence Algoritmus AC-3 Opakování revizí můžeme dělat pomocí fronty i> staCí jediná fronta hran, které je potr eba (znova) zrevidovat p r idáváme tam jen hrany, jejichž konzistence mohla být narušena zmenšením domény V V m procedure AC-3(G) Q := {(i,j) | (i,j) e hrany(G), i = j} while Q non empty do vyber a smaž (k,m) z Q if revise((k, m)) then Q := Q u {(i, k) e hrany(G), i = k, i = m} end while % seznam hran pro revizi % p r idání pouze hran, které % dosud nejsou ve fronte end AC-3 Příklad: iniciální fronta: AB, BA, BC, CB; revize AB nep ř idá nic (BA odpovídá m,k); revize BA nep ř idá nic (AB odpovídá m,k a CB už je ve fronte); revize BC p ř idá AB (CB odpovídá m,k); revize CB nep r idá nic (BC odpovídá m,k); Hana Rudová, Omezující podmínky, 16. prosince 2019 54 Hranová konzistence Algoritmus AC-3 Opakování revizí mužeme delat pomocí fronty staCí jediná fronta hran, které je potreba (znova) zrevidovat pridáváme tam jen hrany, jejichž konzistence mohla být narušena zmenšením domény V V m % seznam hran pro revizi procedure AC-3(G) Q := {(i,j) | (i,j) e hrany(G), i = j} while Q non empty do vyber a smaž (k,m) z Q if revise((k, m)) then Q := Q u {(i, k) e hrany(G), i = k, i = m} end while A O(k) jakmile je omezení pridáno do fronty, doména (k) jedné z jeho dvou promenných (2) byla redukována alespon o jednu hodnotu ii> Technika AC-3 je dnes asi nejpoužívánejší, ale stále není optimální Hana Rudová, Omezující podmínky, 16. prosince 2019 55 Hranová konzistence Podpora hodnoty AC-3: při každé revizi hrany testůjeme množství dvojic hodnot na konzistenci vzhledem k podmínce. Tyto testy znova opakůjeme při každé další revizi hrany. Hana Růdová, Omezůjící podmínky, 16. prosince 2019 56 Hranová konzistence Podpora hodnoty AC-3: p r i každé revizi hrany testujeme množství dvojic hodnot na konzistenci vzhledem k podmínce. Tyto testy znova opakujeme p r i každé další revizi hrany. Hana Růdová, Omezující podmínky, 16. prosince 2019 56 Hranová konzistence Podpora hodnoty AC-3: pri každé revizi hrany testujeme množství dvojic hodnot na konzistenci vzhledem k podmínce. Tyto testy znova opakujeme pri každé další revizi hrany. -** Pri revizi hrany (V2,V\) vyradíme hodnotu a z domény promenné V2. A Nyní musíme prozkoumat doménu V3, zda nekterá z hodnot a, b, c, d neztratila svoji podporu ve V2. Hana Rudová, Omezující podmínky, 16. prosince 2019 56 Hranová konzistence Podpora hodnoty AC-3: pri každé revizi hrany testujeme množství dvojic hodnot na konzistenci vzhledem k podmínce. Tyto testy znova opakujeme pri každé další revizi hrany. J* Pri revizi hrany (V2,V\) vyradíme hodnotu a z domény promenné V2. Jt Nyní musíme prozkoumat doménu V3, zda nekterá z hodnot a, b, c, d neztratila svoji podporu ve V2. Hodnoty a, b, c není treba znova kontrolovat <= mají ve V2 také jinou podporu než a. Hana Rudová, Omezující podmínky, 16. prosince 2019 56 Hranová konzistence Podpora hodnoty AC-3: při každé revizi hrany testůjeme množství dvojic hodnot na konzistenci vzhledem k podmínce. Tyto testy znova opakůjeme při každé další revizi hrany. J* Při revizi hrany (V2,V1) vyřadíme hodnotů a z domény promenné V2. A Nyní můsíme prozkoůmat doménů V3, zda nekterá z hodnot a, b, c, d neztratila svoji podporů ve V2. A Hodnoty a, b, c není třeba znova kontrolovat <= mají ve V2 také jinoů podporů než a. Podpora (support) pro a g Dí = {(j, b> | b g Dj, (a, b) g cíj} -i- a g D2 má podpory {(3, a>, (3, b>, (3, d>} &> d g D3 má poůze jedinoů podporů {(2,a>} b g D2 má podpory {(1, a>, (1, c>, (3, a>, (3, c>} JS> Podpory spocítáme jen jednoů. Při opakovaných revizích je bůdeme poůžívat. Hana Růdová, Omezůjící podmínky, 16. prosince 2019 56 Hranová konzistence Algoritmus na inicializaci podpor & Udržujeme seznam hodnot, které sami podporujeme (víme komu ríct, když zmizíme). Sjb: množina dvojic (i, a), pro které je (j, b) podporou & Udržujeme pocet vlastních podpor (víme, co nám chybí). counter[(i, j), a]: pocet podpor, které má hodnota a g Di u promenné Vj procedure initialize(G) Q := {}, S := {} // vyprázdnení datových struktur for each (Vi,Vj) g hrany(G) do for each a g Di do total := 0 for each b g Dj do if (a,b) konzistentní vzhledem k cij then total := total+1 Sj,b := Sj,b u {(i, a)} counter[(i,j),a] := total if counter[(i,j),a] = 0 then smaž a z Di Q := Q u {(i,a)} return Q //Q je fronta se smazanými hodnotami Hana Rudová, Omezující podmínky, 16. prosince 2019 57 Hranová konzistence Aktualizace podpor behem výpočtu Situace po zpracování hrany (Ví,Vj) algoritmem initialize Hana Rudová, Omezující podmínky, 16. prosince 2019 58 Hranová konzistence Aktualizace podpor během výpočtu Situace po zpracování hrany (Vi,Vj) algoritmem initialize Využití strůktůr s podporami: 1. Předpokládejme, že b3 je vyřazena z domény Vj. 2. Zjistíme v Sjjb3, pro které hodnoty je b3 podporou (tj. < i, a2), < i, a3>). 3. Snížíme counter ů techto hodnot (odstraníme jim jednů podporů). 4. Pokůdje nekterý counter vynůlován (a3), potom p ríslůšnoů hodnotů vyr adíme z domény a pokracůjeme s ní od kroků (1). Hana Rudová, Omezující podmínky, 16. prosince 2019 58 Hranová konzistence Algoritmus AC-4 procedure AC-4(G) Q := initialize(G) while not empty(Q) do vyber a smaž libovolný (j, b) g Q for each (i, a) g Sjbb do counter[(i,j),a] := counter[(i,j),a] - 1 if (counter[(i, j),a] =0) a (a g Di) then smaž a z Di Q := Q u {(i, a)} Hana Rudová, Omezující podmínky, 16. prosince 2019 59 Hranová konzistence Algoritmus AC-4 procedure AC-4(G) Q := initialize(G) while not empty(Q) do vyber a smaž libovolný (j, b) g Q for each ( í, a) g Sjbb do counter[(í,j),a] := counter[(í,j),a] - 1 if (counter[(í, j),a] =0) a (a g Dí) then smaž a z Dí Q := Q u {( í, a)} & Složitost O(ek2) => algoritmus optimální v nejhorším p rípade -i- složitost initialize Hana Rudová, Omezující podmínky, 16. prosince 2019 59 Hranová konzistence Algoritmus AC-4 procedure AC-4(G) Q := initialize(G) while not empty(Q) do vyber a smaž libovolný (j, b) g Q for each (i, a) g Sjbb do counter[(i,j),a] := counter[(i,j),a] - 1 if (counter[(i, j),a] =0) a (a g Di) then smaž a z Di Q := Q u {(i, a)} & Složitost O(ek2) => algoritmus optimální v nejhorším prípade Jt složitost initialize O(ek2) (Vi,Vj) g hrany(G), a g Di, b g Dj -k složitost while cyklu Hana Rudová, Omezující podmínky, 16. prosince 2019 59 Hranová konzistence Algoritmus AC-4 procedure AC-4(G) Q := initialize(G) while not empty(Q) do vyber a smaž libovolný (j, b) g Q for each (i, a) g Sjbb do counter[(í,j),a] := counter[(i,j),a] - 1 if (counter[(i, j),a] =0) a (a g Di) then smaž a z Di Q := Q u {(i, a)} & Složitost O(ek2) => algoritmus optimální v nejhorším prípade Jt složitost initialize O(ek2) (Vi,Vj) g hrany(G), a g Di, b g Dj Jt složitost while cyklu O(ek2): postupně musím odebrat všechny podpory a tech je O(ek2) Hana Rudová, Omezující podmínky, 16. prosince 2019 59 Hranová konzistence Algoritmus AC-4 procedure AC-4(G) q := initialize(G) while not empty(Q) do vyber a smaž libovolný (j,b) eQ for each (i,a) e Sjbb do & Složitost O(ek2) => algoritmus optimální v nejhorším prípade Jt složitost initialize O(ek2) <^= (Vi,Vj) g hrany(G), a g Di, b g Dj & složitost while cyklu O(ek2): postupne musím odebrat všechny podpory a tech je O(ek2) M Pamet'ová nárocnost, není nejlepší v průmerném prípade (inicializace zustává) counter[(i,j),a] := counter[(i,j),a] - 1 if (counter[(i, j),a] =0) a (a g Di) then smaž a z Di Q := Q u {(i,a>} Hana Rudová, Omezující podmínky, 16. prosince 2019 59 Hranová konzistence Další AC algoritmy Existuje rada dalších algoritmu pro zajištení hranové konzistence A AC-5, AC-6, AC-7, ... & AC-6 (Bessiěre, Cordier) A zlepšuje pamet'ovou nárocnost a průmerný cas AC-4 & drží si pouze jednu podporu, další podpory hledá až pri ztráte aktuální podpory AC-3.1: AC-3 hledá podpory vždy od zacátku, jak to vylepšit? & AC-2001: AC-3 s frontou proměnných místo fronty omezení JS> Porovnání: AC-3 není (teoreticky) optimální A AC-4 je (teoreticky) optimální, ale (prakticky) pomalý i> AC-6/7jsou (prakticky) rychlejší než AC-4, ale složité A AC-2001: v praxi je casté využití fronty promenných Hana Rudová, Omezující podmínky, 16. prosince 2019 60 Hranová konzistence AC-3.1: optimální algoritmus AC-3 & Co je na AC-3 neefektivní? hledání podpor v REVISE, které vždy zacíná od nuly! if „neexistuje y g Dj takové, že (x,y) je konzistentní" then JS> AC-3.1 (Zhang, Yap) it beh stejný jako u AC-3 it pro každou hodnotu si pamatuje poslední nalezenou podporu (last) v každém smeru a hledání zacíná u ní procedure EXIST((i,x),j) y := last((í,x),j) if y g Dj then return true while y := next(y,Dj) a y = nil do if (x,y) g cij then % cij omezení s proměnými í, j last((i,x),j) := y return true return false Hana Rudová, Omezující podmínky, 16. prosince 2019 61 Hranová konzistence AC-2001: jiný optimální algoritmus AC-3 proceduře AC-2001(G) Používá verzi AC-3 s frontou proměnných Q := {i | i g vrcholy(G)} % seznam vrcholů pro revizi while neprazdna(Q) do vyber a smaž j z Q for Vi g vrcholy (G) takové, že (i, j) g hr any (G) do if REVISE2001(i, j) then if Di = 0 then return fail Q := Q u {i} return true Hana Rudová, Omezující podmínky, 16. prosince 2019 62 Hranová konzistence AC-2001: jiný optimální algoritmus AC-3 procedure AC-2001(G) Používá verzi AC-3 s frontou proměnných Q := {i | i g vrcholy(G)} % seznam vrcholů pro revizi while neprazdna(Q) do vyber a smaž j z Q for Vi g vrcholy (G) takové, že (i, j) g hr any (G) do if REVISE2001(i, j) then if Di = 0 then return fail Q := Q u {i} return true Algoritmus fakticky pracuje s rozdílovými procedure REVISE2001(i, j) množinami, tj. pro každou promennou DELETED := false si pamatuje, jaké hodnoty byly smazány for V x g Di do z domény od poslední revize if last ((i, x), j) G Dj then (podobne jako AC-3.1) if 3y g Dj a y > las t ((i, x), j) a (x,y) g dj then last((i,x),j) := y else smaž x z Di; DELETED := true return DELETED Hana Rudová, Omezující podmínky, 16. prosince 2019 62 Hranová konzistence Je hranová konzistence dostatečná (úplná)? & Použitím AC odstraníme mnoho nekompatibilních hodnot Jt Dostaneme potom rešení problému? NE s» Víme alespon zda r ešení existuje? NE Hana Rudová, Omezující podmínky, 16. prosince 2019 63 Hranová konzistence Je hranová konzistence dostatečná (úplná)? Použitím AC odstraníme mnoho nekompatibilních hodnot & Dostaneme potom rešení problému? NE s» Víme alespon zda r ešení existuje? NE X,Y,Z e{1, 2}, X = Y, Y = Z, Z = X Jt hranove konzistentní a nemá žádné r ešení Hana Rudová, Omezující podmínky, 16. prosince 2019 63 Hranová konzistence Je hranová konzistence dostatečná (úplná)? Poůžitím AC odstraníme mnoho nekompatibilních hodnot Jt Dostaneme potom rešení problémů? NE a Víme alespon zda r ešení existůje? NE M X,Y,Z G (1, 2}, X = Y, Y = Z, Z = X Jt hranove konzistentní a nemá žádné r ešení -i* Jaký je tedy význam AC? Jt nekdydár ešení p rímo nejaká doména se vyprázdní => rešení neexistůje všechny domény jsoů jednoprvkové => máme r ešení * v obecném p rípade se alespon zmenší prohledávaný prostor Hana Růdová, Omezůjící podmínky, 16. prosince 2019 63 Hranová konzistence Konzistence po cestě Konzistence po ceste (PC path consistency) i Príklad: X, Y, Z e {1, 2}, X = Y, Y = Z, Z = X Jak posílit konzistenci? Budeme se zabývat nekolika podmínkami najednou. JS> Cesta (V0,V1,...,Vm) je konzistentní práve tehdy, když pro každou dvojici hodnot x e D0 a y e Dm splnující binární podmínky na hrane V0, Vm existuje ohodnocení proměnných V1,...Vm-1 takové, že všechny binární podmínky mezi sousedy Vj, Vj+1 jsou splneny. & CSPje konzistentní po ceste, práve když jsou všechny cesty konzistentní. Hana Rudová, Omezující podmínky, 16. prosince 2019 65 Konzistence po ceste Konzistence po cestě (PC path consistency) i Príklad: X, Y, Z g (1, 2}, X = Y, Y = Z, Z = X Jak posílit konzistenci? Budeme se zabývat nekolika podmínkami najednou. hodnot x g Do a y g Dm splnující binární podmínky na hrane Vo, Vm existuje ohodnocení proměnných V1,...Vm-1 takové, že všechny binární podmínky mezi sousedy Vj, Vj+1 jsou splneny. & CSPje konzistentní po ceste, práve když jsou všechny cesty konzistentní. -i* Definice PC nezarucuje, že jsou splneny všechny podmínky nad vrcholy cesty, zabývá se pouze podmínkami mezi sousedy V2 V4 • • • Vj v3 Hana Rudová, Omezující podmínky, 16. prosince 2019 65 Konzistence po ceste PC a cesty délky 2 & Zjišťování konzistence všech cest není efektivní iS* Stací overit konzistenci cest délky 2 & Veta: CSP je PC práve tehdy, když každá cesta délky 2 je PC. Hana Rudová, Omezující podmínky, 16. prosince 2019 66 Konzistence po ceste PC a cesty délky 2 & Zjišťování konzistence všech cest není efektivní iS* Stací overit konzistenci cest délky 2 & Veta: CSP je PC práve tehdy, když každá cesta délky 2 je PC. Důkaz: 1) PC => cesty délky 2 jsou PC 2) cesty délky 2 jsou PC == Vn cesty délky n jsou PC == PC indukcí podle délky cesty a) n = 2 platí triviálne b) n + 1 (za predpokladu, že platí pro n) i) vezmeme libovolných n + 2 vrcholu V0,V1,...,Vn+1 ii) vezmeme libov. dve kompatibilní hodnoty x0 g D0 a xn+1 g Dn+1 (kompatibilní = splňující všechny bin.podmínky mezi xo a xn+1) iii) podle a) jsou všechny cesty délky 2 PC, a tedy i V0, Vn, Vn+1 je PC najdeme tedy xn g Dn tak, že (x0,xn) a (xn,xn+1) jsou konzistentní iv) podle indukcního kroku najdeme zbylé hodnoty na ceste V0,V1,...,Vn Hana Rudová, Omezující podmínky, 16. prosince 2019 66 Konzistence po ceste PC a cesty délky 2 & Zjišťování konzistence všech cest není efektivní iS* Stací oveřit konzistenci cest délky 2 & Veta: CSP je PC práve tehdy, když každá cesta délky 2 je PC. Důkaz: 1) PC => cesty délky 2 jsoů PC 2) cesty délky 2 jsoů PC == Vn cesty délky n jsoů PC == PC indůkcí podle délky cesty a) n = 2 platí triviálne b) n + 1 (za předpokladů, že platí pro n) i) vezmeme libovolných n + 2 vrcholů Vo,V1,...,Vn+1 ii) vezmeme libov. dve kompatibilní hodnoty x0 g D0 a xn+1 g Dn+1 (kompatibilní = splňůjící všechny bin.podmínky mezi x0 a xn+1) iii) podle a) jsoů všechny cesty délky 2 PC, a tedy i V0, Vn, Vn+1 je PC najdeme tedy xn g Dn tak, že (x0,xn) a (xn,xn+1) jsoů konzistentní iv) podle indůkcního kroků najdeme zbylé hodnoty na ceste V0,V1,...,Vn JS> Definici PC lze tedy ůpravit tak, že vyžadůjeme poůze konzistenci cest délky 2 Hana Růdová, Omezůjící podmínky, 16. prosince 2019 66 Konzistence po ceste Vztah PC a AC Ji PC == AC & pokud je cesta konzistentní (PC), pak je i hrana konzistentní (AC), tj. z PC tedy plyne AC PC: ke každé „dvojici hodnot" pro i,i najdu hodnotu v j == AC: ke každé hodnote v i tedy najdu hodnotu v j Hana Rudová, Omezující podmínky, 16. prosince 2019 67 Konzistence po ceste Vztah PC a AC Ji PC == AC & pokud je cesta konzistentní (PC), pak je i hrana konzistentní (AC), tj. z PC tedy plyne AC PC: ke každé „dvojici hodnot" pro i,i najdu hodnotu v j == AC: ke každé hodnote v i tedy najdu hodnotu v j AC = PC p r íklad: X, Y, Z g {1, 2}, X = Y, Y = Z, Z = X & je AC, ale není PC, zduvodnení: Hana Rudová, Omezující podmínky, 16. prosince 2019 67 Konzistence po ceste Vztah PC a AC Ji PC == AC & pokud je cesta konzistentní (PC), pak je i hrana konzistentní (AC), tj. z PC tedy plyne AC PC: ke každé „dvojici hodnot" pro i,i najdu hodnotu v j == AC: ke každé hodnote v i tedy najdu hodnotu v j AC = PC p r íklad: X, Y, Z g {1, 2}, X = Y, Y = Z, Z = X -í* je AC, ale není PC, zduvodnení: X=0, Y=1 nelze rozšírít po ceste (X,Z,Y) Hana Rudová, Omezující podmínky, 16. prosince 2019 67 Konzistence po ceste Vztah PC a AC Ji PC == AC & pokud je cesta konzistentní (PC), pak je i hrana konzistentní (AC), tj. z PC tedy plyne AC PC: ke každé „dvojici hodnot" pro i,i najdu hodnotu v j == AC: ke každé hodnote v i tedy najdu hodnotu v j AC = PC príklad: X, Y, Z g {1, 2}, X = Y, Y = Z, Z = X -í* je AC, ale není PC, zduvodnení: X=0, Y=1 nelze rozšírít po ceste (X,Z,Y) AC vyrazuje nekompatibilní prvky z domény promenných. Co delá PC? & PC vyrazuje dvojice hodnot a PC si pamatuje podmínky explicitne a PC si pamatuje, které dvojice hodnot jsou v relaci & PC delá všechny relace nad dvojicemi implicitní (A A+1 Jak ůdelat každoů cestů z Vi do Vj p r es Vm konzistentní? -4» Pro dvojici promenných Vi a Vj aktůalizůji prvky relace Rij a Vyradím dvojici (a, b) z Rij, pokůd neexistůje taková hodnota c g Vm, že (a, c) je kozistentní pro Rim a (c, b) je kozistentní pro Rmj Hana Růdová, Omezůjící podmínky, 16. prosince 2019 69 Konzistence po ceste Algoritmus revize cesty JS> Jak udělat každou cestu z Vi do Vj pres Vm konzistentní? it Pro dvojici proměnných Vi a Vj aktualizuji prvky relace Rij it Vyradím dvojici (a, b) z Rij, pokud neexistuje taková hodnota c g Vm, že (a, c) je kozistentní pro Rim a (c, b) je kozistentní pro Rmj & procedure revise-3(i, m, j) Deleted := false for V (a, b) g Rij do if neexistuje c g Dm takové, že (a,c) g Rim a (c,b) g Rmj-then smaž (a, b) z Rij Deleted := true Vi, V2 g (a,b), V3 g (a,b,c), Vi = V2V2 = V3, Vi = V3 return Deleted revise-3(1,2,3) (V1,V3) : end revise-3 Hana Rudová, Omezující podmínky, 16. prosince 2019 69 Konzistence po ceste Algoritmus revize cesty JS> Jak udělat každou cestu z Vi do Vj p r es Vm konzistentní? -fc Pro dvojici proměnných Vi a Vj aktualizuji prvky relace Rij a Vyřadím dvojici (a, ž?) z Rij, pokud neexistuje taková hodnota c g Vm, že (a, c) je kozistentní pro Rim a (c, b) je kozistentní pro Rmj & procedure revise-3(i,m,j) Deleted := false for V (a, b) g Rij do if neexistuje c g Dm takové, že (a,c) g Rim a (c,b) g Rmj-then smaž (a,b) z Rij Deleted := true Vi, V2 g (a,b), V3 g (a,b,c), Vi = V2,V2 = V3, Vi = V3 return Deleted revise-3(1,2,3) (V1,V3) :aa ab ac end revise-3 ba bb bc pozor: aa bb nejsou už v relaci R13 Hana Rudová, Omezující podmínky, 16. prosince 2019 69 Konzistence po ceste Algoritmus revize cesty JS> Jak udělat každou cestu z Vi do Vj pres Vm konzistentní? it Pro dvojici proměnných Vi a Vj aktualizuji prvky relace Rij it Vyradím dvojici (a, b) z Rij, pokud neexistuje taková hodnota c g Vm, že (a, c) je kozistentní pro Rim a (c, b) je kozistentní pro Rmj & procedure revise-3(i, m, j) Deleted := false for V (a, b) g Rij do if neexistuje c g Dm takové, že (a,c) g Rim a (c,b) g Rmj-then smaž (a, b) z Rij Deleted := true VUV2 g (a,b), V3 g (a,b,c), Vi = V2,V2 = V3, Vi = V3 return Deleted revise-3(i,2,3) (Vi,V3) :aa ab ac end revise-3 ba bb bc pozor: aa bb nejsou už v relaci Ri3 JS> Složitost O(k3) (k maximální velikost domény) <= cyklus pro každou dvojici (a, b): O (k2), vnitrní cyklus pres c g Dj: O (k) Hana Rudová, Omezující podmínky, 16. prosince 2019 69 Konzistence po ceste Algoritmus PC-1 -í* Jak udelat CSP konzistentní po ceste? Hana Rudová, Omezující podmínky, 16. prosince 2019 70 Konzistence po ceste Algoritmus PC-1 & Jak ůdelat CSP konzistentní po ceste? Provedeme revizi každé cesty délky 2 C Revize cesty odstraní dvojice == již zrevidované cesty opet nekonzistentní -í* Revize cesty opakůjeme dokůd jsoů nejaké dvojice smazány JS> Princip je podobný jako ů AC-1 & Před spůštením algoritmů nůtno inicializovat relace Rij pomocí existůjících binárních (i ůnárních) podmínek & proceduře PC-1(G) repeat Changed := false for m := 1 to n for i := 1 to n for j := 1 to n Changed := revise-3(i,m, j) or Changed until not(Changed) end PC-1 Hana Růdová, Omezůjící podmínky, 16. prosince 2019 70 Konzistence po ceste Složitost algoritmu PC-1 C Celková složitost O(n5k5) odvození podobné jako pro AC-1 Hana Rudová, Omezující podmínky, 16. prosince 2019 71 Konzistence po ceste Složitost algoritmu PC-1 C Celková složitost O(n5k5) odvození podobné jako pro AC-1 <= 3 cykly pro trojice hodnot O(n3) ^ revise-3 O(k3) ^ O(n2k2) pocet opakování repeat cyklu <= jeden cyklus smaže (v nejhorším prípade) práve jednu dvojici hodnot celkem n2k2 hodnot (n2 dvojic promenných, k2 dvojic hodnot pro každou dvojici promenných) M Neefektivita PC-1 Hana Rudová, Omezující podmínky, 16. prosince 2019 71 Konzistence po ceste Složitost algoritmu PC-1 C Celková složitost O(n5k5) odvození podobné jako pro AC-1 <= 3 cykly pro trojice hodnot O(n3) ^ revise-3 O(k3) ^ O(n2k2) pocet opakování repeat cyklů <= jeden cyklůs smaže (v nejhorším p rípade) práve jednů dvojici hodnot celkem n2k2 hodnot (n2 dvojic promenných, k2 dvojic hodnot pro každoů dvojici promenných) M Neefektivita PC-1 a opakovaná revize všech cest, i když pro ne nedošlo k žádné zmene Hana Růdová, Omezůjící podmínky, 16. prosince 2019 71 Konzistence po ceste Složitost algoritmu PC-1 C Celková složitost O(n5k5) odvození podobné jako pro AC-1 <= 3 cykly pro trojice hodnot O(n3) ^ revise-3 O(k3) <= O(n2k2) pocet opakování repeat cyklu <= jeden cyklus smaže (v nejhorším p rípade) práve jednu dvojici hodnot celkem n2k2 hodnot (n2 dvojic promenných, k2 dvojic hodnot pro každou dvojici promenných) M Neefektivita PC-1 p r i revizi stací kontrolovat jen zasažené cesty podobne jako pro PC-1 Hana Rudová, Omezující podmínky, 16. prosince 2019 71 Konzistence po ceste Složitost algoritmu PC-1 C Celková složitost O(n5k5) odvození podobné jako pro AC-1 <= 3 cykly pro trojice hodnot O(n3) ^ revise-3 O(k3) ^ O(n2k2) pocet opakování repeat cyklů <= jeden cyklůs smaže (v nejhorším p rípade) práve jednů dvojici hodnot celkem n2k2 hodnot (n2 dvojic promenných, k2 dvojic hodnot pro každoů dvojici promenných) M Neefektivita PC-1 a cesty stací brát poůze s jednoů orientací ... Rj je totéž co Rjí p r íklad: Vi,V2 e {a,b},V3 e {a,b,c},V = V2V = V,3 V = V3 důsledek revise-3(1, 2, 3) a revise-3(3,2,1) je totožný <= ke každé dvojici hodnot z V1,V3 (V3,V1) hledám kompatibilní hodnotů z V2 p r i revizi stací kontrolovat jen zasažené cesty podobne jako pro PC-1 Hana Růdová, Omezující podmínky, 16. prosince 2019 71 Konzistence po ceste Algoritmus PC-2 -i* Cesty beru pouze s jednou orientací A aktualizuji pouze jednu z Rij, Rji -í* Do fronty dávám pouze zasažené cesty A podobná modifikace jako AC-3 ± revise-3(i, m, j) mení Rij, Hana Rudová, Omezující podmínky, 16. prosince 2019 72 Konzistence po ceste Algoritmus PC-2 -i* Cesty beru pouze s jednou orientací Jt aktualizuji pouze jednu z Rij, Rji -í* Do fronty dávám pouze zasažené cesty Jt podobná modifikace jako AC-3 ± revise-3(i, m, j) mení Rij, stací tedy aktualizovat Rli p r es j a Rlj p r es i & Pr ed spustením algoritmu iľ inicializovat relace Rij pomocí existujících binárních (i unárních) podmínek JS> proceduře PC-2(G) Q := {(i,m,j) | 1 < i < j < n, 1 < m < n, m = i, m = j} //seznam cest pro revizi while Q non empty do vyber a smaž trojici (i,m,j) z Q if revise-3(i,m, j) then Q := Q u | 1 < l < n, l = i, l = j} //jako u AC pridáváme jen cesty, co ješte nejsou ve fronte end while end PC-2 Hana Rudová, Omezující podmínky, 16. prosince 2019 72 Konzistence po ceste Složitost algoritmu PC-2 C- Složitost O(n3k5) Hana Rudová, Omezující podmínky, 16. prosince 2019 73 Konzistence po ceste Složitost algoritmu PC-2 M Složitost O(n3k5) %> každé (i,m,j) může být ve fronte maximálne k2 krát => O(k2) <= když je (i,m,j) přidáno do fronty, Rij bylo redukováno alespoň o jednu hodnotu Jt celkem n3 trojic (i,m,j) =^> O(n3) s* revise-3 O(k3) Hana Rudová, Omezující podmínky, 16. prosince 2019 73 Konzistence po ceste Složitost algoritmu PC-2 M Složitost O(n3k5) %> každé (i,m,j) může být ve fronte maximálne k2 krát == O(k2) <= když je (i,m,j) přidáno do fronty, Rij bylo redůkováno alespon o jednů hodnotů a celkem n3 trojic (i,m,j) ==> O(n3) s* revise-3 O(k3) & Algoritmůs není optimální podobne jako AC-3 a existůje algoritmůs PC-4 založen na pocítání podpor & složitost PC-4 je O(n3k3), což ůžje optimální Hana Růdová, Omezůjící podmínky, 16. prosince 2019 73 Konzistence po ceste Složitost algoritmu PC-2 M Složitost O(n3k5) %> každé (i,m,j) může být ve fronte maximálne k2 krát => O(k2) <= když je (i,m,j) pridáno do fronty, Rij bylo redukováno alespon o jednu hodnotu a celkem n3 trojic (i, m,j) => O(n3) s* revise-3 O(k3) £ Algoritmus není optimální podobne jako AC-3 a existuje algoritmus PC-4 založen na pocítání podpor & složitost PC-4 je O(n3k3), což už je optimální JS> Cvicení: rešte následující problém pomocí PC-2 algoritmu V1 g (0,1, 2, 3},V2 g (0,1},V3 g (1, 2} V3 = V1 + 1, V2 = V3, V1 = V2 Hana Rudová, Omezující podmínky, 16. prosince 2019 73 Konzistence po ceste Složitost algoritmu PC-2 M Složitost O(n3k5) %> každé (i,m,j) může být ve fronte maximálne k2 krát => O(k2) <= když je (i,m,j) pridáno do fronty, Rij bylo redukováno alespon o jednu hodnotu a celkem n3 trojic (i,m,j) => O(n3) s* revise-3 O(k3) & Algoritmus není optimální podobne jako AC-3 a existuje algoritmus PC-4 založen na pocítání podpor & složitost PC-4 je O(n3k3), což už je optimální JS> Cvicení: rešte následující problém pomocí PC-2 algoritmu V1 G {0,1, 2, 3},V2 G {0,1},V3 G (1, 2} V3 = V1 + 1, V2 = V3, V1 = V2 -i* Nápoveda: zkonstruuj iniciální relace Rij Hana Rudová, Omezující podmínky, 16. prosince 2019 73 Konzistence po ceste Složitost algoritmu PC-2 M Složitost O(n3k5) %> každé (i,m,j) může být ve fronte maximálne k2 krát => O(k2) <= když je (i,m,j) pridáno do fronty, Rij bylo redukováno alespon o jednu hodnotu a celkem n3 trojic (i, m,j) => O(n3) s* revise-3 O(k3) £ Algoritmus není optimální podobne jako AC-3 a existuje algoritmus PC-4 založen na pocítání podpor & složitost PC-4 je O(n3k3), což už je optimální JS> Cvicení: rešte následující problém pomocí PC-2 algoritmu V1 g {0,1, 2, 3},V2 g {0,1},V3 g {1, 2} V3 = V1 + 1, V2 = V3, V1 = V2 -i- Nápoveda: zkonstruuj iniciální relace Rij iniciálne pridej do fronty (V 1, V2, V3), (V 1, V3, V2), (V2, V1, V3) Hana Rudová, Omezující podmínky, 16. prosince 2019 73 Konzistence po ceste Omezení PC algoritmů JS> Pamet'ové nároky Jt protože PC eliminuje dvojice hodnot z omezení, potrebuje používat extenzionální reprezentaci omezení (pro každou dvojici hodnot si pamatuji, zdaje/není v doméne) JS> Pomer výkon/cena Jt PC eliminuje více (nebo stejne) nekonzistencí jako AC Jt pomer výkonu ke zjednodušení problému je ale mnohem horší než u AC j* Zmeny grafu omezení it PC pridává hrany (omezení) i tam, kde puvodne nebyly a mení tak konektivitu grafu S> to vadí pri dalším rešení problému, kdy se nemohou používat heuristiky odvozené od grafu (resp. dané původním problémem) & PC stále není dostatecné Hana Rudová, Omezující podmínky, 16. prosince 2019 74 Konzistence po ceste Omezení PC algoritmů JS> Pamet'ové nároky protože PC eliminůje dvojice hodnot z omezení, potr ebůje poůžívat extenzionální reprezentaci omezení (pro každoů dvojici hodnot si pamatůji, zdaje/není v doméne) JS> Pomer výkon/cena A PC eliminůje více (nebo stejne) nekonzistencí jako AC A pomer výkonů ke zjednodůšení problémů je ale mnohem horší než ů AC j* Zmeny grafů omezení -i- PC p r idává hrany (omezení) i tam, kde původne nebyly a mení tak konektivitů grafů S> to vadí p r i dalším r ešení problémů, kdy se nemohoů poůžívat heůristiky odvozené od grafů (resp. dané původním problémem) & PC stále není dostatecné V,X,Y,Z g {1, 2, 3}, X = Y, Y = Z, Z = X, V = X, V = Y, V = Z je PC a p r esto nemá r ešení Hana Růdová, Omezůjící podmínky, 16. prosince 2019 74 Konzistence po ceste Na půli cesty od AC k PC & Jak oslabit PC, aby algoritmus: .i* nemel pamet'ové nároky PC s» nemenil graf podmínek s byl silnejší než AC? Hana Rudová, Omezující podmínky, 16. prosince 2019 75 Konzistence po ceste Na půli cesty od AC k PC Jak oslabit PC, aby algoritmus: it nemel paměťové nároky PC Jt neměnil graf podmínek it byl silnejší než AC? Omezená konzistence po ceste - Restricted Path Consistency (RPC) it testujeme PC jen v prípade, když je šance, že to povede k vyřazení hodnoty z domény promenné Príklad: Vlt V2 g [a,b},V3 g [a,b,c},V1 = V2, V2 = V3, Vi = V3 je AC ale není PC RPC odstraní z domény V3 hodnoty a, b Hana Rudová, Omezující podmínky, 16. prosince 2019 75 Konzistence po ceste Omezená konzistence po ceste (RPC) & Jak to poznáme? Jedná se o jedinou vzájemnou podporu. & Promenná Vi je omezene konzistentní po ceste (Restricted Path Consistent, RPC): -i* každá hrana vedoucí z Ví je hranove konzistentní -fc pro každé a g Dí platí: je-li b jediná podpora a ve vrcholu j, potom v každém vrcholu k (spojenem s í a j) existuje hodnota c tak, že (a, c) a (b, c) jsou kompatibilní s príslušnými podmínkami Hana Rudová, Omezující podmínky, 16. prosince 2019 76 Konzistence po ceste Omezená konzistence po cestě (RPC) & Jak to poznáme? Jedná se o jedinou vzájemnou podporu. & Proměnná Ví je omezene konzistentní po ceste (Restricted Path Consistent, RPC): -i* každá hrana vedoucí z Ví je hranove konzistentní -fc pro každé a g Dí platí: je-li b jediná podpora a ve vrcholu j, potom v každém vrcholu k (spojenem s í a j) existuje hodnota c tak, že (a, c) a (b, c) jsou kompatibilní s príslušnými podmínkami -í* Algoritmus: založen na AC-4 + seznam cest pro PC (viz Barták přednáška) Hana Rudová, Omezující podmínky, 16. prosince 2019 76 Konzistence po ceste Propagace pro nebinární omezení Nebinární omezení Zobecnení principů NC, AC, a PC smerem ke k-konzistenci Jr zajímavé z pohledů složitosti řešení problémů a pracůje se s libovolnými k-ticemi promenných -*> v praxi se vzhledem k pameťové a ccasové složitosti nevyůžívá Hana Růdová, Omezůjící podmínky, 16. prosince 2019 78 Propagace pro nebinární omezení Nebinární omezení Zobecnení principu NC, AC, a PC smerem ke k-konzistenci Jr zajímavé z pohledu složitosti rešení problému a pracuje se s libovolnými k-ticemi promenných -*> v praxi se vzhledem k pamet'ové a casové složitosti nevyužívá JS> Obecné typy konzistence pro nebinární podmínky pracuje se p rímo s a príklad: obecná hranová konzistence, konzistence mezí Hana Rudová, Omezující podmínky, 16. prosince 2019 78 Propagace pro nebinární omezení Nebinární omezení Zobecnení principů NC, AC, a PC smerem ke k-konzistenci Jr zajímavé z pohledů složitosti řešení problémů a pracůje se s libovolnými k-ticemi promenných v praxi se vzhledem k pameťové a casové složitosti nevyůžívá Obecné typy konzistence pro nebinární podmínky pracůje se přímo s n-árními podmínkami a příklad: obecná hranová konzistence, konzistence mezí Globální omezení: specifické typy konzistencí s vyůžívá se sémantika omezení, zameřené opet na konkrétní omezení speciální typy konzistence pro globální omezení (př. a11_different) Hana Růdová, Omezůjící podmínky, 16. prosince 2019 78 Propagace pro nebinární omezení Nebinární omezení Zobecnení principu NC, AC, a PC smerem ke k-konzistenci Jr zajímavé z pohledu složitosti rešení problému a pracuje se s libovolnými k-ticemi promenných -*> v praxi se vzhledem k pamet'ové a ccasové složitosti nevyužívá JS> Obecné typy konzistence pro nebinární podmínky Jt pracuje se prímo s n-árními podmínkami a príklad: obecná hranová konzistence, konzistence mezí & Globální omezení: specifické typy konzistencí s využívá se sémantika omezení, zamerené opet na konkrétní omezení speciální typy konzistence pro globální omezení (pr. all_different) & Pro různé podmínky lze použít ruzný druh konzistence -i- A k-konzistence -í* Silná k-konzistence => j-konzistence V j < k M k-konzistence ^ silná k-konzistence Hana Rudová, Omezující podmínky, 16. prosince 2019 81 Propagace pro nebinární omezení Silná k-konzistence ABC 3-konzistentní graf (1,1) lze rozšířit na (1,1,1) 1,2 — 1,2 -=H 1,2,3 —U-1 I-1-1 1--7- není 2-konzistentní (3) nelze rozšířit (2, 2) lze rozšířit na (2, 2,2) ---- (1, 3) ani (2, 3) nejsoů konzistentní dvojice (nerozšiřůjeme je) CSPje silne k-konzistentní práve tehdy, když je j-konzistentní pro každé j k-konzistence ií> Silná k-konzistence => j-konzistence V j < k M k-konzistence ^ silná k-konzistence & NC = silná 1-konzistence = 1-konzistence -í* AC = (silná) 2-konzistence & PC = (silná) 3-konzistence & Cvicení: ůved'te příklad problémů, kterýje 4-konzistentní, ale není 3-konzistentní Hana Růdová, Omezůjící podmínky, 16. prosince 2019 81 Propagace pro nebinární omezení Konzistence pro nalezení rešení Máme-li graf s n vrcholy, jak silnoů konzistenci potrebůjeme, abychom p rímo našli rešení? CSP vyřešíme bez navracení vzhledem k ůspo rádání promenných (x1,... ,xn), jestliže pro každé i < n může být každé castecné r ešení (x1, ...,xi) konzistentne rozšír eno o promennoů xi+1. Hana Růdová, Omezůjící podmínky, 16. prosince 2019 82 Propagace pro nebinární omezení Konzistence pro nalezení rešení Máme-li graf s n vrcholy, jak silnou konzistenci potrebujeme, abychom prímo našli rešení? CSP vyrešíme bez navracení vzhledem k uspořádání proměnných (x1,... ,xn), jestliže pro každé i < n může být každé castecné rešení (x1, ...,xi) konzistentne rozšíreno o proměnnou xi+1. Nalezení rešení bez navracení pro libovolné usporádání proměnných? Hana Rudová, Omezující podmínky, 16. prosince 2019 82 Propagace pro nebinární omezení Konzistence pro nalezení řešení Máme-li graf s n vrcholy, jak silnou konzistenci potřebujeme, abychom p římo našli řešení? CSP vyřešíme bez navracení vzhledem k uspo řádání promenných (xi,... ,xn), jestliže pro každé i < n může být každé castecné ř ešení (xi, ...,xi) konzistentne rozšír eno o proměnnou xi+i. Nalezení řešení bez navracení pro libovolné uspo řádání promenných? a silná n-konzistence je nutná pro graf s n vrcholy n-konzistence nestací (viz p r edchozí p ř íklad) silná k-konzistence pro k Aktualizujeme relace nad každou (k-l)-ticí promenných -*> musíme si pamatovat (k-l)-tice hodnot Hana Rudová, Omezující podmínky, 16. prosince 2019 83 Propagace pro nebinární omezení Algoritmy pro dosažení k-konzistence Rozšíření revize hrany a revize cesty it postupne odstraňujeme prvky z relace nad (k-1) proměnnými Aktualizujeme relace nad každou (k-l)-ticí promenných it musíme si pamatovat (k-l)-tice hodnot Obecný algoritmus it rozšírení AC-1 a PC-1 it opakování revizí nad (k-l)-ticemi dokud dochází ke zmenám Velká pamet'ová i casová složitost it v praxi se pro vyšší k nepoužívá Algoritmy i složitost viz Dechter: Constraint Processing Hana Rudová, Omezující podmínky, 16. prosince 2019 83 Propagace pro nebinární omezení Pojmy a znaCení -i* Rozsah omezení scope(c) množina promenných, na kterých je c definováno príklad: A,B,C e {0,1,2} scope(A príklad (pokracování): (0,1)[A] = 0 Hana Rudová, Omezující podmínky, 16. prosince 2019 84 Propagace pro nebinární omezení Definice obecné hranové konzistence (GAC) & Generalized arc consistency (nekdy nazývána doménová konzistence) -i* pro každou promennou z podmínky a každou její hodnotu existuje ohodnocení zbylých promenných v podmínce tak, že podmínka platí Jt A + B = C, A g {1, 2, 3}, B g {2, 3,4}, C g {3,..., 7} je obecne hranove konzistentní Hana Rudová, Omezující podmínky, 16. prosince 2019 85 Propagace pro nebinární omezení Definice obecné hranové konzistence (GAC) & Generalized arc consistency (někdy nazývána doménová konzistence) -i* pro každou proměnnou z podmínky a každou její hodnotu existuje ohodnocení zbylých proměnných v podmínce tak, že podmínka platí A + B = C, A g {1, 2, 3}, B g {2, 3,4}, C g {3,..., 7} je obecne hranove konzistentní & Omezení c je obecne hranove konzistentní, jestliže má každá hodnota a M Hodnota a promenné x g scope(c) má doménovou podporu t v c, jestliže t g c a platí a = t[x] m pro každé y g scope(c) platí 1:[y] g Dy Príklad: A g {0,1}, Bg {0,1}, C g {1, 2}, A = B+C, 0 u A Hana Rudová, Omezující podmínky, 16. prosince 2019 85 Propagace pro nebinární omezení Definice obecné hranové konzistence (GAC) & Generalized arc consistency (někdy nazývána doménová konzistence) -i* pro každou proměnnou z podmínky a každou její hodnotu existuje ohodnocení zbylých proměnných v podmínce tak, že podmínka platí A + B = C, A g {1, 2, 3}, B g {2, 3,4}, C g {3,..., 7} je obecne hranove konzistentní & Omezení c je obecne hranove konzistentní, jestliže má každá hodnota a M Hodnota a promenné x g scope(c) má doménovou podporu t v c, jestliže t g c a platí a = t[x] m pro každé y g scope(c) platí 1:[y] g Dy Príklad: A g {0,1}, Bg {0,1}, C g {1, 2}, A = B+C, 0 u A nemá podporu, 1 u A Hana Rudová, Omezující podmínky, 16. prosince 2019 85 Propagace pro nebinární omezení Definice obecné hranové konzistence (GAC) & Generalized arc consistency (někdy nazývána doménová konzistence) -i* pro každou proměnnou z podmínky a každou její hodnotu existuje ohodnocení zbylých proměnných v podmínce tak, že podmínka platí A + B = C, A g {1, 2, 3}, B g {2, 3,4}, C g {3,..., 7} je obecne hranove konzistentní & Omezení c je obecne hranove konzistentní, jestliže má každá hodnota a M Hodnota a promenné x g scope(c) má doménovou podporu t v c, jestliže t g c a platí a = t[x] J» pro každé y g scope(c) platí t[y] g Dy Příklad: A g {0, i}, Bg {0, i}, C g {i, 2}, A = B+C, 0 u A nemá podporu, 1 u A má podporu (1,0,1) Hana Rudová, Omezující podmínky, 16. prosince 2019 85 Propagace pro nebinární omezení Definice obecné hranové konzistence (GAC) Generalized arc consistency (nekdy nazývána doménová konzistence) Jt pro každou promennou z podmínky a každou její hodnotu existuje ohodnocení zbylých promenných v podmínce tak, že podmínka platí Jt A + B = C, A e {1, 2, 3}, B e {2, 3,4}, C e {3,..., 7} je obecne hranove konzistentní Omezení c je obecne hranove konzistentní, jestliže má každá hodnota a každé promenné x e scope(c) doménovou podporu v c Hodnota a promenné x e scope(c) má doménovou podporu t v c, jestliže m t e c a platí a = t[x] m pro každé y e scope(c) platí t[y] e Dy Príklad: A e {0,1}, Be {0,1}, C e {1, 2}, A = B+C, 0 u A nemá podporu, 1 u A má podporu (1,0,1) CSP je obecne hranove konzistentní <^> všechna jeho omezení jsou obecne hranove konzistentní J* Príklad (pokracování): po GAC dostaneme Hana Rudová, Omezující podmínky, 16. prosince 2019 85 Propagace pro nebinární omezení Definice obecné hranové konzistence (GAC) Generalized arc consistency (nekdy nazývána doménová konzistence) -i* pro každou promennou z podmínky a každou její hodnotu existuje ohodnocení zbylých promenných v podmínce tak, že podmínka platí A + B = C, A g {1, 2, 3}, B g {2, 3,4}, C g {3,..., 7} je obecne hranove konzistentní Omezení c je obecne hranove konzistentní, jestliže má každá hodnota a každé promenné x g scope(c) doménovou podporu v c Hodnota a promenné x g scope(c) má doménovou podporu t v c, jestliže t g c a platí a = t[x] m pro každé y g scope(c) platí t[y] g Dy Príklad: A g {0,1}, Bg {0,1}, C g {1, 2}, A = B+C, 0 u A nemá podporu, 1 u A má podporu (1,0,1) CSP je obecne hranove konzistentní <^> všechna jeho omezení jsou obecne hranove konzistentní J* Príklad (pokracování): po GAC dostaneme A=1, B=0, C=1 Hana Rudová, Omezující podmínky, 16. prosince 2019 85 Propagace pro nebinární omezení Konzistence mezí Bounds consistency BC: slabší než obecná hranová konzistence J* propagace pouze pri zmene minimální nebo maximální hodnoty v doméne proměnné a tedy došlo ke zmene mezí domény proměnné Hana Rudová, Omezující podmínky, 16. prosince 2019 86 Propagace pro nebinární omezení Konzistence mezí Bounds consistency BC: slabší než obecná hranová konzistence J* propagace pouze pri zmene minimální nebo maximální hodnoty v doméne proměnné a tedy došlo ke zmene mezí domény proměnné Konzistence mezí pro nerovnice l A > B Hana Rudová, Omezující podmínky, 16. prosince 2019 86 Propagace pro nebinární omezení Konzistence mezí Bounds consistency BC: slabší než obecná hranová konzistence J* propagace pouze pri zmene minimální nebo maximální hodnoty v doméne promenné a tedy došlo ke zmene mezí domény promenné Konzistence mezí pro nerovnice l A > B=> min(A) > min(B)+1, max(B) < max(A)-1 príklad: A e {4,..., 10}, Be {6,... 18}, A > B min(A) > Hana Rudová, Omezující podmínky, 16. prosince 2019 86 Propagace pro nebinární omezení Konzistence mezí Bounds consistency BC: slabší než obecná hranová konzistence J* propagace poůze p r i zmene minimální nebo maximální hodnoty v doméne promenné a tedy došlo ke zmene mezí domény promenné Konzistence mezí pro nerovnice l A > B=> min(A) > min(B)+1, max(B) < max(A)-1 p ríklad: A g {4,..., 10}, Bg {6,... 18}, A > B min(A) > 6+1 => A g {7,..., 10} max(B) < 10-1 => B g {6,...,9} Hana Růdová, Omezůjící podmínky, 16. prosince 2019 86 Propagace pro nebinární omezení Konzistence mezí & Bounds consistency BC: slabší než obecná hranová konzistence J* propagace pouze pri zmene minimální nebo maximální hodnoty v doméne promenné a tedy došlo ke zmene mezí domény promenné & Konzistence mezí pro nerovnice l A > B=> min(A) > min(B)+1, max(B) < max(A)-1 príklad: A g {4,..., 10}, Be {6,... 18}, A > B min(A) > 6+1 => A e {7,..., 10} max(B) < 10-1 ^ B e {6,...,9} CviCení: napište pravidla pro konzistenci mezí pro uvedená omezení -i* A < B, A > B, A < B it a aplikujte je v prípade domén A e{1,..., 10}, B e {0,5} & Jak je to tedy pro nebinární omezení? Hana Rudová, Omezující podmínky, 16. prosince 2019 86 Propagace pro nebinární omezení Konzistence mezí a aritmetická omezení j* A = B + C => min(A) > min(B)+min(C), max(A) < max(B)+max(C) min(B) > min(A)-max(C), max(B) < max(A)-min(C) min(C) > min(A)-max(B), max(C) < max(A)-min(B) Hana Růdová, Omezůjící podmínky, 16. prosince 2019 87 Propagace pro nebinární omezení Konzistence mezí a aritmetická omezení j* A = B + C => min(A) > rrrin(B)+min(0, max(A) < max(B)+max(C) min(B) > min(A)-max(0, max(B) < max(A)-min(C) min(C) > min(A)-max(B), max(C) < max(A)-min(B) -i- zmena min(A)vyvolá pouze zmenu min(B) a min(C) J* zmena max(A)vyvolá pouze zmenu max(B) a max(C), ... Hana Rudová, Omezující podmínky, 16. prosince 2019 87 Propagace pro nebinární omezení Konzistence mezí a aritmetická omezení j* A = B + C => min(A) > min(B)+min(C), max(A) < max(B)+max(C) min(B) > min(A)-max(C), max(B) < max(A)-min(C) min(C) > min(A)-max(B), max(C) < max(A)-min(B) -i- zmena min(A)vyvolá pouze zmenu min(B) a min(C) J* zmena max(A)vyvolá pouze zmenu max(B) a max(C), ... M Príklad: A e {1,...,6,9,10}, B e {1,..., 10}, A = B + 2 A = B + 2 ^> Hana Rudová, Omezující podmínky, 16. prosince 2019 87 Propagace pro nebinární omezení Konzistence mezí a aritmetická omezení j* A = B + C => min(A) > min(B)+min(C), max(A) < max(B)+max(C) min(B) > min(A)-max(C), max(B) < max(A)-min(C) min(C) > min(A)-max(B), max(C) < max(A)-min(B) -i- zmena min(A)vyvolá pouze zmenu min(B) a min(C) J* zmena max(A)vyvolá pouze zmenu max(B) a max(C), ... M Príklad: A g {1,...,6,9,10}, B g {1,..., 10}, A = B + 2 A = B + 2 => min(A)>1+2, max(A)<10+2 => A g {3,..., 6,9,10} => min(B)>1-2, max(B)<10-2 => B g{1,...,8} Hana Rudová, Omezující podmínky, 16. prosince 2019 87 Propagace pro nebinární omezení Konzistence mezí a aritmetická omezení j* A = B + C => min(A) > min(B)+min(C), max(A) < max(B)+max(C) min(B) > min(A)-max(C), max(B) < max(A)-min(C) min(C) > min(A)-max(B), max(C) < max(A)-min(B) -i- zmena min(A)vyvolá pouze zmenu min(B) a min(C) J* zmena max(A)vyvolá pouze zmenu max(B) a max(C), ... M Príklad: A g {1,...,6,9,10}, B g {1,..., 10}, A = B + 2 A = B + 2 => min(A)>1+2, max(A)<10+2 => A g {3,..., 6,9,10} => min(B)>1-2, max(B)<10-2 => B g{1,...,8} tj. doména B má pouze zmeneny meze a hodnoty 5, 6 zůstanou v doméne A g {3,..., 6,9,10}, B g {1,..., 8}, A = B + 2 je BC, není GAC, není AC Hana Rudová, Omezující podmínky, 16. prosince 2019 87 Propagace pro nebinární omezení Konzistence mezí a aritmetická omezení j* A = B + C => min(A) > min(B)+min(C), max(A) < max(B)+max(C) min(B) > min(A)-max(C), max(B) < max(A)-min(C) min(C) > min(A)-max(B), max(C) < max(A)-min(B) -i- zmena min(A)vyvolá poůze zmenů min(B) a min(C) J* zmena max(A)vyvolá poůze zmenů max(B) a max(C), ... M Příklad: A g {1,...,6,9,10}, B g {1,..., 10}, A = B + 2 A = B + 2 => min(A)>1+2, max(A)<10+2 => A g {3,..., 6,9,10} => min(B)>1-2, max(B)<10-2 => B g{1,...,8} tj. doména B má poůze zmeneny meze a hodnoty 5, 6 zůstanoů v doméne A g {3,..., 6,9,10}, B g {1,..., 8}, A = B + 2 je BC, není GAC, není AC JS> Cvicení: napište pravidla pro konzistenci mezí pro ůvedená omezení *A = B - 3, A=B-C, A=B + C, A všechna jeho omezení mají konzistentní meze Hana Rudová, Omezující podmínky, 16. prosince 2019 88 Propagace pro nebinární omezení Globální podmínky Globální podmínka: definována pro libovolný konečný pocet proměnných Global Constraint Catalog JS> http://sofdem.github.io/gccat/ & Nicolas Beldiceanu, Mats Carlsson and Jean-Xavier Rampon JS> Popis omezení dostupných v literature a v systémech s omezujícími podmínkami C „The catalog presents a list of 423 global constraints issued from the literature in constraint programming and from popular constraint systems. The semantic of each constraint is given together with some typical usage and filtering algorithms, and with reformulations in terms of graph properties, automata, and/or logical formulae. When available, it also presents some typical usage as well as some pointers to existing filtering algorithms." C PDF dokument, srpen 2014, cca 4 000 stran Hana Rudová, Omezující podmínky, 16. prosince 2019 89 Propagace pro nebinární omezení (Globální podmínky a) rozvrhování Všechny proměnné různé j* allDifferent Disjunktivní zdroj/rozvrhování a dvar interval, dvar sequence j* noOverlap Kumulativní zdroj/rozvrhování cumuFunction, pulse Alternativní zdroje alternative Hana Rudová, Omezující podmínky, 16. prosince 2019 90 Propagace pro nebinární omezení Všechny proměnné různé Proměnné v poli Array jsou různé -i- dvar int Array[Interval]; -fc globální podmínka: allDifferent(Array); S binární podmínky: for (i, j in Interval : i != j) Array[i] != Array[j]; Hana Rudová, Omezující podmínky, 16. prosince 2019 91 Propagace pro něbinární omězění Všechny proměnné různé Proměnné v poli Array jsou různé -i- dvar int Array[Interval]; -fc globální podmínka: allDifferent(Array); S binární podmínky: for (i, j in Interval : i != j) Array[i] != Array[j]; allDifferent vs. binární podmínky allDifferent má úplnou propagaci J* binární podmínky mají slabší (neúplnou) propagaci Príklad: uCitělé musí uCit v různé hodiny učitel min max Jan 3 6 Petr 3 4 Anna 2 5 Ota 2 4 Eva 3 4 Marie 1 6 Hana Rudová, Omezující podmínky, 16. prosince 2019 91 Propagace pro něbinární omězění Všechny proměnné různé Proměnné v poli Array jsou různé -i- dvar int Array[Interval]; Jt globální podmínka: allDifferent(Array); S binární podmínky: for (i, j in Interval : i != j) Array[i] != Array[j]; allDifferent vs. binární podmínky J> allDifferent má úplnou propagaci J* binární podmínky mají slabší (neúplnou) propagaci Príklad: uCitělé musí uCit v různé hodiny Jt globální podmínka: Jan = 6, Ota = 2, Anna = 5, Marie = 1, Petr e {3,4), Eva e {3,4} učitel min max Jan 3 6 Petr 3 4 Anna 2 5 Ota 2 4 Eva 3 4 Marie 1 6 Hana Rudová, Omezující podmínky, 16. prosince 2019 91 Propagace pro něbinární omězění Všechny proměnné různé Proměnné v poli Array jsou různé -i- dvar int Array[Interval]; Jt globální podmínka: allDifferent(Array); S binární podmínky: for (i, j in Interval : i ! = -í* allDifferent vs. binární podmínky J* allDifferent má úplnou propagaci J* binární podmínky mají slabší (neúplnou) propagaci Príklad: uCitělé musí uCit v různé hodiny Jt globální podmínka: Jan = 6, Ota = 2, Anna = 5, Marie = 1, Petr g {3,4), Eva g {3,4} J* binární podmínky: Jan e {3,...,6), Petr g {3,4), Annae {2,..., 5), Ota g {2, 3,4), Eva g {3,4), Marie e{1,..., 6} Hana Rudová, Omezující podmínky, 16. prosince 2019 91 j) Array[i] != Array[j]; učitel min max Jan 3 6 Petr 3 4 Anna 2 5 Ota 2 4 Eva 3 4 Marie 1 6 Propagace pro nebinární omezení Naivní propagace pro allDifferent -* U = {Petr, Ota, Eva}, dom(U) = {2, 3, 4}: učitel min max Jan 3 6 Petr 4 Anna 2 5 Ota 4 Eva 4 Marie 1 6 Hana Rudová, Omezující podmínky, 16. prosince 2019 92 Propagace pro nebinární omezení Naivní propagace pro allDifferent U = {Petr, Ota, Eva}, dom(U) = {2, 3, 4}: {2,3,4} nelze pro Jan, Anna, Marie Jan g (5,6}, Anna = 5, Marie g {1,5,6} učitel min max Jan 3 6 Petr 4 Anna 2 5 Ota 4 Eva 4 Marie 1 6 Hana Rudová, Omezující podmínky, 16. prosince 2019 92 Propagace pro nebinární omezení Naivní propagace pro allDifferent U = {Petr, Ota, Eva}, dom(U) = {2, 3, 4}: {2,3,4} nělzě pro Jan, Anna, Marie Jan e {5,6}, Anna = 5, Marie e {1,5,6} Konzistence: musí platit: učitel min max Jan 3 6 Petr 4 Anna 2 5 Ota 4 Eva 4 Marie 1 6 Hana Rudová, Omezující podmínky, 16. prosince 2019 92 Propagacě pro něbinární omězění Naivní propagace pro allDifferent U = {Petr, Ota, Eva}, dom(U) = {2, 3, 4}: {2,3,4} nelze pro Jan, Anna, Marie Jan e {5,6}, Anna = 5, Marie e {1,5,6} Konzistence: musí platit: \/{Xi,.. .,Xk} c V : card{Di u • • • u Dk} > k InferenCní pravidlo učitel min max Jan 3 6 Petr 4 Anna 2 5 Ota 4 Eva 4 Marie 1 6 Hana Rudová, Omezující podmínky, 16. prosince 2019 92 Propagace pro nebinární omezení Naivní propagace pro allDifferent U = {Petr, Ota, Eva}, dom(U) = {2, 3, 4}: {2,3,4} nelze pro Jan, Anna, Marie Jan g (5,6}, Anna = 5, Marie g {1,5,6} Konzistence: můsí platit: V(Xi,.. .,Xk} c V : card(Di u • • • u Dk} > k Inferencní pravidlo a V: množina všech promenných U = (Xi,...,Xk}, dom(U) = (Di u • • • u Dk} učitel min max Jan 3 6 Petr 4 Anna 2 5 Ota 4 Eva 4 Marie 1 6 card(U) = card(dom(U)) => Vv g dom(U), VX g (V - U),X = v Hana Růdová, Omezůjící podmínky, 16. prosince 2019 92 Propagace pro nebinární omezení Naivní propagace pro allDifferent U = {Petr, Ota, Eva}, dom(U) = {2, 3, 4}: {2,3,4} nelze pro Jan, Anna, Marie Jan e {5,6}, Anna = 5, Marie e {1,5,6} Konzistence: musí platit: \/{Xi,.. .,Xk} c V : card{Di u • • • u Dk} > k Inferencní pravidlo a V: množina všech promenných U = [Xl,...,Xk], dom(U) = [Di u • • • u Dk] card(U) = card(dom(U)) => Vv g dom(U), VX g (V - U),X = v *> hodnoty v dom(U) jsou pro ostatní promenné nedostupné učitel min max Jan 3 6 Petr 4 Anna 2 5 Ota 4 Eva 4 Marie 1 6 Hana Rudová, Omezující podmínky, 16. prosince 2019 92 Propagace pro nebinární omezení Naivní propagace pro allDifferent U = {Petr, Ota, Eva}, dom(U) = {2, 3, 4}: {2,3,4} nělzě pro Jan, Anna, Marie Jan e {5,6}, Anna = 5, Marie e {1,5,6} Konzistence: musí platit: V{Xi,.. .,Xk} c V : card{Di u • • • u Dk} > k učitel min max Jan 3 6 Petr 4 Anna 2 5 Ota 4 Eva 4 Marie 1 6 j* Inferencní pravidlo a V: množina všech proměnných U = {Xi,...,Xk}, dom(U) = {Di u • • • u Dk} card(U) = card(dom(U)) => Vv g dom(U), VX g (V - U),X = v *> hodnoty v dom(U) jsou pro ostatní promenné nedostupné iS> Složitost a hledání všech podmnožin množiny n proměnných (naivní) O(2n) Hana Rudová, Omezující podmínky, 16. prosince 2019 92 Propagace pro nebinární omezení Párování v bipartitních grafech -i* Efektivní propagaci pro allDifferent lze založit na párování v bipartitních grafech (Régin 94) & Bipartitní graf iľ ůzly grafů rozdelené do dvoů množin A neexistůjí hrany mezi ůzly jedné množiny & Párování v bipartitních grafech v grafů neexistůjí dve hrany, které by mely spolecný vrchol * Maximální párování i> párování, které má maximální pocet hran Hana Růdová, Omezůjící podmínky, 16. prosince 2019 93 Propagace pro nebinární omezení Párování v bipartitních grafech -i* Efektivní propagaci pro allDifferent lze založit na párování v bipartitních grafech (Régin 94) & Bipartitní graf iľ uzly grafu rozdelené do dvou množin Jt neexistují hrany mezi uzly jedné množiny & Párování v bipartitních grafech JĽ v grafu neexistují dve hrany, které by mely spolecný vrchol * Maximální párování i> párování, které má maximální pocet hran £ CSP jako bipartitní graf i* jedna množina vrcholu reprezentuje promenné Jt druhá množina vrcholu reprezentuje hodnoty promenných & hrana z promenné X do hodnoty a ríká, že promenná X muže nabývat hodnoty a Hana Rudová, Omezující podmínky, 16. prosince 2019 93 Propagace pro nebinární omezení allDifferent - párování v bipartitních grafech II. -í* Inicializace -i- vypoCti maximální párování odstraň všechny hrany, které nepatří do žádného maximálního párování sjědnocění domén proměnné proměnných Hana Rudová, Omězující podmínky, 16. prosincě 2019 94 Propagace pro nebinární omezení allDifferent - párování v bipartitních grafech II. & Inicializace -i- vypocti maximální párování odstran všechny hrany, které nepat rí do žádného maximálního párování Propagace zmenšené domény odstran odpovídající hrany vypocti nové maximální párování S> odstran všechny hrany, které nepatrí do žádného maximálního párování sjednocení domén proměnné proměnných Hana Rudová, Omezující podmínky, 16. prosince 2019 94 Propagace pro nebinární omezení allDifferent - párování v bipartitních grafech II. proměnné Inicializace -i- vypocti maximální párování Jt odstran všechny hrany, ktěré něpatrí do žádného maximálního párování Propagace změnšěné domény odstran odpovídající hrany -i- vypocti nové maximální párování S> odstran všechny hrany, ktěré něpatrí do žádného maximálního párování Algoritmus založen na doménové konzistenci každé maximální párování děfinujě doménovou podporu složitost O(n2k2), n... pocět proměnných, k... maximální velikost domény sjědnocění domén proměnných Hana Rudová, Omězující podmínky, 16. prosincě 2019 94 Propagacě pro něbinární omězění allDifferent - párování v bipartitních grafech II. proměnné sjednocení domén proměnných £ Inicializace -i- vypocti maximální párování odstran všechny hrany, které nepatrí do žádného maximálního párování Propagace zmenšené domény odstran odpovídající hrany -i- vypocti nové maximální párování S> odstran všechny hrany, které nepatrí do žádného maximálního párování & Algoritmus založen na doménové konzistenci každé maximální párování definuje doménovou podporu -i- složitost O(n2k2), n... pocet promenných, k... maximální velikost domény efektivnejší algoritmus využívá konzistenci mezí - složitost O(nlogn) (Puget 1998) Hana Rudová, Omezující podmínky, 16. prosince 2019 94 Propagace pro nebinární omezení Intervalové promenné Intervalová promenná: pro modelování časového intervalu (úlohy, aktivity) hodnotou intervalové proměnné je celočíselný interval [start, end) príklad: dvar interval x in 0..1000000 size 100..200; Hana Rudová, Omezující podmínky, 16. prosince 2019 95 Propagace pro nebinární omezení Intervalové proměnné Intervalová proměnná: pro modelování casového intervalu (úlohy, aktivity) JS> hodnotou intervalové proměnné jě cělocísělný interval [start, end) M príklad: dvar interval x in 0..1000000 size 100..200; Volitelná intervalová proměnná: pro modelování casového intervalu, ktěrý můžě alě němusí být prítoměn v rěšění (prítomný vs. neprítomný interval) JS> napr. pro modělování volitělných aktivit, ktěré v rěšění němusí být JS> príklad: dvar interval x optional in 0..1000000 size in 100..200; & Dom(x) c u {[start,end)\start,end g Z,start < end} _l znací, žě intěrval nění prítoměn vrěšění Hana Rudová, Omězující podmínky, 16. prosincě 2019 95 Propagacě pro něbinární omězění Disjunktní/unární rozvrhování Sekvenční proměnná p & definována na množině intervalových proměnných x dvar interval x[i in 1..n] dvar sequence p in x; & hodnota intervalové proměnné p je permutace prítomných intervalů & pozor, permutace t ješte neimplikuje žádné uspořádání v Case! Hana Rudová, Omezující podmínky, 16. prosince 2019 96 Propagace pro nebinární omezení Disjunktní/unární rozvrhování Sekvencní promenná p & definována na množine intervalových proměnných x dvar interval x[i in 1..n] dvar sequence p in x; & hodnota intervalové proměnné p je permutace p řítomných intervalů pozor, permutace t ješte neimplikuje žádné uspo řádánívcase! Omezení noOverlap(p) JS> vyjad ř uje, že sekvencní promenná p reprezentuje ř etezec nep ř ekrývajících se intervalových proměnných pro vyjád ř ení rozvrhování na unárním/disjunktivním zdroji, kde se intervaly/úlohy/aktivity nep ř ekrývají -» poznámka: nep řítomné intervaly v ř etezci zahrnuty nejsou Hana Rudová, Omezující podmínky, 16. prosince 2019 96 Propagace pro nebinární omezení Disjunktivní rozvrhování: princip algoritmu iS* Hledání hran (edge finding) - Baptisté & Le Pape, 1996 & Hledáme úlohu, která předchází nebo následuje množinu jiných úloh & dvar interval A in 4..16 size 2; dvar interval B in 6..16 size 4; dvar interval C in 7..15 size 5; iS* Co se stane, pokud nebude aktivita A zpracována jako první? 4 16 AT 6 B(4) 16 7 C(5) 15 Hana Rudová, Omezující podmínky, 16. prosince 2019 97 Propagace pro nebinární omezení Disjunktivní rozvrhování: princip algoritmu Hledání hran (edge finding) - Baptisté & Le Pape, 1996 Hledáme úlohu, která předchází nebo následuje množinu jiných úloh dvar interval A in 4..16 size 2; dvar interval B in 6..16 size 4; dvar interval C in 7..15 size 5; Co se stane, pokud nebude aktivita A zpracována jako první? 4 16 6 B(4) 16 7 C(5) 15 Pro A,B,C není dost času, a tedy aktivita A musí být první 4 h A(2) 7 6h B(4) 16 7 Hana Rudová, Omezující podmínky, 16. prosince 2019 C(5) 15 97 Propagace pro nebinární omezení Další podmínky: precedence Mezi intervalovými proměnnými můžeme definovat precedenCní podmínky: dvar interval i; dvar interval j; endBeforeStart(i, j); endBeforeEnd(i, j); endAtStart(i, j); endAtEnd(i, j); startBeforeStart(i, j); startBeforeEnd(i, j); startAtStart(i, j); startAtEnd(i, j); Poznámka: tyto podmínky platí, pokud jsou oba intěrvaly prítomné Hana Rudová, Omězující podmínky, 16. prosincě 2019 98 Propagacě pro něbinární omězění A dále: logické podmínky Unární podmínka pro přítomnost intervalu x: presenceOf(x) znamená, že x = _l Príklady: presenceOf(x) == presenceOf(y) // x prítomen práve tehdy, když je prítomen y presenceOf(x) => presenceOf(y) // implikace presenceOf(x) => !presenceOf(y) Pozor na použití: precedencní podmínky: polynomiální složitost logické binární podmínky: polynomiální složitost precedence + logické binární: NP-težké! Hana Rudová, Omezující podmínky, 16. prosince 2019 99 Propagace pro nebinární omezení s intervalovými promennými Pro vytváření úcelových funkcí nebo definici omezení startOf(x) endOf(x) sizeOf(x, V) Príklad: minimalizace casu dokoncení poslední úlohy (tzv. makespanu) minimize max(i in 1..n) endOf(x[i]) Hana Rudová, Omezující podmínky, 16. prosince 2019 100 Propagace pro nebinární omezení Příklad: rozvrhování problému job-shop Job-shop problém: & problém rozvrhování úloh, které se skládají z nepřekrývajících operací každá operace úlohy provádena na jiném stroji poradí operací úlohy predem uníeno unární stroje Hana Rudová, Omezující podmínky, 16. prosince 2019 101 Propagace pro nebinární omezení Příklad: rozvrhování problému job-shop Job-shop problém: problém rozvrhování úloh, které se skládají z nepřekrývajících operací každá operace úlohy provádena na jiném stroji poradí operací úlohy p redem urceno unární stroje 1 2 3 4 5 6 7 8 9 10 11 dvar interval op[j in Jobs] [p in Pos] size Ops[j] [p] .pt; dvar sequence mens[m in Mens] in all(j in Jobs, p in Pos: Ops [j] [p] .men == m) op[j][p]; minimize max(j in Jobs) endOf(op[j] [nbPos]); { tuple Oper { ( ) int mch; // Machine noOverlapCmchs [m]); n ■ f ' . int pt; // Processing time forallCj in Jobs, p in 2..nbPos; }. ( [][-l], [][]); Oper Ops[j in Jobs][m in Mchs] = * pr. Ops[1][2]=<3,6> Hana Rudová, Omezující podmínky, 16. prosince 2019 101 Propagace pro nebinární omezení Kumulativní funkce Hodnota výrazu kumulativní funkce reprezentuje vývoj kvantity v case, která může být inkrementálne zrrěnena (snížena nebo navýšena) intervalovými proměnnými. Príklady: & intervaly využívají pocty pracovníku JS* intervaly využívají skladové zásoby Intervalové proměnné x[i] přispívají do kumul. funkce po dobu svého provádení pulse(x, 1) int wor[l..5] = [1,3,2,4,1]; T cumulFunction y = sum(i in 1..5) pulse(x[i],wor[i]); Time Hana Rudová, Omezující podmínky, 16. prosince 2019 102 Propagace pro nebinární omezení Kumulativní funkce Hodnota výrazu kumulativní funkce reprezentuje vývoj kvantity v case, která může být inkrementálne zmenena (snížena nebo navýšena) intervalovými promennými. Príklady: & intervaly využívají pocty pracovníků JS* intervaly využívají skladové zásoby Intervalové promenné x[i] přispívají do kumul. funkce po dobu svého provádení pulse(x, 1) int wor[l..5] = [1,3,2,4,1]; T cumulFunction y = sum(i in 1..5) pulse(x[i],wor[i]); Omezení na výrazech kumulativní funkce int h = ... dvar int h = ... cumulFunction f= ... cumulFunction f= ... f<=h f<=h Hana Rudová, Omezující podmínky, 16. prosince 2019 102 Time Propagace pro nebinární omezení Príklad: RCPSP Resource-contrained project scheduling problem (RCPSP) tuple Task { key int id; int pt; int qty[Resources]; {int} succs; } {Task} Tasks = Hana Růdová, Omezující podmínky, 16. prosince 2019 103 Propagace pro nebinární omezení Př íklad: RCPSP Resource-contrained project scheduling problem (RCPSP) 1 dvar interval a[i in Tasks] size i.pt; 2 cumulFunction usage[r in Resources] = 3 sum(i in Tasks: i.qty[r]>0) pulse(a[i],i.qty[r]); 4 minimize max(i in Tasks) endOf(a[i]); 5 subject to { 6 forali(r in Resources) 7 usage[r] <= Capacity[r]; 8 forali(i in Tasks, j in i.succs) 9 endBeforeStart(a[i], a[]); 10 } odkazuje jako klíC na celý tuple Hana Rudová, Omezující podmínky, 16. prosince 2019 103 Propagace pro nebinární omezení Alternativní podmínka Pokud je interval x prítomný, pak je práve jeden z intervalu y1,...,yn prítomný a je synchronizován s x (má stejný start a konec) alternative(x, [y1,...,yn]) -í* Pokud je x neprítomné, pak jsou yi také neprítomné Hana Rudová, Omezující podmínky, 16. prosince 2019 104 Propagace pro nebinární omezení Alternativní podmínka Pokud je interval x prítomný, pak je práve jeden z intervalu y1,...,yn prítomný a je synchronizován s x (má stejný start a konec) alternative(x, [y1,...,yn]) -í* Pokud je x neprítomné, pak jsou yi také neprítomné Rozšírení: práve k intervalu z y1,...,yn je synchronizováno s x JS> alternative(x, [y1,...,yn], k) //k: celočíselný výraz Hana Rudová, Omezující podmínky, 16. prosince 2019 104 Propagace pro nebinární omezení Alternativní podmínka Pokud je interval x prítomný, pak je práve jeden z intervalu y1,...,yn prítomný a je synchronizován s x (má stejný start a konec) alternative(x, [y1,...,yn]) -í* Pokud je x neprítomné, pak jsou yi také neprítomné Rozšírení: práve k intervalu z y1,...,yn je synchronizováno s x JS> alternative(x, [y1,...,yn], k) //k: celocíselný výraz Príklad použití: & každá intervalová promenná x[t] vyžaduje nbWorkers[t] prítomných intervalu mezi assigned[t][w] pro pracovníky w JS> dvar interval x[t in Tasks] size pt[u]; int nbWorkers[t in Tasks]; dvar interval assigned[Tasks][Workers] optional; forall (t in Tasks) alternative(x[t], all (w in Workers) assigned[t][w], nbWorkers[t]); Hana Rudová, Omezující podmínky, 16. prosince 2019 104 Propagace pro nebinární omezení Alternativní podmínka Pokud je interval x prítomný, pak je práve jeden z intervalu y1,...,yn prítomný a je synchronizován s x (má stejný start a konec) alternative(x, [y1,...,yn]) -í* Pokud je x neprítomné, pak jsou yi také neprítomné Rozšírení: práve k intervalu z y1,...,yn je synchronizováno s x JS> alternative(x, [y1,...,yn], k) //k: celočíselný výraz Príklad použití: & každá intervalová promenná x[t] vyžaduje nbWorkers[t] prítomných intervalu mezi assigned[t][w] pro pracovníky w (kód ješte nutno rošírit o neprekrývání pro pracovníky). JS> dvar interval x[t in Tasks] size pt[u]; int nbWorkers[t in Tasks]; dvar interval assigned[Tasks][Workers] optional; forall (t in Tasks) alternative(x[t], all (w in Workers) assigned[t][w], nbWorkers[t]); Hana Rudová, Omezující podmínky, 16. prosince 2019 104 Propagace pro nebinární omezení Konzistencní algoritmus pro nebinární podmínky Obecný konzistencní algoritmus & Varianta AC-3 s frontou promenných rozšírení AC-2001 na nebinární podmínky Hana Rudová, Omezující podmínky, 16. prosince 2019 105 Propagace pro nebinární omezení KonzistenCní algoritmus pro nebinární podmínky Obecný konzistenCní algoritmus & Varianta AC-3 s frontou promenných rozšírení AC-2001 na nebinární podmínky Opakovane se provádí revize podmínek, dokůd se mení domény procedure Nonbinary-AC-3-with-Variables(Q) while Q non empty do vyber a smaž Vj g Q for V C takové, že Vj g scope(C) do W := revise(Vj, C) // W je množina proměnných jejichž, doména se změnila if 3 Ví g W taková, že Dt = 0 then return fail Q := Q u {W} end Nonbinary-AC-3-with-Variables Hana Růdová, Omezůjící podmínky, 16. prosince 2019 105 Propagace pro nebinární omezení Revizní procedura: různé typy konzistence Speciální revise procedury jsou definovány v závislosti na typu omezení, tj. revise procedura mUže implementovat JS> obecnou hranovou konzistenci ü> konzistenci mezí ü> konzistencní algoritmy pro globální podmínky jako allDifferent Hana Rudová, Omezující podmínky, 16. prosince 2019 106 Propagace pro nebinární omezení Revizní procedura -í* Uživatel má casto možnost definovat vlastní revise proceduru iS* Je potreba urCit událost, která revizi vyvolá událostí je zmena domény promenné (suspension) s» vyvolání revize pouze pri dané zmene promenné pri libovolné zmene domény (u obecné hranové konzistence) pri zmene mezí (u konzistence mezí) pri instanciaci promenné 3 tj. pro každou promennou lze použít mzné události A revize jednolivých podmínek jsou realizovány v závislosti na aktivaci odpovídající události (událostmi rízený výpocet) Hana Rudová, Omezující podmínky, 16. prosince 2019 107 Propagace pro nebinární omezení Revizní procedura -í* Uživatel má casto možnost definovat vlastní revise proceduru iS* Je potreba urCit událost, která revizi vyvolá událostí je zmena domény promenné (suspension) s» vyvolání revize pouze pri dané zmene promenné pri libovolné zmene domény (u obecné hranové konzistence) pri zmene mezí (u konzistence mezí) pri instanciaci promenné 3 tj. pro každou promennou lze použít mzné události Jt revize jednolivých podmínek jsou realizovány v závislosti na aktivaci odpovídající události (událostmi rízený výpocet) M Je potreba navrhnout propagaci pres podmínku pro danou událost i* výsledkem propagace je zmenšení domén promenných Jť pro jednu podmínku lze mít více propagacních kódu Hana Rudová, Omezující podmínky, 16. prosince 2019 107 Propagace pro nebinární omezení Základní konzistenční algoritmus s událostmi procedure Nonbinary-AC-3-with-Events(Q) while Q non empty do vyber a smaž event(Vj) g Q for V C takové, že Vj g scope(C) a C Ceká na event(Vj) do W := revise(event(Vj), C) // jsou vyvolány pouze ty revize, které Cekají na danou event (Vj) // W je množina promenných jejichž, doména se zmenila if 3 Vi g W taková, že Dt = 0 then return fail Q := Q u {W} end Nonbinary-AC-3-with-Events Hana Rudová, Omezující podmínky, 16. prosince 2019 108 Propagace pro nebinární omezení Smerová konzistence Směrová hranová konzistence (pro binární CSP) CSPje směrově hranově konzistentní vzhledem k uspořádání proměnných (xi,... ,xn), práve když je každá hrana (xj,xt) hranove konzistentní pro každé j < i. procedure DAC(G, (xi,..., xn)) Directed arc consistency dac for i = n to 1 by -1 do for Vj uvažujeme obecné CSP (tedy i nebinární podmínky) Hana Rudová, Omezující podmínky, 16. prosince 2019 111 Smerová konzistence Smerová í-konzistence fi> Algoritmus pro DAC byl pouze pro binární CSP £ í-konzistence vyžaduje uvažování omezení s vetším rozsahem promenných & musíme aktualizovat relace až nad (í - 1) promennými ^ uvažujeme obecné CSP (tedy i nebinární podmínky) i* CSP je smerove í-konzistentní vzhledem k usporádání promenných (x1t... ,xn) práve tehdy, když každých (í - 1) promenných je í-konzistentní vzhledem ke všem promenným, které je následují v usporádání. & CSP je silne smerove i-konzistentní (DIC-í) práve tehdy, když je smerove j-konzistentní pro každé j < í Hana Rudová, Omezující podmínky, 16. prosince 2019 111 Smerová konzistence Vlastnosti DIC-i -í* Opakování -i- AC = silná 2-konzistence it PC = silná 3-konzistence C- DIC-2 je ekvivalentní DAC i* u obou uvažujeme unární a binární omezení it DAC je definován pouze na binární CSP it DIC-2 je sice definován pro obecné CSP, aleje pouze schopen k dané hodnote promenné hledat konzistentní hodnotu v doméne další promenné, nezachytí tedy omezení s více než dvemi promennými -i* DIC-3 lze podobne srovnat se smerovou konzistencí po ceste (directed path consistency, DPC) -í* Algoritmus pro silnou smerovou konzistenci viz [Dechter, Constraint Processing] Hana Rudová, Omezující podmínky, 16. prosince 2019 112 Smerová konzistence Řešení bez navracení pomocí DIC-í JS> Opakování: CSP vyřešíme bez navracení vzhledem k uspořádání promenných (xif... ,xn), jestliže pro každé í < n může být každé castecné rešení (xif ...,xí) konzistentne rozšíreno o promennou xí+i. Hana Rudová, Omezující podmínky, 16. prosince 2019 113 Smerová konzistence Řešení bez navracení pomocí DIC-í JS> Opakování: CSP vyřešíme bez navracení vzhledem k usporádání promenných (xi,... ,xn), jestliže pro každé í < n může být každé castecné rešení (x1, ...,xí) konzistentne rozšíreno o proměnnou xí+1. & Promenná musí být kompatibilní s již ohodnocenými promennými, tj. s tolika promennými, kolik má „zpetných" hran & Pro í zpetných hran potrebujeme smerovou (í + 1)-konzistenci -í* Je-li m maximum poctu zpetných hran pro všechny vrcholy, stací nám silná smerovou (m + 1)-konzistence Pri ruzném usporádání vrcholu je pocet zpetných hran mzný ^ hledáme uspořádání vrcholů s nejmenším poCtem zpetných hran m Hana Rudová, Omezující podmínky, 16. prosince 2019 113 Smerová konzistence Šířka grafu Uspořádaný graf je graf s lineárním uspořádáním vrcholů. Šířka vrcholu v uspořádaném grafu je poCet hran vedoucích z tohoto vrcholu do predchozích vrcholu. Šířka uspořádaného grafu je maximum z šírek jeho vrcholu. Šířka gřafu je minimum z šírek všech jeho usporádaných grafu. X3 Hana Rudová, Omezující podmínky, 16. prosince 2019 114 Smerová konzistence Šírka grafu Usporádaný graf je graf s lineárním usporádáním vrcholů. Šírka vrcholu v usporádaném grafu je pocet hran vedoucích z tohoto vrcholu do predchozích vrcholu. Šírka usporádaného grafu je maximum z šírek jeho vrcholu. Šírka grafu je minimum z šírek všech jeho usporádaných grafu. Xi x2 X3 procedure MinWidthOrden'ng((V,E)) Hana Rudová, Omezující podmínky, 16. prosince 2019 114 Smerová konzistence Šířka grafu -fi* Uspořádaný graf je graf s lineárním uspořádáním vrcholů. JS> Šířka vrcholu v uspořádaném grafu je poCet hran vedoucích z tohoto vrcholu do predchozích vrcholu. & Šířka uspořádaného grafu je maximum z šírek jeho vrcholu. Šířka gřafu je minimum z šírek všech jeho usporádaných grafu. Hana Rudová, Omezující podmínky, 16. prosince 2019 114 Smerová konzistence Šírka grafu Uspořádaný graf je graf s lineárním usporádáním vrcholů. Šírka vrcholu v usporádaném grafu je pocet hran vedoucích z tohoto vrcholu do predchozích vrcholu. Šírka usporádaného grafu je maximum z šírek jeho vrcholu. Šírka grafu je minimum z šírek všech jeho usporádaných grafu. x1 X3 -» procedúre MinWidthOrdering((V,E)) (konstruujeme od konce) Q := {} (do vybraného uzlu povede nejméne zpetných hran) while V not empty do N := vyber a smaž uzel s nejmenším poCtem hran z (V,E) zaraď N do Q return Q Hana Rudová, Omezující podmínky, 16. prosince 2019 114 Smerová konzistence Graf podmínek s šírkou 1 = strom -Ä* Tvrzení: Graf je strom práve tehdy, když má šírku 1. Hana Rudová, Omezující podmínky, 16. prosince 2019 115 Směrová konzistence Graf podmínek s šířkou 1 = strom & Tvrzení: Graf je strom práve tehdy, když má šírku 1. C Důkaz: J* Predpoklad: Strom neobsahuje cyklus. 2<\ 8jf Y9 V° Hana Rudová, Omezující podmínky, 16. prosince 2019 115 Směrová konzistence Graf podmínek s ší ř kou 1 = strom & Tvrzení: Graf je strom práve tehdy, když má šířků 1. C Důkaz: Předpoklad: Strom neobsahůje cyklůs. <= Mejme graf šířky 1. Pokůd by obsahoval cyklůs, tak bychom pro libovolné ůspořádání promenných meli promennoů se dvema rodia, tj. spor. Hana Růdová, Omezůjící podmínky, 16. prosince 2019 115 Smerová konzistence Graf podmínek s šířkou 1 = strom & Tvrzení: Graf je strom práve tehdy, když má šírku 1. C Důkaz: J* Predpoklad: Strom neobsahuje cyklus. <= Mejme graf šírky 1. Pokud by obsahoval cyklus, tak bychom pro libovolné usporádání promenných meli promennou se dvema rodia, tj. spor. == Mejme graf bez cyklu. Pak lze vytvorit orientovaný strom s korenem tak, že všechny hrany smerují z korenového uzlu. 1 Hana Rudová, Omezující podmínky, 16. prosince 2019 115 Smerová konzistence Graf podmínek s šířkou 1 = strom & Tvrzení: Graf je strom práve tehdy, když má šírku 1. C Důkaz: J* Predpoklad: Strom neobsahuje cyklus. <= Mejme graf šírky 1. Pokud by obsahoval cyklus, tak bychom pro libovolné usporádání promenných meli promennou se dvema rodia, tj. spor. == Mejme graf bez cyklu. Pak lze vytvorit orientovaný strom s korenem tak, že všechny hrany smerují z korenového uzlu. V tomto stromu má každý uzel nejvýše jednoho rodice. Libovolné usporádání, ve kterém rodic predchází potomky ve strome, má šírku 1. 1 Hana Rudová, Omezující podmínky, 16. prosince 2019 115 Smerová konzistence Konzistence pro stromové CSP Tvrzení: Necht' d = (x\,... ,xn) je usporádání stromového grafu podmínek T prodaný CSP. Jestliže T je smerove hranove konzistentní vzhledem k d, pak má CSP rešení bez navracení vzhledem k d. Hana Rudová, Omezující podmínky, 16. prosince 2019 116 Smerová konzistence Konzistence pro stromové CSP C Tvrzení: Necht' d = (x1,... ,xn) je uspořádání stromového grafu podmínek T prodaný CSP. Jestliže T je smerove hranové konzistentní vzhledem k d, pak má CSP rešení bez navracení vzhledem k d. C- Důkaz: -** Uvažujme usporádání promenných d = (x1,...,xn) s šírkou 1. -i- Predpokládejme, že xi,...,xi jsou konzistentne nainstanciovány. iť Snažíme se nainstanciovat xi+1: d je usporádaní šírky 1, tedy existuje pouze jeden rodic xj (j < i) promenné xi+1, který může omezovat xi+1 :wq 1 (xj,xi+1) je hranove konzistentní (z DAC), tedy a existuje hodnota konzistentní se soucasným prirazením xj tuto hodnotu priradíme xi+1 8 10 Hana Rudová, Omezující podmínky, 16. prosince 2019 116 Smerová konzistence Algoritmus zajištění DAC pro stromové CSP procedure TreeSolving(T) nalezení usporádání (xi,...,xn) s šírkou 1 pomocí stromu T (rodič predchází potomky) nechť Xpd) označuje rodiče Xi v uspořádaném stromu 1 for i = n to 1 by -1 do revise((Xp(i),Xi)) 2 r \j$ if Dp(i) = 0 exit (řešení neexistuje) end TreeSolving Cvičení: X1,X2,X3,X4 in 1..5, X1=X2+1, X1 Tvrzení: Necht' je dán CSP, jehož usporádaný graf podmínek s usporádáním d má šírku i - 1. Jestliže je problém silne smerove i-konzistentní, pak je problém r ešitelný bez navracení vzhledem k d. & Důkaz: i> existuje uspo rádaný graf s uspo rádáním d a šír kou i - 1 speciálne, pocet zpetných hran pro každou promennou je maximálne i - 1 J> promenné ohodnocujeme v po radí uspo rádání grafu i* nyní, pokud ohodnocujeme promennou: musíme najít hodnotu kompatibilní se všemi již ohodnocenými promennými, které jsou s promennou spojené podmínkou (hranou) necht' takových promenných je m, potom m < (i - 1) (<= graf má šír ku (i - 1)) graf je smerove i-konzistentní, tedy taková hodnota musí existovat (<= z definice) 1 v. i ... j J I maximálně w Hana Rudová, Omezující podmínky, 16. prosince 2019 118 Směrová konzistence Adaptivní konzistence Původní intuice: promenná můsí být kompatibilní s již ohodnocenými promennými, tj. s tolika promennými, kolik má „zpetných" hran. A Je tedy nůtná smerová í-konzistence odpovídající šířce grafů? Problém: algoritmy silné smerové í-konzistence pro í > 3 mení graf podmínek přidáváním hran, nůtná úroven í se může zvetšovat Hana Růdová, Omezůjící podmínky, 16. prosince 2019 119 Smerová konzistence Adaptivní konzistence Původní intuice: promenná musí být kompatibilní s již ohodnocenými promennými, tj. s tolika promennými, kolik má „zpetných" hran. A Je tedy nutná smerová i-konzistence odpovídající šírce grafu? Problém: algoritmy silné smerové i-konzistence pro i > 3 mení graf podmínek pridáváním hran, nutná úroven i se může zvetšovat Algoritmus adaptivní konzistence ADC pro nalezení rešení bez navracení uvažujme usporádání promenných d J* rekurzivne vytváríme smerovou i-konzistenci (od poslední k první promenné v d) A meníme úroven i od uzlu k uzlu tak, abychom se adaptovali aktuální šírce uzlu v momente zpracování Hana Rudová, Omezující podmínky, 16. prosince 2019 119 Smerová konzistence Adaptivní konzistence ii> Původní intuice: promenná musí být kompatibilní s již ohodnocenými proměnnými, tj. s tolika promennými, kolik má „zpetných" hran. A Je tedy nutná smerová í-konzistence odpovídající šírce grafu? & Problém: algoritmy silné smerové í-konzistence pro í > 3 mení graf podmínek pridáváním hran, nutná úroven í se může zvetšovat JS> Algoritmus adaptivní konzistence ADC pro nalezení rešení bez navracení uvažujme usporádání promenných d J* rekurzivne vytváríme smerovou í-konzistenci (od poslední k první promenné v d) A meníme úroven í od uzlu k uzlu tak, abychom se adaptovali aktuální šírce uzlu v momente zpracování JS> Proc algoritmus funguje? iľ v momente zpracování uzlu je urcena finální šírka uzlu A víme tedy, jakou úroven smerové í-konzistence musíme dosáhnout Hana Rudová, Omezující podmínky, 16. prosince 2019 119 Smerová konzistence Polynomiální CSP C w šírka grafu, n pocet promenných, k horní mez velikosti domén & Složitost DIC-i O(nwi • (2k)i) důkaz viz Dechter, Constraint Processing JS> Časová a prostorová složitost algoritmu adaptivní konzistence je O(n • (2k)w+ 1) a O(n • kw) dukaz viz Dechter, Constraint Processing Hana Rudová, Omezující podmínky, 16. prosince 2019 120 Smerová konzistence Polynomiální CSP C w šírka grafu, n pocet proměnných, k horní mez velikosti domén & Složitost DIC-í O(nwl • (2k)1) důkaz viz Dechter, Constraint Processing JS> Časová a prostorová složitost algoritmu adaptivní konzistence je O(n • (2k)w+1) a O(n • kw) dUkaz viz Dechter, Constraint Processing -i* Veta: Trída CSP problémU, jejichž šírka grafu je ohranicena konstantou b je řešitelná v polynomiálním case a prostoru. Hana Rudová, Omezující podmínky, 16. prosince 2019 120 Smerová konzistence Polynomiální CSP w šírka grafu, n pocet proměnných, k horní mez velikosti domén Složitost DIC-i O(nwi • (2k)i) dukaz viz Dechter, Constraint Processing (lasová a prostorová složitost algoritmu adaptivní konzistence je O(n • (2k)w+1) a O(n • kw) dukaz viz Dechter, Constraint Processing Věta: Třída CSP problémů, jejichž šířka grafu je ohraničena konstantou b je řešitelná v polynomiálním čase a prostoru. JS> Použitelnost algoritmu ADC J* ADC není jen procedura pro rozhodnutí konzistence ADC muže sloužit i ke kompilaci ADC transformuje problém na ekvivalentní graf, ze kterého muže být každé rešení odvozeno v lineárním čase prostorová složitost ale zustává Hana Rudová, Omezující podmínky, 16. prosince 2019 120 Smerová konzistence Prohledávání a pohled dopředu Prehlěd prohledávacích algoritmů pro CSP 4* Rozširovaní CástěCného konzistentního prirazení & stromové prohledávání backtracking pohled dopredu (propagace omezení) pohled zpet (inteligentní vracení) neúplná stromová prohledávání Hana Rudová, Omezující podmínky, 16. prosince 2019 122 Prohledávání a pohled dopredu Přehled prohledávacích algoritmů pro CSP 4* Rozširování CásteCného konzistentního prirazení Jt stromové prohledávání backtracking pohled dop redu (propagace omezení) pohled zpet (inteligentní vracení) neúplná stromová prohledávání Procházení úplných nekonzistentních prirazení Jt generuj a testuj Jt lokální prohledávání Hana Rudová, Omezující podmínky, 16. prosince 2019 122 Prohledávání a pohled dop redu Přehled prohledávacích algoritmů pro CSP 4* Rozšiřování CásteCného konzistentního přiřazení it stromové prohledávání backtracking pohled dopredu (propagace omezení) pohled zpet (inteligentní vracení) neúplná stromová prohledávání Procházení úplných nekonzistentních přiřazení it generuj a testuj it lokální prohledávání JS> Kombinování úplných nekonzistentních přiřazení it population-based search Hana Rudová, Omezující podmínky, 16. prosince 2019 122 Prohledávání a pohled dopredu Prohledávací algoritmy pro CSP Prohledávací algoritmy prochází (traversálne) graf stavového prostoru uzly grafu (stavy): konzistentní cástecné instanciace iniciální stav: prázdné p r i razení hrany grafu: operátory, které rozšír í cástecné r ešení [xi/ai,...,Xj/aj] o p r i r azení jedné promenné, které není v konfliktu s d r ívejšími p r i r azeními, tj. vznikne [x1/a1,... ,Xj/aj,Xj+1 /aj+1] cílové stavy: úplná rešení v2 i v3 1/2 Hana Rudová, Omezující podmínky, 16. prosince 2019 123 cervené ctverecky: chybný pokus o instanciaci, rešení neexistuje nevyplnená kolecka: nalezeno rešení (cílové stavy) cerná kolecka: vnit rní uzel, máme pouze cástecné p ri razení Prohledávání a pohled dop redu Prohledávací algoritmy pro CSP: vlastnosti Bod volby: z uzlu grafu vede více hran C- máme na výber, kterou hodnotu priradíme proměnné CSP má rešení bez navracení vzhledem k uspořádání d, jestliže všechny listy v jeho grafu stavového prostoru reprezentují rešení. JS> v grafu nejsou žádné slepé vetve Hana Rudová, Omezující podmínky, 16. prosince 2019 124 Prohledávání a pohled dopredu Backtracking (BT) Přohledávání stavového přostořu do hloubky Dve fáze backtrackingu dopředná fáze: proměnné jsou postupne vybírány, rozširuje se cástecné rešení prirazením konzistentní hodnoty (pokud existuje) pro další proměnnou & zpetná fáze: pokud neexistuje konzistentní hodnota pro aktuální proměnnou algoritmus se vrací k predchozí prirazené hodnote Hana Rudová, Omezující podmínky, 16. prosince 2019 125 Prohledávání a pohled dop redu Backtracking (BT) Prohledávání stavového prostoru do hloubky Dve fáze backtrackingu dopredná fáze: promenné jsou postupne vybírány, rozširuje se cástecné rešení prirazením konzistentní hodnoty (pokud existuje) pro další promennou & zpetná fáze: pokud neexistuje konzistentní hodnota pro aktuální promennou algoritmus se vrací k predchozí prirazené hodnote Promenné delíme na j* minulé - promenné, které už byly vybrány (a mají prirazenu hodnotu) a aktuální - promenná, která je práve vybrána a je jí prirazována hodnota a budoucí - promenné, které budou vybrány v budoucnosti Hana Rudová, Omezující podmínky, 16. prosince 2019 125 Prohledávání a pohled dop redu Príklad: backtracking J§> Príklad: Vi,V2,V3 e {1, 2, 3}, c : Vi = 3 x V3 JS> Stavový prostor: Hana Rudová, Omezující podmínky, 16. prosince 2019 126 Prohledávání a pohled dop redu Příklad: backtracking J§> Príklad: Vi,V2,V3 e {1, 2, 3}, c : Vi = 3 x V3 Príklady vizualizací viz http://www.fi.muni.cz/~hanka/vis C zpetná vazba k této bakalárská práci? -í* viz kontakt na stránkách Hana Rudová, Omezující podmínky, 16. prosince 2019 126 Prohledávání a pohled dopredu Algoritmus backtrackingu procedure Backtracking((X,D, C)) í := 1 (inicializace CítaCe proměnných) D[ := Dí (kopírování domény) while 1 < í < n prirazení xí := Select-Value if xí is null (žádná hodnota nebyla vrácena) í := í - 1 (zpetná fáze) else í := í + 1 (dopredná fáze) Dí := Dí if í = 0 return ,,nekonzistentní'' else return prirazené hodnoty {x1,...,xn} end Backtracking Algoritmus vrací pouze první rešení Série domén Dí: V í: Dí c Dí. Select-Value pracuje nad (promazává) D[ Hodnoty v D[ ješte netestovány vzhledem k aktuálnímu cástecnému prirazení Hana Rudová, Omezující podmínky, 16. prosince 2019 127 Prohledávání a pohled dop redu Uspořádání hodnot pro backtracking J5> procedure Select-Value while D- is not empty vyber a smaž libovolný a g D-if Consistent(ai-i,xi = a) return a return null & Backtracking overuje v každém kroku konzistenci podmínek vedoucích z minulých proměnných do aktuální proměnné JS> Backtracking tedy zajišťuje konzistenci podmínek & na všech minulých proměnných * na podmínkách mezi minulými proměnnými a aktuální proměnnou Hana Rudová, Omezující podmínky, 16. prosince 2019 128 Prohledávání a pohled dopredu Problémy a vylepšení backtrackingu Thrashing: opakované objevování stejných nekonzistencí a částečných úspechu pri prohledávání Hana Rudová, Omezující podmínky, 16. prosince 2019 129 Prohledávání a pohled dopředu Problémy a vylepšení backtrackingu Thrashing: opakované objevování stejných nekonzistencí a cástecných úspechů pri prohledávání & Algoritmy pohledu dop redu kontrolují podmínky dopredu i* backtracking odhalí nesplnení podmínky teprve když priradí hodnoty jejím promenným príklad: A,B,C,D,E in 1..10, A=3*E konzistencními algoritmy lze predem upravit domény A a E Hana Rudová, Omezující podmínky, 16. prosince 2019 129 Prohledávání a pohled dopredu Přoblémy a vylepšení backtřackingu Thrashing: opakované objevování stejných nekonzistencí a cástecných úspechu pri prohledávání & Algořitmy pohledu dopředu kontrolují podmínky dopredu it backtracking odhalí nesplnení podmínky teprve když priradí hodnoty jejím promenným príklad: A,B,C,D,E in 1..10, A=3*E konzistencními algoritmy lze predem upravit domény A a E Backjumping se vrací k puvodci chyby it príklad: A,B,C,D,E in 1..10, A>E backtracking vyzkouší všechny možnosti pro B,C,D než odhalí A=1 hned po prvním neúspešném prirazení E se lze vrátit k prirazování A Hana Rudová, Omezující podmínky, 16. prosince 2019 129 Prohledávání a pohled dopredu Problémy a vylepšení backtrackingu Thrashing: opakované objevování stejných nekonzistencí a cástecných úspechu při prohledávání & Algoritmy pohledu dopredu kontrolují podmínky dopredu i* backtracking odhalí nesplnení podmínky teprve když priradí hodnoty jejím promenným príklad: A,B,C,D,E in 1..10, A=3*E konzistencními algoritmy lze predem upravit domény A a E Backjumping se vrací k původci chyby A príklad: A,B,C,D,E in 1..10, A>E backtracking vyzkouší všechny možnosti pro B,C,D než odhalí A=1 hned po prvním neúspešném prirazení E se lze vrátit k prirazování A & Dynamický backtracking: zmena usporádání minulých proměnných M Neúplná prohledávání: hledání pouze v nekterých cástech stavového prostoru Hana Rudová, Omezující podmínky, 16. prosince 2019 129 Prohledávání a pohled dop redu Algoritmy pohledu dopredu (look-ahead) LA -í* Používají propagace omezení JS> Vyvolány p r ed p r i rázováním hodnoty další proměnné & Snaží se zjistit, jak rozhodnutí o výberu promenných a hodnot ovlivní budoucí prohledávání JS> Po provedení propagace omezení lze mnohem lépe &> rozhodnout, kterou proměnnou priradit vetšinou lepší p r i radit promenné, které nejvíce omezují zbytek stavového prostoru príklad: A,B,C,D,E in 1..10, D=A*B*C*E, E>5, lépe je zacít s E Hana Rudová, Omezující podmínky, 16. prosince 2019 130 Prohledávání a pohled dop redu Algoritmy pohledu dopředu (look-ahead) LA -í* Používají propagace omezení JS> Vyvolány pred přiřazováním hodnoty další proměnné & Snaží se zjistit, jak rozhodnutí o výberu proměnných a hodnot ovlivní budoucí prohledávání JS> Po provedení propagace omezení lze mnohem lépe Jt rozhodnout, kterou proměnnou přiřadit vetšinou lepší priradit promenné, které nejvíce omezují zbytek stavového prostoru príklad: A,B,C,D,E in 1..10, D=A*B*C*E, E>5, lépe je zacít s E it rozhodnout, kterou hodnotu priradit proměnné snaha o výber hodnoty, která umožní nejvíce voleb v budoucích prirazeních príklad: A,B,C in 1..10, A*B<10, B=C*2, pro A je lepší vybrat 1 Vylepšení složitosti nejhoršího prípadu oproti naivnímu backtrackingu zrídka. Cílem je snaha o efektivní využití algoritmu propagace omezení. Hana Rudová, Omezující podmínky, 16. prosince 2019 130 Prohledávání a pohled dopredu Pohled dopredu pro výber hodnoty procedure Look-Ahead((X, D, C)) rozdíly od backtrackingu í := 1 (inicializace cítace promenných) Dí := Dí pro 1 < í < n (kopírování domény) while 1 < í < n prirazení xí := Select-Value-XXX if xí is null (žádná hodnota nebyla vrácena) í := í - 1 (zpetná fáze) nastav všechny D'k, k> í na jejich hodnotu pred poslední instanciací xí else í := í + 1 (dopredná fáze) if í = 0 return ,,nekonzistentní'' else return prirazené hodnoty {x1,...,xn} end Look-Ahead J5> Select-Value-XXX se liší dle typu LA algoritmu & Ukládáno n kopií každé D' ± pro každou úroven ve stavovém prostoru jedna kopie Hana Rudová, Omezující podmínky, 16. prosince 2019 131 Prohledávání a pohled dop redu Kontrola dopředu (forward checking) FC JS> procedure Select-Value-Forward-Checking while D- is not empty vyber a smaž libovolný a g D-for V k, í < k < n for V b g Dfk if not Consistent(aí_i,xí = a,xk = b) smaž b z D'k if 3k,í< k < n: Dk is empty (xí = a vede do slepé větve, nevybírej a) nastav všechny D'k ,í V2, c 2: V2 = 3 x V3 Stavový prostor: 1 c1 => fail V2 cl => V2=1 c2 => fail cl => V2=1..2 c2 => fail 3 4 cl => V2 =1..3 c2 => V2 = 3 V3= 1 V3 1 Hana Rudová, Omezující podmínky, 16. prosince 2019 135 Prohledávání a pohled dop redu Prohledávání s iniciální konzistencí Prohledávací algoritmus casto aplikován až po zajištení iniciální konzistence typicky: iniciální konzistence a pak kontrola dop redu nebo iniciální konzistence a pak pohled dop redu P ríklad pohled dop redu + iniciální konzistence Vi,V2,V3 in 1...4 c 1: Vi > V2, c2: V2 = 3 x V3 v2 v3 4 cl => V in 2..4 V2 in 1..3 c2 => V2 = 3 V3 = 1 4 cl => V1= 4 3 1 Hana Rudová, Omezující podmínky, 16. prosince 2019 136 Prohledávání a pohled dop redu Srovnání algoritmů Backtracking (BT) kontroluje v kroku a podmínky C(Vi ,Va),...,C(Va-1,Va) z minulých proměnných do aktuální proměnné BT a +FC +LA n promenne aktuálni Hana Rudová, Omezující podmínky, 16. prosince 2019 137 Prohledávání a pohled dopredu Srovnání algoritmů Backtracking (BT) kontroluje v kroku a podmínky C(Vi ,Va),...,C(Va-1,Va) z minulých proměnných do aktuální proměnné Kontrola dopredu (FC) kontroluje v kroku a podmínky C(Va+1,Va),...,C(Vn,Va) z budoucích proměnných do aktuální proměnné BT a +FC +LA n promenne aktuální Hana Rudová, Omezující podmínky, 16. prosince 2019 137 Prohledávání a pohled dop redu Srovnání algoritmů Backtracking (BT) kontroluje v kroku a podmínky C(Vi ,Va),...,C(Va-1,Va) z minulých proměnných do aktuální proměnné Kontrola dopředu (FC) kontroluje v kroku a podmínky C(Va+1,Va),...,C(Vn,Va) z budoucích promenných do aktuální promenné BT a Pohled dopředu (LA) kontroluje v kroku a podmínky Vl(a < l < n), Vk(a < k < n),k = l: c(Vk,Vi) z budoucích promenných do aktuální promenné a mezi budoucími promennými +FC +LA n promenne aktuální Hana Rudová, Omezující podmínky, 16. prosince 2019 137 Prohledávání a pohled dopredu Sřovnání algořitmů Backtřacking (BT) kontroluje v kroku a podmínky c(Vi ,Va),---,c(Va-1,Va) z minulých promenných do aktuální promenné Kontřola dopředu (FC) kontroluje v kroku a podmínky c(Va+1,Va),...,c(Vn,Va) z budoucích promenných do aktuální promenné BT a Pohled dopředu (LA) kontroluje v kroku a podmínky Ví(a < l < n), Vk(a < k < n),k = l: c(Vk,Vi) z budoucích proměnných do aktuální promenné a mezi budoucími proměnnými +FC +LA n promenne aktuálni Cvičení: porovnejte jednotlivé algoritmy pro príklad Vi, V2, V3 g {1,2, 3,4}, V = V2 * 2, V3 = V2 + 1, nakreslete odpovídající stavový prostor a u každého stavu uved'te, ke kterým propagacím omezení dochází. Hana Rudová, Omezující podmínky, 16. prosince 2019 137 Prohledávání a pohled dop redu Shrnutí: pohledu dop redu pro výber hodnoty & Kontrola dop r edu (forward checking) FC -i- FC zajišťuje konzistenci mezi aktuální promennou a budoucími promennými, které jsou s ní spojeny dosud nesplnenými podmínkami & Opravdový úplný pohled dop r edu (real full look-ahead) RFLA -i- casto se odkazuje: LA algoritmus RFLA=LA nebo Maintaining Arc-Consistency MAC it LA je rozšírení FC, LA zajišťuje hranovou konzistenci it LA navíc overuje i konzistenci všech hran mezi budoucími promennými Hana Rudová, Omezující podmínky, 16. prosince 2019 138 Prohledávání a pohled dop redu Shrnutí: pohledu dop redu pro výběr hodnoty & Kontrola dop r edu (forward checking) FC -i- FC zajišťuje konzistenci mezi aktuální promennou a budoucími promennými, které jsou s ní spojeny dosud nesplnenými podmínkami & Opravdový úplný pohled dop r edu (real full look-ahead) RFLA -i- casto se odkazuje: LA algoritmus RFLA=LA nebo Maintaining Arc-Consistency MAC -k LA je rozšír ení FC, LA zajišťuje hranovou konzistenci -i- LA navíc ove r uje i konzistenci všech hran mezi budoucími promennými & Úplný pohled dop r edu (full look-ahead) FLA Jt pouze jeden pruchod repeat until cyklem algoritmu Hana Rudová, Omezující podmínky, 16. prosince 2019 138 Prohledávání a pohled dop ředu Shrnutí: pohledu dop redu pro výber hodnoty & Kontrola dop r edu (forward checking) FC -i- FC zajišťuje konzistenci mezi aktuální promennou a budoucími promennými, které jsou s ní spojeny dosud nesplnenými podmínkami & Opravdový úplný pohled dop r edu (real full look-ahead) RFLA -i- casto se odkazuje: LA algoritmus RFLA=LA nebo Maintaining Arc-Consistency MAC it LA je rozšírení FC, LA zajišťuje hranovou konzistenci -i- LA navíc overuje i konzistenci všech hran mezi budoucími promennými & Úplný pohled dop r edu (full look-ahead) FLA Jt pouze jeden pruchod repeat until cyklem algoritmu JS> Cástecný pohled dop r edu (partial look-ahead) PLA it pouze jeden pruchod repeat until cyklem algoritmu it nahrazuje for V k,k = j,i < k < n výrazem for V k,j Statické uspo rádání promenných: výber promenných dán p r edem iľ triviálne: výber nejlevejší promenné (tj. promenné s nejmenším indexem) A empirické i teoretické studie ukázaly, že nekterá statická uspo rádání vedou obecne ke zmenšení velikost stavového prostoru Maximální kardinalita i* první promennou (uzel grafu) vybereme náhodne Jt každý uzel je spojen s maximálním poctem už uspo rádaných (= d r íve vybraných) vrcholu & promenné vybíráme v po radí dle tohoto poctu vrcholu Hana Rudová, Omezující podmínky, 16. prosince 2019 141 Prohledávání a pohled dop redu Výběr proměnných: statický Uspořádání (výber) promenných má velký vliv na velikost stavového prostoru JS> Statické uspo rádání proměnných: výber promenných dán predem iľ triviálne: výber nejlevejší promenné (tj. promenné s nejmenším indexem) A empirické i teoretické studie ukázaly, že nekterá statická usporádání vedou obecne ke zmenšení velikost stavového prostoru Maximální kardinalita i* první promennou (uzel grafu) vybereme náhodne každý uzel je spojen s maximálním poctem už usporádaných (= dríve vybraných) vrcholu & promenné vybíráme v poradí dle tohoto poctu vrcholu * Minimální šír ka it promenné usporádány tak, aby byla minimalizována šírka grafu (minimalizován pocet zpetných hran) i* odzadu vybíráme promenné s nejmenším poctem hran v aktualizovaném grafu (algoritmus viz dríve) Hana Rudová, Omezující podmínky, 16. prosince 2019 141 Prohledávání a pohled dopredu Výber promenných: dynamický JS> Dynamické usporádání promenných: výber promenných pocítán až v prubehu prohledávání a lze využít (výpoctů) algoritmů pohledu dopredu Hana Rudová, Omezující podmínky, 16. prosince 2019 142 Prohledávání a pohled dopredu Výber promenných: dynamický Dynamické uspo rádání promenných: výber promenných pocítán až v prubehu prohledávání it lze využít (výpoctů) algoritmu pohledu dopredu First-fail it velmi ccasto používaná metoda (vhodná jako default) Jt výber promenné, která nejvíce omezí zbytek stavového prostoru it výbereme promennou s nejmenší doménou it pozdeji už by mohlo být težší pro tuto promennou nalézt správnou hodnotu Jt kombinace first-fail a maximální kardinality it A,B, C g (1,2, 3}, A < 3, A = B + C nejlépe je zacít s výberem A Hana Rudová, Omezující podmínky, 16. prosince 2019 142 Prohledávání a pohled dop redu Pohled dopředu pro dynamický výběr proměnné procedure Var-Ord-Look-Ahead((X,D, C)) rozdíly od Look-Ahead i := 1 (inicializace čítače promenných) D[ := Di pro 1 < i < n (kopírování domény) s := min1< ji na jejich hodnotu pred poslední instanciací xi else if i < n s :=mini bakalárský kurz vyucovaný v anglictine na Hochschule Konstanz, Technik, Wirtschaft,und Gestaltung (Nemecko) v kvetnu 2GG9 http://www.fi.muni.cz/~hanka/konstanz09/ ü> propagace, prohledávání, modelování, príklady ü> omezující podmínky ü> použití omezujících podmínek pro rozvrhování Cást prednášky Constraint Programming: Search algoritmy v rekurzivním pseudokódu -í* p r íklady prohledávání stavového prostoru vcetne r ešení Hana Rudová, Omezující podmínky, 16. prosince 2G19 145 Prohledávání a pohled dop redu Pohled zpet Prehled algoritmů pohledu zpet look-back & Algoritmy skoku zpet (backjumping) S* pri zpetném průchodu se nevracíme pouze jeden krok jako algoritmus backtrackingu snažíme se vracet co nejdále až ke zdroji chyby M Algoritmy uCení (constraint recording, no-good learning) J* no-good = chybné cástecné prirazení Jť pridáme nová omezení, která zakazují nalezená chybná prirazení -í* Dynamický backtracking pri skoku zpet se snažíme nezapomínat už udelanou práci -i- meníme hodnoty pouze u minulých promenných s konfliktem (ostatní nemeníme) -fc realizace: zmeníme usporádání promenných JS> Backmarking it pamatuje si, kde testy na konzistenci neuspely -i- eliminuje opakování dríve provedených konzistencních testu Hana Rudová, Omezující podmínky, 16. prosince 2019 147 Pohled zpet pri prohledávání Konfliktní množina pevné usporádání promenných (x1,...,xn) Mejme cástecné konzistentní prirazení a = (ai1,aik) libovolné podmnožiny promenných a uvažujme dosud neprirazenou promennou x .Jestliže neexistuje hodnota b z domény x tak, aby (a,x = b) bylo konzistentní, ríkáme, že a je konfliktní množina x a nebo, že a je v konfliktu s x. x 1 X- red,blue,greenJ>-CT red,blue blue.qreen omezeni: ^ a. red .green.teal vyznacené p r i razení je konfliktní množina vzhledem k x7 Hana Rudová, Omezující podmínky, 16. prosince 2G19 148 Pohled zpet p ri prohledávání Konfliktní množina pevné usporádání promenných (x1,...,xn) Mejme cástecné konzistentní prirazení a = (ai1,aik) libovolné podmnožiny promenných a uvažujme dosud nepřiřazenou promennou x .Jestliže neexistuje hodnota b z domény x tak, aby (a,x = b) bylo konzistentní, ríkáme, že a je konfliktní množina x a nebo, že a je v konfliktu s x. x 1 x- red,blue,greenJ>-CT red,blue blue.qreen omezeni: ^ a. red .green.teal vyznacené prirazení je konfliktní množina vzhledem k x7 Pokud a neobsahuje j-tici (j < k), která je v konfliktu s x, pak nazýváme a minimální konfliktní množina. {x1/red,x3/blue}: min.konf.množina vzhledem k x7 Hana Rudová, Omezující podmínky, 16. prosince 2019 148 Pohled zpet pri prohledávání Chybné přiřazení Mejme cástecné konzistentní prirazení ai_1 = (a1,..., ai_1). Jestliže je ai_1 v konfliktu s xu pak ho nazýváme list slepé vetve. it prirazení v predchozím príkladu je list slepé vetve Hana Rudová, Omezující podmínky, 16. prosince 2019 149 Pohled zpet p ri prohledávání Chybné prirazění Mejme cástecné konzistentní prirazení ai-1 = (a1,..., ai-1). Jestliže je ai-1 v konfliktů s xi, pak ho nazýváme list slěpé větvě. -i- prirazení v predchozím príkladů je list slepé vetve Cástecné prirazení a, které se nevyskytuje v žádném rešení CSP, se nazývá chybné prirazění (no-good). ± konfliktní množinyjsoů chybná prirazení [x1/blůe,x2/green,X5/blůe] je chybné prirazení, ale nepatrí do žádné konfliktní množiny Hana Růdová, Omezůjící podmínky, 16. prosince 2019 149 Pohled zpet p ri prohledávání Chybné p ř i řazení Mějme částečné konzistentní přiřazení ai-l = (alt..., ai-i). Jestliže je ai-l v konfliktu s xi, pak ho nazýváme list slepé vetve. it přiřazení v předchozím příkladu je list slepé vetve Částečné p ř i řazení a, které se nevyskytuje v žádném ř ešení CSP, se nazývá chybné p ř i řazení (no-good). ± konfliktní množinyjsou chybná p ř i řazení [xl/blue,X2/gřeen,X5/blue] je chybné p ř i řazení, ale nepat ř í do žádné konfliktní množiny konflitní množina = chybné p ř i řazení vzhledem k jediné přomenné Hana Rudová, Omezující podmínky, 16. přosince 2019 149 Pohled zpet p ř i přohledávání Chybné přiřazení Mejme cástecné konzistentní p r i razení ai-1 = (a1,..., ai-1). Jestliže je ai-1 v konfliktu s xi, pak ho nazýváme list slepé vetve. -i- p r i razení v p redchozím p ríkladu je list slepé vetve Cástecné p r i razení a, které se nevyskytuje v žádném r ešení CSP, se nazývá chybné přiřazení (no-good). ± konfliktní množinyjsou chybná p r i razení & [x1/blue,x2/green,x5/blue] je chybné p r i razení, ale nepat r í do žádné konfliktní množiny konflitní množina = chybné p r i razení vzhledem k jediné promenné & Minimální chybná přiřazení neobsahují chybná p r i razení méne promenných. Hana Rudová, Omezující podmínky, 16. prosince 2019 149 Pohled zpet p r i prohledávání Konfliktní proměnná 1) je bězpěcná, nevynecháme žádné rešení 1 j & Mejme list slepé vetve ai-1. Promenná Xj (j < i -pokud je äj chybné prirazení. také ríkáme, že skok z xi na Xj je bezpecný Hana Rudová, Omezující podmínky, 16. prosince 2019 Pohled zpet p ri prohledávání Konfliktní promenná -i* Mejme list slepé vetve äi-1. Promenná Xj (j < i - 1) je bezpecná, pokud je äj chybné prirazení. také ríkáme, že skok z xi na Xj je bezpecný nevynecháme žádné rešení M Mejme list slepé vetve äi-1. Promenná xb je konfliktní promenná (culprit) vzhledem k äi-1, jestliže b = min(k < i | äk v konfliktu s xi}. 1 b-1 ... a b- jnení v konfliktu s xi b......a b v konfliktu s x { k.......ak v konfliktu s x { j Hana Rudová, Omezující podmínky, 16. prosince 2019 Pohled zpet pri prohledávání Konfliktní proměnná -i* Mějme list slepé větve äi-1. Proměnná Xj (j < i - 1) je bězpěcná, pokud je äj chybné prirazení. také r íkáme, že skok z xi na Xj je bezpeCný nevynecháme žádné r ešení M Mejme list slepé vetve cii-1. Promenná xb je konfliktní proměnná (culprit) vzhledem k äi-1, jestliže b = min{k < i | äk v konfliktu s xi}. 1 b-1 ... a b- jnení v konfliktu s xi b......a b v konfliktu s x { k.......ak v konfliktu s x { j & Tvrzení: Skok ke konfliktní promenné je bezpeCný. Hana Rudová, Omezující podmínky, 16. prosince 2019 150 Pohled zpet p r i prohledávání Gaschnigův skok zpět Gaschnig's backjumping (GBJ) když nedokážeme přiřadit hodnotu proměnné xu vracíme se zpět (skáčeme zpět) ke konfliktní proměnné určení konfliktní promenné pro každou hodnotu vi g xi nalezneme promennou s nejmenším indexem, která je s xjvi v konfliktu (prirazení této promenné musíme určite zmenit, aby šla hodnota vi použít) i~ konfliktní promennáje ta z nich, která má nejvetší index (když její hodnotu zmeníme, můžeme zrušit konflikt s odpovídající hodnotou) ví v2 "i Hana Rudová, Omezující podmínky, 16. prosince 2019 151 Pohled zpet pri prohledávání Algořitmus GBJ Každá promenná xi uchovává v latesti index konfliktní promenné procedure GBJ((X,D,C)) rozdíly od backtrackingu i := 1 (inicializace CítaCe proměnných) D- := Di (kopírování domény) latesti := 0 (inicializace citace na konfliktní promennou while 1 < i < n prirazení xi := Select-Value-GBJ if xi is null (žádná hodnota nebyla vrácena) i := latesti (skok zpet) else i := i+ 1 (dopredná fáze) Di := Di latesti := 0 if i = 0 return ,,nekonzistentní'' else return prirazené hodnoty {x1,...,xn} end GBJ Hana Rudová, Omezující podmínky, 16. prosince 2019 152 Pohled zpet pri prohledávání GBJ: výběr hodnoty procedure Select-Value-GBJ while D[ is not empty vyber a smaž libovolný v e D- ví TT v2 consistent := true k := 1 while k latest i latesti := k if not Consistent(vk,xi = v) consistent := false else k := k+1 if consistent return v return null (v doméne xi neexistuje konzistentní hodnota) Hana Rudová, Omezující podmínky, 16. prosince 2019 153 Pohled zpět při prohledávání GBJ: p r íklad Xj____ x7 omezeni:^ x4 & vyznacené p r i razení zároven r íká, že p r edchozí hodnoty už jsme vyzkoušeli (a vyradili) & x- = red vyr adí x1 (tj. latest7 = 1), x7 = blue vyr adí x3 => celkem latest7 = 3 Ä vracíme se ke konfliktní promenné x3, ta už má ale prázdnou doménu JG* latest3 = 2, vracíme se tedy k x2 A x3=red dala latest3 na 1, x3=blue dala latest3 na 2 JS> lépe (až k x1) se ale vrátit neumíme, GBJ se v tomto okamžiku vrací k p r edchozí promenné Hana Rudová, Omezující podmínky, 16. prosince 2019 154 Pohled zpet p r i prohledávání Konflikty ř ízený skok zpět Conflict-directed backjumping CBJ -i* Pri skoku zpet na promennou xj z listu slepé vetve nemusíme nalézt v doméne xj žádné hodnoty pro prirazení. äj_1 se pak nazývá vnitř ní slepá větev. Hana Rudová, Omezující podmínky, 16. prosince 2019 155 Pohled zpet p ri prohledávání Konflikty řízený skok zpět Conflict-directed backjumping CBJ JS> Pr i skoku zpet na proměnnou xj z listu slepé větve nemusíme nalézt v doméně xj žádné hodnoty pro p r i razení. äj_1 se pak nazývá vnitřní slepá větev. & CBJ skáce zpet v listu slepé vetve i ve vnitr ní slepé vetvi -i- udržujeme Ji množinu skoků zpět pro každou promennou pomocí nesplnených omezení promenná xj(j < i) je bližší k xi než xk(k < i), jestliže j > k, naopak xk je vzdálenější A omezení R je vzdálenější než omezení S, jestliže je nejbližší promenná v rozsahu R vzdálenejší než nejbližší promenná v rozsahu S (pokud totožné promenné, rozhodují další promenné). Pro uspo řádání (x1,x2,...): rozsah R1: (x3,xs,x7), rozsah S1: (x2,x6,x8,x9) R1 je vzdálenejší než S1 od x10 Hana Rudová, Omezující podmínky, 16. prosince 2019 155 Pohled zpet p r i prohledávání Konflikty rízený skok zpet Conflict-directed backjumping CBJ -i* Pr i skoku zpet na promennou Xj z listu slepé vetve nemusíme nalézt v doméne Xj žádné hodnoty pro p r i razení. äj-1 se pak nazývá vnitrní slepá vetev. & CBJ skáce zpet v listu slepé vetve i ve vnitr ní slepé vetvi -i- udržujeme Jt množinu skoků zpet pro každou promennou pomocí nesplnených omezení it promenná Xj(j < i) je bližší k xt než xk(k < t), jestliže j > k, naopak xk je vzdálenejší it omezení R je vzdálenejší než omezení S, jestliže je nejbližší promenná v rozsahu R vzdálenejší než nejbližší promenná v rozsahu S (pokud totožné promenné, rozhodují další promenné). Pro uspo rádání (x1,x2,...): rozsah R1: (x3,xs,x7), rozsah S1: (x2,x6,x8,x9) R1 je vzdálenejší než S1 od x10 rozsah R2: (x3,x5,x8,x9), rozsah S2: (x2,x6,x8,x9) R2 je vzdálenejší než S2 od x1o Hana Rudová, Omezující podmínky, 16. prosince 2019 155 Pohled zpet p ri prohledávání Konflikty r ízěný skok zpět Conflict-dírected backjumping CBJ -i* Pri skoku zpet na promennou Xj z listu slepé vetve nemusíme nalézt v doméne Xj žádné hodnoty pro prirazení. äj-1 se pak nazývá vnitr ní slěpá větěv. & CBJ skáce zpet v listu slepé vetve i ve vnitrní slepé vetvi -i- udržujeme Ji množinu skoků zpět pro každou promennou pomocí nesplnených omezení Jt promenná Xj(j < i) je bližší k xi než xk(k < i), jestliže j > k, naopak xk je vzdálěnější A omezení R je vzdálěnější něž omezení S, jestliže je nejbližší promenná v rozsahu R vzdálenejší než nejbližší promenná v rozsahu S (pokud totožné promenné, rozhodují další promenné). Pro usporádání (x1,x2,...): rozsah R1: (X3.X5.X7), rozsah S1: (x2,x6,x8,x9) R1 je vzdálenejší než S1 od x10 rozsah R2: (x3,x5,Xs,Xg), rozsah S2: (x2,x6,Xs,Xg) R2 je vzdálenejší než S2 od x1o A mezi nesplnenými omezeními vybereme to nejvzdálenejší (ostatní omezení neumožní nejdelší možný skok zpet) S> skocíme zpet na nejbližší promennou v tomto omezení (je bezpecné zmenit promennou, která byla nejpozdeji prirazená) Hana Rudová, Omezující podmínky, 16. prosince 2019 155 Pohled zpet pri prohledávání CBJ: výber hodnoty procedure Select-Value-CBJ while D- is not empty vyber a smaž libovolný v g D- consistent := true k := 1 while k<í a consistent if Consistent(vk,xí = v) k := k + 1 else R := nejvzdálenejší nesplnené omezení přidej proměnné v rozsahu R vyjma xí do Jí consistent := false if consistent return v return null (v doméně xí neexistuje konzistentní hodnota) Hana Rudová, Omezující podmínky, 16. prosince 2019 156 Pohled zpet pri prohledávání Algoritmus CBJ procedure CBJ((X,D,C)) i := 1 Di := Di Ji := 0 while 1 < i < n prirazení xi := Select-Value-CBJ if xi is null ip := i i := index poslední promenné v Ji Ji := Ji u Jip - {xi} rozdíly od backtrackingu (inicializace čítače proměnných) (kopírování domény) (inicializace množiny skoků zpět) (žádná hodnota nebyla vrácena) (skok zpet) (spoj množiny skoků zpet) (takto upravená Ji se použije ve vnitrní slepé vetvi) else i := i+ 1 (dopredná fáze) Ji := 0 # if i = 0 retůrn ,,nekonzistentní'' else retůrn prirazené hodnoty (x1, end CBJ ip Hana Rudová, Omezující podmínky, 16. prosince 2019 Pohled zpet p ri prohledávání CBJ: příklad X 7 X2 blue,green X6 c^red,green^ear> X4 pred vstupem do Select-Value-CBJ pro proměnnou x7 je J7 = 0 x3 = x7 je nejvzdálenejší omezení, které vyřadilo x7 = red, tedy J7 = {x3} x\ = x7 je nejvzdálenejší omezení, které vyřadilo x7 =blue, tedy J7 = {xi,x3) skáCeme zpet na poslední promennou v J7, tedy na x3 do J3, která byla zatím prázdná, pridáme x1 doména x3 je prázdná, v J3 je jediná promenná x1 a na tu se vracíme Hana Rudová, Omezující podmínky, 16. prosince 2019 158 Pohled zpet pri prohledávání uceni & Množiny skoku zpetjsou chybná p ř i ř azení vypocítaná behem přohledávání přohledávání a jsou znovu pocítána ii> Př idáme chybná p ř i ř azení jako nová omezení p ř i detekci slepé vetve it nemá cenu uchovávat celou slepou vetev dl v přomenné xi+l na toto p ř i řazení už pozdeji nenařazíme J> uchováme chybná p ř i řazení na podmnožine přomenných {xl,.. .,Xi] -i* Přo řezávání stavového přostořu Jt cím menší chybná p ř i řazení se podař í uchovat, tím řychlejší bude přohledávání C Zvetšování množiny omezení & cena za přo řezávání stavového přostořu nesmí p ř emst cenu za zvetšování množiny omezení Hana Rudová, Omezující podmínky, 16. přosince 2019 159 Pohled zpet p ři přohledávání ucení skoku zpet (jumpback learning) Vyůžijeme chybná prirazení, která jsme se naůali v CBJ Algoritmůs ůcení skoků zpet = CBJ + pridávání nových omezení Po dosažení listů slepé vetve di-1 pridáme omezení zakazůjící di-1 [Ji] projekce na Ji Hana Růdová, Omezůjící podmínky, 16. prosince 2019 16G Pohled zpet pri prohledávání Učení skoku zpět (jumpback learning) Využijeme chybná prirazení, která jsme se naucili v CBJ Algoritmus ucení skoku zpet = CBJ + pridávání nových omezení Po dosažení listu slepé vetve di-i pridáme omezení zakazující di-i[Jt] projekce na Jí po dosažení listu slepé vetve v x6 je J6 = {x2,x4,x5} <= red vyradila x6 = x5, blue vyradila x6 = x2, green vyradila x6 = x4 Hana Rudová, Omezující podmínky, 16. prosince 2019 160 Pohled zpet p ri prohledávání ucení skoku zpet (jumpback learning) Využijeme chybná p r i r azení, která jsme se naucili v CBJ Algoritmus ucení skoku zpet = CBJ + p r idávání nových omezení Po dosažení listu slepé vetve ai-1 p r idáme omezení zakazující ai-1 [Ji] projekce na Ji it po dosažení listu slepé vetve v x6 je J6 = {x2,x4,x5} <= red vyradila x6 = x5, blue vyradila x6 = x2, green vyradila x6 = x4 ä5[J6] tedy zakazuje p r i razení [(x2,blue>, (x4,green), (xs,red>] it pozdeji p r i procházení stromu lze nap r . ze znalosti x2 =blue, x4 =green odvodit x5 =red Hana Rudová, Omezující podmínky, 16. prosince 2019 160 Pohled zpet p r i prohledávání Další rozší rení backtrackingu Problémy skoku zpět & Pri skoku zpet zapomínáme už udelanou práci M Príklad: Obarvete graf tremi barvami tak, že mají sousední vrcholy různou barvu (uvedené hodnoty barevjsme už vyzkoušeli) Hana Rudová, Omezující podmínky, 16. prosince 2019 162 Další rozšírení backtrackingu Problémy skoku zpet & Pr i skoku zpet zapomínáme už udelanou práci M Pr íklad: Obarvete graf tremi barvami tak, že mají sousední vrcholy ruznou barvu (uvedené hodnoty barevjsme už vyzkoušeli) Hana Rudová, Omezující podmínky, 16. prosince 2019 162 Další rozšírení backtrackingu Problémy skoku zpet & Pri skoků zpet zapomínáme ůž ůdelanoů práci Ji Príklad: Obarvete graf tremi barvami tak, že mají soůsední vrcholy různoů barvů (ůvedené hodnoty barevjsme ůž vyzkoůšeli) Hana Růdová, Omezůjící podmínky, 16. prosince 2019 162 Další rozšírení backtrackingů Problémy skoku zpet & Pri skoku zpet zapomínáme už udelanou práci M Príklad: Obarvete graf tremi barvami tak, že mají sousední vrcholy mznou barvu (uvedené hodnoty barevjsme už vyzkoušeli) Pri druhém ohodnocení C deláme zbytecnou práci, stacilo nechat původní hodnotu 2, zmenou B se nic neporušilo Hana Rudová, Omezující podmínky, 16. prosince 2019 162 Další rozšírení backtrackingu Dynamický backtracking: p ríklad & Stejný gřaf (A,B,C,D,E), stejné bařvy (1,2,3), ale jiný postup Skok zpet + pamatování si duvodu konfliktu + přenos důvodu konfliktu + zmena po řadí přomenných = dynamický backtracking Hana Rudová, Omezující podmínky, 16. přosince 2019 163 Další řozšíření backtřackingu Dynamický backtracking: p r íklad Stejný graf (A,B,C,D,E), stejné barvy (1,2,3), ale jiný postup Skok zpet + pamatování si duvodu konfliktu + prenos duvodu konfliktu + zmena poradí promenných = dynamický backtracking Vrchol 1 2 3 A o B o vybraná barva: o C A o duvod konfliktu: AB D A B o E A B D Hana Rudová, Omezující podmínky, 16. prosince 2019 163 Další rozšírení backtrackingu Dynamický backtřacking: p ř íklad Stejný graf (A,B,C,D,E), stejné barvy (1,2,3), ale jiný postup Skok zpet + pamatování si duvodu konfliktu + prenos důvodu konfliktu + zmena poradí proměnných = dynamický backtřacking Vrchol 1 2 3 Vrchol 1 2 3 A o A o B o B o vybraná barva: o C A o C A o duvod konfliktu: AB D A B o D A B AB E A B D E A B skok zpet (na D) + prenos důvodu chyby (AB) Hana Rudová, Omezující podmínky, 16. prosince 2019 163 Další rozšírení backtrackingu Dynamický backtracking: příklad Stejný graf (A,B,C,D,E), stejné barvy (1,2,3), ale jiný postup Skok zpet + pamatování si důvodu konfliktu + prenos duvodu konfliktu + zmena poradí proměnných = dynamický backtracking Vrchol 1 2 3 Vrchol 1 2 3 Vrchol 1 23 A o A o A o B o B o C A o vybraná barva: o C A o C A o B o A důvod konfliktu: AB D A B o D A B AB D A o E A B D E A B E A Do skok zpět (na D) + prenos důvodu chyby (AB) skok zpět (na B) + prenos důvodu chyby (A) + změna poradí (B,C) Hana Rudová, Omezující podmínky, 16. prosince 2019 163 Další rozšírení backtrackingu Dynamický backtracking: p ŕ íklad Stejný gřaf (A,B,C,D,E), stejné bařvy (1,2,3), ale jiný postup Skok zpet + pamatování si duvodu konfliktu + přenos duvodu konfliktu + zmena pořadí přomenných = dynamický backtracking Vřchol 1 2 3 Vřchol 1 2 3 Vřchol 1 23 A o A o A o B o B o C A o vybřaná bařva: o C A o C A o B o A duvod konfliktu: AB D A B o D A B AB D A o E A B D E A B E A Do skok zpet (na D) skok zpet (na B) + přenos důvodu chyby (AB) + přenos duvodu chyby (A) + zmena pořadí (B,C) £ Vřchol C, řesp. celý gřaf, kteřý na nem případne visel není nutno přebařvovat Hana Rudová, Omezující podmínky, 16. přosince 2019 163 Další řozšíření backtřackingu Dynamický backtracking: algoritmus procedure DB(Variables, Constraints) Labelled := 0; Unlabelled := Variables while Unlabelled <> 0 do vyber X z Unlabelled ValuesX := DX - hodnoty nekonzistentní s Labelled použitím Constraints Hana Rudová, Omezující podmínky, 16. prosince 2019 164 Další rozšírení backtrackingu Dynamický backtracking: algoritmus procedure DB(Variables, Constraints) Labelled := 0; Unlabelled := Variables while Unlabelled <> 0 do vyber X z Unlabelled ValuesX := DX - hodnoty nekonzistentní s Labelled použitím Constraints if ValuesX = 0 then necht' E je vysvetlení konfliktu (množina konfliktních promenných) if E = 0 then failure else necht' Y je nejbližší promenná v E zruš prirazení Y (z Labelled) s vysvetlením E-Y smaž všechna vysvetlení zahrnujícící Y Hana Rudová, Omezující podmínky, 16. prosince 2019 164 Další rozšírení backtrackingu Dynamický backtracking: algoritmus procedure DB(VariabIes, Constraints) Labelled := O; Unlabelled := Variables while Unlabelled <> O do vyber X z Unlabelled ValuesX := DX - hodnoty nekonzistentní s Labelled použitím Constraints if ValuesX = O then necht' E je vysvetlení konfliktu (množina konfliktních promenných) if E = O then failure else necht' Y je nejbližší promenná v E zruš prirazení Y (z Labelled) s vysvetlením E-Y smaž všechna vysvetlení zahrnujícící Y else vyber V z ValuesX Unlabelled := Unlabelled - {X} Labelled := Labelled u {X/V} return Labelled Hana Rudová, Omezující podmínky, 16. prosince 2G19 164 Další rozší rení backtrackingu Dynamický backtracking: algoritmus procedure DB(Variables, Constraints) Labelled := O; Unlabelled := Variables while Unlabelled <> O do vyber X z Unlabelled ValuesX := DX - hodnoty nekonzistentní s Labelled použitím Constraints if ValuesX = O then necht' E je vysvetlení konfliktu (množina konfliktních promenných) if E = O then failure else necht' Y je nejbližší promenná v E zruš prirazení Y (z Labelled) s vysvetlením E-Y smaž všechna vysvetlení zahrnujícící Y else vyber V z ValuesX Unlabelled := Unlabelled - {X} Labelled := Labelled u {X/V} return Labelled Nevýhody algoritmu: preusporádáváním promenných rušíme efekt heuristik výberu promenných Hana Rudová, Omezující podmínky, 16. prosince 2G19 164 Další rozšírení backtrackingu Redundance backtrackingu ' Redundantní přáce: opakování výpoctu, jehož výsledek už máme k dispozici A,B,C,D: {1,2.....10}, A+8x\C=10 /C=^\c=i^/C=^\c=io /C=w\c=io D=10 Zmena B neovlivnuje hodnotu C => není potreba znova procházet podstromy C=1,... ,C=9 Hana Rudová, Omezující podmínky, 16. prosince 2019 165 Další rozšírení backtrackingu Redundance backtrackingu ' Redundantní práce: opakování výpoCtu, jehož výsledek už máme k dispozici A,B,C,D: {1,2.....10}, A+8x\C=10 /C=^\c=i^/C=^\c=io /C=^\c=io D=10 Zmena B neovlivnuje hodnotu C == není potreba znova procházet podstromy C=1,... ,C=9 Backmarking pamatuje si, kde testy na konzistenci neuspely A eliminuje opakování dríve provedených konzistencních testu Hana Rudová, Omezující podmínky, 16. prosince 2019 165 Další rozšírení backtrackingu Základy backmarkingu & Mark(Y,b): u každé hodnoty b z domény Y pamatuje nejvzdálenejší konflikt konflikt = promenná xp taková, že ap je v konfliktu s Y = b JS> BackTo(Y): u každé promenné Y pamatuje nejvzdálenejší návrat návrat = promenná, jejíž hodnota se zmenila od poslední instanciace Y Hana Rudová, Omezující podmínky, 16. prosince 2019 166 Další rozší rení backtrackingu Základy backmarkingu Mark(Y,b): ů každé hodnoty b z domény Y pamatůje nejvzdálenejší konflikt konflikt = promenná xp taková, že ap je v konfliktů s Y = b BackTo(Y): ů každé promenné Y pamatůje nejvzdálenejší návrat návrat = promenná, jejíž hodnota se zmenila od poslední instanciace Y Mark BackTo Mark(Y,b) BackTo(Y) Y=b Y/b je nekonzistentní s X/a (konzistentní se vším nad X) BackTo(Y) Mark(Y,b) Y/b je s X/a stále nekonzistentní, Y=b tedy nezkoůšíme prirazovat zde je Y/b v po ráků zde je t reba Y/b znovů zkontrolovat Y=b Y/b je nekonzistení s X/a (ale je konzistentní se vším p redtím) Hana Růdová, Omezůjící podmínky, 16. prosince 2019 166 Další rozší rení backtrackingů Backmarking: príklad Problém N královen 1 m 2 i 3 2 1 2 m 4 #■ 5 4 2 i 2 3 W 6 3 2 3 1 2 3 7 8 1. Dámy p r i razujeme po rádcích, tj. pro každou dámu hledáme sloupec 2. Vedle šachovnice píšeme úrovne návratu (BackTo). Na zacátku všude 1. 3. Do polícka zapisujeme císla nejvzdálenejších konfliktních dam (Mark). Na zacátku všude 1. Hana Rudová, Omezující podmínky, 16. prosince 2019 167 Další rozšírení backtrackingu Backmarking: príklad Problém N královen 1 m 2 i 3 2 1 2 m 4 #■ 5 4 2 i 2 3 W 6 3 2 3 1 2 3 7 8 1 1 5 1 1 1. Dámy prirazujeme po rádcích, tj. pro každou dámu hledáme sloupec 2. Vedle šachovnice píšeme úrovne návratu 1 (BackTo). Na zacátku všude 1. 1 3. Do polícka zapisujeme císla nejvzdálenejších konfliktních dam (Mark). Na zacátku všude 1. 4. Dámu v rádku 6 nelze priradit. 5. Vracíme se na 5, opravíme BackTo. 6. Když znova prijdeme na 6, všechny pozice jsou stále špatné (Mark Je možné prohledat jen omezený prostor => Neúplná stromová prohledávání * Neúplné prohledávání do hloubky Hana Rudová, Omezující podmínky, 16. prosince 2019 171 Neúplná stromová prohledávání Něúplné prohlědávání do hloubky Depth first search (DFS): odpovídá algoritmu backtrackingu & Reálné problémy mají casto tak velké prostory možných ohodnocení, že není možné je celé prohledat. JS> Je možné prohledat jen omezený prostor ^ Neúplná stromová prohledávání * Něúplné prohlědávání do hloubky Hana Rudová, Omezující podmínky, 16. prosince 2019 171 Neúplná stromová prohledávání Něúplná stromová prohlědávání Neprohledáváme celý stavový prostor Nemáme záruku, že rešení neexistuje, i když ho algoritmus nenalezne A ztráta úplnosti Jt u nekterých algoritmu lze obecně zaruät úplnost, i když s vyšší složitostí než mel původní algoritmus V rade prípadu najdeme rešení rychleji Hana Rudová, Omezující podmínky, 16. prosince 2019 172 Neúplná stromová prohledávání Neúplná stromová prohledávání -í* Nepřohledáváme celý stavový přostoř -í* Nemáme zářuku, že řešení neexistuje, i když ho algořitmus nenalezne -k ztřáta úplnosti a u nekteřých algořitmů lze obecne zařucit úplnost, i když s vyšší složitostí než mel původní algořitmus & V řade případů najdeme řešení řychleji JS> Neúplné algořitmy casto odvozeny od algořitmu úplného (DFS) a p rerušení behu algoritmu (cutoff) po vyceřpání přideleného prost redku (cas, pocet návřatů, ...) algořitmus přeřušíme přostředek muže být globální (přo celý střom) i lokální (přo daný podstřom nebo uzel) a opakovaní behu algoritmu (restart) beh předešlého neúplného přohledávání opakujeme s jiným nastavením pařametrn při opakování behu lze využívat algořitmy ucení Hana Rudová, Omezující podmínky, 16. přosince 2019 172 Neúplná střomová přohledávání Randomizovaný backtracking & Casově omezený backtracking (p řeřušení) & beh (úplného) algoritmu ukoname po zadaném casovém intervalu (prostredek=cas) -i- casový interval lze pro další behy zvetšit == pri dostatecném poctu kroků máme úplný algoritmus & Náhodný výběř hodnot a přoměnných (opakování) -i- pokud máme možnost volby pri výberu hodnot nebo promenných (vzhledem k dané heuristice usporádání hodnot a promenných) náhodne zvolíme nekterou z nich Hana Rudová, Omezující podmínky, 16. prosince 2019 173 Neúplná stromová prohledávání Randomizovaný backtracking & Časově omezený backtracking (prerušení) it beh (úplného) algoritmu ukonCíme po zadaném Časovém intervalu (prostredek=Cas) -i- Časový interval lze pro další behy zvetšit == pri dostatečném počtu kroků máme úplný algoritmus & Náhodný výber hodnot a promennýčh (opakování) -i- pokud máme možnost volby pri výberu hodnot nebo promennýčh (vzhledem k dané heuristice usporádání hodnot a promennýčh) náhodne zvolíme nekterou z nich Randomizovaný backtracking s učením -i* chybná prirazení predchozích behů uchováme a využíváme -i- takto lze také dosáhnout úplnosti, protože chybných prirazení je konecne mnoho Hana Rudová, Omezující podmínky, 16. prosince 2019 173 Neúplná stromová prohledávání Omezení poCtu návratů & Bounded-backtrack search (BBS) & Omezený pocet návratů (prerušení) & návrat do bodu volby, kde už nelze vybrat novou hodnotu nezapocítáváme * „omezený pocet navštívených listů" & Pro úplnost: pri neúspechu zvetšíme pocet návratů o jedna (opakování) C Príklad: BBS(6) „ Hana Rudová, Omezující podmínky, 16. prosince 2019 174 Neúplná stromová prohledávání Omezení poCtu návratů & Bounded-backtrack search (BBS) & Omezený pocet návratů (p rerušení) & návrat do bodů volby, kde ůž nelze vybrat novoů hodnotů nezapocítáváme * „omezený pocet navštívených listů" & Pro úplnost: pri neúspechů zvetšíme pocet návratů o jedna (opakování) C Príklad: BBS(6) „ j* Implementace Hana Růdová, Omezůjící podmínky, 16. prosince 2019 174 Neúplná stromová prohledávání Omezení poctu návratů & Bounded-backtrack search (BBS) & Omezený pocet návratů (prerušení) & návrat do bodů volby, kde už nelze vybrat novou hodnotu nezapocítáváme * „omezený pocet navštívených listů" & Pro úplnost: pri neúspechu zvetšíme pocet návratů o jedna (opakování) C Príklad: BBS(6) „ j* Implementace 3 pocítáme pocet návratu (neúspechu) A pri prekrocení meze se prohledávání ukoncí Hana Rudová, Omezující podmínky, 16. prosince 2019 174 Neúplná stromová prohledávání Omezení hloubky Depth-bounded search (DBS) Omezíme hloubku prohledávaného stromu (prerušení) a do dané hloubky stromu se zkouší všechny alternativy a ve zbytku stromu se muže použít jiná neúplná metoda Pro úplnost: pri neúspechu zvetšíme hloubku prohledávání o jedna (opakování) Príklad: DBS(1,BBS(0)) Hana Rudová, Omezující podmínky, 16. prosince 2019 175 Neúplná stromová prohledávání Omezení hloubky Depth-bounded search (DBS) Omezíme hloubku prohledávaného stromu (p řeřušení) a do dané hloubky stromu se zkouší všechny alternativy a ve zbytku stromu se muže použít jiná neúplná metoda Pro úplnost: pri neúspechu zvetšíme hloubku prohledávání o jedna (opakování) Príklad: DBS(1,BBS(0)) Implementace Hana Rudová, Omezující podmínky, 16. prosince 2019 175 Neúplná stromová prohledávání Omězění hloubky Depth-bounded search (DBS) Omezíme hloubku prohledávaného stromu (p rěrušění) a do dané hloubky stromu se zkouší všechny alternativy a ve zbytku stromu se může použít jiná neúplná metoda Pro úplnost: pri neúspechu zvetšíme hloubku prohledávání o jedna (opakování) Príklad: DBS(1,BBS(0)) Implementace Jť udržujeme poradové císlo prirazované promenné -** je-li poradové císlo vetší než daná mez, zkouší se pouze jedna alternativa - BBS(0) Hana Rudová, Omezující podmínky, 16. prosince 2019 175 Neúplná stromová prohledávání Prohledávání s kreditem Credit search (CS) £ Omezený kredit (pocet návratů) pro prohledávání (prerušení) A kredit se rovnomerne delí mezi alternativní vetve prohledávání & jednotkový kredit zakazuje možnost volby (hodnoty), tj. pokracujeme pouze bez návratu Pro úplnost: pri neúspechu navýšíme kredit o jedna (opakování) M Príklad: CS(12) 6 6 Hana Rudová, Omezující podmínky, 16. prosince 2019 176 Neúplná stromová prohledávání Prohledávání s kreditem Credit search (CS) £ Omezený kredit (pocet návratu) pro prohledávání (prerušení) A kredit se rovnomerne delí mezi alternativní vetve prohledávání i> jednotkový kredit zakazuje možnost volby (hodnoty), tj. pokracujeme pouze bez návratu Pro úplnost: pri neúspechu navýšíme kredit o jedna (opakování) M Príklad: CS(12) 6 6 C Implementace Hana Rudová, Omezující podmínky, 16. prosince 2019 176 Neúplná stromová prohledávání Prohledávání s kreditem Credit search (CS) £ Omezený kředit (pocet návřatu) přo přohledávání (p rerušení) A kředit se řovnomeřne delí mezi alternativní vetve přohledávání i> jednotkový kředit zakazuje možnost volby (hodnoty), tj. pokřacujeme pouze bez návřatu Přo úplnost: při neúspechu navýšíme kředit o jedna (opakování) M Příklad: CS(12) 6 6 C Implementace S> v každém uzlu se nejednotkový kředit (řovnomeřne) řozdelí mezi alternativní podstřomy it při jednotkovém kředitu se nebeřou alternativy (tj. při neúspechu koncíme) Hana Rudová, Omezující podmínky, 16. přosince 2019 176 Neúplná střomová přohledávání rozširováni & Iterative broadening IB JS> Omezený maximální pocet voleb (hodnot) pri každém výberu promenné (prerušení) Jt v každém bode volby vetvení omezeno konstantou Jt pri prekrocení max. poctu voleb pokracujeme předchozím bodem volby & Úplnost: pri neúspechu zvýšíme povolený pocet voleb o jedna (opakování) M Príklad: IB(2) & Implementace Hana Rudová, Omezující podmínky, 16. prosince 2019 177 Neúplná stromová prohledávání řozsi řováni & Iterative broadening IB JS> Omezený maximální pocet voleb (hodnot) pri každém výberu promenné (p řeřuSení) v každém bode volby vetvení omezeno konstantou pri prekrocení max. poctu voleb pokracujeme predchozím bodem volby & Úplnost: pri neúspechu zvýšíme povolený pocet voleb o jedna (opakování) M Príklad: IB(2) Implementace ± po výberu promenné umožníme pouze výber urceného poctu jejích hodnot Hana Rudová, Omezující podmínky, 16. prosince 2019 177 Neúplná stromová prohledávání Stromová prohledávání a heuristiky -i* Pri rešení reálných problémů casto existůje nápoveda odvozená ze zkůšeností s „růcním" rešením problémů Heůristiky - radí, jak pokracovat v prohledávání doporůcůjí hodnotů pro prirazení casto vedoů prímo k rešení & Co delat, když heůristika neůspeje? &> DFS se stará hlavne o konec prohledávání (spodní cást stromů) A DFS tedy spíše opravůje poslední poůžité heůristiky než první ± DFS predpokládá, že dríve poůžité heůristiky ho navedly dobre Hana Růdová, Omezůjící podmínky, 16. prosince 2019 178 Neúplná stromová prohledávání Stromová prohledávání a heuristiky -i* Pri rešení reálných problému casto existuje nápoveda odvozená ze zkušeností s „rucním" řešením problému C- Heuristiky - radí, jak pokracovat v prohledávání J* doporucují hodnotu pro prirazení casto vedou prímo k rešení JS> Co delat, když heuristika neuspeje? &> DFS se stará hlavne o konec prohledávání (spodní cást stromu) A DFS tedy spíše opravuje poslední použité heuristiky než první ± DFS predpokládá, že dríve použité heuristiky ho navedly dobre JS> Pozorování: S> pocet porušení heuristiky na úspešné ceste je malý -i- heuristiky jsou méne spolehlivé na zacátku prohledávání než na jeho konci (na konci máme více informací a méne možností) Hana Rudová, Omezující podmínky, 16. prosince 2019 178 Neúplná stromová prohledávání Zotavění sě z chyb hěuristiky Heuristika doporucuje hodnotu pro prirazení Diskrěpancě = porušení heuristiky Jt použita jiná hodnota, než doporucila heuristika Pozorování: málo chyb heuristiky na ceste k rešení => cesty s méne diskrepancemi jsou prozkoumány dríve Pozorování: chyby heuristiky hlavne na zacátku cesty ^ cesty s diskrepancemi na zacátku jsou prozkoumány dríve Hana Rudová, Omezující podmínky, 16. prosince 2019 179 Neúplná stromová prohledávání Omezené diskrepance & Limited discrepancy search (LDS) & Omezený maximální pocet diskrepancí na ceste (prerušení) i> cesty s diskrepancemi na zacátku jsou prozkoumány dríve & Pri neúspechu navýšíme pocet povolených diskrepancí o jedna (opakování) -fc tj. nejprve jdeme tak, jak doporucuje heuristika; potom jdeme po cestách s maximálne jednou diskrepancí; pak maximálne se dvema diskrepancemi, atd. C Príklad: LDS-PROBE(1), heuristika doporucuje vydat se levou vetví & Diskrepance pro nebinární domény nedoporucené hodnoty se berou jako jedna diskrepance (zde) A výber každé další hodnoty promenné je jedna diskrepance (tj. tretí hodnota = dve diskrepance, ctvrtá hodnota = tri diskrepance, ...) Hana Rudová, Omezující podmínky, 16. prosince 2019 180 Neúplná stromová prohledávání Algoritmus LDS procedure LDS(Variables,Constraints) for D=0 to |Variables| do % D urCuje max. poCet povolených diskrepancí R := LDS-PROBE(Variables,{},Constraints,D) if R = fail then return R return fail Hana Rudová, Omezující podmínky, 16. prosince 2019 181 Neúplná stromová prohledávání Algoritmus LDS procedure LDS(Variables,Constraints) for D=0 to |Variables| do % D urCuje max. poCet povolených diskrepancí R := LDS-PROBE(Variables,{},Constraints,D) if R = fail then return R return fail procedure LDS-PROBE(Unlabelled,Labelled,Constraints,D) if Unlabelled = {} then return Labelled select X g Unlabelled Values^ := - {values inconsistent with Labelled using Constraints} if Values^ = {} then return fail else select HV g Values^ using heuristic if D>0 then for VV g Values*-{HV} do R := LDS-PROBE(Unlabelled-{X}, Labelled u {X/V}, Constraints, D-1) if R = fail then return R return LDS-PROBE(Unlabelled-{X}, Labelled u {X/HV}, Constraints, D) end LDS-PROBE Hana Rudová, Omezující podmínky, 16. prosince 2019 181 Neúplná stromová prohledávání Omezené diskrepance - zlepšení -i* LDS v každé další iteraci prochází i vetve z predchozí iterace, tj. opakuje již provedený výpocet a navíc se v rámci iterace musí vracet do již prošlých cástí £ Improved limited discrepancy search (ILDS) *> daný pocet diskrepancí na ceste (prerušení) cesty s diskrepancemi na konci prozkoumány dríve JS> Pri neúspechu navýšíme pocet diskrepancí o jedna (opakování) £ Príklad: ILDS-PROBE(1), heuristika doporucuje vydat se levou vetví Hana Rudová, Omezující podmínky, 16. prosince 2019 182 Neúplná stromová prohledávání Algoritmus ILDS procedure ILDS(Variables,Constraints) % analogie LDS(Variables,Constraints) procedure ILDS-PROBE(Unlabelled,Labelled,Constraints,D) Rozdíly od LDS if Unlabelled = {} then return Labelled select X g Unlabelled Values^ := - {values inconsistent with Labelled using Constraints} if Values^ = {} then return fail else select HV g Values^ using heuristic if D<|Unlabelled| then R := ILDS-PROBE(Unlabelled-{X}, Labelled u {X/HV}, Constraints, D) if R = fail then return R if D>0 then for VV g Values^-{HV} do R := ILDS-PROBE(Unlabelled-{X}, Labelled u {X/V}, Constraints, D-1) if R = fail then return R end ILDS-PROBE Hana Rudová, Omezující podmínky, 16. prosince 2019 183 Neúplná stromová prohledávání Hloubkou omezené diskrepance & ILDS bere cesty s diskrepancemi na konci dríve iS* Depth-bounded discrepancy search (DDS) & Diskrepance povoleny pouze do dané hloubky (prerušení) a v této hloubce je vždy diskrepance, tj. zabrání se procházení vetví z předchozí iterace j* hloubka zároven omezuje maximální pocet diskrepancí cesty s diskrepancemi na zacátku prozkoumány dríve & Pri neúspechu navýšíme hloubku o jedna (opakování) iS* Príklad: DDS(3), heuristika doporucuje vydat se levou vetví 3 1 2 3 4 Hana Rudová, Omezující podmínky, 16. prosince 2019 184 Neúplná stromová prohledávání Lokální prohledávání Lokální prohlědávání (LS) C Princip a pracuje s úplnými někonzistěntními p r i razěními proměnných a snaží se lokálními opravami snížit pocet konfliktu -i* Príklad: umístení n dam na šachovnici -i- iniciální p r i razení umístí každou královnu do každého sloupce a rádku bez ohledu na diagonální omezení -i- p r esunujeme královnu v jejím sloupci do jiného rádku tak, abychom odstranili co nejvíce konfliktu i> LS vyr eší rádove vetší problémy než algoritmy založené na prohledávání do hloubky Hana Rudová, Omezující podmínky, 16. prosince 2019 186 Lokální prohledávání Lokální prohledávání (LS) C Princip a pracuje s úplnými nekonzistentními přiřazeními proměnných snaží se lokálními opravami snížit pocet konfliktu -i* Príklad: umístení n dam na šachovnici -i- iniciální p r i razení umístí každou královnu do každého sloupce a rádku bez ohledu na diagonální omezení -i- p r esunujeme královnu v jejím sloupci do jiného rádku tak, abychom odstranili co nejvíce konfliktu i> LS vyr eší rádove vetší problémy než algoritmy založené na prohledávání do hloubky & Pr ibližná metoda prohledávání neúplná metoda nezarucuje nalezení (vyloucení existence) r ešení i když existuje (neexistuje) malé pamet'ové nároky Hana Rudová, Omezující podmínky, 16. prosince 2019 186 Lokální prohledávání Teřminologie lokálního přohledávání Stav 6: ohodnocení všech promenných & Evaluace E: hodnota objektivní funkce (pocet nesplnených podmínek=poCet konfliktu) JS* Globální optimum: stav s nejlepší evaluací Terminologie lokálního prohledávání Stav 6: ohodnocení všech promenných JS> Evaluace E: hodnota objektivní funkce (pocet nesplnených podmínek=poCet konfliktů) JS* Globální optimum: stav s nejlepší evaluací & Lokální zmena: zmena hodnoty (jedné) promenné & Okolí o: množina stavů lišící se od daného stavu o jednu lokální zmenu JS> Lokální optimum: stav, vjehož okolí jsou stavy s horší evaluací; není globálním optimum Terminologie lokálního prohledávání Stav 6: ohodnocení všech přomenných Evaluace E: hodnota objektivní funkce (pocet nesplnených podmínek=poCet konfliktu) Globální optimum: stav s nejlepší evaluací Lokální zmena: zmena hodnoty (jedné) přomenné Okolí o: množina stavů lišící se od daného stavu o jednu lokální zmenu Lokální optimum: stav, vjehož okolí jsou stavy s hořší evaluací; není globálním optimum Striktní lokální optimum: stav, vjehož okolí jsou pouze stavy s hořší evaluací; není globálním optimum Ne-striktní lokální optimum: stav, vjehož okolí exisují stavy se stejnou evaluací; není globálním optimum Plateau: množina stavů se stejnou evaluací plateau ne-striktní lokální minimum Hana Rudová, Omezující podmínky, 16. přosince 2019 187 Lokální přohledávání Algoritmus lokálního prohledávání -í* Algoritmy lokálního prohledávání mají spolecnou kostru procedure LS(MaxPokusu,MaxZmen) parametry algoritmu 6 : = náhodné ohodnocení promenných for i := 1 to MaxPokusu while GPodminka do for j := 1 to MaxZmen while LPodminka do if E(6)=0 then return 6 vyber ô g o(6) if akceptovatelne(ô) then 6 : = ô 6 : = novyStav(6) return nejlepší 6 Hana Rudová, Omezující podmínky, 16. prosince 2019 188 Lokální prohledávání Algoritmus lokálního prohledávání -í* Algoritmy lokálního prohledávání mají společnou kostru procedure LS(MaxPokusu,MaxZmen) parametry algoritmu 6 := náhodné ohodnocení proměnných for i := 1 to MaxPokusu while GPodminka do for j := 1 to MaxZmen while LPodminka do if E(6)=0 then return 6 vyber ô g o(6) if akceptovatelne(ô) then 6 := ô 6 := novyStav(6) return nejlepší 6 Jak stanovit MaxPokusu,MaxZmen? J* pokračovat dokud existuje prirazení s lepší evaluací -i- restart (MaxPokusu>1) v nekterých prípadech diskutabilní Hana Rudová, Omezující podmínky, 16. prosince 2019 188 Lokální prohledávání Metoda nejvetšího stoupání (hill climbing) HC & Zacíná v náhodne vybraném stavu & Hledá vždy nejlepší stav v okolí -i* Okolí = hodnota libovolné promenné je zmenena, velikost okolí n x (d - 1) JS> Útek ze striktního lokálního minima pomocí restartu proceduře HC(MaxZmen) restart: 6 := náhodné ohodnocení proměnných for j := 1 to MaxZmen do if E(6) = 0 then return 6 if 6 je striktní lokální optimum then goto restart else 6 := stav z o(6) s nejlepší evaluací goto restart end HC Hana Rudová, Omezující podmínky, 16. prosince 2019 189 Lokální prohledávání Mětoda minimalizacě konfliktů (MC) Okolí u HC je pomerne velké: n x (d - 1) m ale pouze zmena konfliktní promenné muže prinést zlepšení A konfliktní promenná = vystupuje v nekterých nesplnených podmínkách it okolí = hodnota zvolené proměnné je změněna, velikost okolí d - 1 procedure MC(MaxZmen) 6 := náhodné ohodnocení proměnných PocetZmen := 0 while E(6) > 0 a PocetZmen náhodne zvolíme stav z okolí a pokracujeme jím Jr tato metoda samostatne k rešení nepovede a potr ebuje další směrování v prohledávacím prostoru lze kombinovat s HC i MC Hana Rudová, Omezující podmínky, 16. prosince 2019 191 Lokální prohledávání Náhodná procházka (Random Walk) RW iS* Jak uniknout z lokálního optima bez restartu? & pridáním „šumu" do algoritmu JS> Pokud se dostaneme do lokálního optima %> náhodne zvolíme stav z okolí a pokracujeme jím Jr tato metoda samostatne k rešení nepovede a potrebuje další smerování v prohledávacím prostoru lze kombinovat s HC i MC & RW je kombinováno s heuristikou pomocí pravdepodobnostního rozložení a pravdepodobnost náhodného krokuje p *> pravdepodobnost použití smerové heuristiky je 1 - p s» náhodná procházka tedy nahrazuje restart únik z lokálního minima prostrednictvím náhodného výberu Hana Rudová, Omezující podmínky, 16. prosince 2019 191 Lokální prohledávání Minimalizace konfliktů s náhodnou procházkou procedure MCRW(MaxZmen,p) Rozdíly od MC 6 := náhodné ohodnocení promenných PocetZmen := 0 while E(6) > 0 a PocetZmen (1 - p) 0.02 < p < 0.1 vyber náhodne hodnotu a pro V else vyber hodnotu a, která minimalizuje pocet konfliktu pro V if a=současná hodnota V then pri raď a do V PocetZmen := PocetZmen+1 return 6 Hana Rudová, Omezující podmínky, 16. prosince 2019 192 Lokální prohledávání Nějvětší stoupání s náhodnou procházkou procedure HCRW(MaxZmen,p) Rozdíly od MCRW O : = náhodné ohodnocení promenných PocetZmen := 0 while E(O) > O a PocetZmen (l - p) vyber náhodne konfliktní promennou V vyber náhodne hodnotu a pro V else vyber (V,a) s nejlepší evaluací if a=soucasná hodnota V then pri raď a do V PocetZmen := PocetZmen+1 return O Hana Rudová, Omezující podmínky, 16. prosince 2G19 193 Lokální prohledávání Tabu seznam Setřvání v lokálním optimu je speciálním případem cyklu Jak se obecne zbavit cyklu? ± stací si pamatovat předchozí stavy a zakázat opakování stavu pameťove příliš nářocné (mnoho stavu) J* mužeme si zapamatovat pouze nekolik posledních stavu (zabřání křátkým cyklum) Hana Rudová, Omezující podmínky, 16. přosince 2019 194 Lokální přohledávání Tabu seznam & Setřvání v lokálním optimu je speciálním případem cyklu JS> Jak se obecne zbavit cyklů? ± stací si pamatovat předchozí stavy a zakázat opakování stavu pameťove příliš nářocné (mnoho stavů) J* můžeme si zapamatovat pouze nekolik posledních stavu (zabřání křátkým cyklum) & Tabu seznam = seznam tabu (zakázaných) stavů -i- stav lze popsat význacným atřibutem (není nutné uchovávat celý stav) (přomenná,hodnota): zachycuje zmenu stavu (uložíme původní hodnoty) A tabu seznam má fixní délku (tabu tenure) „stařé" stavy ze seznamu vypadávají s přicházejímími novými stavy Hana Rudová, Omezující podmínky, 16. přosince 2019 194 Lokální přohledávání Tabu sěznam & Setrvání v lokálním optimu je speciálním prípadem cyklu JS> Jak se obecne zbavit cyklu? ± stací si pamatovat predchozí stavy a zakázat opakování stavu pamet'ove príliš nárocné (mnoho stavů) J* mužeme si zapamatovat pouze nekolik posledních stavu (zabrání krátkým cyklům) & Tabu sěznam = seznam tabu (zakázaných) stavů -i- stav lze popsat význacným atributem (není nutné uchovávat celý stav) (promenná,hodnota): zachycuje zmenu stavu (uložíme puvodní hodnoty) A tabu seznam má fixní délku (tabu tenure) „staré" stavy ze seznamu vypadávají s pricházejímími novými stavy M Aspiracní kritérium = odtabuizování stavu do stavu lze přejít, i když je v tabu seznamu (napr. krok vede k celkove lepšímu stavu) Hana Rudová, Omezující podmínky, 16. prosince 2019 194 Lokální prohledávání Tabu seznam & Setrvání v lokálním optimu je speciálním prípadem cyklu JS> Jak se obecne zbavit cyklu? ± stací si pamatovat predchozí stavy a zakázat opakování stavu pamet'ove príliš nárocné (mnoho stavu) J* mužeme si zapamatovat pouze nekolik posledních stavu (zabrání krátkým cyklum) & Tabu seznam = seznam tabu (zakázaných) stavů -i- stav lze popsat význacným atributem (není nutné uchovávat celý stav) (promenná,hodnota): zachycuje zmenu stavu (uložíme původní hodnoty) A tabu seznam má fixní délku (tabu tenure) „staré" stavy ze seznamu vypadávají s pricházejímími novými stavy M AspiraCní kritérium = odtabuizování stavu do stavu lze přejít, i když je v tabu seznamu (napr. krok vede k celkove lepšímu stavu) JS> Tabu seznam je používán samostatne i v kombinaci s jinými metodami LS Hana Rudová, Omezující podmínky, 16. prosince 2019 194 Lokální prohledávání Algoritmus prohledávání s tabu seznamem Tabu seznam zabraňuje krátkému cyklení M Povoleny jsou pouze tahy mimo tabu seznam a tahy splnující aspiracní kritérium & Tabu seznam (TS) v kombinaci s metodou stoupání (HC): proceduře TSHC(MaxZmen) 6 := náhodné ohodnocení proměnných PocetZmen := 0 while E(6) > 0 a PocetZmen s nejlepší evaluací tak, že není v tabu seznamu a nebo spinuje aspiracní kriterium přidej (V,c> do tabu seznamu, kde c je soucasná hodnota V smaž nejstarší položku v tabu seznamu pri raď a do V PocetZmen := PocetZmen+1 return 6 Hana Rudová, Omezující podmínky, 16. prosince 2019 195 Lokální prohledávání Výber souseda: přehled -i* Metoda stoupání (HC) it soused s nejlepší evaluací vybrán & Tabu prohledávání (TS+HC) it soused s nejlepší evaluací vybrán (metoda stoupání) it sousedé z tabu seznamu nemohou být vybráni Hana Rudová, Omezující podmínky, 16. prosince 2019 196 Lokální prohledávání Výber souseda: p rehled -i* Metoda stoupání (HC) A soused s nejlepší evaluací vybrán & Tabu prohledávání (TS+HC) -i- soused s nejlepší evaluací vybrán (metoda stoupání) & sousedé z tabu seznamu nemohou být vybráni Minimální konflikt (MC) i* soused je omezen na náhodne vybranou konfliktní promennou výber její hodnoty s nejlepší evaluací & Náhodná procházka (RW) soused vybrán náhodne Hana Rudová, Omezující podmínky, 16. prosince 2019 196 Lokální prohledávání Výber souseda: přehled -i* Metoda stoupání (HC) A soused s nejlepší evaluací vybrán & Tabu prohledávání (TS+HC) -i- soused s nejlepší evaluací vybrán (metoda stoupání) & sousedé z tabu seznamu nemohou být vybráni Minimální konflikt (MC) i* soused je omezen na náhodne vybranou konfliktní promennou výber její hodnoty s nejlepší evaluací & Náhodná procházka (RW) soused vybrán náhodne Min. konflikt (metoda stoupání) s náhodnou procházkou MC+RW (HC+RW) J* s malou pravdepodobností: náhodný výber souseda -i- jinak: minimální konflikt (metoda stoupání) Hana Rudová, Omezující podmínky, 16. prosince 2019 196 Lokální prohledávání Simulované žíhání (simulated annealing) SA Myšlenka: simulace procesu ochlazování kovů na začátku pri vyšší teplote atomy více kmitají a pravděpodobnost zmeny krystalické mřížky je vyšší A postupným ochlazováním se atomy usazují co „nejlepší polohy" s nejmenší energií a pravdepodobnost zmenyje menší == na zacátku je tedy pravdepodobnost toho, že akceptujeme zhoršování rešení, vyšší Hana Rudová, Omezující podmínky, 16. prosince 2019 197 Lokální prohledávání Simulované žíhání (simulated annealing) SA Myšlenka: simulace procesu ochlazování kovů na začátku pri vyšší teplote atomy více kmitají a pravděpodobnost zmeny krystalické mřížky je vyšší A postupným ochlazováním se atomy usazují co „nejlepší polohy" s nejmenší energií a pravdepodobnost zmenyje menší == na zacátku je tedy pravdepodobnost toho, že akceptujeme zhoršování rešení, vyšší JS> Akceptování nového stavu vždy pri zlepšení J* pri zhoršení pouze za dané pravdepodobnosti, která klesá se snížením teploty & Cykly algoritmu -i- vnejší: simulace procesu ochlazování snižováním teploty T cím nižší bude teplota, tím nižší bude pravdepodobnost akceptování zhoršení -i- vnitrní: pocítáme, kolikrát jsme neakceptovali zhoršení (dán limit MaxIter) Hana Rudová, Omezující podmínky, 16. prosince 2019 197 Lokální prohledávání Metropolisovo kritérium Rozdíl mezi kvalitou nového (5) a existujícího (0) rešení M AE = E(5) - E(0) & E (chybovost) musí být minimalizováno Metropolisovo kritérium C lepší (nekdy p rípadne i stejne kvalitní) r ešení akceptováno: AE > 0 & horší rešení (AE > 0) akceptováno pokud U < e-AE/T & U náhodné císlo z intervalu (0,1) Hana Rudová, Omezující podmínky, 16. prosince 2019 198 Lokální prohledávání Metropolisovo kritérium Rozdíl mezi kvalitou nového (5) a existujícího (0) řešení M AE = E(5) - E(0) & E (chybovost) musí být minimalizováno Metropolisovo kritérium C lepší (nekdy případne i stejne kvalitní) řešení akceptováno: AE > 0 & horší rešení (AE > 0) akceptováno pokud U < e-AE/T & U náhodné císlo z inteřvalu (0,1) pomůcka: pořovnej g-10/10° vs. g-100/10° Hana Rudová, Omezující podmínky, 16. přosince 2019 198 Lokální přohledávání Metropolisovo kritérium Rozdíl mezi kvalitou nového (5) a existujícího (6) rešení M AE = E(5) - E(6) & E (chybovost) musí být minimalizováno Metropolisovo kritérium C lepší (nekdy p rípadne i stejne kvalitní) r ešení akceptováno: AE > 0 & horší rešení (AE > 0) akceptováno pokud U < e-AE/T & U náhodné císlo z intervalu (0,1) c pomůcka: porovnej e-10/100 vs. e-100/100 a e-10/100 vs. e-10/1 Hana Rudová, Omezující podmínky, 16. prosince 2019 198 Lokální prohledávání Algoritmus simulovaného žíhání procedúre SA( TInit, TEnd, MaxIter ) 6 := náhodné ohodnocení proměnných a := 6 for T := TInit to TEnd PocetChyb := 0 while PocetChyb < MaxIter vyber lokální zmenu z 6 do ô if E(ô) CSP nad disjunkcemi boolean promenných C SAT je NP-úplný Hana Rudová, Omezující podmínky, 16. prosince 2019 200 Lokální prohledávání Lokální prohledávání pro SAT problém & SAT problém: splnitelnost logické formule v konjunktivní normální forme -i- CNF = konjunkce klauzulí klauzule = disjunkce literálu (podmínka) -i- literál = atom nebo negace atomu A príklad: (A v B) A (-B v C) A (-C v -A) => CSP nad disjunkcemi boolean promenných C SAT je NP-úplný C- LS reší pomerne velké formule iť formulace LS je velice prirozená a jeho použití je velice populární -i- lokální zmena je překlápěním (flipping) hodnoty promenné -í* Algoritmus GSAT (greedy SAT) postupné p r eklápení promenných A evaluace udává, jaký je (vážený) pocet nesplnených klauzulí Hana Rudová, Omezující podmínky, 16. prosince 2019 200 Lokální prohledávání Algoritmus GSAT procedúre GSAT(A,MaxPokusu,MaxZmen) (A je CNF formule) for i := 1 to MaxPokusu do 6 := náhodné ohodnocení promenných for j := 1 to MaxZmen do if A je splnitelná pomocí 6 then return 6 V := promenná, jejíž zmena hodnoty nejvíce sníží pocet nesplnených klauzulí 6 := prirazení, které se liší od 6 zmenou hodnoty V return nejlepší 6 Hana Rudová, Omezující podmínky, 16. prosince 2019 201 Lokální prohledávání Algoritmus GSAT procedure GSAT(A,MaxPokusu,MaxZmen) (A je CNF formule) for i := 1 to MaxPokusu do 6 := náhodné ohodnocení promenných for j := 1 to MaxZmen do if A je splnitelná pomocí 6 then return 6 V := promenná, jejíž zmena hodnoty nejvíce sníží poCet nesplnených klauzulí 6 := prirazení, které se liší od 6 zmenou hodnoty V return nejlepší 6 M Príklad: {-C, -A v -B v C, -A v D v E, -B v-C} it iniciální přiřazení (všechny proměnné mají hodnotu 1) nesplňuje první a poslední klauzuli A zmena A,D,E Hana Rudová, Omezující podmínky, 16. prosince 2019 201 Lokální prohledávání Algoritmus GSAT procedure GSAT(A,MaxPokusu,MaxZmen) (A je CNF formule) for i := 1 to MaxPokusu do 6 := náhodné ohodnocení promenných for j := 1 to MaxZmen do if A je splnitelná pomocí 6 then return 6 V := promenná, jejíž zmena hodnoty nejvíce sníží pocet nesplnených klauzulí 6 := prirazení, které se liší od 6 zmenou hodnoty V return nejlepší 6 M Príklad: {-C, -A v -B v C, -A v D v E, -B v-C} it iniciální prirazení (všechny promenné mají hodnotu 1) nesplňuje první a poslední klauzuli A zmena A,D,E nemá vliv na pocet nesplnených klauzulí A zmena C na 0 Hana Rudová, Omezující podmínky, 16. prosince 2019 201 Lokální prohledávání Algoritmus GSAT procedúre GSAT(A,MaxPokusu,MaxZmen) (A je CNF formule) for i := 1 to MaxPokusu do 0 := náhodné ohodnocení promenných for j := 1 to MaxZmen do if A je splnitelná pomocí 0 then return 0 V := promenná, jejíž zmena hodnoty nejvíce sníží pocet nesplnených klauzulí 0 := prirazení, které se liší od 0 zmenou hodnoty V return nejlepší 0 M Príklad: {-C, -A v -B v C, -A v D v E, -B v -C} Jt iniciální prirazení (všechny promenné mají hodnotu 1) nesplnuje první a poslední klauzuli Jt zmena A,D,E nemá vliv na pocet nesplnených klauzulí J* zmena C na 0 splní první i poslední klauzuli ale nesplní -A v - B v C (evaluace=1) Jt zmena B Hana Rudová, Omezující podmínky, 16. prosince 2019 201 Lokální prohledávání Algoritmus GSAT procedúre GSAT(A,MaxPokusu,MaxZmen) (A je CNF formule) for i := 1 to MaxPokusu do 0 := náhodné ohodnocení promenných for j := 1 to MaxZmen do if A je splnitelná pomocí 0 then return 0 V := promenná, jejíž zmena hodnoty nejvíce sníží pocet nesplnených klauzulí 0 := prirazení, které se liší od 0 zmenou hodnoty V return nejlepší 0 M Příklad: { —C, —A v —B v C, -A v D v E, —B v —C} a iniciální přiřazení (všechny přomenné mají hodnotu 1) nesplňuje přvní a poslední klauzuli a zmena A,D,E nemá vliv na pocet nesplnených klauzulí j* zmena C na 0 splní přvní i poslední klauzuli ale nesplní —A v — B v C (evaluace=1) a zmena B má evaluaci 1 také, pokud ale zmeníme C a pak B, pak dostáváme evaluaci 0 Hana Rudová, Omezující podmínky, 16. přosince 2019 201 Lokální přohledávání Heuristiky pro GSAT GSAT lze kombinovat s ruznými heuristikami, které zvyšují jeho efektivitu obzvlášte pri rešení strukturovaných problému Použití náhodné procházky spolu s minimalizací konfliktů Vážení klauzulí nekteré klauzule zůstávají po radu iterací nesplnené, klauzule tedy mají mznou důležitost -i* splnení „težké" klauzule lze preferovat pridáním váhy m váhu muže systém odvodit na zacátku mají všechny klauzule stejnou váhu po každém pokusu zvyšujeme váhu u nesplnených klauzulí Hana Rudová, Omezující podmínky, 16. prosince 2019 202 Lokální prohledávání Heuristiky pro GSAT GSAT lze kombinovat s mznými heuristikami, které zvyšují jeho efektivitu obzvlášte p r i r ešení strukturovaných problémů Použití náhodné procházky spolu s minimalizací konfliktů Vážení klauzulí nekteré klauzule zustávají po radu iterací nesplnené, klauzule tedy mají mznou duležitost -i* splnení „težké" klauzule lze preferovat p r idáním váhy m váhu muže systém odvodit na zacátku mají všechny klauzule stejnou váhu po každém pokusu zvyšujeme váhu u nesplnených klauzulí M Pmmerováni reseni standardne každý pokus zacíná z náhodného rešení & spolecné cásti p r edchozích r ešení lze zachovat restartovací stav se vypocte ze dvou posledních výsledků bitovým srovnáním stejné bity zachovány, ostatní nastaveny náhodne Hana Rudová, Omezující podmínky, 16. prosince 2019 202 Lokální prohledávání Hybridní prohledávání -í* Príklady kombinace lokálního prohledávání -i- prohledává úplná nekonzistentní p r i razení a stromového prohledávání S> rozši r uje cástecné konzistentní p r i razení Hana Rudová, Omezující podmínky, 16. prosince 2019 203 Lokální prohledávání Hybridní prohlědávání -í* Príklady kombinace lokálního prohledávání -i- prohledává úplná nekonzistentní prirazení a stromového prohledávání S> rozširuje ccástecné konzistentní prirazení 1. Lokální prohledávání p rěd něbo po stromovém prohledávání napr: & pred: Hana Rudová, Omezující podmínky, 16. prosince 2019 203 Lokální prohledávání Hybridní prohledávání -í* Príklady kombinace lokálního prohledávání -i- prohledává úplná nekonzistentní p r i razení a stromového prohledávání S> rozši r uje cástecné konzistentní p r i razení 1. Lokální prohledávání pred nebo po stromovém prohledávání nap r : & p r ed: lokální prohledávání nám poskytne heuristiku na uspo rádání hodnot & po: Hana Rudová, Omezující podmínky, 16. prosince 2019 203 Lokální prohledávání Hybridní prohledávání -í* Príklady kombinace lokálního prohledávání -i- prohledává úplná nekonzistentní prirazení a stromového prohledávání S> rozširuje cástecné konzistentní prirazení 1. Lokální prohledávání pred nebo po stromovém prohledávání napr: & pred: lokální prohledávání nám poskytne heuristiku na usporádání hodnot & po: lokálním prohledáváním se snažíme lokálne vylepšit spocítané rešení (optimalizace) 2. Stromové prohledávání je doplneno lokálním prohledávání £ v listech prohledávacího stromu i v jeho uzlech -s* napr. lokální prohledávání pro výber hodnoty nebo vylepšení spocítaného rešení 3. Lokální prohledávání je doplneno stromovým prohledáváním M pro výber souseda z okolí a nebo pro prorezávání stavového prostoru Hana Rudová, Omezující podmínky, 16. prosince 2019 203 Lokální prohledávání Itěrativní dop rědné prohlědávání & Iterative Forward Search (IFS) £ Hybridní prohlědávání: konstruktivní něsystěmatický algoritmus A pracuje nad modělěm s pěvnými a měkkými omězujícími podmínkami i* pevné podmínky: musí být splneny mekké podmínky: reprezentují úcelové funkce, jejichž vážený soucet je minimalizován & Pracuje s konzistěntními p r i razěními Základní myšlenky (blízký dynamickému backtrackingu) zacíná s prázdným prirazením -i- vybere novou promennou k prirazení A pokud nalezne konflikt, zruší prirazení všech promenných v konfliktu s vybranou promennou S> výber hodnot pomocí konfliktní statistiky -i- výber promenných není pro algoritmus kritický, protože lze promenné priradit opakovane Hana Rudová, Omezující podmínky, 16. prosince 2019 204 Lokální prohledávání Iterative Forward Search Algorithm A (partial) feasible solution U Unassigned variables Hana Rudová, Omezující podmínky, 16. prosince 2G19 2G5 Lokální prohledávání Iterative Forward Search Algorithm A (partial) feasible solution U Unassigned variables Hana Rudová, Omezujici podminky, lG. prosince 2Gl9 2GG Lokálni prohledáváni Iterative Forward Search Algorithm A (partial) feasible solution Select a value □ n u □ Unassigned variables Hana Rudová, Omezující podmínky, 16. prosince 2G19 2G7 Lokální prohledávání Iterative Forward Search Algorithm A (partial) feasible solution Select a value U Some variables can be unassigned Unassigned variables Hana Rudová, Omezující podmínky, 16. prosince 2019 208 Lokální prohledávání IFS: algoritmus procedure IFS() iteration = 0; % CítaC iterací current = 0; % aktuální r ešení best = 0; % nejlepší rešení while canContinue (current, iteration) do iteration = iteration + 1; variable = selectVariable (current); value = selectValue (current, variable); unassign(current, conflictingVariables(current, variable, value)); assign(current, variable, value); if better (current, best) then best = current return best end IFS procedure conflictingVariables: kontroluje konzistenci tak, aby byla splnena omezení na p r i razených proměnných, a vrací konfliktní promenné unassign: odstraní p r i razení konfliktních proměnných Hana Rudová, Omezující podmínky, 16. prosince 2019 209 Lokální prohledávání IFS: konfliktní statistika Pr edpoklad: p r i výberu hodnoty a promenné A je nutné zrušit p r i razení hodnoty b promenné B, tj. [A = a — - B = b] V průbehu výpoctu si tedy lze pamatovat: A = a => 3 x - B = b, 4 x- B = c, 1 x- C = a, 120 x- D = a Hana Rudová, Omezující podmínky, 16. prosince 2019 210 Lokální prohledávání IFS: konfliktní statistika Predpoklad: pri výberu hodnoty a promenné A je nutné zrušit prirazení hodnoty b promenné B, tj. [A = a — - B = b] V prubehu výpoctu si tedy lze pamatovat: A = a => 3 x- B = b, 4 x- B = c, 1 x- C = a, 120 x- D = a Pri výberu hodnoty a vybíráme hodnoty s nejnižším poctem konfliktů vážených jejich frekvencí x konflikt zapocítáme pouze tehdy, pokud to vede k odstranení prirazení % p r. A = a => 3 x - B = b, 4 x - B = c, 1 x - C = a, 120 x - D = a A = b 1 x- B = a, 3 x- B = b, 2 x- C = a Máme prirazení B = c, C = a,D = b a vybíráme hodnotu pro A: necht' A/a vede ke konfliktu s B/c: Hana Rudová, Omezující podmínky, 16. prosince 2019 210 Lokální prohledávání IFS: konfliktní statistika Pr edpoklad: p r i výberu hodnoty a promenné A je nutné zrušit p r i razení hodnoty b promenné B, tj. [A = a — - B = b] V prubehu výpoctu si tedy lze pamatovat: A = a => 3 x - B = b, 4 x- B = c, 1 x- C = a, 120 x- D = a Při výberu hodnoty a vybíráme hodnoty s nejnižším poctem konfliktu vážených jejich frekvencí x konflikt zapocítáme pouze tehdy, pokud to vede k odstranení p r i razení % p r . A = a => 3 x - B = b, 4 x - B = c, 1 x - C = a, 120 x - D = a A = b => 1 x- B = a, 3 x- B = b, 2 x- C = a Máme p r i r azení B = c, C = a,D = b a vybíráme hodnotu pro A: necht' A/a vede ke konfliktu s B/c: vyhodnoceno jako 4 • není konflikt s C/a, tak se nezapocítává necht' A/b vede ke konfliktu s C/a: Hana Rudová, Omezující podmínky, 16. prosince 2019 210 Lokální prohledávání IFS: konfliktní statistika Predpoklad: pri výberu hodnoty a promenné A je nutné zrušit prirazení hodnoty b promenné B, tj. [A = a — - B = b] & V průbehu výpoctu si tedy lze pamatovat: A = a => 3 x- B = b, 4 x- B = c, 1 x- C = a, 120 x- D = a & P r i výběru hodnoty a vybíráme hodnoty s nejnižším poctem konfliktů vážených jejich frekvencí x konflikt zapocítáme pouze tehdy, pokud to vede k odstranení prirazení % pr. A = a => 3 x - B = b, 4 x - B = c, 1 x - C = a, 120 x - D = a A = b => 1 x- B = a, 3 x- B = b, 2 x- C = a Máme prirazení B = c, C = a,D = b a vybíráme hodnotu pro A: necht' A/a vede ke konfliktu s B/c: vyhodnoceno jako 4 • není konflikt s C/a, tak se nezapocítává necht' A/b vede ke konfliktu s C/a: vyhodnoceno jako 2 tj. vybereme hodnotu b pro promennou A Hana Rudová, Omezující podmínky, 16. prosince 2019 210 Lokální prohledávání Srovnání prohledavačích algoritmů Srovnání prohledávacích algoritmů 3* A — B znamená, že uzly prohledávacího stromu B jsou i v strome A Hana Rudová, Omezující podmínky, 16. prosince 2019 212 Srovnání prohledávacích algoritmu Srovnání prohledávacích algoritmů A — B znamená, že uzly prohledávacího stromu B jsou i v strome A Jt za predpokladu stejného usporádání hodnot i promenných Existuje srovnání i pro další algoritmy? Jaké algoritmy používat pro daný problém? Experimentální porovnání na mznýc sadách problémů (benchmarks) reálné problémy Jt nahodne vygenerované problémy it aplikacne založené náhodné problémy Kriteria CPU cas Jt velikost generovaného prohledávacího stromu it pocet volání procedury (napr. Consistent) Hana Rudová, Omezující podmínky, 16. prosince 2019 212 Srovnání prohledávacích algoritmu Experimenty na reálných problémech -í* Sady reálných problémů (benchmarks), na kterých lze algoritmy porovnávat CSPLib http://www.csplib.org J* knihovna problému pro omezující podmínky (otevrená pro nové problémy) kolem 130 problému z oblasti jako je rozvrhování, návrh a konfigurace, kombinatorika, bioinformatika, hry Jt popis problému, reference na jeho rešení, data, výsledky nekdy i rešení nebo podrobné studie ruzných možností rešení S> príklady dopravní signalizace v case na zadaných križovatkách, výrobní linka, problém batohu, sledování cíle v distribuovaných senzorických sítích, ... -i* Problém: výsledky lze stále velice obtížne zobecnit na další problémy pro jeden problém je lepší jeden algoritmus, pro další problém jiný algoritmus Hana Rudová, Omezující podmínky, 16. prosince 2019 213 Srovnání prohledávacích algoritmu Náhodné problémy -í* Algoritmy porovnávány na umelých, náhodne vygenerovaných problémech lze generovat problémy různé obtížnosti (fáze přechodu) -i- libovolný poCet datových instancí lze testovat, co se stane (nap r . s parametry algoritmu) p r i zmenách problému -á* Náhodné binární CSP (random binary CSP) -** parametry (n,m,pi,p2) -i* n pocet promenných S> m pocet hodnot v doméne promenných -i- pi pravdepodobnost, že existuje omezení na páru promenných -fc p2 pravdepodobnost, že omezení povoluje daný pár hodnot Hana Rudová, Omezující podmínky, 16. prosince 2019 214 Srovnání prohledávacích algoritmu Aplikačne založené náhodné problémy -í* Identifikace problémové domény A lze definovat parametrizovatelné problémy ± problémy mají pritom specifickou (z aplikace vycházející) strukturu A problémy lze náhodne generovat s různým nastavením parametrů -í* Výhody -i* zamerené na reálné problémy generování rady problému umožnuje statistické porovnání & Príklad: shop scheduling problémy 4» m strojů Jť n úloh, každá úloha se skládá z m operací provádených na odlišných strojích J* operace jedné úlohy nesmí být provádeny zároven podmínky na sekvencování operací úlohy (žádné, dáno poradí, stejné poradí pro všechny) J* minimalizace dokoncení poslední úlohy, minimalizace nejvetšího zpoždení úlohy, ... Hana Rudová, Omezující podmínky, 16. prosince 2019 215 Srovnání prohledávacích algoritmu Fáze p rechodu JS> Náhodný k-SAT přoblém fořmule pevné délky jsou geneřovány výbeřem m klauzulí i* každá klauzule délky k je unifořmne náhodne geneřována z množiny všech klauzulí Obtížnost nalezení r ešení -i- při malém poctu klauzulí Hana Rudová, Omezující podmínky, 16. přosince 2019 216 Sřovnání přohledávacích algořitmu Fáze p rechodu JS> Náhodný k-SAT problém formule pevné délky jsou generovány výberem m klauzulí i* každá klauzule délky k je uniformne náhodne generována z množiny všech klauzulí Obtížnost nalezení r ešení -i- pri malém poctu klauzulí je vetšina problému splnitelná a snadno rešitelná A pri velkém poctu klauzulí Hana Rudová, Omezující podmínky, 16. prosince 2019 216 Srovnání prohledávacích algoritmu Fáze přechodu JS> Náhodný k-SAT problém formule pevné délky jsou generovány výberem m klauzulí iť každá klauzule délky k je uniformne náhodne generována z množiny všech klauzulí Obtížnost nalezení řešení -i- p r i malém poctu klauzulí je vetšina problémů splnitelná a snadno rešitelná p r i velkém poctu klauzulí je detekována snadno nesplnitelnost vetšiny problémů -i- nalezení r ešení je nejobtížnejší za p r edpokladu, že cca 50% problému je splnitelných Hana Rudová, Omezující podmínky, 16. prosince 2019 216 Srovnání prohledávacích algoritmu Fázě p rěchodu Náhodný k-SAT problém formule pevné délky jsou generovány výberem m klauzulí iť každá klauzule délky k je uniformne náhodne generována z množiny všech klauzulí Obtížnost nalězění r ěšění -i- pri malém poctu klauzulí je vetšina problému splnitelná a snadno rešitelná A pri velkém poctu klauzulí je detekována snadno nesplnitelnost vetšiny problémů -i- nalezení rešení je nejobtížnejší za predpokladu, že cca 50% problému je splnitelných Fenomén fázě p rědchodu (phase transition) fáze prechodu z obtížne rešitelných problému na snadno rešitelné problému pocet volání Hana Rudová, Omezující podmínky, 16. prosince 2019 Využití fáze prechodu: lze generovat problémy mzné obtížnosti pomer poctu klauzulí vuci poctu promených 216 Srovnání prohledávacích algoritmu Optimalizace & soft omezení: modely Optimalizacní problém s podmínkami (COP) Problém splnování podmínek (X,D,C) & promenné X ={x1,...,xn} Jt domény D = {D1,... ,Dn} omezení C = {C1,Cn} Ci je definováno na Yi c X, Yi = {xí1 ,...,xik} Ci je podmnožina Di1 x ... x Dik Hana Rudová, Omezující podmínky, 16. prosince 2019 218 Optimalizace & soft omezení: modely Optimalizační problém s podmínkami (COP) Problém splňování podmínek (X,D, C) & proměnné X ={xi,...,xn} š* domény D = \D\,...,Dn} omezení C = {C\,Cn} Ci je definováno na Yi q X, Yi = {xh,...,xtk} Ci je podmnožina Dix x ... x Dik Objektivní funkče obj : Sol — W Základní definice: Optimalizační problém s podmínkami (constraint optimization problem) 3 nalezení rešení d pro (X,D, C) takové, že obj (d) je optimální optimální = maximální nebo minimální Hana Rudová, Omezující podmínky, 16. prosince 2019 218 Optimalizace & soft omezení: modely COP: operaCní výzkum -í* Pevné (hard, required) omezení Ch = {C,Cn} relace Ci je definováno na Yi q X, Yi = ,...,xk} it Ci je podmnožina Dix x ... x Dik JS> Mekké (soft) omezení Cs = {F\,...,Fl} funkce it Fj je definované nad Qj q X, Qj = {xjx,... ,xjt} Jt Fj je funkce do reálných císel Djx x ... x Djl — R+ & OptimalizaCní problém s podmínkami (COP): (X,D,Ch,Cs) Hana Rudová, Omezujici podminky, lG. prosince 2Gl9 219 Optimalizace & soft omezeni: modely COP: operaCní výzkum £ Pevné (hard, required) omezení Ch = {Ci,Cn} relace Ci je definováno na Yi q X, Yi = {xh ,...,Xik} & Ci je podmnožina Dii x ... x Dik JS> Mekké (soft) omezení Cs = {Fi,...,Fi} funkce a Fj je definované nad Qj q X, Qj = {xji,... ,xjt} ± Fj je funkce do reálných císel Dji x ... x Djl — R+ & OptimalizaCní problém s podmínkami (COP): (X,D,Ch,Cs) JS> Objektivní funkce zjednodušení na £ F(d) = ^ Fj(íi[Qj]) d[Qj]... projekce d na Qj j=i Hana Rudová, Omezující podmínky, 16. prosince 2019 219 Optimalizace & soft omezení: modely COP: operační výzkum -í* Pevné (hard, required) omezení Ch = {Cl ,Cn} relace Ci je definováno na Yi c x, Yi = {xíl,...,Xik} it Ci je podmnožina DiL x ... x Dik JS> Mekké (soft) omezení Cs = {Fl,...,Fi} funkce it Fj je definované nad Qj c x, Qj = {xj,... ,Xj} Jt Fj je funkce do reálných Čísel DjL x ... x Djl — -i* Optimalizační problém s podmínkami (COP): (X,D,Ch,Cs) JS> Objektivní funkče zjednodušení na x - i - - - F(d) = ^ Fj(d[Qj]) d[Qj]... projekce d na Qj j=i -i* Řešení COP: do spinující všechna omezení z Ch tak, že F(do) = maxdF(d) nebo F(do) = mmdF(d) Hana Rudová, Omezující podmínky, 16. prosince 2019 219 Optimalizace & soft omezení: modely Použití soft omezení -í* Problémy optimalizacní, p ríliš podmínené, špatne definované problémy, ... Fuzzy preference, pravdepodobnosti, ceny, váhy, úrovne požadavku,... & Příliš podmínené problémy: r ešení CSP neexistuje F1 Prednaska < Cvičeni @ 10 tj. pokud PrednaskaCviceni pak F1=10 F2 Prednaska in 4..5 @6 tj. pokud Prednaskae{4,5} pak F2=0 pokud Prednaska^{4,5} pak F2=6 F3 Cvičeni in 1..4 @4 Hana Rudová, Omezující podmínky, 16. prosince 2019 220 Optimalizace & soft omezení: modely Použití soft omezení -í* Problémy optimalizacní, príliš podmínené, špatne definované problémy, ... Fuzzy preference, pravdepodobnosti, ceny, váhy, úrovne požadavku,... & Príliš podmínené problémy: rešení CSP neexistuje F1 Prednaska < Cvičeni @ 10 tj. pokud PrednaskaCviceni pak F1=10 F2 Prednaska in 4..5 @6 tj. pokud Prednaskae{4,5} pak F2=0 pokud Prednaska^{4,5} pak F2=6 F3 Cvičeni in 1..4 @4 M Problémy s nejistotou Je 0.7 nezbytné, abych prišla do stredy. po..st 0.7, ct..ne 0 -i- Je nezbytné, abych neprišla príliš pozdeji než ve stredu. po..st 0.7, ct 0.5, pa 0.3, so..ne 0 Hana Rudová, Omezující podmínky, 16. prosince 2019 220 Optimalizace & soft omezení: modely Použití soft omezení -í* Přoblémy optimalizacní, příliš podmínené, špatne definované přoblémy, ... Fuzzy přefeřence, přavdepodobnosti, ceny, váhy, úřovne požadavku,... & Pr íliš podmínené problémy: řešení CSP neexistuje F1 Prednaska < Cviceni @ 10 tj. pokud PrednaskaCviceni pak F1=10 F2 Prednaska in 4..5 @6 tj. pokud Prednaskae{4,5} pak F2=0 pokud Prednaska^{4,5} pak F2=6 F3 Cviceni in 1..4 @4 M Problémy s nejistotou -** Je 0.7 nezbytné, abych přišla do středy. po..st 0.7, ct..ne 0 -i- Je nezbytné, abych nepřišla příliš pozdeji než ve středu. po..st 0.7, ct 0.5, pa 0.3, so..ne 0 & Špatne definované problémy: není zřejmé, kteřá omezení definují CSP Zitra = pekne @ 80% Zitra = zamraceno @ 30% Hana Rudová, Omezující podmínky, 16. přosince 2019 220 Optimalizace & soft omezení: modely P ř ístupy pro soft omezení JS> Vybrané prístupy a základní: MAX-CSP, omezení s váhami, fuzzy omezení zobecnující: omezení nad polookruhy (semiring-based) Hana Rudová, Omezující podmínky, 16. prosince 2019 221 Optimalizace & soft omezení: modely P r ístupy pro soft omezení Vybrané prístupy a základní: MAX-CSP, omezení s váhami, fuzzy omezení zobecnující: omezení nad polookruhy (semiring-based) Rozlišení systémů na základe: (v závorkách popis pro CSP) £• omezení - rozšírení klasického omezení (c = relace) a problém - rozšírení CSP (trojice (V,D, C)) s* úroven splnení - jak prirazení hodnot splnuje problém (Ac0) rešení - které prirazení je (optimálním) rešením (splnují všechna omezení) a úroven konzistence problému - jak je možné nejlépe splnit problém tj. jak (optimální) rešení splnuje problém (true) Hana Rudová, Omezující podmínky, 16. prosince 2019 221 Optimalizace & soft omezení: modely Omezení s váhami, MAX-CSP M Omezení s váhami: a Váha/cena spojená s každým omezením Jt Omezení - dvojice (c,w(c)) ± Problém - trojice (V,D,Cw) J» Úroven splnení - funkce na množine prirazení co(9) = X0^-cw(c) => souCet vah nesplnených omezení a Řešení - prirazení 0 s minimální co(0) s» Úroven konzistence - úroven splnení rešení Hana Rudová, Omezujici podminky, lG. prosince 2Gl9 222 Optimalizace & soft omezeni: modely Omězění s váhami, MAX-CSP M Omězění s váhami: a Váha/cena spojená s každým omezením a Omezení - dvojice (c,w(c)) Jt Problém - trojice (V,D,Cw) J» Úroven splnení - funkce na množine prirazení co(9) = Xe^-cw(c) => souCět vah něsplněných omězění it Rešení - prirazení O s minimální co(O) it Úroven konzistence - úroven splnení rešení MAX-CSP (maximální CSP) Váha je rovna jedné ^ maximalizacě poCtu splněných omězění Hana Rudová, Omezující podmínky, 16. prosince 2019 222 Optimalizace & soft omezení: modely Omezení s váhami: příklad Prednaska < Cvičeni @ 10 Prednaska in 4..5 @6 Cvičeni in 1..4 @ 4 C Pr i razení: a = {Prednaska/3, Cviceni/4} ii> Úroven splnení a odpovídá souctu vah nesplnených omezení p r i a, tj. 6 Hana Rudová, Omezující podmínky, 16. prosince 2019 223 Optimalizace & soft omezení: modely Omezení s váhami: príklad Prednaska < Cvičeni @ 10 Prednaska in 4..5 @6 Cvičeni in 1..4 @ 4 C Prirazení: a = {Prednaska/3, Cviceni/4} ii> Úroven splnení a odpovídá souctu vah nesplnených omezení pri a, tj. 6 ií> Rešení: 9 = {Prednaska/4, Cviceni/5} C- Úroven splnení 9: 4 -i* Úroven konzistence odpovídá úrovni splnení 9: 4 Hana Rudová, Omezující podmínky, 16. prosince 2019 223 Optimalizace & soft omezení: modely Fuzzy CSP JS> Fuzzy množiny: příslušnost přvku k množine zadána císlem z inteřvalu [0,1] Fuzzy omezení: fuzzy řelace ixc(d1,... ,dk) g (0,1) udává úroven preference Da = Db = {1, 2, 3} c1: A = 1 @(1,0.7) tj. pokud A=1, pak |c1=1 pokud A=1, pak |/c1=0.7 c2: min( abs(A - B) ), abs(A - B) = 0 => @1 tj. |c2=1 = 1 => @0.5 tj. |/c2=0.5 = 2 => @0.1 tj. |c2=0.1 c3: max(A + B) @(A + B)/10 tj. |c3=(A + B)/10 Hana Rudová, Omezující podmínky, 16. přosince 2019 224 Optimalizace & soft omezení: modely Fuzzy CSP JS> Fuzzy množiny: p ríslušnost prvku k množine zadána číslem z intervalu [0,1] M Fuzzy omezení: fuzzy relace ic(d1,... ,dk) e (0,1) udává úroven preference Da = Db = {1, 2, 3} cl: A = 1 @(1,0.7) tj. pokud A=l, pak |/c1=1 pokud A=1, pak |/c1=0.7 c2: min( abs(A - B) ), abs(A - B) = 0 => @1 tj. = 1 => @0.5 tj. = 2 => 00.1 tj. c3: max(A + B) @(A + B)/10 tj. |/cs=(A + B)/10 M Fuzzy CSP (X,D,Cf) % Cf je množina fuzzy omezení a X uspo rádaná množina promennýčh Hana Rudová, Omezující podmínky, 16. prosince 2019 224 Optimalizace & soft omezení: modely Ic2=1 Ic2=0.5 Ic2=0.1 Kombinacě a projěkcě omězění Projěkcě n-tic (di,...,di) lX p ríklad: (i, 2, B, 4, S) i(A;B,Cf,E)= (4, i, S) Hana Rudová, Omezující podmínky, 16. prosince 2G19 225 Optimalizace & soft omezení: modely Kombinace a projekce omezení M Projekce n-tic (du...,di) iYX p ríklad: (1, 2, 3,4, 5) i^f^ (4,1, 5) -í* Kombinace c = cX e cY, dom(c) = Z = X u Y c,cX,cY omezení nad Z,X, Y lAc(di,...,dk) = mm(LicX((di,...,dk) iX),VcY((di,... ,dk) A udává, jaká je úroven splnění všech p r i r azení Z vzhledem k cX a cY i> p r íklad (pokraCování): kombinace cl e c2 e c3 pro (1, 3) ^ciec2ecs(1, 3) = min(/ici((1)),/ic2((1, 3)),^cs((1, 3))) = min(1,0.1,0.4) = 0.1 Hana Rudová, Omezujici podminky, lG. prosince 2Gl9 225 Optimalizace & soft omezeni: modely Kombinace a projekce omezení M Projekce n-tic (du...,di) iYX p ríklad: (1, 2, 3,4, 5) i^)0'^ (4,1, 5) -í* Kombinace c = cX e cY, dom(c) = Z = X u Y c,cX,cY omezení nad Z,X, Y Hc(di,...,dk) = min(jUcX((di,...,dk) iX), VcY((di,..., dk) i^)) A udává, jaká je úroven splnení všech p r i r azení Z vzhledem k cX a cY p r íklad (pokraCování): kombinace cl e c2 e c3 pro (1, 3) /iciec2ec3(1, 3) = min(^ci((1)),^c2((1, 3)),^cs((1, 3))) = min(1,0.1,0.4) = 0.1 & Projekce c = cY §X, dom(c) = X,X ^ Y c,cX,cY omezení nad X,X, Y lAc(dx1,...,dxk) = max lcY(dy 1,...,dyi) ((dy 1,...,dyi)(EDy 1X---xDyi)A((dy 1,...,dyi)iX=(dx1,...,dxk)) A udává, jaká je úroven splnení všech p r i r azení X vzhledem k cY i> p ríklad (pokraCování): projekce c3 ^(B) na (1) lc3^(B)(1) = max(|c3(1,1),lc3 (2,1),|c3(3,1)) = max(0.2,0.3,0.4) = 0.4 Hana Rudová, Omezující podmínky, 16. prosince 2019 225 Optimalizace & soft omezení: modely Řešení fuzzy CSP & Úroven splnení prirazení (dl,...,dn) dána jako ix®C(di,...,dn) Hana Rudová, Omezující podmínky, 16. prosince 2G19 226 Optimalizace & soft omezení: modely Řešení fuzzy CSP JS* Úroven splnění přiřazení (dl,..., dn) dána jako ^® c(dl,dn) Řešení - přiřazení (d\,..., dn) takové, že max P®c(di ,...,dn) = Cp) (di,...,dn)eDiX---xDn Hana Rudová, Omezující podmínky, 16. prosince 2019 226 Optimalizace & soft omezení: modely Řešení fuzzy CSP iS* Úroven splnení p r i r azení (d1,dn) dána jako c(d1.....dn) Řešení - přiřazení (d\,..., dn) takové, že max ^c(d1 ,...,dn) = C(Pp) (d1,...,dn)eD1X---xDn *> p ríklad: 0 C = cl e c2 e c3 pro všechna (A, B) (3, 3) ... 0.6, (2, 2)... 0.4, (1,1)... 0.2 (2, 3) a (3, 2) ... 0.5, (2,1) a (1, 2)... 0.3 (1, 3) a (3,1)... 0.1 Hana Rudová, Omezujici podminky, lG. prosince 2Gl9 22G Optimalizace & soft omezeni: modely Řešení fuzzy CSP iS* Úroven splnení prirazení (d1,dn) dána jako c(d1.....dn) Řešení - přiřazení (d\,..., dn) takové, že max ^c(di ,...,dn) = C(Pp) (di,...,dn)GDiX---xDn *> príklade 0 C = cl e c2 e c3 pro všechna (A, B) (3, 3) ... 0.6, (2, 2)... 0.4, (1,1)... 0.2 (2, 3) a (3, 2) ... 0.5, (2,1) a (1, 2)... 0.3 (1, B) a (B, 1)... 0.1 Hana Rudová, Omezující podmínky, 16. prosince 2019 226 Optimalizace & soft omezení: modely Řešení fuzzy CSP iS* Úroven splnení prirazení (d1,dn) dána jako C(d1.....dn) Řešení - přiřazení (d\,..., dn) takové, že max ^c(di ,...,dn) = C(Pp) (di,...,dn)eDix---xDn a príklade 0 C = cl e c2 e c3 pro všechna (A, B) (3, 3) ... 0.6, (2, 2)... 0.4, (1,1)... 0.2 (2, 3) a (3, 2) ... 0.5, (2,1) a (1, 2)... 0.3 & Úroven nekonzistence 1 - C(Pp) & C(Pp) je úroven konzistence také jako projekce na prázdnou množinu promenných 0 C ^0 (i, B) a (B, i)... O.i Hana Rudová, Omezující podmínky, 16. prosince 2019 226 Optimalizace & soft omezení: modely P r íklad: rešení fuzzy CSP ü> Viz dríve: © C = c1 e c2 e c3 pro všechna (A, B) (B, B) ... G.6, (2,2)... G.4, (1,1)... G.2, (2, B) a (B, 2) ... G.5, (2,1) a (1,2)... G.B, (1, B) a (B, 1)... G.1 ■» e C = e C ^ Viz dríve: © C = cl e c2 e c3 pro všechna (A, B) (B, B) ... 0.6, (Z, Z)... 0.4, (i, i)... 0.Z, (Z, B) a (B, Z) ... 0.5, (Z, i) a (i, Z)... 0.B, (i, B) a (B, i)... O.i e C = e C ^ Semiring-based CSP M c-polookruh (A, +, x, 0,1) s> A množina polookruhu (množina preferencí) .*> 0 g A (úplné nesplnení), 1 g A (úplné splnení) s» + komutativní, idempotentní, asociativní operace s jednotkovým prvkem 0, s absorbujím prvkem 1 a x komutativní, asociativní operace, distributivní nad +, s jednotkovým prvkem 1, s absorbujím prvkem 0 & x se používá ke kombinaci preferencí nekolika omezení min u fuzzy CSP 0 minimum (nesplnení), 1 maximum (splnení) & Cástecné uspo rádání max min O l CSP s váhami N u { + 00} min + +0 O Hana Rudová, Omezující podmínky, 16. prosince 2G19 229 Optimalizace ä soft omezení: modely Instance omezení nad polookruhy P rístup A + x o 1 usporádání kombinace CSP {G,l} V A G l Fuzzy CSP (G, l> max min G l CSP s váhami N u { + 00} min + +0 G Duležité vlastnosti: striktní monotonie: Va, b,c g A : ((a < c) a (b = 0)) => ((a x b) < (c x b)) fakt, že neco lze lokálne zlepšit nelze globálne ignorovat (platí pro CSP s váhami) pr. a = 0.3, c = 0.4, b = 0.2 pro fuzzy CSP: není striktní monotonie Hana Rudová, Omezující podmínky, 16. prosince 2019 229 Optimalizace & soft omezení: modely Instance omezení nad polookruhy p r ístup A + X 0 1 uspo rádání kombinace CSP {0,1} V A 0 1 Fuzzy CSP (0,1) max min 0 1 CSP s váhami N u { + 00} min + +0 0 Duležité vlastnosti: střiktní monotonie: Va, b,c g A : ((a < c) a (b = 0)) => ((a x b) < (c x b)) fakt, že neco lze lokálne zlepšit nelze globálne ignorovat (platí pro CSP s váhami) p r . a = 0.3, c = 0.4, b = 0.2 pro fuzzy CSP: není striktní monotonie -i- idempotence: Va g A : a x a = a (platí pro fuzzy CSP) omezení, které je v problému obsaženo, muže být do nej p r idáno beze zmeny významu p r . x > 1@10,x > 1@10,x = 0@oo, p r i razení x = 0 má pro CSP s váhami úroven konz. 20 Hana Rudová, Omezující podmínky, 16. prosince 2019 229 Optimalizace & soft omezení: modely Instance omezení nad polookruhy P rístup A + x o 1 usporádání kombinace CSP {G,1} V A G 1 Fuzzy CSP (G,1> max min G 1 CSP s váhami N u { + 00} min + +0 G Duležité vlastnosti: striktní monotonie: Ma, b,c g A : ((a < c) A (b = 0)) => ((a x b) < (c x b)) fakt, že neco lze lokálne zlepšit nelze globálne ignořovat (platí přo CSP s váhami) př. a = 0.3, c = 0.4, b = 0.2 přo fuzzy CSP: není střiktní monotonie -i- idempotence: Ma g A : a x a = a (platí přo fuzzy CSP) omezení, kteřé je v přoblému obsaženo, muže být do nej přidáno beze zmeny významu př. x > 1@10,x > 1@10,x = 0@oo, přiřazení x = 0 má přo CSP s váhami úřoven konz. 20 -i- střiktní monotonie a idempotence x zářoven pouze přo dvouprvkové A, tj. jen přo CSP Hana Rudová, Omezující podmínky, 16. přosince 2019 229 Optimalizace ä soft omezení: modely Instance omezení nad polookruhy Přístup A + X 0 1 uspořádání kombinace CSP (0,1} V A 0 1 Fuzzy CSP (0,1> max min 0 1 CSP s váhami N U { + 00} min + +0 0 Duiežité vlastnosti: Jt striktní monotonie: Ma, b,c g A : ((a < c) A (b = 0)) => ((a x b) < (c x b)) fakt, že neco lze lokálne zlepšit nelze globálne ignorovat (platí pro CSP s váhami) pr. a = 0.3, c = 0.4, b = 0.2 pro fuzzy CSP: není striktní monotonie -i- idempotence: Ma g A : a x a = a (platí pro fuzzy CSP) omezení, které je v problému obsaženo, muže být do nej pridáno beze zmeny významu pr. x > 1@10,x > 1@10,x = 0@oo, prirazení x = 0 má pro CSP s váhami úroven konz. 20 -i- striktní monotonie a idempotence x zároven pouze pro dvouprvkové A, tj. jen pro CSP & Existující vztahy: CSP = fuzzy CSP na dvouprvkové A fuzzy CSP lze polynomiálne transformovat na CSP s váhami Hana Rudová, Omezující podmínky, 16. prosince 2019 229 Optimalizace & soft omezení: modely Definice omezení nad polookřuhy M Systém (S,D,V): S c-polookruh, D konecná doména, V uspo rádaná množina promenných JS> Soft omezení (def, con): rozsah omezení con c V, def : D|con| — A & Soft přoblém je (C, con) nad (S,D, V), kde con c V, C množina omezení Hana Rudová, Omezující podmínky, 16. prosince 2019 230 Optimalizace & soft omezení: modely Definice omezení nad polookruhy M Systém (S,D,V): S c-polookruh, D konecná doména, V uspo rádaná množina proměnných JS> Soft omezení (def, con): rozsah omezení con c V, def : Dlconl — A & Soft problém je (C, con) nad (S,D, V), kde con c V, C množina omezení £ Projekce n-tic t iX ^ príklad: (1, 2, 3,4, 5) i(A'B'E)D'E)= (4,1, 5) Hana Rudová, Omezujici podminky, 16. prosince 2G19 23G Optimalizace ä soft omezeni: modely Definice omezení nad polookruhy M Systém (S,D,V): S c-polookřuh, D konecná doména, V uspořádaná množina přomenných JS> Soft omezení (def, con): řozsah omezení con c V, def : Dlconl — A & Soft problém je (C, con) nad (S,D, V), kde con c V, C množina omezení Projekce n-tic t iX ^ p r íklad: (1, 2, 3,4, 5) i(A,B,E)°,E) = (4,1, 5) & Kombinace c = c1 0 c2 c1 = (def 1, con1) and c2 = (def2, con2) c = (def, con), con = con1 u con2, def (t) = def 1(t \cc™ ) x def2(i \c™ ) Hana Rudová, Omezující podmínky, 16. přosince 2019 230 Optimalizace & soft omezení: modely Definice omezení nad polookruhy M Systém (S,D,V): S c-polookruh, D konecná doména, V uspo rádaná množina proměnných JS> Soft omezení (def, con): rozsah omezení con q V, def : D|con| — A & Soft problém je (C, con) nad (S,D, V), kde con q V, C množina omezení Projekce n-tic t \X ^ príklad: (i, 2, 3,4, 5) i(A;B;E)D'E)= (4, i, 5) & Kombinace c = ci 0 c2 ci = (def i, coni) and c2 = (def2, con2) c = (def, con), con = coni u con2, def (t) = def i(t ^) x def2(t \CZ2) príklad: CSP s váhami: A = N u {oo}, + = min, x = +, +oo, 0 zadáno omezení ci na xy: aa 2, ab 4, ba 1, bb 0, zadáno omezení c2 na x: a 0, b 1 kombinace c = ci 0 c2: Hana Rudová, Omezující podmínky, 16. prosince 2019 230 Optimalizace & soft omezení: modely Definice omezení nad polookruhy M Systém (S,D,V): S c-polookruh, D konecná doména, V usporádaná množina proměnných JS> Soft omezení (def, con): rozsah omezení con c V, def : D|con| — A & Soft problém je (C, con) nad (S,D, V), kde con c V, C množina omezení Projekce n-tic t iX ^ p r íklad: (1, 2, 3,4, 5) i(A,B,E)°,E) = (4,1, 5) & Kombinace c = c1 0 c2 c1 = (def 1, con1) and c2 = (def2, con2) c = (def, con), con = con1 u con2, def (t) = def 1(t ^) x def2(t \CZ2) p r íklad: CSP s váhami: A = N u {oo}, + = min, x = +, +oo, 0 zadáno omezení c1 na xy: aa 2, ab 4, ba 1, bb 0, zadáno omezení c2 na x: a 0, b 1 kombinace c = c1 0 c2: aa 2(=2+0) ab 4(=4+0) ba 2(=1+1) bb1(=0+1) Hana Rudová, Omezující podmínky, 16. prosince 2019 230 Optimalizace & soft omezení: modely Řešení pro omezení nad polookruhy ■á> Projekce c UI c = (def, con), I c v c' = (def', con'), con' = con n I def '(t') = X def (t) tíh con _f ncon L p r íklad (pokraCování): ci na xy: aa 2, ab 4, ba 1, bb 0, projekce ci Hana Rudová, Omezující podmínky, 16. prosince 2019 231 Optimalizace & soft omezení: modely Řešení pro omezení nad polookruhy A Projekce c UI c = (def, con), I c v c' = (def', con'), con' = con n I def '(t') = X def (t) tíh con _f ncon L p r íklad (pokraCování): ci na xy: aa 2, ab 4, ba 1, bb 0, projekce ci a 2, b 0 Hana Rudová, Omezující podmínky, 16. prosince 2019 231 Optimalizace & soft omezení: modely Rešení pro omezení nad polookruhy Projekce c UI c = (def, con), I c v c' = (def, cori), con' = con n I def '(t') = X def (f) f/tl con _f ncon L a p r íklad (pokraCování): c1 na xy: aa 2, ab 4, ba 1, bb 0, projekce c1 U{x}: a 2, b 0 Úroven splnení problému P = (C, con) udává omezení Sol (P) = ((g)C) U con *> kombinace všech omezení v C a následovne projekce na promenné v con J» pro každé prirazení promenných v con vrací omezení Sol(P) jeho úroven splnení Jt p r íklad (pokraCování): c1 na xy: aa 2, ab 4, ba 1, bb 0 c2 na x: a 0, b 1 problém P1 = ({c1,c2}, {x,y}): Sol(P\) = (c1 ® c2) U{x,y>: Hana Rudová, Omezující podmínky, 16. prosince 2019 231 Optimalizace & soft omezení: modely Rešení přo omezení nad polookřuhy Přojekce c ^I c = (def, con), I c v c' = (def, con'), con' = con n I def '(t') = X def (t) t/ti con _f ncon L A příklad (pokřacování): c1 na xy: aa 2, ab 4, ba 1, bb 0, projekce c1 ^{xj: a 2, b 0 Úřoven splnení problému P = (C, con) udává omezení Sol (P) = ((g)C) ^ con kombinace všech omezení v C a následovne projekce na promenné v con J» pro každé p r i razení proměnných v con vrací omezení Sol(P) jeho úroven splnení -fc příklad (pokřacování): c1 na xy: aa 2, ab 4, ba 1, bb 0 c2 na x: a 0, b 1 problém P1 = ({c1, c2}, {x,y}): Sol(P1) = 0 c2) ^{x,y}: aa 2, ab 4, ba 2, bb 1 Hana Rudová, Omezující podmínky, 16. prosince 2019 231 Optimalizace & soft omezení: modely Rešení pro omezení nad polookruhy Projekce c UI c = (def, con), I c v c' = (def, con'), con' = con n I def '(t') = £ def (t) f/tl con =f' ncon L &> príklad (pokracování): c1 na xy: aa 2, ab 4, ba 1, bb 0, projekce c1 U{X}: a 2, b 0 Úroven splnení problému P = (C, con) udává omezení Sol (P) = ((g)C) U con *> kombinace všech omezení v C a následovne projekce na promenné v con J» pro každé p r i razení proměnných v con vrací omezení Sol(P) jeho úroven splnení Jt príklad (pokracování): c1 na xy: aa 2, ab 4, ba 1, bb 0 c2 na x: a 0, b 1 problém P1 = ({c1, c2}, {x,y}): Sol(P1) = (c1 <8> c2) U{Xy}: aa 2, ab 4, ba 2, bb 1 problém P2 = ({c1,c2}, {x}): Sol(P2) = (c1 ® c2) UM: Hana Rudová, Omezujici podminky, l6. prosince 2Gl9 231 Optimalizace & soft omezeni: modely Rešení pro omezení nad polookruhy Projekce c UI c = (def, con), I c v c' = (def, con'), con' = con n I def '(t') = X def (t) f/tl con _f ncon L A p r íklad (pokracování): c1 na xy: aa 2, ab 4, ba 1, bb 0, přojekce c1 U{x}: a 2, b 0 Úroven splnení přoblému P = (C, con) udává omezení Sol (P) = ((g)C) U con ^ kombinace všech omezení v C a následovne přojekce na přomenné v con J» přo každé přiřazení přomenných v con vřací omezení Sol(P) jeho úřoven splnení -fc p r íklad (pokracování): c1 na xy: aa 2, ab 4, ba 1, bb 0 c2 na x: a 0, b 1 přoblém P1 = ({c1, c2}, {x,y}): Sol(P1) = (c1 0 c2) U{X,y}: aa 2, ab 4, ba 2, bb 1 přoblém P2 = ({c1, c2}, {x}): Sol(P2) = (c1 0 c2) U{X}: a 2, b 1 Hana Rudová, Omezující podmínky, 16. přosince 2019 231 Optimalizace & soft omezení: modely Rešení pro omezení nad polookruhy A Projekce c UI c = (def, con), I q V c' = (def, con'), con' = con n I def '(t') = X def (t) f/tl con =f' ncon L príklad (pokracování): ci na xy: aa 2, ab 4, ba 1, bb 0, projekce ci U{x}: a 2, b 0 & Úroven splnení problému P = (C, con) udává omezení Sol (P) = ((g)C) U con kombinace všech omezení v C a následovne projekce na proměnné v con J» pro každé p r i razení proměnných v con vrací omezení Sol(P) jeho úroven splnení -fc príklad (pokracování): ci na xy: aa 2, ab 4, ba 1, bb 0 c2 na x: a 0, b 1 problém Pi = ({ci, c2}, {x,y}): Sol(Pi) = (ci 0 c2) U{xy}: aa 2, ab 4, ba 2, bb 1 problém P2 = ({ci, c2}, {x}): Sol(P2) = (ci 0 c2) U{x}: a 2, b 1 JS> Úroven konzistence: blevel(P) = Sol(P) Uq -i- príklad (pokracování): blevel(Pi) = blevel(P2) = i Hana Rudová, Omezující podmínky, 16. prosince 2019 231 Optimalizace & soft omezení: modely Optimalizace & soft omezení: algoritmy Soft propagace JS> Klasická propagace: eliminace nekonzistentních hodnot z domén proměnných JS> Soft propagace: propagace preferencí (cen) nad k-ticemi hodnot proměnných S> snaha o získání realistictejších preferencí it výpocet realistictejších príspevku pro cenovou funkci Hana Rudová, Omezující podmínky, 16. prosince 2019 233 Optimalizace ä soft omezení: algoritmy Soft propagace JS> Klasická propagace: eliminace nekonzistentních hodnot z domén proměnných JS> Soft propagace: propagace preferencí (cen) nad k-ticemi hodnot promenných S> snaha o získání realistiaejších preferencí -i- výpocet realistictejších p ríspevků pro cenovou funkci JS> C je soft k-konzistentní, jestliže pro všechny podmnožiny (k - 1) promenných W a libovolnou další promennou y platí ®{ci | Ci g C a cont c w} = | Ci g C a cont c (W u {y})}) A cont oznacuje promenné v omezení ct uvažování (def) pouze omezení ve W stejné jako: uvažování (def) omezení ve W a omezení spojující y s W, s následnou projekcí na W Hana Rudová, Omezující podmínky, 16. prosince 2019 233 Optimaiizace ä soft omezení: aigoritmy Soft hranová konzistence (SAC) -* k = 2, W = {x} : cx = (®{cy,cxy,cx}) ^{x} Hana Rudová, Omezující podmínky, 16. prosince 2019 234 Optimalizace & soft omezení: algoritmy Soft hranová konzistence (SAC) B k = 2,W = {x} : cx = (®{cy,cxy,cx}) U{x} & CSP: libovolná hodnota v doméne x může být rozšírena o hodnotu v doméne y tak, že je cxy splneno J> hodnoty a v doméne x, které nelze rozšírit na y, mají def ((a)) = 0 Hana Rudová, Omezující podmínky, 16. prosince 2019 234 Optimalizace & soft omezení: algoritmy Soft hranová konzistence (SAC) k = 2,W = {X} : CX = (®{Cy,CXy,CX}) } CSP: libovolná hodnota v doméne x muže být rozšírena o hodnotu v doméne y tak, že je cxy splneno J* hodnoty a v doméne x, které nelze rozšírit na y, mají def ((a)) = 0 Fuzzy CSP: úroven preference všech hodnot x v cx je stejná jako úroven preference daná (®{Cy,Cxy,Cx}) ^{x} Hana Rudová, Omezující podmínky, 16. prosince 2019 234 Optimalizace &soft omezení: algoritmy Soft hranová konzistence (SAC) B k = 2, W = {x} : cx = (®{cy,cxy,cx}) ^{x} JS> CSP: libovolná hodnota v doméne x muže být rozšírena o hodnotu v doméne y tak, že je cxy splneno J> hodnoty a v doméne x, které nelze rozšírit na y, mají def ((a)) = 0 Fuzzy CSP: úroven preference všech hodnot x v cx je stejná jako úroven preference daná (®{cy,cxy,cx}) ^{x} C Príklad na fuzzy CSP: A = (0,1), + = max, x = min, 0, 1 &> x,y g {a, b} A cx : a... 0.9, b... 0.1, cy : a... 0.9, b... 0.5, cxy : aa... 0.8, ab... 0.2, ba... 0, bb... 0 A není SAC: cx dává 0.9 na x = a, ale (®{cy,cxy,cx}) ^{x} dává 0.8 na x = a ®{cy,cxy,cx} dává na (a,a) : ®{cy,cxy,cx} dává na (a,b) : projekce (®{cy,cxy,cx}) ^{x} dává na (a) : Hana Rudová, Omezující podmínky, 16. prosince 2019 234 Optimalizace & soft omezení: algoritmy Soft hranová konzistence (SAC) & k = 2,W = {x} : cx = (0{cy,cxy,cx}) U{x} JS> CSP: libovolná hodnota v doméne x může být řozšířena o hodnotu v doméne y tak, že je cxy splneno hodnoty a v doméne x, kteřé nelze řozšířit na y, mají def ((a)) = 0 Fuzzy CSP: úřoven přefeřence všech hodnot x v cx je stejná jako úřoven přefeřence daná (0{cy,cxy,cx}) U{x} C Příklad na fuzzy CSP: A = (0,1), + = max, x = min, 0, 1 &> x,y g {a, b} A cx : a... 0.9, b... 0.1, cy : a... 0.9, b... 0.5, cxy : aa... 0.8, ab... 0.2, ba... 0, bb... 0 A není SAC: cx dává 0.9 na x = a, ale (0{cy,cxy,cx}) U{x} dává 0.8 na x = a 0{cy,cxy,cx} dává na (a, a) : min(0.9,0.8,0.9) = 0.8 0{cy, cxy, cx} dává na (a, b) : min(0.5,0.2,0.9) = 0.2 přojekce (0{cy,cxy,cx}) U{x} dává na (a) : max(0.8,0.2) = 0.8 Hana Rudová, Omezující podmínky, 16. přosince 2019 234 Optimalizace & soft omezení: algořitmy Výpočet SAC & Základní algoritmus pro výpočet SAC: a pro každé x a y zmenit definici cx tak, aby korespondovala s (®{cy,cxy,cx}) ^{x} & iterace až do dosažení stability Hana Rudová, Omezující podmínky, 16. prosince 2019 235 Optimalizace & soft omezení: algoritmy Výpocet SAC & Základní algoritmus pro výpocet SAC: Jt pro každé x a y změnit definici cx tak, aby korespondovala s (0{cy,cxy,cx}) ^{x} & iterace až do dosažení stability ii> x idempotentní (fuzzy CSP) -i- zajištena ekvivalence, tj. puvodní i nový (po dosažení SAC) problém mají stejné rešení -** zajišteno ukoncení algoritmu Hana Rudová, Omezující podmínky, 16. prosince 2019 235 Optimalizace & soft omezení: algoritmy VýpoCet SAC & Základní algoritmus pro výpoCet SAC: Jt pro každé x a y zmenit definici cx tak, aby korespondovala s (®{cy,cxy,cx}) U{x} Jt iterace až do dosažení stability ii> x idempotentní (fuzzy CSP) -i- zajištena ekvivalence, tj. puvodní i nový (po dosažení SAC) problém mají stejné rešení -** zajišteno ukoncení algoritmu & x není idempotentní (CSP s váhami) Jt pro každé u,v g A existuje w g A taková, že v x w = u w se nazývá rozdíl mezi u a v, maximální rozdíl se znací u - v nutno požadovat novou vlastnost pro systém (a rozšírit projekci a kombinaci) Jt s novou vlastností zajištena ekvivalence, pri striktní monotonii zajišteno i ukoncení tato vlastnost platí pro CSP s váhami Hana Rudová, Omezující podmínky, 16. prosince 2019 235 Optimalizace & soft omezení: algoritmy Rešení COP Cíl: nalezení úplného r ešení s optimální hodnotou cenové funkce Prohledávání a lokální prohledávání p rímé zahrnutí optimalizacního kriteria do evaluace (hodnota obj. funkce) a stromové prohledávání metoda vetví a mezí + její rozšír ení Hana Rudová, Omezujici podminky, l6. prosince 2Gl9 236 Optimalizace & soft omezeni: algoritmy Rešení COP JS> Cíl: nalezení úplného řešení s optimální hodnotou cenové funkce -i* Prohledávání a lokální přohledávání přímé zahřnutí optimalizacního křiteřia do evaluace (hodnota obj. funkce) a střomové přohledávání metoda vetví a mezí + její řozšíření CSP s omezeními: minimalizace souctu vah omezení minXcGCc(d) velmi castá optimalizacní úloha A váha (cena) omezení: 0 = úplné splnení, (0, o) cástecné nesplnení, o úplné nesplnení A hodnota cenové funkce: cena p r i razení/rešení & maximalizace je duální přoblém Jť algořitmy přo fuzzy CSP na podobných přincipech Hana Rudová, Omezující podmínky, 16. přosince 2019 236 Optimalizace & soft omezení: algořitmy COP jako série CSP problémů Triviální metoda r ešení Rešení COP jako CSP a nalezení iniciální hodnoty cenové funkce W1 Opakované r ešení CSP (i = 1...) s p r idáním omezení XcGCc(d) < Wi Když r ešení nového CSP neexistuje, pak poslední Wi dává optimum Hana Rudová, Omezující podmínky, 16. prosince 2019 237 Optimalizace & soft omezení: algoritmy COP jako série CSP problémů Triviální metoda r ešení Rešení COP jako CSP a nalezení iniciální hodnoty cenové funkce W1 Opakované r ešení CSP (i = 1...) s p r idáním omezení XC^CC(d) < Wi Když r ešení nového CSP neexistuje, pak poslední Wi dává optimum Výpocetne zbytecne nárocné Efektivní rozšír ení obtížné Hana Rudová, Omezující podmínky, 16. prosince 2019 237 Optimalizace & soft omezení: algoritmy Metoda větví a mezí (branch&bound) BB ií> Prohledávání stromu do hloubky A prirazené=minulé promenné P, neprirazené=budoucí promenné F S» omezení pouze na minulých promenných CP, omezení na minulých i budoucích promenných CPF, omezení pouze na budoucích promenných CF Hana Rudová, Omezující podmínky, 16. prosince 2019 238 Optimalizace & soft omezení: algoritmy Mětoda větví a mězí (branch&bound) BB Prohledávání stromu do hloubky A p r i razené=minulé promenné P, nep r i razené=budoucí promenné F S» omezení pouze na minulých promenných CP, omezení na minulých i budoucích promenných CPF, omezení pouze na budoucích promenných CF Výpocet mezí a horní mez UB: cena nejlepšího dosud nalezeného r ešení a dolní mez LB: dolní odhad minimální ceny pro soucasné cástecné p r i razení Hana Rudová, Omezující podmínky, 16. prosince 2019 238 Optimalizace ä soft omezení: algoritmy Metoda větví a mezí (branch&bound) BB -í* Prohledávání stromu do hloubky A p r i razené=minulé proměnné P, nep r i razené=budoucí proměnné F S* omezení pouze na minulých proměnných CP, omezení na minulých i budoucích proměnných CPF, omezení pouze na budoucích promenných CF & Výpocet mezí a horní mez UB: cena nejlepšího dosud nalezeného r ešení a dolní mez LB: dolní odhad minimální ceny pro soucasné cástecné p r i razení JS> Ořezávání: LB > UB (cíl: minimalizace) iľ víme, že rozšír ení soucasného cástecného r ešení už bude mít horší (vyšší) cenu LB než dosud nalezené r ešení UB lze proto o r ezat tuto cást prohledávacího prostoru -i- p r íklad: pokud nalezneme r ešení s cenou 10 od rízneme všechny vetve, které mají cenu vyšší než 9 Hana Rudová, Omezující podmínky, 16. prosince 2019 238 Optimalizace & soft omezení: algoritmy Metoda vetví a mezí: výber hodnoty & Algorimus metody vetví a mezí j* generický algoritmus rozši r itelnýjako implementace backtrackingu ä- možná rozšír ení zejména o: pohled dop r edu, výpocet dolní meze LB(d) vrací dolní odhad ceny pro každé cástecné p r i razení d *> použití p r i rozšír ení o jednu promennou LB(ai-1,a) Hana Rudová, Omezující podmínky, 16. prosince 2019 239 Optimalizace & soft omezení: algoritmy Metoda vetví a mezí: výber hodnoty & Algorimus metody větví a mezí it generický algoritmus rozši r itelnýjako implementace backtrackingu it možná rozšír ení zejména o: pohled dop r edu, výpocet dolní meze LB(d) vrací dolní odhad ceny pro každé cástecné p r i razení d it použití p r i rozšír ení o jednu promennou LB(di-i,a) Optimistický výběr hodnoty procedure Select-Value-BB while D[ is not empty vyber a smaž libovolný a g D- takový, že min LB(di-i,a) if Consistent(ííi-l,xi = a) a LB(ai-l,a) < UB return a (jinak orezej a) return null (konzistentní hodnota neexistuje) Hana Rudová, Omezující podmínky, 16. prosince 2019 239 Optimalizace & soft omezení: algoritmy Algoritmus metody větví a mezí procedure Branch-Bound((X,D, C), UB,f) rozdíly od backtrackingu i := 1, D- := Di (inicializace CítaCe proměnných, kopírování domény) Reseni := null (rešení dosud nenalezeno) repeat while 1 < i < n prirazení xi := Select-Value-BB if xi is null (žádná hodnota nebyla vrácena) i := i - 1 (zpetná fáze) else i := i + 1 (dopredná fáze) D- := Di if i = 0 if Reseni is not null return UB, Reseni else return ,,nekonzistentní'' else Reseni := x1,...,xn (uložení hodnot dosud nejlepšího prirazení) spoCítej cenu souCasného prirazení W = XceCc(x), UB:=min{W, UB} i := 1, nastav na Dk pro k = 1 ...n until true end Branch-Bound Hana Rudová, Omezující podmínky, 16. prosince 2019 240 Optimalizace & soft omezení: algoritmy min £CECC(d) Dolní mez -á* Kvalita dolní meze: velmi důležitá pro efektivitu BB -í* Dolní mez lze ovlivnit pomocí a ceny minulých promenných vzdálenost (soucet vah omezení na minulých promenných) & lokální ceny budoucích promenných vzhledem k minulým promenným NC* & lokální ceny budoucích promenných AC* a globální ceny budoucích promenných prohledávání ruská panenka Hana Rudová, Omezující podmínky, 16. prosince 2019 241 Optimalizace & soft omezení: algoritmy NC* algoritmus Projekce ceny hodnot (j, *) pro každou proměnnou j do dolní hranice LB ceny r ešení j j 01) 02) 0,3) 2 o 5 s LB=6 LB=8 Hodnotu a promenné j znacíme (j,a) -i* obrázek: promenná j má nejprve t r i hodnoty (j, 2), (j, 3), jejichž cena je 2,4 a 5 Všechny hodnoty promenné j znacíme (j, *) Hana Rudová, Omezující podmínky, 16. prosince 2019 242 Optimalizace & soft omezení: algoritmy NC* algoritmus Projekce ceny hodnot (j, *) pro každou promennou j do dolní hranice LB ceny r ešení Smazání hodnot (j, a) p revyšující (nebo rovné) horní hranici UB (ji) 0,2) 0,3) j 2 5 LB=6 j o s LB=8 Hodnotu a promenné j znacíme (j,a) LB=8 UB=10 LB=8 UB=10 -i- obrázek: promenná j má nejprve t r i hodnoty (j, 2), (j, 3), jejichž cena je 2,4 a 5 Všechny hodnoty promenné j znacíme (j, *) Hana Rudová, Omezující podmínky, 16. prosince 2019 242 Optimalizace & soft omezení: algoritmy AC* algoritmus (A) Projekce ceny hrany (i,a)(j,b) do ceny hodnoty (i, a), pokud je tato cena zahrnuta ve všech hranách (i,a)(j, *) i j i j UB=11 UB=11 (i, 2)(j, 1) — (i, 2)(j, 2) — (i, 2) (i, 2)(j, 3) — Hana Rudová, Omezující podmínky, 16. prosince 2019 243 Optimalizace & soft omezení: algoritmy AC* algoritmus (A) Projekce ceny hrany (i,a)(j,b) do ceny hodnoty (i, a), pokud je tato cena zahrnuta ve všech hranách (i,a)(j, *) j LB=6 UB=11 (i, 2)(j, i) (i, 2)(j, 2) (i, 2)(j, 3) NC* algoritmus (B) projekce ceny hodnot pro každou promennou (C) smazání hodnot s cenou > UB ' j i L LB=6 UB=11 LB=9 UB=11 (i,2) LB=9 UB=11 Hana Rudová, Omezující podmínky, 16. prosince 2019 243 Optimalizace & soft omezení: algoritmy Prohledávání ruská panenka (Russion doll search) n po sobe jdoucích BB prohledávání, každé má navíc jednu proměnnou , , - statické uspo rádání promenných A první podproblém obsahuje pouze n-tou promennou í-tý podproblém obsahuje posledních i promenných ((n - i + 1) ...n) 3» podproblémy r ešeny pomocí BB s využitím LB a UB z p r edchozích behu Hana Rudová, Omezujici podminky, l6. prosince 2Gl9 244 Optimalizace & soft omezeni: algoritmy Prohledávání ruská panenka (Russion doll search) & n po sobe jdoucích BB prohledávání, každé má navíc jednu proměnnou , , „ statické usporádání promenných Jt první podproblém obsahuje pouze n-tou promennou í-tý podproblém obsahuje posledních i promenných ((n - i + 1) ...n) 3» podproblémy rešeny pomocí BB s využitím LB a UB z predchozích behu JS> Pri rešení podproblému (n - i + 1) Jt problém zahrnuje promenné xi,xi+1, ...,xn J» mejme cástecné prirazení pro tento podproblém (ai,ai+1,ai+j) s neprirazenými promennými xi+j+1,. ..,xn Hana Rudová, Omezující podmínky, 16. prosince 2019 244 Optimalizace & soft omezení: algoritmy Prohledávání ruská panenka (Russion doll search) & n po sobe jdoucích BB prohledávání, každé má navíc jednu přomennou , , „ statické uspořádání přomenných přvni podpřoblém obsahuje pouze n-tou přomennou í-tý podpřoblém obsahuje posledních i přomenných ((n - i + 1) ...n) 3» podpřoblémy řešeny pomocí BB s využitím LB a UB z předchozích behu JS> Při rešení podproblému (n - i + 1) -fc přoblém zahřnuje přomenné xi,xi+1, ...,xn J» mejme cástecné přiřazení přo tento podpřoblém (ai,ai+1,ai+j) s nepřiřazenými přomennými xi+j+1,. ..,xn -i- do dolní meze lze zahřnout optimální cenu (n - i - j) podpřoblému optim(xi+j+1,xn) c LB((ai,ai+1,...,ai+j)) = dist((ai,ai+1,...,ai+j)) + optim(xi+j+1,...,xn) dist ((ai, ai+1,ai+j)) vzdálenost (soucet vah omezení na minulých přomenných) -fc optimální řešení přechozích přoblémů použita přo: výbeř hodnoty, přo zlepšení iniciální hořní meze Hana Rudová, Omezující podmínky, 16. přosince 2019 244 Optimalizace & soft omezení: algoritmy Prohledávání ruská panenka (Russion doll search) & n po sobe jdoucích BB prohledávání, každé má navíc jednu promennou , , „ statické uspo rádání promenných první podproblém obsahuje pouze n-tou promennou i-tý podproblém obsahuje posledních i promenných ((n - i + 1) ...n) & podproblémy r ešeny pomocí BB s využitím LB a UB z p r edchozích behu -í* Pr i rešení podproblému (n - i + 1) -fc problém zahrnuje promenné xi,xi+1, ...,xn J» mejme cástecné p r i razení pro tento podproblém (ai,ai+1,ai+j) s nep r i razenými promennými xi+j+1,. ..,xn -i* do dolní meze lze zahrnout optimální cenu (n - i - j) podproblému optim(xi+j+1,xn) c LB((ai,ai+1,...,ai+j)) = dist((ai,ai+1,...,ai+j)) + optim(xi+j+1,...,xn) dist ((ai, ai+1,ai+j)) vzdálenost (soucet vah omezení na minulých promenných) -fc optimální r ešení p r echozích problémů použita pro: výber hodnoty, pro zlepšení iniciální horní meze -í* Vno r ená prohledávání se vyplatí vzhledem k pro r ezání stavového prostoru Hana Rudová, Omezující podmínky, 16. prosince 2019 244 Optimalizace & soft omezení: algoritmy Opakování Vzorové písemné práce C- 2 vzorové písemné práce na webu p r edmetu & Struktura písemné práce: 7 otázek 1. 1 p r ehledová otázka 2. otázky na propagaci a konzistencní algoritmy 3. otázky na stromové prohledávání 4. otázky na lokální prohledávání a optimalizace 5. 1 otázka na rešení problému v OPL Hana Rudová, Omezující podmínky, 16. prosince 2019 246 Opakování Vzorové písemné práce C- 2 vzorové písemné práce na webu p r edmetu & Struktura písemné práce: 7 otázek 1. 1 p r ehledová otázka 2. otázky na propagaci a konzistencní algoritmy 3. otázky na stromové prohledávání 4. otázky na lokální prohledávání a optimalizace 5. 1 otázka na rešení problému v OPL M Hlavní typy otázek pro 2,3,4 J* p r íklady k vypocítání (jako vzorové p r íklady - nekdy kratší verze) pojem (a p r íklad) J* kód algoritmu (a p r íklad) 3 porovnání pojmu/algoritmů (a p r íklady) Hana Rudová, Omezující podmínky, 16. prosince 2019 246 Opakování Príklady s řešeními na webu I. Príklady 1. binarizace JS* AC-1 vs. AC-3 konzistence mezí vs. hranová konzistence Príklady 2. £ strom stavového prostoru: backtracking vs. kontrola dop r edu vs. pohled dop r edu Príklady 3. Ä omezení s váhami Príklady 4. & p rehled konzistencních algoritmů & algoritmus AC-4 algoritmus DAC Hana Rudová, Omezující podmínky, 16. prosince 2019 247 Opakování P ríklady s rešeními na webu II. P r íklady 5. C- strom stavového prostoru: backtracking vs. kontrola dopredu M pohled zpet: Gaschniguv skok zpet P r íklady 6. J5> prehled prohledávacích algoritmu problém rozvrhování výuky v OPL P r íklady 7. & binarizace & podpora hodnoty JS> konzistence mezí vs. hranová konzistence & algoritmus DAC, nalezení rešení bez navracení Hana Rudová, Omezující podmínky, 16. prosince 2019 248 Opakování P ríklady s rešeními na webu III. P r íklady 8. C- strom stavového prostoru: backtracking vs. kontrola dop r edu vs. pohled dop r edu & problém plánování projektu v OPL P r íklady 9. JS* stromový CSP, nalezení rešení bez navracení algoritmus PC-2 & problém rozvrhování výuky jedné místnosti v OPL & strom stavového prostoru: kontrola dop r edu vs. pohled dop redu bez iniciální konzistence M rozvrhování úkolu pro zamestnance na smeny Hana Rudová, Omezující podmínky, 16. prosince 2019 249 Opakování P r íklady s rešeními na webu IV. P r íklady 10 C- nalezení podpory JS* algoritmus DAC a nalezení r ešení bez navracení & problém p r i razení pobocek k obchodum v OPL M BBS-DBS, DDS C- rozvrhování na smeny Hana Rudová, Omezující podmínky, 16. prosince 2019 250 Opakování Pojem: smerová konzistence a ší r ka grafu Co to je šírka grafu a jaký je její význam? Použité pojmy objasnete. JS> Šírka grafu je minimum z šírek všech jeho usporádaných grafu. & Šírka usporádaného grafu je maximum z šírek jeho vrcholu. C Šírka vrcholu v usporádaném grafu je pocet hran vedoucích z tohoto vrcholu do predchozích vrcholu. Usporádaný graf je graf s lineárním usporádáním vrcholu. & Šírka grafu nám ríká, jak silnou úroveň smerové i-konzistence potrebujeme, rešení problému bez navracení. Hana Rudová, Omezující podmínky, 16. prosince 2019 251 Opakování Algoritmus: lokální prohledávání & Napište (nebo alespon slovne popište) algoritmus prohledávání s tabu seznamem. Je Váš algoritmus kombinován s nejakou další metodou lokálního prohledávání? proceduře TSHC(MaxZmen) 6 := náhodné ohodnocení promenných % iniciální přiřazení PocetZmen := 0 while E(6) > 0 a PocetZmen s nejlepší evaluací tak, že není v tabu seznamu a nebo splnuje aspiracní kriterium přidej (V,c> do tabu seznamu, kde c je soucasná hodnota V smaž nejstarší položku v tabu seznamu pri raď a do V PocetZmen := PocetZmen+1 return 6 Algoritmus je kombinován s metodou stoupání/hill climbing. Hana Rudová, Omezující podmínky, 16. prosince 2019 252 Opakování P r íklady struCneji: omezení s váhami Jaká je úroven konzistence pro následující CSP problém s váhami s omezeními c1 a c2? P=({c1,c2},{X,Y}) dom(X)=dom(Y)={r,s} con(c1)={X,Y} def(r,r)=1, def(r,s)=2, def(s,r)=4, def(s,s)=6 con(c2)={Y} def(r)=0, def(s)=1 Výsledek: blevel(P)=1. Nutno uvést strucný postup, nap r . Hana Rudová, Omezující podmínky, 16. prosince 2019 253 Opakování P ríklady strucneji: omezení s váhami Jaká je úroven konzistence pro následující CSP problém s váhami s omezeními cl a c2? P=({c1,c2},{X,Y}) dom(X)=dom(Y)={r,s} con(c1)={X,Y} def(r,r)=1, def(r,s)=2, def(s,r)=4, def(s,s)=6 con(c2)={Y} def(r)=0, def(s)=1 Výsledek: blevel(P)=1. Nutno uvést strucný postup, nap r . Spocítáme (c1 0 c2) ^0 () = = minúci®c2(r, r),^q®c2(r, s),^q®c2(s, r),^q®c2(s, s)) = Hana Rudová, Omezující podmínky, 16. prosince 2019 253 Opakování P ríklady strucneji: omezení s váhami Jaká je úroven konzistence pro následující CSP problém s váhami s omezeními cl a c2? P=({c1,c2},{X,Y}) dom(X)=dom(Y)={r,s} con(c1)={X,Y} def(r,r)=1, def(r,s)=2, def(s,r)=4, def(s,s)=6 con(c2)={Y} def(r)=0, def(s)=1 Výsledek: blevel(P)=1. Nutno uvést strucný postup, napr. Spocítáme (c1 0 c2) ^0 () = = minúci®c2(r, r),^q®c2(r, s),^q®c2(s, r),^q®c2(s, s)) = = min(1 + 0, 2 + 1,4 + 0,6 + 1) = 1 Hana Rudová, Omezující podmínky, 16. prosince 2019 253 Opakování Príklady strucneji: omezení s váhami II. A jaká je úroven splnení pro problém P1=({c1,c2},{Y})? a výsledek: úroven splnení pro Y=r: 1, pro Y=s: 3, postup: P=({c1,c2},{X,Y}) dom(X)=dom(Y)={r,s} con(c1)={X,Y} def(r,r)=1, def(r,s)=2, def(s,r)=4, def(s,s)=6 con(c2)={Y} def(r)=0, def(s)=1 Hana Rudová, Omezující podmínky, 16. prosince 2019 254 Opakování P ríklady strucneji: omezení s váhami II. A jaká je úřoveň splnení přo přoblém P1=({c1,c2},{Y})? a výsledek: úřoven splnení přo Y=ř: 1, přo Y=s: 3, postup: Spocítáme (d 0 c2) (ř) = min(^d®c2(ř, ř),^d®c2(s, ř)) = min(1 + 0,4 + 0) = 1 (d 0 c2) (s) = min(jUc1®c2(ř, s),^d®c2(s, s)) = min(2 + 1,6 + 1) = 3 P=({c1,c2},{X,Y}) dom(X)=dom(Y)={r,s} con(c1)={X,Y} def(r,r)=1, def(r,s)=2, def(s,r)=4, def(s,s)=6 con(c2)={Y} def(r)=0, def(s)=1 Hana Rudová, Omezující podmínky, 16. přosince 2019 254 Opakování Doménové promenné Celocíselné promenné dvar int+ Sudoku: hodnota pole Hana Rudová, Omezující podmínky, 16. prosince 2019 255 Opakování Doménové promenné Celocíselné promenné dvar int+ a Sudoku: hodnota pole dvar int+ sudoku[1..Size][1..Size] in 1..Size; Hana Rudová, Omezující podmínky, 16. prosince 2019 255 Opakování Doménové promenné Celocíselné promenné dvar int+ a Sudoku: hodnota pole dvar int+ sudoku[1..Size][1..Size] in 1..Size; forall (i in 1..Size) allDifferent(all (j in 1..Size) sudoku[i][j]); //ruzne pro kazdy radek Hana Rudová, Omezující podmínky, 16. prosince 2019 255 Opakování Doménové promenné Celocíselné promenné dvar int+ a Sudoku: hodnota pole dvar int+ sudoku[1..Size][1..Size] in 1..Size; forall (i in 1..Size) allDifferent(all (j in 1..Size) sudoku[i][j]); //ruzne pro kazdy radek %> p r i razení pracovníku:pracovník vyrábí produkt Hana Rudová, Omezující podmínky, 16. prosince 2019 255 Opakování promenné Celocíselné promenné dvar int+ a Sudoku: hodnota pole dvar int+ sudoku[1..Size][1..Size] in 1..Size; forall (i in 1..Size) allDifferent(all (j in 1..Size) sudoku[i][j]); //ruzne pro kazdy radek %> p r i razení pracovníku:pracovník vyrábí produkt dvar int+ W[1..nbWorkers] in 1..nbProducts; Hana Rudová, Omezující podmínky, 16. prosince 2019 255 Opakování proměnné CeloCíselné proměnné dvar int+ a Sudoku: hodnota pole dvar int+ sudoku[1..Size][1..Size] in 1..Size; forall (i in 1..Size) allDifferent(all (j in 1..Size) sudoku[i][j]); //ruzne pro kazdy radek %> p r i razení pracovníku:pracovník vyrábí produkt dvar int+ W[1..nbWorkers] in 1..nbProducts; total == sum (w in 1..nbWorkers) effectivity[w][W[w]]; Hana Rudová, Omezující podmínky, 16. prosince 2019 255 Opakování Doménové proměnné Celočíselné proměnné dvar int+ ifc Sudoku: hodnota pole dvar int+ sudoku[1..Size][1..Size] in 1..Size; forall (i in 1..Size) allDifferent(all (j in 1..Size) sudoku[i][j]); //ruzne pro kazdy radek & p r i razení pračovníku:pračovník vyrábí produkt dvar int+ W[1..nbWorkers] in 1..nbProdučts; total == sum (w in 1..nbWorkers) effečtivity[w][W[w]]; Binární promenné dvar boolean it problém bat'ohu: je p r edmet v bat'ohu? Hana Rudová, Omezující podmínky, 16. prosince 2019 255 Opakování Doménové proměnné Celočíselné proměnné dvar int+ ifc Sudoku: hodnota pole dvar int+ sudoku[1..Size][1..Size] in 1..Size; forall (i in 1..Size) allDifferent(all (j in 1..Size) sudoku[i][j]); //ruzne pro kazdy radek & prirazení pračovníku:pračovník vyrábí produkt dvar int+ W[1..nbWorkers] in 1..nbProdučts; total == sum (w in 1..nbWorkers) effečtivity[w][W[w]]; Binární promenné dvar boolean it problém bat'ohu: je predmet v bat'ohu? dvar boolean take[1..nbltems]; Hana Rudová, Omezující podmínky, 16. prosince 2019 255 Opakování Doménové proměnné Celočíselné proměnné dvar int+ ifc Sudoku: hodnota pole dvar int+ sudoku[1..Size][1..Size] in 1..Size; forall (i in 1..Size) allDifferent(all (j in 1..Size) sudoku[i][j]); //ruzne pro kazdy radek & prirazení pračovníků:pračovník vyrábí produkt dvar int+ W[1..nbWorkers] in 1..nbProdučts; total == sum (w in 1..nbWorkers) effečtivity[w][W[w]]; Binární promenné dvar boolean it problém bat'ohu: je predmet v bat'ohu? dvar boolean take[1..nbltems]; sum (i in Items) (take[i] * weights [i]) <= capacity; Hana Rudová, Omezující podmínky, 16. prosince 2019 255 Opakování Doménové proměnné Celočíselné proměnné dvar int+ it Sudoku: hodnota pole dvar int+ sudoku[1..Size][1..Size] in 1..Size; forall (i in 1..Size) allDifferent(all (j in 1..Size) sudoku[i][j]); //ruzne pro kazdy radek it p r i razení pračovníku:pračovník vyrábí produkt dvar int+ W[1..nbWorkers] in 1..nbProdučts; total == sum (w in 1..nbWorkers) effečtivity[w][W[w]]; Binární promenné dvar boolean it problém bat'ohu: je p r edmet v bat'ohu? dvar boolean take[1..nbltems]; sum (i in Items) (take[i] * weights [i]) <= capacity; it Sudoku: hodnota pole Hana Rudová, Omezující podmínky, 16. prosince 2019 255 Opakování Doménové proměnné Celočíselné proměnné dvar int+ it Sudoku: hodnota pole dvar int+ sudoku[1..Size][1..Size] in 1..Size; forall (i in 1..Size) allDifferent(all (j in 1..Size) sudoku[i][j]); //ruzne pro kazdy radek it p r i razení pračovníku:pračovník vyrábí produkt dvar int+ W[1..nbWorkers] in 1..nbProdučts; total == sum (w in 1..nbWorkers) effečtivity[w][W[w]]; Binární promenné dvar boolean it problém bat'ohu: je p r edmet v bat'ohu? dvar boolean take[1..nbltems]; sum (i in Items) (take[i] * weights [i]) <= capacity; it Sudoku: hodnota pole dvar boolean sudoku[1..Size][1..Size][1..Size]; Hana Rudová, Omezující podmínky, 16. prosince 2019 255 Opakování Doménové proměnné Celočíselné proměnné dvar int+ it Sudoku: hodnota pole dvar int+ sudoku[1..Size][1..Size] in 1..Size; forall (i in 1..Size) allDifferent(all (j in 1..Size) sudoku[i][j]); //ruzne pro kazdy radek it prirazení pračovníku:pračovník vyrábí produkt dvar int+ W[1..nbWorkers] in 1..nbProdučts; total == sum (w in 1..nbWorkers) effečtivity[w][W[w]]; Binární promenné dvar boolean it problém bat'ohu: je predmet v bat'ohu? dvar boolean take[1..nbltems]; sum (i in Items) (take[i] * weights [i]) <= capacity; it Sudoku: hodnota pole dvar boolean sudoku[1..Size][1..Size][1..Size]; forall (i,k in 1..Size) sum (j in 1..Size) sudoku[i][j][k] == 1; Hana Rudová, Omezující podmínky, 16. prosince 2019 255 Opakování proměnné Celočíselné proměnné dvar int+ it Sudoku: hodnota pole dvar int+ sudoku[1..Size][1..Size] in 1..Size; forall (i in 1..Size) allDifferent(all (j in 1..Size) sudoku[i][j]); //ruzne pro kazdy radek it p r i razení pracovníku:pracovník vyrábí produkt dvar int+ W[1..nbWorkers] in 1..nbProducts; total == sum (w in 1..nbWorkers) effectivity[w][W[w]]; & Binární promenné dvar boolean it problém bat'ohu: je p r edmet v bat'ohu? dvar boolean take[1..nbltems]; sum (i in Items) (take[i] * weights [i]) <= capacity; it Sudoku: hodnota pole dvar boolean sudoku[1..Size][1..Size][1..Size]; forall (i,k in 1..Size) sum (j in 1..Size) sudoku[i][j][k] == 1; navíc: forall (i, j in 1..Size) sum(k in 1..Size) sudoku[i][j][k] == 1; Hana Rudová, Omezující podmínky, 16. prosince 2019 255 Opakování Rozvrhování: zdroje Jeden zdroj a jednotková doba trvání úlohy: dvar int, allDifferent(casy) a odlišné doby trvání úloh: dvar interval, dvar sequence, noOverlap(casy) Hana Rudová, Omezující podmínky, 16. prosince 2019 256 Opakování Rozvrhování: zdrojě Jeden zdroj it jednotková doba trvání úlohy: dvar int, allDifferent(časy) it odlišné doby trvání úloh: dvar interval, dvar sequence, noOverlap(časy) Víče zdrojů it nepožadujeme určení zdroje pro úlohu bez doménových promennýčh pro určení zdroje úlohy čumulFunčtion, pulse(časy[uloha], zdroju[uloha]) Hana Rudová, Omezujíčí podmínky, 16. prosinče 2019 256 Opakování Rozvrhování: zdroje Jeden zdroj a jednotková doba trvání úlohy: dvar int, allDifferent(casy) & odlišné doby trvání úloh: dvar interval, dvar sequence, noOverlap(casy) Více zdroj U nepožadujeme urcení zdroje pro úlohu bez doménových promenných pro urcení zdroje úlohy cumulFunction, pulse(casy[uloha], zdroju[uloha]) s požadujeme urcení zdroje pro úlohu vcetne doménových promenných pro urcení zdroje úlohy dvar interval prirazeni ... optional alternative(casy[uloha], ... prirazeni[uloha][zdroje], zdroju[uloha]) Hana Rudová, Omezující podmínky, 16. prosince 2019 256 Opakování Rozvrhování II. Vztahy mezi úlohami a precedence endBeforeStart, endAtStart, ... tuple Závislost { int Pred; int Po; } {Závislost} závislosti = forall (zav in závislosti) endBeforeStart(casy[zav.Pred], casy[zav.Po]); Hana Rudová, Omezující podmínky, 16. prosince 2019 257 Opakování Rozvrhování II. Vztahy mezi úlohami a precedence endBeforeStart, endAtStart, ... tuple Závislost { int Pred; int Po; } {Závislost} závislosti = forall (zav in závislosti) endBeforeStart(casy[zav.Pred], casy[zav.Po]); & Volitelné úlohy presenceOf(dvar interval) dvar interval prirazeni[1..üloh][1..Stroju] optional; Hana Rudová, Omezující podmínky, 16. prosince 2019 257 Opakování Rozvrhování II. Vztahy mezi úlohami a precedence endBeforeStart, endAtStart, ... tuple Zavislost { int Pred; int Po; } {Zavislost} zavislosti = forall (zav in zavislosti) endBeforeStart(casy[zav.Pred], casy[zav.Po]); & Volitelné úlohy presenceOf(dvar interval) dvar interval prirazeni[1..Uloh][1..Stroju] optional; forall (u in L.Uloh, s not in mozne[u] ) presenceOf( prirazeni[u][s] ) == 0; forall (u in L.Uloh, s in prikazane[u]) presenceOf( prirazeni[u][s] ) == 1; Hana Rudová, Omezujici podminky, l6. prosince 2Gl9 257 Opakováni Rozvrhování II. Vztahy mezi úlohami a precedence endBeforeStart, endAtStart, ... tuple Závislost { int Pred; int Po; } {Závislost} závislosti = forall (zav in závislosti) endBeforeStart(casy[zav.Pred], casy[zav.Po]); & Volitelné úlohy presenceOf(dvar interval) dvar interval prirazeni[1..üloh][1..Stroju] optional; forall (u in L.üloh, s not in mozne[u] ) presenceOf( prirazeni[u][s] ) == 0; forall (u in L.üloh, s in prikazane[u]) presenceOf( prirazeni[u][s] ) == 1; ü> Dovolená: práce lidí se nep r ekrývá s jejich dovolenou Hana Rudová, Omezující podmínky, 16. prosince 2019 257 Opakování Rozvřhování II. Vztahy mezi úlohami a precedence endBeforeStart, endAtStart, ... tuple Závislost { int Pred; int Po; } {Závislost} závislosti = forall (zav in závislosti) endBeforeStart(casy[zav.Pred], casy[zav.Po]); & Volitelné úlohy presenceOf(dvar interval) dvar interval prirazeni[1..Uloh][1..Stroju] optional; forall (u in L.Uloh, s not in mozne[u] ) presenceOf( prirazeni[u][s] ) == 0; forall (u in L.Uloh, s in prikazane[u]) presenceOf( prirazeni[u][s] ) == 1; & Dovolená: práce lidí se nep r ekrývá s jejich dovolenou rešení: p r idáme dodatecné intervalové promenné dvar interval casy[u in L.Prace+Dovolene] size trvani[u]; noOverlap(all (u in L.Prace+Dovolene) casy[u]); Hana Rudová, Omezující podmínky, 16. prosince 2G19 257 Opakování Rozvrhování II. Vztahy mezi úlohami a precedence endBeforeStart, endAtStart, ... tuple Zavislost { int Pred; int Po; } {Zavislost} zavislosti = forall (zav in zavislosti) endBeforeStart(casy[zav.Pred], casy[zav.Po]); & Volitelné úlohy presenceOf(dvar interval) dvar interval prirazeni[1..Uloh][1..Stroju] optional; forall (u in L.Uloh, s not in mozne[u] ) presenceOf( prirazeni[u][s] ) == 0; forall (u in L.Uloh, s in prikazane[u]) presenceOf( prirazeni[u][s] ) == 1; ü> Dovolená: práce lidí se nep r ekrývá s jejich dovolenou rešení: p r idáme dodatecné intervalové promenné dvar interval casy[u in L.Prace+Dovolene] size trvani[u]; noOverlap(all (u in L.Prace+Dovolene) casy[u]); cumulFunction nastroje = sum (p in L.Prace) pulse( casy[p],nastroju[p] ); Hana Rudová, Omezující podmínky, 16. prosince 2019 257 Opakování Optimalizace C- Problém bat'ohu: maximalizace souctu cen p redmetu v bat'ohu Hana Rudová, Omezující podmínky, 16. prosince 2019 258 Opakování Optimalizace C- Problém bat'ohu: maximalizace souctu cen p redmetu v bat'ohu maximize sum (i in nbItems) (take[i] * prices[i] ); Hana Rudová, Omezující podmínky, 16. prosince 2019 258 Opakování Optimalizace C- Problém bat'ohu: maximalizace souctu cen p redmetů v bat'ohu maximize sum (i in nbItems) (take[i] * prices[i] ); ií> Minimalizace casu dokoncení poslední úlohy Hana Rudová, Omezující podmínky, 16. prosince 2019 258 Opakování Optimalizace C- Problém baťohu: maximalizace součtu cen p ředmětů v baťohu maximize sum (i in nbItems) (take[i] * prices[i] ); ií> Minimalizace času dokončení poslední úlohy minimize max (u in 1..Pocet) endOf( casy[u]); zadány poslední operace úlohy: Hana Rudová, Omezující podmínky, 16. prosince 2019 258 Opakování Optimalizace C- Problém bat'ohu: maximalizace součtu čen predmetu v bat'ohu maximize sum (i in nbltems) (take[i] * pričes[i] ); ií> Minimalizace času dokončení poslední úlohy minimize max (u in 1..Počet) endOf( časy[u]); zadány poslední operače úlohy: minimize max (u in 1..Počet) endOf( časy[u][Posledni] ); Hana Rudová, Omezujíčí podmínky, 16. prosinče 2019 258 Opakování Optimalizace C- Problém bat'ohu: maximalizace součtu čen predmetu v bat'ohu maximize sum (i in nbltems) (take[i] * pričes[i] ); ií> Minimalizace času dokončení poslední úlohy minimize max (u in 1..Počet) endOf( časy[u]); zadány poslední operače úlohy: minimize max (u in 1..Počet) endOf( časy[u][Posledni] ); C Maximaliče (váženého) počtu realizovanýčh úloh Hana Rudová, Omezujíčí podmínky, 16. prosinče 2019 258 Opakování Optimalizace C- Problém bat'ohu: maximalizace souctu cen predmetu v bat'ohu maximize sum (i in nbltems) (take[i] * prices[i] ); ü> Minimalizace casu dokoncení poslední úlohy minimize max (u in l..Pocet) endOf( casy[u]); zadány poslední operace úlohy: minimize max (u in l..Pocet) endOf( casy[u][Posledni] ); C Maximalice (váženého) poctu realizovaných úloh maximize sum (u in l..Pocet) (vahy[u] * presenceOf(casy[u])); Hana Rudová, Omezující podmínky, 16. prosince 2G19 258 Opakování Určete čas a místnost pro výuku množiny predmetu. Datová instance: 1. rozvrh tvoříte pro 3 vyuCovací dny a každý den má 10 hodin 2. máte zadáno 14 předmětů 3. délka výuky předmetu je 4 nebo 5 hodin (urCeno pro každý předmet předem) 4. máte k dispozici 3 místnosti 5. máte zadány 3 třídy (skupiny žáku) 6. každá třída má v zadání urCeno 4 až 5 předmetu, které bude navštevovat Omezující podmínky: 7. výuka předmetu musí probíhat souvisle bez přerušení (tj. nesmí např. zacínat jeden den vecer a koncit druhý den ráno) 8. v každé místnosti je nejvýše jeden předmet v danou dobu 9. pro každou třídu je zadána množina jejích předmetu; každá třída muže mít vždy nejvýše jeden z techto předmetu v danou dobu Úcelová funkce: 10. Jednotlivé předmety by mely být do rozvrhu umísteny tak, aby výuka všech tříd skonala co nejdříve (např. třetí den dopoledne). Tj. minimalizujte soucet koncových casu výuky posledních předmetu všech tříd. Hana Rudová, Omezující podmínky, 16. prosince 2019 259 Opakování Školní rozvrh: vstupní proměnné int Dny = 3; int Hodin = 10; int Predmetu = 14; int Mistnosti = 3; int Tridy = 3; Hana Rudová, Omezující podmínky, 16. prosince 2019 260 Opakování Školní rozvrh: vstupní proměnné int Dny = 3; int Hodin = 10; int Predmetu = 14; int Mistnosti = 3; int Tridy = 3; range rTridy = L.Tridy; range rMistnosti = L.Mistnosti; Hana Rudová, Omezujíčí podmínky, 16. prosinče 2019 260 Opakování Školní rozvrh: vstupní proměnné int Dny = 3; int Hodin = 10; int Predmetu = 14; int Mistnosti = 3; int Tridy = 3; range rTridy = L.Tridy; range rMistnosti = L.Mistnosti; tuple predmetyTrid{ key int predmet; int trida; int trvani;} // napr. trida 1 ma predmety 1,2,3; trida 2 ma predmety 4,5, ... // predmety 1,2,3,4,5 maji trvani 4,4,5,5,4 // predmet je klic, tj. napr. <2> odkazuje na cely tuple <2,1,4> {predmetyTrid} PredmetyTrid = {<1,1,4>,<2,1,4>,<3,1,5>,<4,2,5>,<5,2,4>,...}; Hana Rudová, Omezujíčí podmínky, 16. prosinče 2019 260 Opakování Školní rozvrh: moděl Doménové proměnné Hana Rudová, Omezujíčí podmínky, 16. prosinče 2019 261 Opakování Školní rozvrh: model Doménové proměnné // přiřazení času předmětům v maximálním rozmezí Dny*Hodin, zajištění trvání dvar interval casy[p in PredmetyTrid] in 0 .. Dny*Hodin size p.trvani; Hana Rudová, Omezující podmínky, 16. prosince 2019 261 Opakování Školní rozvrh: model Doménové proměnné // prirazení času předmětům v maximálním rozmezí Dny*Hodin, zajištění trvání dvar interval casy[p in PredmetyTrid] in 0 .. Dny*Hodin size p.trvani; // volitelný interval pro prirazení predmetů a tríd do místnosti dvar interval prirazeni[PredmetyTrid][rMistnosti] optional; Hana Rudová, Omezující podmínky, 16. prosince 2019 261 Opakování Školní rozvrh: moděl Doménové proměnné // prirazení času předmetUm v maximálním rozmezí Dny*Hodin, zajištění trvání dvar interval casy[p in PredmetyTrid] in 0 .. Dny*Hodin size p.trvani; // volitelný interval pro přiřazení predmčtů a tříd do místnosti dvar interval prirazeni[PredmetyTrid][rMistnosti] optional; Každý p rědmět jě vyučován právě v jědné místnosti Hana Rudová, Omezující podmínky, 16. prosince 2019 261 Opakování Školní rozvrh: moděl Doménové proměnné // prirazení času předmětům v maximálním rozmezí Dny*Hodin, zajištění trvání dvar interval casy[p in PredmetyTrid] in 0 .. Dny*Hodin size p.trvani; // volitelný interval pro prirazení predmetU a tríd do místnosti dvar interval prirazeni[PredmetyTrid][rMistnosti] optional; Každý prědmět jě vyučován právě v jědné místnosti forall(p in PredmetyTrid) alternative(casy[p.predmet], all(m in rMistnosti) prirazeni[p][m]); Hana Rudová, Omezující podmínky, 16. prosince 2019 261 Opakování Školní rozvrh: model Doménové proměnné // prirazení času předmětům v maximálním rozmezí Dny*Hodin, zajištění trvání dvar interval casy[p in PredmetyTrid] in 0 .. Dny*Hodin size p.trvani; // volitelný interval pro prirazení predmetU a tríd do místnosti dvar interval prirazeni[PredmetyTrid][rMistnosti] optional; Každý p redmět je vyučován právě v jedné místnosti forall(p in PredmetyTrid) alternative(casy[p.predmet], all(m in rMistnosti) prirazeni[p][m]); V každé místnosti je nejvýše jeden p redmet v danou dobu Hana Rudová, Omezující podmínky, 16. prosince 2019 261 Opakování Školní rozvrh: model Doménové promenné // prirazení času předmětům v maximálním rozmezí Dny*Hodin, zajištění trvání dvar interval casy[p in PredmetyTrid] in 0 .. Dny*Hodin size p.trvani; // volitelný interval pro prirazení predmetů a tríd do místnosti dvar interval prirazeni[PredmetyTrid][rMistnosti] optional; Každý p redmet je vyucován práve v jedné místnosti forall(p in PredmetyTrid) alternative(casy[p.predmet], all(m in rMistnosti) prirazeni[p][m]); V každé místnosti je nejvýše jeden p redmet v danou dobu // sekvence rozvrhu místností z důvodu neprekrývaní dvar sequence rozvrhMistnosti[m in rMistnosti] in all (p in PredmetyTrid) prirazeni[p][m]; forall(m in rMistnosti) noOverlap(rozvrhMistnosti[m]); Hana Rudová, Omezující podmínky, 16. prosince 2019 261 Opakování Školní rozvrh: model II. Každý p redmet je vyučován pro konkrétní t r ídu (skupinu žáku), tj. pro každou t r ídu je zadána množina jejích p r edmetu Hana Rudová, Omezující podmínky, 16. prosince 2019 262 Opakování Školní rozvrh: moděl II. Každý predmet je vyučován pro konkrétní trídu (skupinu žáku), tj. pro každou trídu je zadána množina jejích predmetu // sekvence rozvrhu tříd z důvodu neprekrývaní dvar sequence rozvrhTridy[t in rTridy] in all (m in rMistnosti, p in PredmetyTrid : p.trida == t) prirazeni[p][m]; a tedy každá trída muže mít vždy nejvýše jeden predmet v danou dobu Hana Rudová, Omezujíčí podmínky, 16. prosinče 2019 262 Opakování Školní rozvrh: model II. Každý p redmet je vyučován pro konkrétní t r ídu (skupinu žákU), tj. pro každou t r ídu je zadána množina jejích p r edmetU // sekvence rozvrhu tříd z důvodu neprekrývaní dvar sequence rozvrhTridy[t in rTridy] in all (m in rMistnosti, p in PredmetyTrid : p.trida == t) prirazeni[p][m]; a tedy každá trída muže mít vždy nejvýše jeden p r edmet v danou dobu forall (t in rTridy) noOverlap(rozvrhTridy[t]); Hana Rudová, Omezující podmínky, 16. prosince 2019 262 Opakování Školní rozvrh: moděl II. Každý p ředmět je vyučován pro konkrétní t ř ídu (skupinu žáků), tj. pro každou třídu je zadána množina jejích předmětů // sekvence rozvrhu tříd z důvodu nepřekrývání dvar sequence rozvrhTridy[t in rTridy] in all (m in rMistnosti, p in PredmetyTrid : p.trida == t) prirazeni[p][m]; a tedy každá třída může mít vždy nejvýše jeden předmět v danou dobu forall (t in rTridy) noOverlap(rozvrhTridy[t]); Výuka p ředmětu musí probíhat bez p řerušení Hana Rudová, Omezující podmínky, 16. prosince 2019 262 Opakování Školní rozvrh: model II. Každý p rědmět jě vyučován pro konkrétní t r ídu (skupinu žákU), tj. pro každou třídu je zadána množina jejích předmětů // sekvence rozvrhu tríd z dUvodu neprekrývaní dvar sequence rozvrhTridy[t in rTridy] in all (m in rMistnosti, p in PredmetyTrid : p.trida == t) prirazeni[p][m]; a tedy každá třída muže mít vždy nejvýše jeden předmet v danou dobu forall (t in rTridy) noOverlap(rozvrhTridy[t]); Výuka p rědmětu musí probíhat běz p rěrušění forall (p in PredmetyTrid) startOf(casy[p]) % Hodin <= (Hodin-p.trvani); Hana Rudová, Omezující podmínky, 16. prosince 2019 262 Opakování Školní rozvrh: optimalizace Jednotlivé p redmety by mely být do rozvrhu umísteny tak, aby výuka všech tríd skoncila co nejd ríve (nap r . tr etí den dopoledne). Tj. minimalizujeme součet koncových časů výuky posledních p redmetů všech tr íd. Hana Rudová, Omezující podmínky, 16. prosince 2019 263 Opakování Školní rozvrh: optimalizace Jednotlivé predmety by mely být do rozvrhu umísteny tak, aby výuka všech tríd skoncila co nejdríve (napr. tretí den dopoledne). Tj. minimalizujeme součet koncových časů výuky posledních predmetu všech tríd. // čas konce posledního predmetu každé trídy dexpr int maxTridy[t in rTridy] = max(p in PredmetyTrid : p.trida == t) endOf(casy[p]); // soucet koncových časů posledních hodin všech tríd minimize sum(t in rTridy) maxTridy[t]; Hana Rudová, Omezující podmínky, 16. prosince 2019 263 Opakování Rozvrhování vyšetrení pacientů v nemocnici Každý pacient musí absolvovat vysetr ení zadaného typu, která probíhají na různých pracovištích. Cílem r ešení je pro každé vyšet r ení pacienta urCit, ve kterém čase bude probíhat a které pracoviště bude vyšetr ení realizovat. Dále: JS> Vyšet r ení jednoho pacienta se nesmí p r ekrývat. -á* Vyšet r ení na jednom pracovišti se nesmí p r ekrývat. -í* Každý typ vyšetr ení má stanovenu délku provádení a pracovište, na kterých může být provádeno. JS> Nekterý typ vyšet r ení musí probehnout p r ed realizací jiného typu vyšet r ení (pokud je pacient absolvuje oba). Jsou proto zadány dvojice typů vyšetr ení urcující, které vyšetr ení musí být realizováno p r ed zahájením dalšího vyšetr ení. Vyšetr ení pacientů se závažnejším typem onemocnení by mela být dokoncena d ríve, aby mohli d ríve nastoupit na operaci. Cílem je tedy minimalizovat vážený soucet dokoncení nejpozdejších vyšetr ení pacientu. Hana Rudová, Omezující podmínky, 16. prosince 2019 264 Opakování Jednoduché zadání Príklad jednoduchého zadání s řešením: & poCet pacientů 2, poCet typů vyšetření 2, poCet pracovišť 2; & doby trvání vyšetření daného typu: 1, 2; JS> pracovište pro vyšetření daného typu: 1:1,2, 2:1; -i* typy vyšetrení pro pacienty: 1:1,2,2:1; JS> priority pacientu: 1,10; C precedence pro dané typy vyšetrení: 1 pred 2; rešení s kvalitou 13: Jt pacient, vyšetrení, ccas, pracovište 1,1,0,1; 1,2,1,2; 2,1,0,2 1,1,0,2; 1,2,1,2; 2,1,0,1. Hana Rudová, Omezující podmínky, 16. prosince 2019 265 Opakování Vstupní data a typy Konstanty a intervaly int NbPacients = int NbMedicals = int NbRooms = range RPacients = L.NbPacients; range RMedicals = L.NbMedicals; range RRooms = L.NbRooms; Vyšetrení: typ, místnosti Hana Rudová, Omezující podmínky, 16. prosince 2019 266 Opakování Vstupní data a typy Konstanty a intervaly int NbPacients = int NbMedicals = int NbRooms = range RPacients = L.NbPacients; range RMedicals = L.NbMedicals; range RRooms = L.NbRooms; Vyšětrění: typ, místnosti tuple Tmedical{ int duration; {int} rooms; } Tmedical Medicals[RMedicals] = // [<2,{1,3}>, <2,{2,4}>, <3,{1,2,3}>] Paciěnt: typy vyšetrení Hana Rudová, Omezujíčí podmínky, 16. prosinče 2019 266 Opakování Vstupní Konstanty a intervaly int NbPacients = int NbMedicals = int NbRooms = range RPacients = L.NbPacients; range RMedicals = L.NbMedicals; range RRooms = L.NbRooms; Vyšetrení: typ, místnosti tuple Tmedical{ int duration; {int} rooms; } Tmedical Medicals[RMedicals] = Pacient: typy vyšetr ení tuple pMedical{ int pacient; int medical; } {pMedical} PMedicals = Hana Rudová, Omezující podmínky, 16. prosince 2019 data a typy 77 [<2,{1,3}>, <2,{2,4}>, <3,{1,2,3}>] 77 {<1,1>,<1,2>,<2,2>,<2,3>,<3,1>, ...} 266 Opakování Vyšet rení pacienta tuple Tmedical{ int duration; {int} rooms; } Tmedical Medicals[RMedicals] = tuple pMedical{ int pacient; int medical; } {pMedical} PMedicals = Casy vyset reni pacienta Hana Rudová, Omezující podmínky, 16. prosince 2019 267 Opakování Vyšetrení pacienta tuple Tmedical{ int duration; {int} rooms; } Tmedical Medicals[RMedicals] = tuple pMedical{ int pacient; int medical; } {pMedical} PMedicals = Casy vyšetrení pacienta dvar interval times[pm in PMedicals] size Medicals[pm.medical].duration; Neprekrytí vyšetrení pacienta Hana Rudová, Omezující podmínky, 16. prosince 2019 267 Opakování Vyšět rění pacienta tuple Tmedical{ int duration; {int} rooms; } Tmedical Medicals[RMedicals] = tuple pMedical{ int pacient; int medical; } {pMedical} PMedicals = Casy vyšět rění paciěnta dvar interval times[pm in PMedicals] size Medicals[pm.medical].duration; Něp rěkrytí vyšět rění paciěnta dvar sequence seqPacient[p in RPacients] in all(pm in PMedicals: pm.pacient == p) times[pm]; Hana Rudová, Omezující podmínky, 16. prosince 2019 267 Opakování Vyšet rení pacienta tuple Tmedical{ int duration; {int} rooms; } Tmedical Medicals[RMedicals] = tuple pMedical{ int pacient; int medical; } {pMedical} PMedicals = Casy vyšet rení pacienta dvar interval times[pm in PMedicals] size Medicals[pm.medical].duration; Nep rekrytí vyšet rení pacienta dvar sequence seqPacient[p in RPacients] in all(pm in PMedicals: pm.pacient == p) times[pm]; forall (p in RPacients) noOverlap(seqPacient[p]); Hana Rudová, Omezující podmínky, 16. prosince 2G19 267 Opakování Vyšetrení na jednom pracovišti dvar interval times[pm in PMedicals] size Medicals[pm.medical].duration; Promenné pro výber místnosti pro vyšetrení pacienta Hana Rudová, Omezující podmínky, 16. prosince 2019 268 Opakování Vyšet rení na jednom pracovišti dvar interval times[pm in PMedicals] size Medicals[pm.medical].duration; Promenné pro výber místnosti pro vyšetrení pacienta dvar interval assigned[PMedicals][RRooms] optional; Na každém pracovišti maximálne jedno vyšet rení Hana Rudová, Omezující podmínky, 16. prosince 2019 268 Opakování Vyšet rení na jednom pracovišti dvar interval times[pm in PMedicals] size Medicals[pm.medical].duration; Promenné pro výber místnosti pro vyšetrení pacienta dvar interval assigned[PMedicals][RRooms] optional; Na každém pracovišti maximálne jedno vyšet rení forall (pm in PMedicals) alternative (times[pm], all (r in RRoomsi r in Medicals[pm.medical].rooms) assigned[pm][r]); Hana Rudová, Omezující podmínky, 16. prosince 2G19 268 Opakování Vyšetrení na jednom pracovišti dvar interval times[pm in PMedicals] size Medicals[pm.medical].duration; Promenné pro výber místnosti pro vyšetrení pacienta dvar interval assigned[PMedicals][RRooms] optional; Na každém pracovišti maximálne jedno vyšetrení forall (pm in PMedicals) alternative (times[pm], all (r in RRoomsi r in Medicals[pm.medical].rooms) assigned[pm][r]); forall (r in RRooms) noOverlap(all (pm in PMedicals: r in Medicals[pm.medical].rooms) assigned[pm][r]); Hana Rudová, Omezujici podminky, 16. prosince 2G19 268 Opakováni Precedence tuple pMedical{ int pacient; int medical; } {pMedical} PMedicals = dvar interval times[pm in PMedicals] size Medicals[pm.medical].duration; Typy a vstupní data Hana Rudová, Omezující podmínky, 16. prosince 2G19 269 Opakování Prěcěděncě tuple pMedical{ int pacient; int medical; } {pMedical} PMedicals = dvar interval times[pm in PMedicals] size Medicals[pm.medical].duration; Typy a vstupní data tuple Tprec{ int before; int after; } Hana Rudová, Omezujíčí podmínky, 16. prosinče 2019 269 Opakování Precedence tuple pMedical{ int pacient; int medical; } {pMedical} PMedicals = dvar interval times[pm in PMedicals] size Medicals[pm.medical].duration; Typy a vstupní data tuple Tprec{ int before; int after; } {Tprec} Prec = Omezení na precedence Hana Rudová, Omezující podmínky, 16. prosince 2019 269 Opakování Precedence tuple pMedical{ int pacient; int medical; } {pMedical} PMedicals = dvar interval times[pm in PMedicals] size Medicals[pm.medical].duration; Typy a vstupní data tuple Tprec{ int before; int after; } {Tprec} Prec = Omezení na precedence forall (pr in Prec, pmB in PMedicals, pmA in PMedicals: pmB.pacient == pmA.pacient && pmB.medical == pr.before && pmA.medical == pr.after) endBeforeStart(times[pmB],times[pmA]); Hana Rudová, Omezujici podminky, 16. prosince 2G19 269 Opakováni Minimalizace vážených casů posledních vyšetření Typy a vstupní data Hana Rudová, Omezující podmínky, 16. prosince 2G19 27G Opakování Minimalizace vážených casU posledních vyšet rení Typy a vstupní data int Priorities[RPacients] = Minimalizace Hana Rudová, Omezující podmínky, 16. prosince 2019 270 Opakování Minimalizace vážených časů posledních vyšet rení Typy a vstupní data int Priorities[RPacients] = Minimalizace dexpr int pacientMax[p in RPacients] = max (pm in PMedicals: pm.pacient == p) endOf(times[pm]); Hana Rudová, Omezující podmínky, 16. prosince 2019 270 Opakování Minimalizace vážených Casu posledních vyšetrení Typy a vstupní data int Priorities[RPacients] = Minimalizace dexpr int pacientMax[p in RPacients] = max (pm in PMedicals: pm.pacient == p) endOf(times[pm]); minimize sum (p in RPacients) Priorities[p]*pacientMax[p]; Hana Rudová, Omezující podmínky, 16. prosince 2019 270 Opakování Zdrojě, zě ktěrýčh průsvitky čěrpají V průsvitkách jsou použity obrázky a texty z uvedených zdrojů: Barták R., MFF UK, Praha. Pmsvitky k p ř ednášce Programování s omezujícími podmínkami http://kti.ms.mff.cuni.cz/~bartak/podminky/prednaska.html Apt K., CWI, Holandsko. Pmsvitky ke knize Principles of Constraint Programming http://homepages.cwi.nl/~apt/books.html ü> Dechter R., University of California, USA. Průsvitky ke knize Constraint processing http://www.ics.uci.edu/~dechter/books/materials.html JS> Laborie P., Introduction to CP Optimizer for Scheduling. Tutoriál prezentovaný na 27th International Conference on Automated Planning and Scheduling, 2G17. http://icaps17.icaps-conference.org/tutorials/#tut3 Hana Rudová, Omezující podmínky, 16. prosince 2G19 271 Zdroje