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

Rozměr: px
Začít zobrazení ze stránky:

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

Transkript

1 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 Propagace omezení

2 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 Propagace omezení

3 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 Propagace omezení

4 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 Propagace omezení

5 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 Propagace omezení

6 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 Propagace omezení

7 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 Propagace omezení

8 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 Propagace omezení

9 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 Propagace omezení

10 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 Propagace omezení

11 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 Propagace omezení

12 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 Propagace omezení

13 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 Propagace omezení

14 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 Propagace omezení

15 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 Propagace omezení

16 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 Propagace omezení

17 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 Propagace omezení

18 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 Propagace omezení

19 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 Propagace omezení

20 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 Propagace omezení

21 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 Propagace omezení

22 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 Propagace omezení

23 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 Propagace omezení

24 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 Propagace omezení

25 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 Propagace omezení

26 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 Propagace omezení

27 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 Propagace omezení

28 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 Propagace omezení

29 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 Propagace omezení

30 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 Propagace omezení

31 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 Propagace omezení

32 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 Propagace omezení

33 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 Propagace omezení

34 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 Propagace omezení

35 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 Propagace omezení

36 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 Propagace omezení

37 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 Propagace omezení

38 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 Propagace omezení

39 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 Propagace omezení

40 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 Propagace omezení

41 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 Propagace omezení

42 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 Propagace omezení

43 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 Propagace omezení

44 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 Propagace omezení

45 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 Propagace omezení

46 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 Propagace omezení

47 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 Propagace omezení

48 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 Propagace omezení

49 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 Propagace omezení

50 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 Propagace omezení

51 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 Propagace omezení

52 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 Propagace omezení

53 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 Propagace omezení

54 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 Propagace omezení

55 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 Propagace omezení

56 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 Propagace omezení

57 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 Propagace omezení

58 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 Propagace omezení

59 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 Propagace omezení

60 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 Propagace omezení

61 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 Propagace omezení

62 Konzistence pro nebinární omezení

63 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 Propagace omezení

64 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 Propagace omezení

65 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 Propagace omezení

66 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 Propagace omezení

67 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 Propagace omezení

68 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 Propagace omezení

69 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 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 Propagace omezení

70 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 Propagace omezení

71 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 Propagace omezení

72 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 Propagace omezení

73 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 Propagace omezení

74 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 Programování s omezujícími podmínkami I, 9. října Propagace omezení

75 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 min(b)=1-2, max(b)=10-2 B in 1..8 Programování s omezujícími podmínkami I, 9. října Propagace omezení

76 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 min(b)=1-2, max(b)=10-2 B in 1..8 A #> 5 min(a)=6 A in Programování s omezujícími podmínkami I, 9. října Propagace omezení

77 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 min(b)=1-2, max(b)=10-2 B in 1..8 A #> 5 min(a)=6 A in min(b)=6-2 B in 4..8 Programování s omezujícími podmínkami I, 9. října Propagace omezení

78 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 min(b)=1-2, max(b)=10-2 B in 1..8 A #> 5 min(a)=6 A in 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 Propagace omezení

79 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 min(b)=1-2, max(b)=10-2 B in 1..8 A #> 5 min(a)=6 A in 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 Propagace omezení

80 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 Propagace omezení

81 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 Propagace omezení

82 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 Propagace omezení

83 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 Propagace omezení

84 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 Propagace omezení

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.   rová hranová konzistence Programování s omezujícími podmínkami Roman Barták Katedra teoretické informatiky a matematické logiky roman.bartak@mff.cuni.cz http://ktiml.mff.cuni.cz/~bartak Směrov rová hranová konzistence Definice:

Více

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

Programování. s omezujícími podmínkami. Roman Barták. roman.bartak@mff.cuni.cz http://ktiml.mff.cuni.cz/~bartak Programování s omezujícími podmínkami Roman Barták Katedra teoretické informatiky a matematické logiky roman.bartak@mff.cuni.cz http://ktiml.mff.cuni.cz/~bartak Konzistenční techniky Dosud jsme podmínky

Více

Optimalizace & soft omezení: algoritmy

Optimalizace & soft omezení: algoritmy Optimalizace & soft omezení: algoritmy Soft propagace Klasická propagace: eliminace nekonzistentních hodnot z domén proměnných Soft propagace: propagace preferencí (cen) nad k-ticemi hodnot proměnných

Více

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

Automatizované řešení úloh s omezeními Automatizované řešení úloh s omezeními Martin Kot Katedra informatiky, FEI, Vysoká škola báňská Technická universita Ostrava 17. listopadu 15, Ostrava-Poruba 708 33 Česká republika 25. října 2012 M. Kot

Více

TGH09 - Barvení grafů

TGH09 - Barvení grafů TGH09 - Barvení grafů Jan Březina Technical University of Liberec 15. dubna 2013 Problém: Najít obarvení států na mapě tak, aby žádné sousední státy neměli stejnou barvu. Motivační problém Problém: Najít

Více

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

5 Orientované grafy, Toky v sítích Petr Hliněný, FI MU Brno, 205 / 9 FI: IB000: Toky v sítích 5 Orientované grafy, Toky v sítích Nyní se budeme zabývat typem sít ových úloh, ve kterých není podstatná délka hran a spojení, nýbž jejich propustnost

Více

TGH06 - Hledání nejkratší cesty

TGH06 - Hledání nejkratší cesty TGH06 - Hledání nejkratší cesty Jan Březina Technical University of Liberec 31. března 2015 Motivační problémy Silniční sít reprezentovaná grafem. Ohodnocené hrany - délky silnic. Najdi nejkratší/nejrychlejší

Více

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

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem Test prvočíselnosti Úkol: otestovat dané číslo N, zda je prvočíslem 1. zkusit všechny dělitele od 2 do N-1 časová složitost O(N) cca N testů 2. stačí zkoušet všechny dělitele od 2 do N/2 (větší dělitel

Více

TGH06 - Hledání nejkratší cesty

TGH06 - Hledání nejkratší cesty TGH06 - Hledání nejkratší cesty Jan Březina Technical University of Liberec 26. března 2013 Motivační problémy Silniční sít reprezentovaná grafem. Najdi nejkratší/nejrychlejší cestu z místa A do místa

Více

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

FIT ČVUT MI-LOM Lineární optimalizace a metody. Dualita. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti FIT ČVUT MI-LOM Lineární optimalizace a metody Dualita Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Michal Černý, 2011 FIT ČVUT, MI-LOM, M. Černý, 2011: Dualita 2/5 Dualita Evropský

Více

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

Kapitola 11. Vzdálenost v grafech. 11.1 Matice sousednosti a počty sledů Kapitola 11 Vzdálenost v grafech V každém grafu lze přirozeným způsobem definovat vzdálenost libovolné dvojice vrcholů. Hlavním výsledkem této kapitoly je překvapivé tvrzení, podle kterého lze vzdálenosti

Více

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

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 Euklidův algoritmus Doprovodný materiál pro cvičení Programování I. NPRM044 Autor: Markéta Popelová Datum: 31.10.2010 Euklidův algoritmus verze 1.0 Zadání: Určete největšího společného dělitele dvou zadaných

Více

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

NPRG030 Programování I, 2018/19 1 / :03:07 NPRG030 Programování I, 2018/19 1 / 20 3. 12. 2018 09:03:07 Vnitřní třídění Zadání: Uspořádejte pole délky N podle hodnot prvků Měřítko efektivity: * počet porovnání * počet přesunů NPRG030 Programování

Více

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

Umělá inteligence I. Roman Barták, KTIML. Umělá inteligence I Roman Barták, KTIML roman.bartak@mff.cuni.cz http://ktiml.mff.cuni.cz/~bartak Na úvod Zatím pro nás byl model světa černou skříňkou, ke které přistupujeme pouze přes: funkci následníka

Více

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

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C Hanojské věže - 3 kolíky A, B, C - na A je N disků různé velikosti, seřazené od největšího (dole) k nejmenšímu (nahoře) - kolíky B a C jsou prázdné - úkol: přenést všechny disky z A na B, mohou se odkládat

Více

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

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

Více

Hledání v textu algoritmem Boyer Moore

Hledání v textu algoritmem Boyer Moore Zápočtová práce z Algoritmů a Datových Struktur II (NTIN061) Hledání v textu algoritmem Boyer Moore David Pěgřímek http://davpe.net Algoritmus Boyer Moore[1] slouží k vyhledání vzoru V v zadaném textu

Více

Dijkstrův algoritmus

Dijkstrův algoritmus Dijkstrův algoritmus Hledání nejkratší cesty v nezáporně hranově ohodnoceném grafu Necht je dán orientovaný graf G = (V, H) a funkce, která každé hraně h = (u, v) H přiřadí nezáporné reálné číslo označované

Více

Grafové algoritmy. Programovací techniky

Grafové algoritmy. Programovací techniky Grafové algoritmy Programovací techniky Grafy Úvod - Terminologie Graf je datová struktura, skládá se z množiny vrcholů V a množiny hran mezi vrcholy E Počet vrcholů a hran musí být konečný a nesmí být

Více

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

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5 Obsah Obsah 1 Řídicí struktury 1 2 Podmínka 1 2.1 Podmínka typu case......................... 2 3 Příkaz skoku 3 4 Cykly 4 4.1 Cyklus s podmínkou na začátku................... 4 4.2 Cyklus s podmínkou

Více

Úvod do teorie grafů

Úvod do teorie grafů Úvod do teorie grafů Neorientovaný graf G = (V,E,I) V množina uzlů (vrcholů) - vertices E množina hran - edges I incidence incidence je zobrazení, buď: funkce: I: E V x V relace: I E V V incidence přiřadí

Více

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

VYSOKÁ ŠKOLA EKONOMICKÁ V PRAZE. Optimalizace trasy při revizích elektrospotřebičů VYSOKÁ ŠKOLA EKONOMICKÁ V PRAZE FAKULTA INFORMATIKY A STATISTIKY Hlavní specializace: Ekonometrie a operační výzkum Název diplomové práce Optimalizace trasy při revizích elektrospotřebičů Diplomant: Vedoucí

Více

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

fakulty MENDELU v Brně (LDF) s ohledem na disciplíny společného základu http://akademie.ldf.mendelu.cz/cz (reg. č. CZ.1.07/2.2.00/28. Základy lineárního programování Vyšší matematika, Inženýrská matematika LDF MENDELU Podpořeno projektem Průřezová inovace studijních programů Lesnické a dřevařské fakulty MENDELU v Brně (LDF) s ohledem

Více

GRAFY A GRAFOVÉ ALGORITMY

GRAFY A GRAFOVÉ ALGORITMY KATEDRA INFORMATIKY PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITA PALACKÉHO GRAFY A GRAFOVÉ ALGORITMY ARNOŠT VEČERKA VÝVOJ TOHOTO UČEBNÍHO TEXTU JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM A STÁTNÍM ROZPOČTEM ČESKÉ

Více

8 Přednáška z

8 Přednáška z 8 Přednáška z 3 12 2003 Problém minimální kostry: Dostaneme souvislý graf G = (V, E), w : E R + Našim úkolem je nalézt strom (V, E ) tak, aby výraz e E w(e) nabýval minimální hodnoty Řešení - Hladový (greedy)

Více

Grafové algoritmy. Programovací techniky

Grafové algoritmy. Programovací techniky Grafové algoritmy Programovací techniky Grafy Úvod - Terminologie Graf je datová struktura, skládá se z množiny vrcholů V a množiny hran mezi vrcholy E Počet vrcholů a hran musí být konečný a nesmí být

Více

PŘEDNÁŠKA 7 Kongruence svazů

PŘEDNÁŠKA 7 Kongruence svazů PŘEDNÁŠKA 7 Kongruence svazů PAVEL RŮŽIČKA Abstrakt. Definujeme svazové kongruence a ukážeme jak pro vhodné binární relace svazu ověřit, že se jedná o svazové kongruence. Popíšeme svaz Con(A) kongruencí

Více

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

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly. Kapitola Reprezentace grafu V kapitole?? jsme se dozvěděli, co to jsou grafy a k čemu jsou dobré. rzo budeme chtít napsat nějaký program, který s grafy pracuje. le jak si takový graf uložit do počítače?

Více

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

Teoretická informatika Tomáš Foltýnek Barvení grafů Platónská tělesa Tomáš Foltýnek foltynek@pef.mendelu.cz Barvení grafů Platónská tělesa strana 2 Opakování z minulé přednášky Co je to prohledávání grafu? Jaké způsoby prohledávání grafu známe? Jak nalézt východ z bludiště?

Více

Stromy, haldy, prioritní fronty

Stromy, haldy, prioritní fronty Stromy, haldy, prioritní fronty prof. Ing. Pavel Tvrdík CSc. Katedra počítačů FEL České vysoké učení technické DSA, ZS 2008/9, Přednáška 6 http://service.felk.cvut.cz/courses/x36dsa/ prof. Pavel Tvrdík

Více

Vrcholová barevnost grafu

Vrcholová barevnost grafu Vrcholová barevnost grafu Definice: Necht G = (V, E) je obyčejný graf a k N. Zobrazení φ : V {1, 2,..., k} nazýváme k-vrcholovým obarvením grafu G. Pokud φ(u) φ(v) pro každou hranu {u, v} E, nazveme k-vrcholové

Více

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

LDF MENDELU. Simona Fišnarová (MENDELU) Základy lineárního programování VMAT, IMT 1 / 25 Základy lineárního programování Vyšší matematika, Inženýrská matematika LDF MENDELU Podpořeno projektem Průřezová inovace studijních programů Lesnické a dřevařské fakulty MENDELU v Brně (LDF) s ohledem

Více

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

Prohledávání do šířky = algoritmus vlny Prohledávání do šířky = algoritmus vlny - souběžně zkoušet všechny možné varianty pokračování výpočtu, dokud nenajdeme řešení úlohy průchod stromem všech možných cest výpočtu do šířky, po vrstvách (v každé

Více

Schéma identifikační procedury

Schéma identifikační procedury Schéma identifikační procedury systém S generátor rekonstrukčních hypotéz G a S nejsou porovnatelné nelze srovnat kvalitu G a S S a S jsou porovnatelné kvalita dekompozice S? S : (S,S ) = G dekompozice

Více

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

Konstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i, [161014-1204 ] 11 2.1.35 Konstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i, kde i = 0, 1,..., takto: p 0 q právě tehdy, když bud p, q F nebo p, q F. Dokud i+1 i konstruujeme p

Více

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

Činnost: 1) Vyhodnotí se výraz E. 2) Jeho hodnota se uloží do proměnné V. Přiřazovací příkaz V := E, V jednoduchá nebo indexovaná proměnná, E výraz, jehož typ je kompatibilní podle přiřazení s typem proměnné V. 1) Vyhodnotí se výraz E. 2) Jeho hodnota se uloží do proměnné V.

Více

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

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr Seminář z IVT Algoritmizace Slovanské gymnázium Olomouc Tomáš Kühr Algoritmizace - o čem to je? Zatím jsme se zabývali především tím, jak určitý postup zapsat v konkrétním programovacím jazyce (např. C#)

Více

Paralelní grafové algoritmy

Paralelní grafové algoritmy Paralelní grafové algoritmy Značení Minimální kostra grafu Nejkratší cesta z jednoho uzlu Nejkratší cesta mezi všemi dvojicemi uzlů Použité značení Definition Bud G = (V, E) graf. Pro libovolný uzel u

Více

Dynamické programování

Dynamické programování Dynamické programování prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy (BI-EFA)

Více

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?

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? N půli esty od AC k PC Progrmování s omezujíími podmínkmi Jk oslit PC, y lgoritmus: neměl pměťové nároky PC, neměnil grf podmínek, yl silnější než AC? Testujeme PC jen v přípdě, když je šne, že to povede

Více

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

Zjednodušení generativního systému redukcí rozlišení Zjednodušení generativního systému redukcí rozlišení Ze studie zahrnující dotaz na vzdělání. Obor hodnot v i : e základní vzdělání h střední vzdělání c bakalář g magistr Možné redukce rozlišení cg vysoké

Více

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

Hledáme efektivní řešení úloh na grafu Hledáme efektivní řešení úloh na grafu Mějme dán graf následující úlohy: G = ( V, E), chceme algoritmicky vyřešit Je daný vrchol t dosažitelný z vrcholu s? Pokud ano, jaká nejkratší cesta tyto vrcholy

Více

Kombinatorika, výpočty

Kombinatorika, výpočty Kombinatorika, výpočty Radek Pelánek IV122 Styl jednoduché výpočty s čísly vesměs spíše opakování + pár dílčích zajímavostí užitečný trénink programování Kombinace, permutace, variace Daná množina M s

Více

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

Stromové rozklady. Definice 1. Stromový rozklad grafu G je dvojice (T, β) taková, že T je strom, Stromové rozklady Zdeněk Dvořák 25. října 2017 Definice 1. Stromový rozklad grafu G je dvojice (T, β) taková, že T je strom, β je funkce přiřazující každému vrcholu T podmnožinu vrcholů v G, pro každé

Více

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

Učební texty k státní bakalářské zkoušce Matematika Základy lineárního programování. študenti MFF 15. augusta 2008 Učební texty k státní bakalářské zkoušce Matematika Základy lineárního programování študenti MFF 15. augusta 2008 1 15 Základy lineárního programování Požadavky Simplexová metoda Věty o dualitě (bez důkazu)

Více

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

u odpovědí typu A, B, C, D, E: Obsah: jako 0) CLP Constraint Logic Programming Průběžná písemná práce Průběžná písemná práce Obsah: Průběžná písemná práce Aleš Horák E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ délka pro vypracování: 25 minut nejsou povoleny žádné materiály

Více

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

Základní datové struktury III: Stromy, haldy Základní datové struktury III: Stromy, haldy prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní

Více

Jan Pavĺık. FSI VUT v Brně 14.5.2010

Jan Pavĺık. FSI VUT v Brně 14.5.2010 Princip výškovnice Jan Pavĺık FSI VUT v Brně 14.5.2010 Osnova přednášky 1 Motivace 2 Obecný princip 3 Příklady Světové rekordy Turnajové uspořádání Skupinové hodnocení Rozhledny 4 Geografická výškovnice

Více

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

zejména Dijkstrův algoritmus pro hledání minimální cesty a hladový algoritmus pro hledání minimální kostry. Kapitola Ohodnocené grafy V praktických aplikacích teorie grafů zpravidla graf slouží jako nástroj k popisu nějaké struktury. Jednotlivé prvky této struktury mají často přiřazeny nějaké hodnoty (může jít

Více

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

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

Více

Programovací jazyk Pascal

Programovací jazyk Pascal Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce

Více

Principy indukce a rekursivní algoritmy

Principy indukce a rekursivní algoritmy Principy indukce a rekursivní algoritmy Jiří Velebil: A7B01MCS 19. září 2011: Indukce 1/20 Příklad Místností rozměru n budeme rozumět šachovnici rozměru 2 n 2 n, ze které je jedno (libovolné) pole vyjmuto.

Více

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

4 Stromy a les. Definice a základní vlastnosti stromů. Kostry grafů a jejich počet. 4 Stromy a les Jedním ze základních, a patrně nejjednodušším, typem grafů jsou takzvané stromy. Jedná se o souvislé grafy bez kružnic. Přes svou (zdánlivou) jednoduchost mají stromy bohatou strukturu a

Více

PŘEDNÁŠKA 2 POSLOUPNOSTI

PŘEDNÁŠKA 2 POSLOUPNOSTI PŘEDNÁŠKA 2 POSLOUPNOSTI 2.1 Zobrazení 2 Definice 1. Uvažujme libovolné neprázdné množiny A, B. Zobrazení množiny A do množiny B je definováno jako množina F uspořádaných dvojic (x, y A B, kde ke každému

Více

Dynamické datové struktury III.

Dynamické datové struktury III. Dynamické datové struktury III. Halda. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra aplikované

Více

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

SEMESTRÁLNÍ ÚLOHY S PROGRAMY V PROLOGU (zadání úloh) Cvičení 7 SEMESTRÁLNÍ ÚLOHY S PROGRAMY V PROLOGU (zadání úloh) 1. Polynomy Návod: Polynomy lze reprezentovat (nejen v Prologu) několika způsoby, které lze rozdělit do následujících skupin: A) podle množství

Více

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

Kapitola 7: Návrh relačních databází. Nástrahy relačního návrhu. Příklad. Rozklad (dekompozice) - 7.1 - Kapitola 7: Návrh relačních databází Nástrahy návrhu relačních databází Dekompozice (rozklad) Normalizace použitím funkčních závislostí Nástrahy relačního návrhu Návrh relačních databází vyžaduje

Více

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

Rekurze. Pavel Töpfer, 2017 Programování 1-8 1 Rekurze V programování ve dvou hladinách: - rekurzivní algoritmus (řešení úlohy je definováno pomocí řešení podúloh stejného charakteru) - rekurzivní volání procedury nebo funkce (volá sama sebe přímo

Více

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

Základy informatiky. Teorie grafů. Zpracoval: Pavel Děrgel Úprava: Daniela Szturcová Základy informatiky Teorie grafů Zpracoval: Pavel Děrgel Úprava: Daniela Szturcová Obsah přednášky Barvení mapy Teorie grafů Definice Uzly a hrany Typy grafů Cesty, cykly, souvislost grafů Barvení mapy

Více

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

Algoritmus pro hledání nejkratší cesty orientovaným grafem 1.1 Úvod Algoritmus pro hledání nejkratší cesty orientovaným grafem Naprogramoval jsem v Matlabu funkci, která dokáže určit nejkratší cestu v orientovaném grafu mezi libovolnými dvěma vrcholy. Nastudoval

Více

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

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 Obsah přednášky Mgr. Květuše Sýkorová Optimalizace Lineární programování Distribuční úlohy Okružní problém KI Př UJEP Ústí nad Labem Nederivační metody Metody 1D optimalizace Derivační metody Optimalizace

Více

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

Kapitola 6: Omezení integrity. Omezení domény - 6.1 - Omezení domény Referenční integrita Aserce Spouštěče (Triggers) Funkční závislosti Kapitola 6: Omezení integrity Omezení domény Omezení integrity zabraňují poškození databáze; zajišťují, že autorizované

Více

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

Databázové systémy. * relační kalkuly. Tomáš Skopal. - relační model Databázové systémy Tomáš Skopal - relační model * relační kalkuly Osnova přednášky relační kalkuly doménový n-ticový Relační kalkuly využití aparátu predikátové logiky 1. řádu pro dotazování rozšíření

Více

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

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 Ukážeme si lineární algoritmus, který pro pevné k rozhodne, zda vstupní graf má stromovou šířku nejvýše k, a je-li tomu tak, také vrátí příslušný stromový rozklad. Poznamenejme, že je-li k součástí vstupu,

Více

Hypergrafové removal lemma a Szemérediho

Hypergrafové removal lemma a Szemérediho Hypergrafové removal lemma a Szemérediho věta Zdeněk Dvořák 7. prosince 207 Hypergrafové removal lemma a jeho důsledek Definice. Dvojice (V, E) je k-uniformní hypergraf, je-li E množina neuspořádaných

Více

Vzdálenost uzlů v neorientovaném grafu

Vzdálenost uzlů v neorientovaném grafu Vzdálenosti a grafy Vzdálenost uzlů v neorientovaném grafu Je dán neorientovaný neohodnocený graf G = (V,E,I) vzdálenost uzlů u a v v neorientovaném souvislém grafu G je délka nejkratší cesty spojující

Více

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

Výpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory Plán přednášky Výpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory Obecný algoritmus pro parsování bezkontextových jazyků dynamické programování 1 Zásobníkový

Více

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

Plánováníá a rozvrhování Plánováníá a rozvrhování Roman Barták, KTIML roman.bartak@mff.cuni.cz cz http://ktiml.mff.cuni.cz/~bartak Čas a plánování Konceptuální model plánování pracuje s implicitním časem: akce a události jsou

Více

4EK213 LINEÁRNÍ MODELY

4EK213 LINEÁRNÍ MODELY 4EK213 LINEÁRNÍ MODELY Úterý 11:00 12:30 hod. učebna SB 324 Mgr. Sekničková Jana, Ph.D. 2. PŘEDNÁŠKA MATEMATICKÝ MODEL ÚLOHY LP Mgr. Sekničková Jana, Ph.D. 2 OSNOVA PŘEDNÁŠKY Obecná formulace MM Množina

Více

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

Binární vyhledávací stromy pokročilé partie Binární vyhledávací stromy pokročilé partie KMI/ALS lekce Jan Konečný 30.9.204 Literatura Cormen Thomas H., Introduction to Algorithms, 2nd edition MIT Press, 200. ISBN 0-262-5396-8 6, 3, A Knuth Donald

Více

Ú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ů

Ú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ů Stavový prostor a jeho prohledávání SP = formalismus k obecnějšímu uchopení a vymezení problému, který spočívá v nalezení posloupnosti akcí vedoucích od počátečního stavu úlohy (zadání) k požadovanému

Více

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

TGH05 - aplikace DFS, průchod do šířky TGH05 - aplikace DFS, průchod do šířky Jan Březina Technical University of Liberec 31. března 2015 Grafová formulace CPM (critical path method) Orientovaný acyklický graf (DAG) je orientovaný graf neobsahující

Více

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

68. ročník Matematické olympiády 2018/2019 68. ročník Matematické olympiády 2018/2019 Řešení úloh krajského kola kategorie P P-II-1 Tulipány Budeme řešit o něco obecnější úlohu: dovolíme si předepsat, zda má na n-té pozici být tulipán, a pokud

Více

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

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7 Pascal Katedra aplikované kybernetiky Ing. Miroslav Vavroušek Verze 7 Proměnné Proměnná uchovává nějakou informaci potřebnou pro práci programu. Má ve svém oboru platnosti unikátní jméno. (Připadne, musí

Více

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

Úvod do vybíravosti grafů, Nullstellensatz, polynomiální metoda Úvod do vybíravosti grafů, Nullstellensatz, polynomiální metoda Zdeněk Dvořák 12. prosince 2017 1 Vybíravost Přiřazení seznamů grafu G je funkce L, která každému vrcholu G přiřadí množinu barev. L-obarvení

Více

Aproximativní algoritmy UIN009 Efektivní algoritmy 1

Aproximativní algoritmy UIN009 Efektivní algoritmy 1 Aproximativní algoritmy. 14.4.2005 UIN009 Efektivní algoritmy 1 Jak nakládat s NP-těžkými úlohami? Speciální případy Aproximativní algoritmy Pravděpodobnostní algoritmy Exponenciální algoritmy pro data

Více

Databázové systémy Tomáš Skopal

Databázové systémy Tomáš Skopal Databázové systémy Tomáš Skopal - relační model * funkční závislosti, odvozování * normální formy Osnova přednášky Armstrongova pravidla atributové a funkční uzávěry normální formy relačních schémat Armstrongova

Více

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

Návody k domácí části I. kola kategorie B Návody k domácí části I. kola kategorie B 1. Najděte všechna osmimístná čísla taková, z nichž po vyškrtnutí některé čtveřice sousedních číslic dostaneme čtyřmístné číslo, které je 2 019krát menší. (Pavel

Více

ROZHODOVACÍ PROCEDURY A VERIFIKACE PAVEL SURYNEK, KTIML HTTP://KTIML.MFF.CUNI.CZ/~SURYNEK/NAIL094

ROZHODOVACÍ PROCEDURY A VERIFIKACE PAVEL SURYNEK, KTIML HTTP://KTIML.MFF.CUNI.CZ/~SURYNEK/NAIL094 10 ROZHODOVACÍ PROCEDURY A VERIFIKACE PAVEL SURYNEK, KTIML HTTP://KTIML.MFF.CUNI.CZ/~SURYNEK/NAIL094 Matematicko-fyzikální fakulta Univerzita Karlova v Praze 1 ROZHODOVÁNÍ TEORIÍ POMOCÍ SAT ŘEŠIČE (SMT)

Více

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

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague 1 / 40 regula Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague regula 1 2 3 4 5 regula 6 7 8 2 / 40 2 / 40 regula Iterační pro nelineární e Bud f reálná funkce

Více

TÉMATICKÝ OKRUH TZD, DIS a TIS

TÉMATICKÝ OKRUH TZD, DIS a TIS TÉMATICKÝ OKRUH TZD, DIS a TIS Číslo otázky : 15. Otázka : Paralelní procesy v databázích. Transakce, zamykání, uváznutí. Dvoufázový protokol, časová razítka. Obsah : 1 Úvod 2 Paralelní procesy v databázích

Více

Úvod do programování

Úvod do programování Úvod do programování Základní literatura Töpfer, P.: Algoritmy a programovací techniky, Prometheus, Praha učebnice algoritmů, nikoli jazyka pokrývá velkou část probíraných algoritmů Satrapa, P.: Pascal

Více

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

Plánování v prostoru plánů Plánování v prostoru plánů 5. dubna 2018 Zdroj: Roman Barták, přednáška Umělá inteligence II, Matematicko-fyzikální fakulta, Karlova univerzita v Praze, 2014. http: // kti. ms. mff. cuni. cz/ ~bartak/

Více

Dynamické programování

Dynamické programování ALG 11 Dynamické programování Úloha batohu neomezená Úloha batohu /1 Úloha batohu / Knapsack problem Máme N předmětů, každý s váhou Vi a cenou Ci (i = 1, 2,..., N) a batoh s kapacitou váhy K. Máme naložit

Více

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

1. přednáška 1. října Kapitola 1. Metrické prostory. 1. přednáška 1. října 2007 Kapitola 1. Metrické prostory. Definice MP, izometrie. Metrický prostor je struktura formalizující jev vzdálenosti. Je to dvojice (M, d) složená z množiny M a funkce dvou proměnných

Více

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

B3B33ALP - Algoritmy a programování - Zkouška z předmětu B3B33ALP. Marek Boháč bohacm11 333LP - lgoritmy a programování - Zkouška z předmětu 333LP Jméno Příjmení Už. jméno Marek oháč bohacm11 Zkouškový test Otázka 1 Jaká je hodnota proměnné count po vykonání následujícího kódu: data=[4,4,5,5,6,6,6,7,7,7,7,8,8]

Více

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.

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. Kapitola 3 Počítání s maticemi Matice stejného typu můžeme sčítat a násobit reálným číslem podobně jako vektory téže dimenze. Definice 3.1 Jsou-li A (a ij ) a B (b ij ) dvě matice stejného typu m n, pak

Více

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

Tento text je stručným shrnutím těch tvrzení Ramseyovy teorie, která zazněla Ramseyovy věty Martin Mareš Tento text je stručným shrnutím těch tvrzení Ramseyovy teorie, která zazněla na mé letošní přednášce z Kombinatoriky a grafů I Předpokládá, že čtenář se již seznámil se základní

Více

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

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008. Úvod do informatiky přednáška čtvrtá Miroslav Kolařík Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008. Obsah 1 Pojem relace 2 Vztahy a operace s (binárními) relacemi

Více

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

Programování. s omezujícími podmínkami. SAT a lokáln. Algoritmus GSAT. Algoritmus GSAT. Roman Barták Lokáln lní prohledávání Programování s omezujícími podmínkami Roman Barták Katedra teoretické informatiky a matematické logiky roman.bartak@mff.cuni.cz http://ktiml.mff.cuni.cz/~bartak prochází úplná nekonzistentní

Více

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

Diskrétní matematika. DiM /01, zimní semestr 2018/2019 Diskrétní matematika Petr Kovář petr.kovar@vsb.cz Vysoká škola báňská Technická univerzita Ostrava DiM 470-2301/01, zimní semestr 2018/2019 O tomto souboru Tento soubor je zamýšlen především jako pomůcka

Více

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

TGH05 - aplikace DFS, průchod do šířky TGH05 - aplikace DFS, průchod do šířky Jan Březina Technical University of Liberec 28. března 2017 Grafová formulace CPM (critical path method) Orientovaný acyklický graf (DAG) je orientovaný graf neobsahující

Více

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

Lineární algebra : Násobení matic a inverzní matice Lineární algebra : Násobení matic a inverzní matice (8. přednáška) František Štampach, Karel Klouda frantisek.stampach@fit.cvut.cz, karel.klouda@fit.cvut.cz Katedra aplikované matematiky Fakulta informačních

Více

Použití dalších heuristik

Použití dalších heuristik Použití dalších heuristik zkracování cesty při FIND-SET UNION podle hodností Datové struktury... p[x] - předchůdce uzlu x MAKE-SET(x) p[x] := x hod[x] := 0 hod[x] - hodnost (aprox. výšky) UNION(x,y) LINK(FIND-SET(x),

Více

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

Pracovní listy - programování (algoritmy v jazyce Visual Basic) Algoritmus Pracovní listy - programování (algoritmy v jazyce Visual Basic) Předmět: Seminář z informatiky a výpočetní techniky Třída: 3. a 4. ročník vyššího stupně gymnázia Algoritmus Zadání v jazyce českém: 1. Je

Více

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

TOKY V SÍTÍCH II. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze TOKY V SÍTÍCH II Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze BI-GRA, LS 010/011, Lekce 10 Evropský sociální fond Praha & EU: Investujeme do vaší

Více

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

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 I. Funkce dvou a více reálných proměnných 1. Úvod Značení: V textu budeme používat označení: N pro množinu všech přirozených čísel; R pro množinu všech reálných čísel; R n pro množinu všech uspořádaných

Více

1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1

1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1 1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1 1. Prvocisla: Kratky ukazkovy priklad na demonstraci baliku WEB. Nasledujici program slouzi pouze jako ukazka nekterych moznosti a sluzeb,

Více

Marie Duží

Marie Duží Marie Duží marie.duzi@vsb.cz Co je to množina? Množina je soubor prvků a je svými prvky plně určena; množinu s prvky a, b, c značíme: {a, b, c}. Prvkem množiny může být opět množina, množina nemusí mít

Více

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

Obsah: CLP Constraint Logic Programming. u odpovědí typu A, B, C, D, E: jako 0) Aleš Horák E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ Obsah: Průběžná písemná práce Úvod do umělé inteligence 6/12 1 / 17 Průběžná písemná práce Průběžná písemná práce délka pro vypracování: 25

Více