Organizace předmětu PA163 Programování s omezujícími podmínkami
Základní informace Web předmětu: http://www.fi.muni.cz/~hanka/cp Průsvitky: průběžně aktualizovány na webu předmětu Ukončení předmětu: cca 3 řádné termíny v různých týdnech zkouškového období kratší písemná práce pro každý řádný termín společná příprava pro všechny cca 5 otázek: přehledové, algoritmy, pojmy, příklady ústní zkouška ve stejný den jako písemná práce příprava na individuální otázky během zkoušky diskuse nad písemnou prací opravný termín jako ústní zkouška Omezující podmínky v jiných přednáškách: IB013 LP I, IA050 LP II Programování s omezujícími podmínkami I, 25. září 2003 2 Organizace předmětu
Předběžný přehled přednášky Úvod. Problém splňování podmínek. Složitost. Binární a nebinární podmínky. Reprezentace podmínek. Algoritmy a konzistence: vrcholová, hranová, po cestě, k-konzistence. Konzistence pro globální podmínky. Stromové prohledávací algoritmy: backtracking, limitovaný počet diskrepancí, neúplné prohledávání, inteligentní backtracking. Prohledávací algoritmy a propagace podmínek. Výběr proměnné a hodnoty. Optimalizační problémy a algoritmy. Algoritmy lokálního prohledávání. Hybridní prohledávací algoritmy. Logické programování s omezujícími podmínkami. Řešení příkladů v SICStus Prologu a ILOG Solver (C++). Příliš podmíněné problémy: přístupy k řešení a algoritmy. Souběžné programování s omezujícími podmínkami. Distribuované splňování podmínek. Agentní technologie. Programování s omezujícími podmínkami I, 25. září 2003 3 Organizace předmětu
Literatura: hlavní zdroje Dechter, R. Constraint processing. Morgan Kaufmann Publishers, 2003. Přednáška, kapitoly z knihy Constraint Processing, 2001: http://www.ics.uci.edu/~dechter/ics-275a/fall-2001/index.html Barták R. Přednáška na MFF UK, Praha. http://kti.ms.mff.cuni.cz/~bartak/podminky/index.html Programování s omezujícími podmínkami I, 25. září 2003 4 Organizace předmětu
Souhrnná literatura Dechter, R. Constraint processing. Morgan Kaufmann Publishers, 2003. http://www.ics.uci.edu/~dechter/books/ Apt, K. Principles of Constraint Programming. Cambridge University Press, 2003. Marriott, K., Stuckey, P.J. Programming with constraints : an introduction. Cambridge : MIT Press, 1998. Van Hentenryck, P. Constraint satisfaction in logic programming. MIT Press, 1989. Frühwirth, T. Abdennadher, S. Essentials of constraint programming. Springer, 2003. Barták, R. On-line guide to constraint programming. http://ktilinux.ms.mff.cuni.cz/~bartak/constraints/ Programování s omezujícími podmínkami I, 25. září 2003 5 Organizace předmětu
Literatura ke specifickým oblastem Hooker, J. Logic-based methods for optimization : combining optimization and constraint satisfaction. New York : John Wiley & Sons, 2000. Schulte, Chr. Programming constraint services. LNAI 2302, Springer, 2002. Rudová, H. Constraint satisfaction with preferences. PhD thesis, FI MU, 2001. http://www.fi.muni.cz/~hanka/phd.html Yokoo, M. Distributed constraint satisfaction. Springer, 2001. Nareyek, A. Constraint-based agents. LNAI 2062, Springer, 2001. Programování s omezujícími podmínkami I, 25. září 2003 6 Organizace předmětu
Literatura: přednášky, Prolog, sw Přednášky/průsvitky na webu Barták R., MFF UK, Praha. http://kti.ms.mff.cuni.cz/~bartak/podminky/index.html Dechter R., UCI, Kalifornie. http://www.ics.uci.edu/~dechter/ics-275a/fall-2001/index.html Apt K., CWI, Amsterdam. Průsvitky ke knize: http://homepages.cwi.nl/~apt/pcp/ Programování v Prologu Bratko, I. Prolog Programming for Artificial Intelligence. Addison-Wesley, 2001. Clocksin, W. F. Mellish, Ch. S. Programming in Prolog. Springer, 1994. Manuály SICStus Prolog http://www.fi.muni.cz/~hanka/sicstus/doc/html ILOG Solver 5.1 User s Manual. ILOG, květen 2001. aisa... file://afs/ics.muni.cz/software/ilog/doc/solver51/index.html Programování s omezujícími podmínkami I, 25. září 2003 7 Organizace předmětu
Software SICStus Prolog komerční produkt, zakoupena licence pro instalace na domácí počítače studentů dokumentace: http://www.fi.muni.cz/~hanka/sicstus/doc/html referenční verze: 3.10.1 podrobné informace na webu předmětu ILOG Solver komerční produkt, C++ knihovny plán: povýšení na poslední existujicí verzi nyní: 2 plovoucí licence ve verzi 5.1 pro Linux funkční na počítačích Superpočítačového centra dokumentace a příklady dostupné na počítači aisa file://afs/ics.muni.cz/software/ilog/i386_linux2/solver51/ Programování s omezujícími podmínkami I, 25. září 2003 8 Organizace předmětu
Programování s omezujícími podmínkami: Úvod
Programování s omezujícími podmínkami Constraint programming (CP) Alternativní přístup k programování Kombinace uvažování a počítaní Omezení/omezující podmínka/podmínka na množině proměnných: relace na doménách proměnných Problém splňování podmínek (Constraint satisfaction problem CSP): konečná množina omezení Programování s omezujícími podmínkami I, 25. září 2003 10 Úvod
Programování s omezujícími podmínkami Constraint programming (CP) Alternativní přístup k programování Kombinace uvažování a počítaní Omezení/omezující podmínka/podmínka na množině proměnných: relace na doménách proměnných Problém splňování podmínek (Constraint satisfaction problem CSP): konečná množina omezení Řešení CSP nalezení hodnot z domén proměnných tak, aby všechny relace platily určení, zda má řešení (je konzistentní) nalezení jednoho (nebo všech) řešení nalezení jednoho (nebo všech) optimálního řešení Programování s omezujícími podmínkami I, 25. září 2003 10 Úvod
Přístup CP k programování Formulace daného problému pomocí omezení: modelování Řešení vybrané reprezentace pomocí doménově specifických metod obecných metod Programování s omezujícími podmínkami I, 25. září 2003 11 Úvod
Obecné metody Algoritmy propagace omezení zjednodušují problém udržují ekvivalenci mezi původním a zjednodušeným problémem umožňují odstranit nekonzistentní hodnoty z domén proměnných pro výpočet lokální konzistence aproximují tak globální konzistenci Programování s omezujícími podmínkami I, 25. září 2003 12 Úvod
Obecné metody Algoritmy propagace omezení zjednodušují problém udržují ekvivalenci mezi původním a zjednodušeným problémem umožňují odstranit nekonzistentní hodnoty z domén proměnných pro výpočet lokální konzistence aproximují tak globální konzistenci Prohledávací algoritmy prohledávání stavového prostoru řešení příklady: backtracking, metoda větví a mezí Programování s omezujícími podmínkami I, 25. září 2003 12 Úvod
Doménově specifické metody Specializované algoritmy Nazývány řešiče omezení (constraint solvers) Příklady: program pro řešení systému lineárních rovnic knihovny pro lineární programování implementace unifikačního algoritmu Programování s omezujícími podmínkami I, 25. září 2003 13 Úvod
Doménově specifické metody Specializované algoritmy Nazývány řešiče omezení (constraint solvers) Příklady: program pro řešení systému lineárních rovnic knihovny pro lineární programování implementace unifikačního algoritmu Programování s omezujícími podmínkami široký pojem zahrnující řadu oblastí Lineární Algebra, Globální Optimalizace, Lineární a Celočíselné Programování,... Existence doménově specifických metod = použití místo obecných metod hledání doménově specifických metod tak, aby mohly být použity místo obecných metod Programování s omezujícími podmínkami I, 25. září 2003 13 Úvod
Shrnutí: základní charakteristiky CP Dvoufázový programovací proces: generování reprezentace problému jako CSP řešení CSP Flexibilní reprezentace: omezení mohou být přidáná, odebrána, modifikována Podpora ve formě vestavěných nástrojů: řešiče omezení algoritmy propagace omezení prohledávací metody Programování s omezujícími podmínkami I, 25. září 2003 14 Úvod
Historie 1963 interaktivní grafika (Sutherland: Sketchpad) 1970 sít omezení (Montanari) 1977 algoritmy pro sítě omezení (Mackworth) Polovina 80. let: logické programování omezujícími podmínkami 1984 ECL i PS e Prolog, ECRC Mnichov, později IC-PARC Londýn 1985 SICStus Prolog, Swedish Institute of Computer Science (SICS) 1987 ILOG, komerční firma, C++ implementace Od 1990: komerční využití Už v roce 1996: výnos řádově stovky milionů dolarů Programování s omezujícími podmínkami I, 25. září 2003 15 Úvod
Interaktivní grafické systémy: Příklady použití vyjádření geometrických vztahů v případě analýzy scény Operační výzkum: barvení grafu, rozvrhování s disjunktivními podmínkami, umístění skladů Molekulární biologie: DNA sekvencování, konstrukce 3D modelů proteinů Elektrotechnika: detekce chyb v el.obvodech, výpočet návrhu obvodu, testování a verifikace návrhu Zpracování přirozeného jazyka: konstrukce efektivních parserů Numerické výpočty: řešení polynomiálních omezení s danou přesností Doprava (British Airways, Lufthansa) automobilový průmysl (Renault, Ford), elektronika (IBM, Alcatel), telekomunikace (France Telecom, AT&T), potravinový průmysl (Uncle Ben s), veřejný sektor (NASA) Programování s omezujícími podmínkami I, 25. září 2003 16 Úvod
CSP: příklady a modelování Formální definice problému splňování podmínek (CSP) 1. problém řešitelnosti 2. optimalizační problém Modelování: reprezentace problému jako CSP existence různých přirozených reprezentací některé reprezentace jsou přirozené, jiné netriviální některé reprezentace založeny na teoretických základech Obecnost pojmu CSP Další příklady: http://homepages.cwi.nl/~apt/pcp/ Programování s omezujícími podmínkami I, 25. září 2003 17 Úvod
Dána Problém splňování podmínek (CSP) množina (doménových) proměnných Y = {y 1,..., y k } konečná množina hodnot (doména) D = {D 1,..., D k } Omezení c na Y je podmnožina D 1... D k omezuje hodnoty, kterých mohou proměnné nabývat současně Programování s omezujícími podmínkami I, 25. září 2003 18 Úvod
Dána Problém splňování podmínek (CSP) množina (doménových) proměnných Y = {y 1,..., y k } konečná množina hodnot (doména) D = {D 1,..., D k } Omezení c na Y je podmnožina D 1... D k omezuje hodnoty, kterých mohou proměnné nabývat současně Dána konečná množina proměnných X = {x 1,..., x n } konečná množina hodnot (doména) D = {D 1,..., D n } konečná množina omezení C = {c 1,..., c m } omezení je definováno na podmnožině X Problém splňování podmínek je trojice (X, D, C) Programování s omezujícími podmínkami I, 25. září 2003 18 Úvod
Dána Problém splňování podmínek (CSP) množina (doménových) proměnných Y = {y 1,..., y k } konečná množina hodnot (doména) D = {D 1,..., D k } Omezení c na Y je podmnožina D 1... D k omezuje hodnoty, kterých mohou proměnné nabývat současně Dána konečná množina proměnných X = {x 1,..., x n } konečná množina hodnot (doména) D = {D 1,..., D n } konečná množina omezení C = {c 1,..., c m } omezení je definováno na podmnožině X Problém splňování podmínek je trojice (X, D, C) (d 1,..., d n ) D 1... D n je řešení (X, D, C) pro každé c i C na x i1,... x ik platí (d i1,... d ik ) c i (říkáme, že omezení je c i splněno) Programování s omezujícími podmínkami I, 25. září 2003 18 Úvod
Algebrogram Přiřad 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 S a M nejsou 0 Programování s omezujícími podmínkami I, 25. září 2003 19 Úvod
Algebrogram Přiřad 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 S a M nejsou 0 Jediné řešení: 9567 + 1085 10652 Programování s omezujícími podmínkami I, 25. září 2003 19 Úvod
Algebrogram Přiřad 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 S a M nejsou 0 Jediné řešení: 9567 + 1085 10652 Proměnné: S,E,N,D,M,O,R,Y Domény: [1..9] pro S,M [0..9] pro E,N,D,O,R,Y Programování s omezujícími podmínkami I, 25. září 2003 19 Úvod
Algebrogram: alternativy pro omezení rovnosti 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 Programování s omezujícími podmínkami I, 25. září 2003 20 Úvod
Algebrogram: alternativy pro omezení rovnosti 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í přenosový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 Programování s omezujícími podmínkami I, 25. září 2003 20 Úvod
Algebrogram: alternativy pro omezení nerovnosti 28 omezení nerovnosti: X Y pro X,Y {S,E,N,D,M,O,R,Y}, X Y Programování s omezujícími podmínkami I, 25. září 2003 21 Úvod
Algebrogram: alternativy pro omezení nerovnosti 28 omezení nerovnosti: X Y pro X,Y {S,E,N,D,M,O,R,Y}, X Y 1 omezení pro nerovnost pro proměnné x 1,..., x n s doménami D 1,..., D n : all_different (x 1,..., x n ) := {(d 1,..., d n ) d i d j pro i j} použití: all_different(s,e,n,d,m,o,r,y) Programování s omezujícími podmínkami I, 25. září 2003 21 Úvod
Algebrogram: alternativy pro omezení nerovnosti 28 omezení nerovnosti: X Y pro X,Y {S,E,N,D,M,O,R,Y}, X Y 1 omezení pro nerovnost pro proměnné x 1,..., x n s doménami D 1,..., D n : all_different (x 1,..., x n ) := {(d 1,..., d n ) d i d j pro i j} použití: all_different(s,e,n,d,m,o,r,y) Modelování jako problém Celočíselného Programování pro X,Y {S,E,N,D,M,O,R,Y} definuj Z X,Y [0..1] a transformuj X Y na omezení X-Y 10-11 Z X,Y Y-X 11 Z X,Y - 1 Programování s omezujícími podmínkami I, 25. září 2003 21 Úvod
Algebrogram: alternativy pro omezení nerovnosti 28 omezení nerovnosti: X Y pro X,Y {S,E,N,D,M,O,R,Y}, X Y 1 omezení pro nerovnost pro proměnné x 1,..., x n s doménami D 1,..., D n : all_different (x 1,..., x n ) := {(d 1,..., d n ) d i d j pro i j} použití: all_different(s,e,n,d,m,o,r,y) Modelování jako problém Celočíselného Programování pro X,Y {S,E,N,D,M,O,R,Y} definuj Z X,Y [0..1] a transformuj X Y na omezení X-Y 10-11 Z X,Y Y-X 11 Z X,Y - 1 X Y = X<Y Y<X = X-Y -1 Y-X -1 = (X-Y 10-11 Z X,Y Z X,Y =1) (Y-X 11 Z X,Y -1 Z X,Y =0) Programování s omezujícími podmínkami I, 25. září 2003 21 Úvod
Algebrogram: alternativy pro omezení nerovnosti 28 omezení nerovnosti: X Y pro X,Y {S,E,N,D,M,O,R,Y}, X Y 1 omezení pro nerovnost pro proměnné x 1,..., x n s doménami D 1,..., D n : all_different (x 1,..., x n ) := {(d 1,..., d n ) d i d j pro i j} použití: all_different(s,e,n,d,m,o,r,y) Modelování jako problém Celočíselného Programování pro X,Y {S,E,N,D,M,O,R,Y} definuj Z X,Y [0..1] a transformuj X Y na omezení X-Y 10-11 Z X,Y Y-X 11 Z X,Y - 1 X Y = X<Y Y<X = X-Y -1 Y-X -1 = (X-Y 10-11 Z X,Y Z X,Y =1) (Y-X 11 Z X,Y -1 Z X,Y =0) nevýhoda: 28 nových proměnných! Programování s omezujícími podmínkami I, 25. září 2003 21 Úvod
N královen Umístěte n královen na n n šachovnici, tak aby na sebe navzájem neútočily. Programování s omezujícími podmínkami I, 25. září 2003 22 Úvod
N královen Umístěte n královen na n n šachovnici, tak aby na sebe navzájem neútočily. Proměnné: x 1,..., x n (každá proměnná pro jeden sloupec) Domény: [1..n] Programování s omezujícími podmínkami I, 25. září 2003 22 Úvod
N královen Umístěte n královen na n n šachovnici, tak aby na sebe navzájem neútočily. Proměnné: x 1,..., x n (každá proměnná pro jeden sloupec) Domény: [1..n] Omezení: pro i [1..(n 1)] a j [(i + 1)..n]: x i x j (řádky) Programování s omezujícími podmínkami I, 25. září 2003 22 Úvod
N královen Umístěte n královen na n n šachovnici, tak aby na sebe navzájem neútočily. Proměnné: x 1,..., x n (každá proměnná pro jeden sloupec) Domény: [1..n] Omezení: pro i [1..(n 1)] a j [(i + 1)..n]: x i x j (řádky) x i x j i j (jihozápadní-severovýchodní diagonála) x i x j j i (severozápadní-jihovýchodní diagonála) Programování s omezujícími podmínkami I, 25. září 2003 22 Úvod
N královen Umístěte n královen na n n šachovnici, tak aby na sebe navzájem neútočily. Proměnné: x 1,..., x n (každá proměnná pro jeden sloupec) Domény: [1..n] Omezení: pro i [1..(n 1)] a j [(i + 1)..n]: x i x j (řádky), tj. n(n 1) 2 omezení = all_different (x 1,..., x n ) x i x j i j (jihozápadní-severovýchodní diagonála) x i x j j i (severozápadní-jihovýchodní diagonála) Programování s omezujícími podmínkami I, 25. září 2003 22 Úvod
Analýza scény Jeden z prvních řešených CSP problémů z počátku 70. let 3-dimenzionální interpretace 2-dimenzionální kresby tvořené rovnými hranami Má daný 2-dimenzionální objekt 3-dimenzionální interpretaci? Programování s omezujícími podmínkami I, 25. září 2003 23 Úvod
Analýza scény: značky hrana: průnik dvou rovin, značka určuje relativní pozici rovin + značí konvexní hrany 270 0 rotace jedné roviny na druhou prostorem pozorovatele značí konkávní hrany 90 0 rotace jedné roviny na druhou prostorem pozorovatele a značí hraniční hrany tvořeny dvěma rovinami, jedna z nich je skrytá Programování s omezujícími podmínkami I, 25. září 2003 24 Úvod
Analýza scény: CSP problém Programování s omezujícími podmínkami I, 25. září 2003 25 Úvod
Analýza scény: CSP problém Proměnné: hrany, domény: {+,,, } Omezení: legální křižovatky 4 typy omezení: L,vidlicka,T,sipka Příklad: L := {(, ), (, ), (+, ), (, +), (, ), (, )} : hrana vedoucí do vrcholu : hrana vedoucí z vrcholu Programování s omezujícími podmínkami I, 25. září 2003 25 Úvod
Analýza scény: CSP problém Proměnné: hrany, domény: {+,,, } Omezení: legální křižovatky 4 typy omezení: L,vidlicka,T,sipka Příklad: L := {(, ), (, ), (+, ), (, +), (, ), (, )} : hrana vedoucí do vrcholu : hrana vedoucí z vrcholu Krychle jako CSP: sipka(ac,ae,ab), vidlicka(ba,bf,bd), L(CA,CD), sipka(dg,dc,db), L(EF,EA), sipka(fe,fg,fb), L(GD,GF) Programování s omezujícími podmínkami I, 25. září 2003 25 Úvod
Analýza scény: CSP problém (pokračování) Další nutné omezení hrana := {(+, +), (, ), (, ), (, )} pro každou hranu zachycuje komplementární charakter a Programování s omezujícími podmínkami I, 25. září 2003 26 Úvod
Analýza scény: CSP problém (pokračování) Další nutné omezení hrana := {(+, +), (, ), (, ), (, )} pro každou hranu zachycuje komplementární charakter a Krychle jako CSP: přidáme omezení hrana(ab,ba), hrana(ac,ca), hrana(cd,dc), hrana(bd,db), hrana(ae,ea), hrana(ef,fe), hrana(bf,fb), hrana(fg,gf), hrana(dg,gd) Programování s omezujícími podmínkami I, 25. září 2003 26 Úvod
Analýza scény: alternativní CSP problém Proměnné jako křižovatky proměnné typu L,vidlicka,T,sipka Doména proměnné odpovídá množině křižovatek dle typu proměnné Programování s omezujícími podmínkami I, 25. září 2003 27 Úvod
Analýza scény: alternativní CSP problém Proměnné jako křižovatky proměnné typu L,vidlicka,T,sipka Doména proměnné odpovídá množině křižovatek dle typu proměnné Omezení sousední křižovatky sdílí hrany pro sousední křižovatky lze použít pouze některé kombinace hran Programování s omezujícími podmínkami I, 25. září 2003 27 Úvod