Hranová konzistence. Arc consistency AC. Nejprve se zabýváme binárními CSP. podmínka odpovídá hraně v grafu podmínek



Podobné dokumenty
Programování. s omezujícími podmínkami. Roman Barták. rová hranová konzistence

Programování. s omezujícími podmínkami. Roman Barták. roman.bartak@mff.cuni.cz

Optimalizace & soft omezení: algoritmy

Automatizované řešení úloh s omezeními

TGH09 - Barvení grafů

5 Orientované grafy, Toky v sítích

TGH06 - Hledání nejkratší cesty

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

TGH06 - Hledání nejkratší cesty

FIT ČVUT MI-LOM Lineární optimalizace a metody. Dualita. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Kapitola 11. Vzdálenost v grafech Matice sousednosti a počty sledů

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2

NPRG030 Programování I, 2018/19 1 / :03:07

Umělá inteligence I. Roman Barták, KTIML.

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C

PROBLÉM ČTYŘ BAREV. Lze obarvit jakoukoliv mapu v rovině čtyřmi barvami tak, aby žádné dvě sousedící oblasti neměly stejnou barvu?

Hledání v textu algoritmem Boyer Moore

Dijkstrův algoritmus

Grafové algoritmy. Programovací techniky

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

Úvod do teorie grafů

VYSOKÁ ŠKOLA EKONOMICKÁ V PRAZE. Optimalizace trasy při revizích elektrospotřebičů

fakulty MENDELU v Brně (LDF) s ohledem na disciplíny společného základu (reg. č. CZ.1.07/2.2.00/28.

GRAFY A GRAFOVÉ ALGORITMY

8 Přednáška z

Grafové algoritmy. Programovací techniky

PŘEDNÁŠKA 7 Kongruence svazů

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.

Teoretická informatika Tomáš Foltýnek Barvení grafů Platónská tělesa

Stromy, haldy, prioritní fronty

Vrcholová barevnost grafu

LDF MENDELU. Simona Fišnarová (MENDELU) Základy lineárního programování VMAT, IMT 1 / 25

Prohledávání do šířky = algoritmus vlny

Schéma identifikační procedury

Konstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i,

Činnost: 1) Vyhodnotí se výraz E. 2) Jeho hodnota se uloží do proměnné V.

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr

Paralelní grafové algoritmy

Dynamické programování

Jak oslabit PC, aby algoritmus: neměl paměťové nároky PC, povede k vyřazení hodnoty z domény proměnné! e f. e f. a b. a b. byl silnější než AC?

Zjednodušení generativního systému redukcí rozlišení

Hledáme efektivní řešení úloh na grafu

Kombinatorika, výpočty

Stromové rozklady. Definice 1. Stromový rozklad grafu G je dvojice (T, β) taková, že T je strom,

Učební texty k státní bakalářské zkoušce Matematika Základy lineárního programování. študenti MFF 15. augusta 2008

u odpovědí typu A, B, C, D, E: Obsah: jako 0) CLP Constraint Logic Programming

Základní datové struktury III: Stromy, haldy

Jan Pavĺık. FSI VUT v Brně

zejména Dijkstrův algoritmus pro hledání minimální cesty a hladový algoritmus pro hledání minimální kostry.

CLP(F D) program. Základní struktura CLP programu solve( Variables ) :- 1. definice proměnných a jejich domén declare_variables( Variables),

Programovací jazyk Pascal

Principy indukce a rekursivní algoritmy

4 Stromy a les. Definice a základní vlastnosti stromů. Kostry grafů a jejich počet.

PŘEDNÁŠKA 2 POSLOUPNOSTI

Dynamické datové struktury III.

SEMESTRÁLNÍ ÚLOHY S PROGRAMY V PROLOGU (zadání úloh)

Kapitola 7: Návrh relačních databází. Nástrahy relačního návrhu. Příklad. Rozklad (dekompozice)

Rekurze. Pavel Töpfer, 2017 Programování 1-8 1

Základy informatiky. Teorie grafů. Zpracoval: Pavel Děrgel Úprava: Daniela Szturcová

Algoritmus pro hledání nejkratší cesty orientovaným grafem

Optimalizace. Obsah přednášky. DÚ LP - Okružní problém. Lineární optimalizace. DÚ LP - Okružní problém. DÚ LP - Okružní problém

Kapitola 6: Omezení integrity. Omezení domény

Databázové systémy. * relační kalkuly. Tomáš Skopal. - relační model

Ukážeme si lineární algoritmus, který pro pevné k rozhodne, zda vstupní. stromový rozklad. Poznamenejme, že je-li k součástí vstupu, pak rozhodnout

Hypergrafové removal lemma a Szemérediho

Vzdálenost uzlů v neorientovaném grafu

Výpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory

Plánováníá a rozvrhování

4EK213 LINEÁRNÍ MODELY

Binární vyhledávací stromy pokročilé partie

Úloha ve stavovém prostoru SP je <s 0, C>, kde s 0 je počáteční stav C je množina požadovaných cílových stavů

TGH05 - aplikace DFS, průchod do šířky

68. ročník Matematické olympiády 2018/2019

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Úvod do vybíravosti grafů, Nullstellensatz, polynomiální metoda

Aproximativní algoritmy UIN009 Efektivní algoritmy 1

Databázové systémy Tomáš Skopal

Návody k domácí části I. kola kategorie B

ROZHODOVACÍ PROCEDURY A VERIFIKACE PAVEL SURYNEK, KTIML

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

TÉMATICKÝ OKRUH TZD, DIS a TIS

Úvod do programování

Plánování v prostoru plánů

Dynamické programování

1. přednáška 1. října Kapitola 1. Metrické prostory.

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11

Součin matice A a čísla α definujeme jako matici αa = (d ij ) typu m n, kde d ij = αa ij pro libovolné indexy i, j.

Tento text je stručným shrnutím těch tvrzení Ramseyovy teorie, která zazněla

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008.

Programování. s omezujícími podmínkami. SAT a lokáln. Algoritmus GSAT. Algoritmus GSAT. Roman Barták

Diskrétní matematika. DiM /01, zimní semestr 2018/2019

TGH05 - aplikace DFS, průchod do šířky

Lineární algebra : Násobení matic a inverzní matice

Použití dalších heuristik

Pracovní listy - programování (algoritmy v jazyce Visual Basic) Algoritmus

TOKY V SÍTÍCH II. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

i=1 Přímka a úsečka. Body, které leží na přímce procházející body a a b můžeme zapsat pomocí parametrické rovnice

1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1

Marie Duží

Obsah: CLP Constraint Logic Programming. u odpovědí typu A, B, C, D, E: jako 0)

Transkript:

Hranová konzistence Arc consistency AC Nejprve se zabýváme binárními CSP podmínka odpovídá hraně v grafu podmínek Hrana (V i, V j ) je hranově konzistentní, právě když pro každou hodnotu x z aktuální domény D i existuje hodnota y v D j tak, že ohodnocení [V i = x, V j = y] splňuje všechny binární podmínky nad V i, V j. Programování s omezujícími podmínkami I, 9. října 2003 1 Propagace omezení

Hranová konzistence Arc consistency AC Nejprve se zabýváme binárními CSP podmínka odpovídá hraně v grafu podmínek Hrana (V i, V j ) je hranově konzistentní, právě když pro každou hodnotu x z aktuální domény D i existuje hodnota y v D j tak, že ohodnocení [V i = x, V j = y] splňuje všechny binární podmínky nad V i, V j. Hranová konzistence je směrová konzistence hrany (V i, V j ) nezaručuje konzistenci hrany (V j, V i ) A 3..7 A<B 1..5 B A 3..4 A<B 1..5 B A 3..4 A<B 4..5 B konzistence (A,B) konzistence (A,B) i (B,A) Programování s omezujícími podmínkami I, 9. října 2003 1 Propagace omezení

Hranová konzistence Arc consistency AC Nejprve se zabýváme binárními CSP podmínka odpovídá hraně v grafu podmínek Hrana (V i, V j ) je hranově konzistentní, právě když pro každou hodnotu x z aktuální domény D i existuje hodnota y v D j tak, že ohodnocení [V i = x, V j = y] splňuje všechny binární podmínky nad V i, V j. Hranová konzistence je směrová konzistence hrany (V i, V j ) nezaručuje konzistenci hrany (V j, V i ) A 3..7 A<B 1..5 B A 3..4 A<B 1..5 B A 3..4 A<B 4..5 B konzistence (A,B) konzistence (A,B) i (B,A) CSP problém je hranově konzistentní, právě když jsou všechny jeho hrany (v obou směrech) hranově konzistentní. Programování s omezujícími podmínkami I, 9. října 2003 1 Propagace omezení

Algoritmus revize hrany Jak udělat hranu (V i, V j ) hranově konzistentní? Z domény D i vyřadím takové hodnoty x, které nejsou konzistentní s aktuální doménou D j (pro x neexistuje žádá hodnoty y v d j tak, aby ohodnocení V i = x a V j = y splňovalo všechny binární podmínky mezi V i a V j ) Programování s omezujícími podmínkami I, 9. října 2003 2 Propagace omezení

Algoritmus revize hrany Jak udělat hranu (V i, V j ) hranově konzistentní? Z domény D i vyřadím takové hodnoty x, které nejsou konzistentní s aktuální doménou D j (pro x neexistuje žádá hodnoty y v d j tak, aby ohodnocení V i = x a V j = y splňovalo všechny binární podmínky mezi V i a V j ) procedure revise((i, j)) Deleted := false for x D i do if neexistuje y D j then D i := D i {x} takové, že (x, y) je konzistentní Deleted := true domain([v 1, V 2 ],2,4), V 1 #< V 2 end if revise((1,2)) smaže 4 z D 1 return Deleted D 2 se nezmění end revise Programování s omezujícími podmínkami I, 9. října 2003 2 Propagace omezení

Algoritmus revize hrany Jak udělat hranu (V i, V j ) hranově konzistentní? Z domény D i vyřadím takové hodnoty x, které nejsou konzistentní s aktuální doménou D j (pro x neexistuje žádá hodnoty y v d j tak, aby ohodnocení V i = x a V j = y splňovalo všechny binární podmínky mezi V i a V j ) procedure revise((i, j)) Deleted := false for x D i do if neexistuje y D j then D i := D i {x} takové, že (x, y) je konzistentní Deleted := true domain([v 1, V 2 ],2,4), V 1 #< V 2 end if revise((1,2)) smaže 4 z D 1 return Deleted D 2 se nezmění end revise Složitost O(k 2 ) (k maximální velikost domény) = dva cykly: x D i a y D j Programování s omezujícími podmínkami I, 9. října 2003 2 Propagace omezení

Algoritmus AC-1 Jak udělat CSP hranově konzistentní? Provedeme revizi každé hrany Programování s omezujícími podmínkami I, 9. října 2003 3 Propagace omezení

Algoritmus AC-1 Jak udělat CSP hranově konzistentní? Provedeme revizi každé hrany Revize hrany zmenší doménu již zrevidované hrany opět nekonzistentní Programování s omezujícími podmínkami I, 9. října 2003 3 Propagace omezení

Algoritmus AC-1 Jak udělat CSP hranově konzistentní? Provedeme revizi každé hrany Revize hrany zmenší doménu již zrevidované hrany opět nekonzistentní A<B, B<C: (3..7,1..5,1..5) A<B B<C A B C Programování s omezujícími podmínkami I, 9. října 2003 3 Propagace omezení

Algoritmus AC-1 Jak udělat CSP hranově konzistentní? Provedeme revizi každé hrany Revize hrany zmenší doménu již zrevidované hrany opět nekonzistentní A A<B A<B, B<C: (3..7,1..5,1..5) AB B B<C C Programování s omezujícími podmínkami I, 9. října 2003 3 Propagace omezení

Algoritmus AC-1 Jak udělat CSP hranově konzistentní? Provedeme revizi každé hrany Revize hrany zmenší doménu již zrevidované hrany opět nekonzistentní A A<B B B<C A<B, B<C: (3..7,1..5,1..5) AB (3..4,1..5,1..5) BA C Programování s omezujícími podmínkami I, 9. října 2003 3 Propagace omezení

Algoritmus AC-1 Jak udělat CSP hranově konzistentní? Provedeme revizi každé hrany Revize hrany zmenší doménu již zrevidované hrany opět nekonzistentní A A<B B B<C A<B, B<C: (3..7,1..5,1..5) AB (3..4,1..5,1..5) BA (3..4,4..5,1..5) BC C Programování s omezujícími podmínkami I, 9. října 2003 3 Propagace omezení

Algoritmus AC-1 Jak udělat CSP hranově konzistentní? Provedeme revizi každé hrany Revize hrany zmenší doménu již zrevidované hrany opět nekonzistentní A A<B B B<C A<B, B<C: (3..7,1..5,1..5) AB (3..4,1..5,1..5) BA (3..4,4..5,1..5) BC (3..4,4,1..5) CB C Programování s omezujícími podmínkami I, 9. října 2003 3 Propagace omezení

Algoritmus AC-1 Jak udělat CSP hranově konzistentní? Provedeme revizi každé hrany Revize hrany zmenší doménu již zrevidované hrany opět nekonzistentní A A<B B B<C A<B, B<C: (3..7,1..5,1..5) AB (3..4,1..5,1..5) BA (3..4,4..5,1..5) BC (3..4,4,1..5) CB (3..4,4,5) AB C Programování s omezujícími podmínkami I, 9. října 2003 3 Propagace omezení

Algoritmus AC-1 Jak udělat CSP hranově konzistentní? Provedeme revizi každé hrany Revize hrany zmenší doménu již zrevidované hrany opět nekonzistentní A A<B B B<C A<B, B<C: (3..7,1..5,1..5) AB (3..4,1..5,1..5) BA (3..4,4..5,1..5) BC (3..4,4,1..5) CB (3..4,4,5) AB (3,4,5) C Programování s omezujícími podmínkami I, 9. října 2003 3 Propagace omezení

Algoritmus AC-1 Jak udělat CSP hranově konzistentní? Provedeme revizi každé hrany Revize hrany zmenší doménu již zrevidované hrany opět nekonzistentní A A<B B B<C A<B, B<C: (3..7,1..5,1..5) AB (3..4,1..5,1..5) BA (3..4,4..5,1..5) BC (3..4,4,1..5) CB (3..4,4,5) AB (3,4,5) C Revize hrany opakujeme, dokud dochází ke zmenšení nějaké domény procedure AC-1(G) repeat Changed := false for hranu (i, j) G do Changed := revise((i, j)) or Changed until not(changed) end AC-1 Programování s omezujícími podmínkami I, 9. října 2003 3 Propagace omezení

Algoritmus AC-1 Jak udělat CSP hranově konzistentní? Provedeme revizi každé hrany Revize hrany zmenší doménu již zrevidované hrany opět nekonzistentní A A<B B B<C A<B, B<C: (3..7,1..5,1..5) AB (3..4,1..5,1..5) BA (3..4,4..5,1..5) BC (3..4,4,1..5) CB (3..4,4,5) AB (3,4,5) C Revize hrany opakujeme, dokud dochází ke zmenšení nějaké domény procedure AC-1(G) repeat Changed := false for hranu (i, j) G do Changed := revise((i, j)) or Changed until not(changed) end AC-1 AB, BA, BC, CB, Programování s omezujícími podmínkami I, 9. října 2003 3 Propagace omezení

Algoritmus AC-1 Jak udělat CSP hranově konzistentní? Provedeme revizi každé hrany Revize hrany zmenší doménu již zrevidované hrany opět nekonzistentní A A<B B B<C A<B, B<C: (3..7,1..5,1..5) AB (3..4,1..5,1..5) BA (3..4,4..5,1..5) BC (3..4,4,1..5) CB (3..4,4,5) AB (3,4,5) C Revize hrany opakujeme, dokud dochází ke zmenšení nějaké domény procedure AC-1(G) repeat Changed := false for hranu (i, j) G do Changed := revise((i, j)) or Changed until not(changed) end AC-1 AB, BA, BC, CB, AB, BA, BC, CB, Programování s omezujícími podmínkami I, 9. října 2003 3 Propagace omezení

Algoritmus AC-1 Jak udělat CSP hranově konzistentní? Provedeme revizi každé hrany Revize hrany zmenší doménu již zrevidované hrany opět nekonzistentní A A<B B B<C A<B, B<C: (3..7,1..5,1..5) AB (3..4,1..5,1..5) BA (3..4,4..5,1..5) BC (3..4,4,1..5) CB (3..4,4,5) AB (3,4,5) C Revize hrany opakujeme, dokud dochází ke zmenšení nějaké domény procedure AC-1(G) repeat Changed := false for hranu (i, j) G do Changed := revise((i, j)) or Changed until not(changed) end AC-1 AB, BA, BC, CB, AB, BA, BC, CB, AB, BA, BC, CB Programování s omezujícími podmínkami I, 9. října 2003 3 Propagace omezení

Algoritmus AC-3 opakování revizí můžeme dělat pomocí fronty stačí jediná fronta hran, které je potřeba (znova) zrevidovat do fronty přidáváme jen hrany, jejichž konzistence mohla být narušena zmenšením domény V k V m Programování s omezujícími podmínkami I, 9. října 2003 4 Propagace omezení

Algoritmus AC-3 opakování revizí můžeme dělat pomocí fronty stačí jediná fronta hran, které je potřeba (znova) zrevidovat do fronty přidáváme jen hrany, jejichž konzistence mohla být narušena zmenšením domény procedure AC-3(G) Q := {(i, j) (i, j) hrany(g), i j} while Q non empty do vyber a smaž (k, m) z Q if revise((k, m)) then V k V m Q := Q {(i, k) hrany(g), i k, i m} end while end AC-3 // seznam hran pro revizi Programování s omezujícími podmínkami I, 9. října 2003 4 Propagace omezení

Algoritmus AC-3 opakování revizí můžeme dělat pomocí fronty stačí jediná fronta hran, které je potřeba (znova) zrevidovat do fronty přidáváme jen hrany, jejichž konzistence mohla být narušena zmenšením domény procedure AC-3(G) Q := {(i, j) (i, j) hrany(g), i j} while Q non empty do vyber a smaž (k, m) z Q if revise((k, m)) then end while end AC-3 V k V m Q := Q {(i, k) hrany(g), i k, i m} A<B B<C A B C // seznam hran pro revizi AB, BA, BC, CB, AB Programování s omezujícími podmínkami I, 9. října 2003 4 Propagace omezení

Algoritmus AC-3 opakování revizí můžeme dělat pomocí fronty stačí jediná fronta hran, které je potřeba (znova) zrevidovat do fronty přidáváme jen hrany, jejichž konzistence mohla být narušena zmenšením domény procedure AC-3(G) Q := {(i, j) (i, j) hrany(g), i j} while Q non empty do vyber a smaž (k, m) z Q if revise((k, m)) then end while end AC-3 V k V m Q := Q {(i, k) hrany(g), i k, i m} A<B B<C A B C // seznam hran pro revizi technika AC-3 je dnes asi nejpoužívánější, ale stále není optimální AB, BA, BC, CB, AB Programování s omezujícími podmínkami I, 9. října 2003 4 Propagace omezení

Algoritmus AC-3 opakování revizí můžeme dělat pomocí fronty stačí jediná fronta hran, které je potřeba (znova) zrevidovat do fronty přidáváme jen hrany, jejichž konzistence mohla být narušena zmenšením domény procedure AC-3(G) Q := {(i, j) (i, j) hrany(g), i j} while Q non empty do vyber a smaž (k, m) z Q if revise((k, m)) then end while end AC-3 V k V m Q := Q {(i, k) hrany(g), i k, i m} A<B B<C A B C // seznam hran pro revizi technika AC-3 je dnes asi nejpoužívánější, ale stále není optimální AB, BA, BC, CB, AB Jaké budou domény A,B,C po AC-3 pro: domain([a,b,c],1,10), A #= B + 1, C #< B Programování s omezujícími podmínkami I, 9. října 2003 4 Propagace omezení

Konzistence po cestě (PC path consistency) Jak posílit konzistenci? Budeme se zabývat několika podmínkami najednou. Příklad: A,B,C {0,1}, A B, B C, A C Cesta (V 0, V 1,..., V m ) je konzistentní právě tehdy, když pro každou dvojici hodnot x D 0 a y D m splňující binární podmínky na hraně V 0, V m existuje ohodnocení proměnných V 1,... V m 1 takové, že všechny binární podmínky mezi sousedy V j, V j+1 jsou splněny CSP je konzistentní po cestě, právě když jsou všechny cesty konzistentní Programování s omezujícími podmínkami I, 9. října 2003 5 Propagace omezení

Konzistence po cestě (PC path consistency) Jak posílit konzistenci? Budeme se zabývat několika podmínkami najednou. Příklad: A,B,C {0,1}, A B, B C, A C Cesta (V 0, V 1,..., V m ) je konzistentní právě tehdy, když pro každou dvojici hodnot x D 0 a y D m splňující binární podmínky na hraně V 0, V m existuje ohodnocení proměnných V 1,... V m 1 takové, že všechny binární podmínky mezi sousedy V j, V j+1 jsou splněny CSP je konzistentní po cestě, právě když jsou všechny cesty konzistentní Definice PC nezaručuje, že jsou splněny všechny podmínky nad vrcholy cesty, zabývá se pouze podmínkami mezi sousedy V 0 V 2 V 4 V 1??? V 3 Programování s omezujícími podmínkami I, 9. října 2003 5 Propagace omezení

PC a cesty délky 2 Zjišt ování konzistence všech cest není efektivní Stačí ověřit konzistenci cest délky 2 Věta: CSP je PC právě tehdy, když každá cesta délky 2 je PC. Programování s omezujícími podmínkami I, 9. října 2003 6 Propagace omezení

PC a cesty délky 2 Zjišt ování konzistence všech cest není efektivní Stačí ověřit konzistenci cest délky 2 Věta: CSP je PC právě 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 n cesty délky n jsou PC PC indukcí podle délky cesty a) n = 2 platí triviálně b) n + 1 (za předpokladu, že platí pro n) i) vezmeme libovolných n + 1 vrcholů V 0, V 1,..., V n ii) vezmeme libovolné dvě kompatibilní hodnoty x 0 D 0 a x n D n iii) podle a) najdeme x n 1 D n 1 tak, že (x 0, x n 1 ) a (x n 1, x n ) platí iv) podle indukčního kroku najdeme zbylé hodnoty na cestě V 0, V 1,..., V n 1 Programování s omezujícími podmínkami I, 9. října 2003 6 Propagace omezení

Vztah PC a AC PC AC hrana (i, j) je hranově konzistentní, pokud je (i, j, i) konzistentní po cestě Programování s omezujícími podmínkami I, 9. října 2003 7 Propagace omezení

Vztah PC a AC PC AC hrana (i, j) je hranově konzistentní, pokud je (i, j, i) konzistentní po cestě AC PC příklad: A,B,C {0,1}, A B, B C, A C je AC, ale není PC, A=1, B=2 nelze rozšířít po cestě (A,C,B) Programování s omezujícími podmínkami I, 9. října 2003 7 Propagace omezení

Vztah PC a AC PC AC hrana (i, j) je hranově konzistentní, pokud je (i, j, i) konzistentní po cestě AC PC příklad: A,B,C {0,1}, A B, B C, A C je AC, ale není PC, A=1, B=2 nelze rozšířít po cestě (A,C,B) AC vyřazuje nekompatibilní prvky z domény proměnných. Co dělá PC? PC vyřazuje dvojice hodnot PC si pamatuje podmínky explicitně PC si pamatuje, které dvojice hodnot jsou v relaci PC dělá všechny relace implicitní (A<B,B<C A+1<C) Programování s omezujícími podmínkami I, 9. října 2003 7 Propagace omezení

Příklad: barvení grafu Nalezněte obarvení vrcholů grafu, aby sousední vrcholy neměly stejnou barvu. Programování s omezujícími podmínkami I, 9. října 2003 8 Propagace omezení

Příklad: barvení grafu Nalezněte obarvení vrcholů grafu, aby sousední vrcholy neměly stejnou barvu. není PC konzistentní lze přiřadit x 1 = r, x 3 = b je PC konzistentní Programování s omezujícími podmínkami I, 9. října 2003 8 Propagace omezení

Algoritmus revize cesty Jak udělat každou cestu z V i do V j přes V m konzistentní? Pro dvojici proměnných V i a V j aktualizuji prvky relace R ij Vyřadím dvojici (a, b) z R ij, pokud neexistuje taková hodnota c V m, že (a, c) je kozistentní pro R im a (c, b) je kozistentní pro R mj Programování s omezujícími podmínkami I, 9. října 2003 9 Propagace omezení

Algoritmus revize cesty Jak udělat každou cestu z V i do V j přes V m konzistentní? Pro dvojici proměnných V i a V j aktualizuji prvky relace R ij Vyřadím dvojici (a, b) z R ij, pokud neexistuje taková hodnota c V m, že (a, c) je kozistentní pro R im a (c, b) je kozistentní pro R mj procedure revise-3((i, j), m) Deleted := false for (a, b) R ij do if neexistuje c D j takové, že (a, c) R im a (c, b) R mj then smaž (a, b) z R ij Deleted := true return Deleted V 1, V 2 {a, b}, V 3 {a, b, c}, V 1 V 2, V 2 V 3, V 1 V 3 end revise-3 revise-3((1, 3), 2) Programování s omezujícími podmínkami I, 9. října 2003 9 Propagace omezení

Algoritmus revize cesty Jak udělat každou cestu z V i do V j přes V m konzistentní? Pro dvojici proměnných V i a V j aktualizuji prvky relace R ij Vyřadím dvojici (a, b) z R ij, pokud neexistuje taková hodnota c V m, že (a, c) je kozistentní pro R im a (c, b) je kozistentní pro R mj procedure revise-3((i, j), m) Deleted := false for (a, b) R ij do if neexistuje c D j takové, že (a, c) R im a (c, b) R mj then smaž (a, b) z R ij Deleted := true return Deleted V 1, V 2 {a, b}, V 3 {a, b, c}, V 1 V 2, V 2 V 3, V 1 V 3 end revise-3 revise-3((1, 3), 2) Složitost O(k 3 ) (k maximální velikost domény) = cyklus pro každou dvojici (a, b): O(k 2 ), vnitřní cyklus přes c D j : O(k) Programování s omezujícími podmínkami I, 9. října 2003 9 Propagace omezení

Algoritmus PC-1 Jak udělat CSP konzistentní po cestě? Provedeme revizi každé cesty délky 2 Revize cesty odstraní dvojice již zrevidované cesty opět nekonzistentní Revize cesty opakujeme dokud jsou nějaké dvojice smazány Princip je podobný jako u AC-1 procedure 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, j), m) or Changed until not(changed) end PC-1 Programování s omezujícími podmínkami I, 9. října 2003 10 Propagace omezení

Složitost algoritmu PC-1 Celková složitost O(n 5 k 5 ) odvození podobné jako pro AC-1 3 cykly pro trojice hodnot O(n 3 ) revise-3 O(k 3 ) O(n 2 k 2 ) počet opakování repeat cyklu jeden cyklus smaže (v nejhorším případě) právě jednu dvojici hodnot celkem n 2 k 2 hodnot (n 2 dvojic proměnných, k 2 dvojic hodnot pro každou dvojici proměnných) Programování s omezujícími podmínkami I, 9. října 2003 11 Propagace omezení

Složitost algoritmu PC-1 Celková složitost O(n 5 k 5 ) odvození podobné jako pro AC-1 3 cykly pro trojice hodnot O(n 3 ) revise-3 O(k 3 ) O(n 2 k 2 ) počet opakování repeat cyklu jeden cyklus smaže (v nejhorším případě) právě jednu dvojici hodnot celkem n 2 k 2 hodnot (n 2 dvojic proměnných, k 2 dvojic hodnot pro každou dvojici proměnných) Neefektivita PC-1 opakovaná revize všech cest, i když pro ně nedošlo k žádné změně při revizi stačí kontrolovat jen zasažené cesty podobně jako pro PC-1 Programování s omezujícími podmínkami I, 9. října 2003 11 Propagace omezení

Složitost algoritmu PC-1 Celková složitost O(n 5 k 5 ) odvození podobné jako pro AC-1 3 cykly pro trojice hodnot O(n 3 ) revise-3 O(k 3 ) O(n 2 k 2 ) počet opakování repeat cyklu jeden cyklus smaže (v nejhorším případě) právě jednu dvojici hodnot celkem n 2 k 2 hodnot (n 2 dvojic proměnných, k 2 dvojic hodnot pro každou dvojici proměnných) Neefektivita PC-1 opakovaná revize všech cest, i když pro ně nedošlo k žádné změně při revizi stačí kontrolovat jen zasažené cesty podobně jako pro PC-1 cesty stačí brát pouze s jednou orientací... R ij je totéž co R ji příklad: V 1, V 2 {a, b}, V 3 {a, b, c}, V 1 V 2, V 2 V, 3 V 1 V 3 důsledek revise-3((1, 3), 2) a revise-3((3, 1), 2)? Programování s omezujícími podmínkami I, 9. října 2003 11 Propagace omezení

Algoritmus PC-2 Cesty beru pouze s jednou orientací aktualizuji pouze jednu z R ij, R ji Do fronty dávám pouze zasažené cesty podobná modifikace jako AC-3 revise-3((i, j), m) mění R ij, stačí tedy aktualizovat R lj a R li Programování s omezujícími podmínkami I, 9. října 2003 12 Propagace omezení

Algoritmus PC-2 Cesty beru pouze s jednou orientací aktualizuji pouze jednu z R ij, R ji Do fronty dávám pouze zasažené cesty podobná modifikace jako AC-3 revise-3((i, j), m) mění R ij, stačí tedy aktualizovat R lj a R li procedure 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, j), m) then Q := Q {(l, i, j)(l, j, i) 1 l n, l i, l j} end while end PC-2 Programování s omezujícími podmínkami I, 9. října 2003 12 Propagace omezení

Složitost algoritmu PC-2 Složitost O(n 3 k 5 ) každé (i, m, j) může být ve frontě maximálně k 2 krát = O(k 2 ) když je (i, m, j) přidáno do fronty, R ij bylo redukováno alespoň o jednu hodnotu celkem n 3 trojic (i, m, j) = O(n 3 ) revise-3 O(k 3 ) Programování s omezujícími podmínkami I, 9. října 2003 13 Propagace omezení

Složitost algoritmu PC-2 Složitost O(n 3 k 5 ) každé (i, m, j) může být ve frontě maximálně k 2 krát = O(k 2 ) když je (i, m, j) přidáno do fronty, R ij bylo redukováno alespoň o jednu hodnotu celkem n 3 trojic (i, m, j) = O(n 3 ) revise-3 O(k 3 ) Algoritmus není optimální podobně jako AC-3 existuje algoritmus PC-4 založen na počítání podpor složitost PC-4 je O(n 3 k 3 ), tj. optimální Programování s omezujícími podmínkami I, 9. října 2003 13 Propagace omezení

Na půli cesty od AC k PC Jak oslabit PC, aby algoritmus: neměl pamět ové nároky PC neměnil graf podmínek byl silnější než AC? Programování s omezujícími podmínkami I, 9. října 2003 14 Propagace omezení

Na půli cesty od AC k PC Jak oslabit PC, aby algoritmus: neměl pamět ové nároky PC neměnil graf podmínek byl silnější než AC? Omezená konzistence po cestě testujeme PC jen v případě, když je šance, že to povede k vyřazení hodnoty z domény proměnné Příklad: V 1, V 2 {a, b}, V 3 {a, b, c}, V 1 V 2, V 2 V 3, V 1 V 3 je AC ale není PC RPC odstraní z domény V 3 hodnoty a, b Programování s omezujícími podmínkami I, 9. října 2003 14 Propagace omezení

Omezená konzistence po cestě PC hrany se testuje pouze tehdy, pokud vyřazení dvojice může vést k vyřazení některého z prvků z domény příslušné proměnné Jak to poznáme? Jedná se o jedinou vzájemnou podporu Proměnná V i je omezeně konzistentní po cestě (restricted path consistent): každá hrana vedoucí z V i je hranově konzistentní pro každé a D i platí: je-li b jediná podpora a ve vrcholu j, potom v každém vrcholu k (spojenem s i a j) existuje hodnota c tak, že (a, c) a (b, c) jsou kompatibilní s příslušnými podmínkami Algoritmus: založen na AC-4 + seznam cest pro PC (viz Barták přednáška) Programování s omezujícími podmínkami I, 9. října 2003 15 Propagace omezení

k-konzistence mají AC a PC něco společného? AC: rozšiřujeme jednu hodnotu do druhé proměnné PC: rozšířujeme dvojici hodnot do třetí proměnné... můžeme pokračovat Programování s omezujícími podmínkami I, 9. října 2003 16 Propagace omezení

k-konzistence mají AC a PC něco společného? AC: rozšiřujeme jednu hodnotu do druhé proměnné PC: rozšířujeme dvojici hodnot do třetí proměnné... můžeme pokračovat CSP je k-konzistentní právě tehdy, když můžeme libovolné konzistentní ohodnocení (k-1) různých proměnných rozšířit do libovolné k-té proměnné Programování s omezujícími podmínkami I, 9. října 2003 16 Propagace omezení

k-konzistence mají AC a PC něco společného? AC: rozšiřujeme jednu hodnotu do druhé proměnné PC: rozšířujeme dvojici hodnot do třetí proměnné... můžeme pokračovat CSP je k-konzistentní právě tehdy, když můžeme libovolné konzistentní ohodnocení (k-1) různých proměnných rozšířit do libovolné k-té proměnné = 1,2,3 = 1,2,3 = 1,2,3 = 4 = 4-konzistentní graf Programování s omezujícími podmínkami I, 9. října 2003 16 Propagace omezení

Silná k-konzistence 3-konzistentní graf A 1,2 B C = 1,2 = 1,2,3 není 2-konzistentní = Programování s omezujícími podmínkami I, 9. října 2003 17 Propagace omezení

3-konzistentní graf Silná k-konzistence A 1,2 B C = 1,2 = 1,2,3 = není 2-konzistentní (1, 1) lze rozšířit na (1, 1, 1) (3) nelze rozšířit (2, 2) lze rozšířit na (2, 2, 2) (1, 3) ani (2, 3) nejsou konzistentní dvojice (nerozšiřujeme je) Programování s omezujícími podmínkami I, 9. října 2003 17 Propagace omezení

3-konzistentní graf Silná k-konzistence A 1,2 B C = 1,2 = 1,2,3 = není 2-konzistentní (1, 1) lze rozšířit na (1, 1, 1) (3) nelze rozšířit (2, 2) lze rozšířit na (2, 2, 2) (1, 3) ani (2, 3) nejsou konzistentní dvojice (nerozšiřujeme je) CSP je silně k-konzistentní právě tehdy, když je j-konzistentní pro každé j k Programování s omezujícími podmínkami I, 9. října 2003 17 Propagace omezení

3-konzistentní graf Silná k-konzistence A 1,2 B C = 1,2 = 1,2,3 = není 2-konzistentní (1, 1) lze rozšířit na (1, 1, 1) (3) nelze rozšířit (2, 2) lze rozšířit na (2, 2, 2) (1, 3) ani (2, 3) nejsou konzistentní dvojice (nerozšiřujeme je) CSP je silně k-konzistentní právě tehdy, když je j-konzistentní pro každé j k Silná k-konzistence k-konzistence Silná k-konzistence j-konzistence j k k-konzistence silná k-konzistence Programování s omezujícími podmínkami I, 9. října 2003 17 Propagace omezení

3-konzistentní graf Silná k-konzistence A 1,2 B C = 1,2 = 1,2,3 = není 2-konzistentní (1, 1) lze rozšířit na (1, 1, 1) (3) nelze rozšířit (2, 2) lze rozšířit na (2, 2, 2) (1, 3) ani (2, 3) nejsou konzistentní dvojice (nerozšiřujeme je) CSP je silně k-konzistentní právě tehdy, když je j-konzistentní pro každé j k Silná k-konzistence k-konzistence Silná k-konzistence j-konzistence j k k-konzistence silná k-konzistence NC = silná 1-konzistence = 1-konzistence AC = (silná) 2-konzistence PC = (silná) 3-konzistence Programování s omezujícími podmínkami I, 9. října 2003 17 Propagace 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í? silná n-konzistence je nutná pro graf s n vrcholy Programování s omezujícími podmínkami I, 9. října 2003 18 Propagace 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í? silná n-konzistence je nutná pro graf s n vrcholy n-konzistence nestačí (viz předchozí příklad) Programování s omezujícími podmínkami I, 9. října 2003 18 Propagace 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í? silná n-konzistence je nutná pro graf s n vrcholy n-konzistence nestačí (viz předchozí příklad) silná k-konzistence pro k<n také nestačí 1,2,...,n 1 = = = = 1,2,...,n 1 = = = = = 1,2,...,n 1 = 1,2,...,n 1 graf s n vrcholy domény 1..(n-1) Programování s omezujícími podmínkami I, 9. října 2003 18 Propagace 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í? silná n-konzistence je nutná pro graf s n vrcholy n-konzistence nestačí (viz předchozí příklad) silná k-konzistence pro k<n také nestačí 1,2,...,n 1 = = = = 1,2,...,n 1 = = = = = 1,2,...,n 1 = 1,2,...,n 1 graf s n vrcholy domény 1..(n-1) silně k-konzistentní pro každé k<n přesto nemá řešení Programování s omezujícími podmínkami I, 9. října 2003 18 Propagace omezení

Obecné algoritmy pro dosažení k-konzistence Rozšíření revize hrany a revize cesty postupně odstraňujeme prvky z relace nad (k-1) proměnnými Aktualizujeme relace nad každou (k-1)-ticí proměnných musíme si pamatovat (k-1)-tice hodnot Programování s omezujícími podmínkami I, 9. října 2003 19 Propagace omezení

Obecné algoritmy pro dosažení k-konzistence Rozšíření revize hrany a revize cesty postupně odstraňujeme prvky z relace nad (k-1) proměnnými Aktualizujeme relace nad každou (k-1)-ticí proměnných musíme si pamatovat (k-1)-tice hodnot Obecný algoritmus rozšíření AC-1 a PC-1 opakování revizí nad (k-1)-ticemi dokud dochází ke změnám Velká pamět ová i časová složitost v praxi se pro vyšší k nepoužívá Algoritmy i složitost viz Dechter: Constraint Processing Programování s omezujícími podmínkami I, 9. října 2003 19 Propagace omezení

Konzistence pro nebinární omezení

Pojmy a značení Rozsah omezení scope(c): množina proměnných, na kterých je C definováno k-tice t hodnot patřících do C: t C Proměnná x scope(c), k-tice t C: t[x] je hodnota proměnné x v t Příklad: A,B,C {0,1,2}, A<B Programování s omezujícími podmínkami I, 9. října 2003 21 Propagace omezení

Domain consistency Doménová konzistence zobecnění hranové konzistence, nazývána také generalized arc-consistency Hodnota a proměnné x scope(c) má doménovou podporu t v C, jestliže t C a platí a = t[x] pro každé y scope(c) platí t[y] D y Programování s omezujícími podmínkami I, 9. října 2003 22 Propagace omezení

Domain consistency Doménová konzistence zobecnění hranové konzistence, nazývána také generalized arc-consistency Hodnota a proměnné x scope(c) má doménovou podporu t v C, jestliže t C a platí a = t[x] pro každé y scope(c) platí t[y] D y Princip doménové podpory stejný jako u dřívější podpory v kontextu AC Programování s omezujícími podmínkami I, 9. října 2003 22 Propagace omezení

Domain consistency Doménová konzistence zobecnění hranové konzistence, nazývána také generalized arc-consistency Hodnota a proměnné x scope(c) má doménovou podporu t v C, jestliže t C a platí a = t[x] pro každé y scope(c) platí t[y] D y Princip doménové podpory stejný jako u dřívější podpory v kontextu AC Příklad: A,B {0, 1}, C {1, 2}, A #= B+C, 0 u A nemá podporu, 1 u A má podporu (1,0,1) Programování s omezujícími podmínkami I, 9. října 2003 22 Propagace omezení

Domain consistency Doménová konzistence zobecnění hranové konzistence, nazývána také generalized arc-consistency Hodnota a proměnné x scope(c) má doménovou podporu t v C, jestliže t C a platí a = t[x] pro každé y scope(c) platí t[y] D y Princip doménové podpory stejný jako u dřívější podpory v kontextu AC Příklad: A,B {0, 1}, C {1, 2}, A #= B+C, 0 u A nemá podporu, 1 u A má podporu (1,0,1) Omezení je doménově konzistentní, jestliže každá hodnota a proměnné x scope(c) má doménovou podporu v C CSP je doménově konzistentní, jestliže jsou všechny jeho omezení doménově konzistentní. Příklad (pokračování): po provedení doménové konzistence dostaneme A=1, B=0, C=1 Programování s omezujícími podmínkami I, 9. října 2003 22 Propagace omezení

Konzistence mezí Bounds consistency BC: slabší než doménová konzistence propagace pouze při změně minimální nebo maximální hodnoty v doméně proměnné tedy došlo ke změně mezí domény proměnné Programování s omezujícími podmínkami I, 9. října 2003 23 Propagace omezení

Konzistence mezí Bounds consistency BC: slabší než doménová konzistence propagace pouze při změně minimální nebo maximální hodnoty v doméně proměnné tedy došlo ke změně mezí domény proměnné Konzistence mezí pro nerovnice A #> B => min(a) = min(b)+1, max(b) = max(a)-1 příklad: A in 4..10, B in 6..18, A #> B min(a) = 6+1 A in 7..10 max(b) = 10-1 B in 6..9 podobně: A #< B, A #>= B, A #=< B Jak je to tedy pro nebinární omezení? Programování s omezujícími podmínkami I, 9. října 2003 23 Propagace omezení

Konzistence mezí a aritmetická omezení 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) Programování s omezujícími podmínkami I, 9. října 2003 24 Propagace omezení

Konzistence mezí a aritmetická omezení 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) Změna min(a)vyvolá pouze změnu min(b) a min(c) Změna max(a)vyvolá pouze změnu max(b) a max(c),... Programování s omezujícími podmínkami I, 9. října 2003 24 Propagace omezení

Konzistence mezí a aritmetická omezení 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) Změna min(a)vyvolá pouze změnu min(b) a min(c) Změna max(a)vyvolá pouze změnu max(b) a max(c),... příklad: A in 1..10, B in 1..10, A #= B + 2, A #> 5, A #\= 8 Programování s omezujícími podmínkami I, 9. října 2003 24 Propagace omezení

Konzistence mezí a aritmetická omezení 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) Změna min(a)vyvolá pouze změnu min(b) a min(c) Změna max(a)vyvolá pouze změnu max(b) a max(c),... příklad: A in 1..10, B in 1..10, A #= B + 2, A #> 5, A #\= 8 A #= B + 2 Programování s omezujícími podmínkami I, 9. října 2003 24 Propagace omezení

Konzistence mezí a aritmetická omezení 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) Změna min(a)vyvolá pouze změnu min(b) a min(c) Změna max(a)vyvolá pouze změnu max(b) a max(c),... příklad: A in 1..10, B in 1..10, A #= B + 2, A #> 5, A #\= 8 A #= B + 2 min(a)=1+2, max(a)=10+2 A in 3..10 Programování s omezujícími podmínkami I, 9. října 2003 24 Propagace omezení

Konzistence mezí a aritmetická omezení 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) Změna min(a)vyvolá pouze změnu min(b) a min(c) Změna max(a)vyvolá pouze změnu max(b) a max(c),... příklad: A in 1..10, B in 1..10, A #= B + 2, A #> 5, A #\= 8 A #= B + 2 min(a)=1+2, max(a)=10+2 A in 3..10 min(b)=1-2, max(b)=10-2 B in 1..8 Programování s omezujícími podmínkami I, 9. října 2003 24 Propagace omezení

Konzistence mezí a aritmetická omezení 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) Změna min(a)vyvolá pouze změnu min(b) a min(c) Změna max(a)vyvolá pouze změnu max(b) a max(c),... příklad: A in 1..10, B in 1..10, A #= B + 2, A #> 5, A #\= 8 A #= B + 2 min(a)=1+2, max(a)=10+2 A in 3..10 min(b)=1-2, max(b)=10-2 B in 1..8 A #> 5 min(a)=6 A in 6..10 Programování s omezujícími podmínkami I, 9. října 2003 24 Propagace omezení

Konzistence mezí a aritmetická omezení 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) Změna min(a)vyvolá pouze změnu min(b) a min(c) Změna max(a)vyvolá pouze změnu max(b) a max(c),... příklad: A in 1..10, B in 1..10, A #= B + 2, A #> 5, A #\= 8 A #= B + 2 min(a)=1+2, max(a)=10+2 A in 3..10 min(b)=1-2, max(b)=10-2 B in 1..8 A #> 5 min(a)=6 A in 6..10 min(b)=6-2 B in 4..8 Programování s omezujícími podmínkami I, 9. října 2003 24 Propagace omezení

Konzistence mezí a aritmetická omezení 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) Změna min(a)vyvolá pouze změnu min(b) a min(c) Změna max(a)vyvolá pouze změnu max(b) a max(c),... příklad: A in 1..10, B in 1..10, A #= B + 2, A #> 5, A #\= 8 A #= B + 2 min(a)=1+2, max(a)=10+2 A in 3..10 min(b)=1-2, max(b)=10-2 B in 1..8 A #> 5 min(a)=6 A in 6..10 min(b)=6-2 B in 4..8 A #\= 8 A in (6..7) \/ (9..10) Programování s omezujícími podmínkami I, 9. října 2003 24 Propagace omezení

Konzistence mezí a aritmetická omezení 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) Změna min(a)vyvolá pouze změnu min(b) a min(c) Změna max(a)vyvolá pouze změnu max(b) a max(c),... příklad: A in 1..10, B in 1..10, A #= B + 2, A #> 5, A #\= 8 A #= B + 2 min(a)=1+2, max(a)=10+2 A in 3..10 min(b)=1-2, max(b)=10-2 B in 1..8 A #> 5 min(a)=6 A in 6..10 min(b)=6-2 B in 4..8 A #\= 8 A in (6..7) \/ (9..10) Vyzkoušejte si: A #= B - C, A #>= B + C Programování s omezujícími podmínkami I, 9. října 2003 24 Propagace omezení

Definice konzistence mezí Hodnota a proměnné x scope(c) má intervalovou podporu t v C, jestliže t C a platí a = t[x] pro každé y scope(c) platí t[y] [min(d y ), max(d y )] Programování s omezujícími podmínkami I, 9. října 2003 25 Propagace omezení

Definice konzistence mezí Hodnota a proměnné x scope(c) má intervalovou podporu t v C, jestliže t C a platí a = t[x] pro každé y scope(c) platí t[y] [min(d y ), max(d y )] tato podmínka byla u doménové podpory ve tvaru: pro každé y scope(c) platí t[y] D y Programování s omezujícími podmínkami I, 9. října 2003 25 Propagace omezení

Definice konzistence mezí Hodnota a proměnné x scope(c) má intervalovou podporu t v C, jestliže t C a platí a = t[x] pro každé y scope(c) platí t[y] [min(d y ), max(d y )] tato podmínka byla u doménové podpory ve tvaru: pro každé y scope(c) platí t[y] D y Příklad: A in (6..7)\/(9..10), B in 4..8, A #= B + 2 Programování s omezujícími podmínkami I, 9. října 2003 25 Propagace omezení

Definice konzistence mezí Hodnota a proměnné x scope(c) má intervalovou podporu t v C, jestliže t C a platí a = t[x] pro každé y scope(c) platí t[y] [min(d y ), max(d y )] tato podmínka byla u doménové podpory ve tvaru: pro každé y scope(c) platí t[y] D y Příklad: A in (6..7)\/(9..10), B in 4..8, A #= B + 2 hodnota 6 proměnné B má intervalovou podporu (8,6) ale nemá doménovou podporu Programování s omezujícími podmínkami I, 9. října 2003 25 Propagace omezení

Definice konzistence mezí Hodnota a proměnné x scope(c) má intervalovou podporu t v C, jestliže t C a platí a = t[x] pro každé y scope(c) platí t[y] [min(d y ), max(d y )] tato podmínka byla u doménové podpory ve tvaru: pro každé y scope(c) platí t[y] D y Příklad: A in (6..7)\/(9..10), B in 4..8, A #= B + 2 hodnota 6 proměnné B má intervalovou podporu (8,6) ale nemá doménovou podporu Omezení má konzistentní meze, jestliže každá hodnota a proměnné x scope(c) má intervalovou podporu v C CSP má konzistentní meze, jestliže všechna jeho omezení mají konzistentní meze. Programování s omezujícími podmínkami I, 9. října 2003 25 Propagace omezení