Logické programování s omezujícími podmínkami. Constraint Logic Programming: CLP

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

Download "Logické programování s omezujícími podmínkami. Constraint Logic Programming: CLP"

Transkript

1 Logické programování s omezujícími podmínkami Constraint Logic Programming: CLP

2 CP a programovací jazyk Dosavadní předpoklady (pro CSP) omezení jsou dostupná na začátku prohledávání omezení jsou reprezentována extensionálně jako množina povolených kombinací Programovací jazyk umožní přidávání omezení inkrementálně reprezentace omezení pomocí jazyka Omezení vs. logické programování (LP) omezení jako relace/predikát, konjunkce omezení jako logická spojka AND, backtracking jako základ pro řešení omezení logické programování založeno na predikátech, konjunkcích, prohledávání do hloubky Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

3 Návrat Prologu? Průmysl začíná používat Prolog Náhrada procedurálního kódu Prologem vede k desetinásobnému zmenšení kódu řádově menšímu času na vývoj, jednodušší údržbě Aplikace (zavedené aplikační oblasti, nutnost přidání inteligence) hypotéky pediatrický sw výroba oken a dveří: konfigurace a pravidla pro stanovení ceny objednávky testovací nástroje, modelové testování Efektivita Prologu? zrychlení počítačů + výrazné zvětšení nároků sw ve prospěch kompaktnosti i rychlosti Prologu Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

4 Logický program: množina klauzulí Klauzule: je tvaru H :- B H se nazývá hlava, B=B 1,...B m se nazývá tělo B i a H jsou literály Syntaxe LP literál je tvaru p(t 1,..., t n ), kde p je n-ární predikát a t i jsou termy začíná malým písmenem (p) term může být proměnná X konstanta c aplikace n-ární funkce na n termů f(t 1,..., t n ) začíná velkým písmenem (X) začíná malým písmenem (c) začíná malým písmenem (f) Tělo interpretováno jako logická konjunkce literálů, tj. B B 1,...B m :- reprezentuje implikaci z těla na hlavu, tj. H B Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

5 Syntaxe LP II. Kvantifikace proměnných: S H proměnné v H, S B proměnné v B pro všechny hodnoty proměnných v H existují hodnoty pro proměnné v B tak, že H B Příklad: p(x,y) :- q(x), r(x,y,z). pro hodnoty X,Y ex. hodnota Z tak, že když platí q(x) i r(x,y,z), pak platí p(x,y) Souvislosti s imperativním přístupem hlava jako definice procedury, tělo jako kód procedury Fakt: klauzule bez těla hlava pravdivá pro livovolné hodnoty jejích proměnných Příklad logického programu dosazitelny(x,x). dosazitelny(x,y) :- let(x,y). dosazitelny(x,y) :- let(x,z), dosazitelny(z,y). rekurze Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

6 Operační sémantika LP Provádění logického programu je dotaz na pravdivostní hodnotu cíle :- G. kde G=A 1,...A m, A i jsou literály existují hodnoty proměnných v G tak, aby všechny A i byly splněny? příklad: :- p(x,y). Unifikace literálů A 1 a A 2 : nalezení takového přiřazení termů proměnným v A 1 a A 2, že se výsledné literály rovnají přiřazení termů proměnným: substituce aplikace substituce σ na literál A vrací nový literál Aσ hledání nejobecnějšího unifikátoru (mgu), tj. minimální substituce A 1 = p(x, a, f (Z)), A 2 = p(b, Y, V ) substituce σ = {X = b, Y = a, V = f (Z)} je nejobecnější unifikátor substituce σ = {X = b, Y = a, V = f (c), Z = c} není nejobecnější unifikátor Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

7 Operační sémantika LP II. Odpověd na cíl: nalezení hodnot jeho proměnných rekurzivní unifikací aktuálního cíle s hlavou klauzule opakované provádění rezolučních kroků G = A, R H : B σ = mgu(a, H) G = (B, R)σ Posloupnost rezolučních kroků: rezoluční odvození úspěšné: končí prázdným cílem odpověd je složení substitucí z jednotlivých rezolučních kroků nelze pokračovat dalším rezolučním krokem nekonečné rezoluční odvození: cyklení Strom odvození: strom reprezentující množinu všech odvození začínající cílem Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

8 Strom rezolučního odvození: příklad a(x) : b(x, Y ), c(y ). (1) a(x) : c(x). (2) b(2, 3). (3) b(1, 2). (4) c(2). (5) : a(x). Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

9 Logické programování vs. Prolog Volba následujícího rezolučního kroku lze vybrat libovolný literál v cíli pro literál lze vybrat různé klauzule Logické programování: teoretická nezávislost na pořadí voleb Programovací jazyk logického programování (Prolog) volby nutné, abychom se vyhnuli nedeterminismu volba nejlevějšího literálu a první klauzule v programu + prohledávání stromu do hloubky (backtracking) důsledek voleb: neúplnost (cíl má řešení, ale Prolog ho nenajde) stupid(x,y) :- stupid(x,y). stupid(x,y) :- stop(x,y). stop(x,y). :- stupid(x,y). Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

10 Datové struktury Prologu Struktury: n-ární funkce jmeno(osoba(jmeno,prijmeni,vek), jmeno). Seznamy [] prázdný seznam [H T] seznam skládající se z prvního prvku H (hlavy seznamu) a zbývající části seznamu T (tělo seznamu) [X1,X2,...,Xn] seznam n prvků X1,X2,...,Xn Příklad: spojení seznamů append([],y,y). append([f R],Y,[F Z]) :- append(r,y,z). Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

11 LP jako programovací jazyk pro omezení CSP = logický program složený z množiny faktů bez proměnných + jedna klauzule pro konjunkci omezení příklad: X,Y,Z in {a,b,c}, c1(x,y)={(a,a),(a,b),(b,b)}, c2(y,z)={(b,a)} c1(a,a). c1(a,b). c1(b,b). c2(b,a). csp(x,y,z) :- c1(x,y), c2(y,z). tento logický program nalezne množinu všech řešení CSP Logické programy: umožňují vyjádření složitějších vztahů, rekurze i funkcí c(x,x). c(x,x) :-!, fail. c(x,y). fail vždy neuspěje, omezení pro rovnost dvou proměnných omezení pro nerovnost dvou proměnných! (řez) zajistí, že druhá klauzule není zkoušena po volání fail Modelování a řešení CSP pomocí LP snadné LP používá pouze backtracking: neefektivní pro řešení CSP propagace omezení není zahrnuta do řešícího algoritmu Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

12 Logické programování s omezujícími podmínkami Omezení jako) formule (místo n-ticspecifického jazyka omezení různé typy omezení: lineární rovnice nad R, nerovnice nad Z,... omezení tohoto typu se vyskytují v těle klauzule specializovaný řešič omezení pro omezení daného typu Gauss-Jordanův eliminační algoritmus: řešič pro lineární aritmetická omezení nad Q hranová konzistence: neúplný řešič pro aritmetická omezení nad konečnými doménami Výhody CLP oproti LP unifikace je rozšířena na řešení omezení unifikace v LP je jedno z omezení unifikační algoritmus lze chápat jako řešič omezení pro rovnost termů vyjadřování omezení vybraným jazykem je kompaktnější př. X#=Y jako nerovnost řešič omezení (obvykle založený na neúplné propagaci omezení) umožní kombinaci backtrackingu a propagace Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

13 Syntaxe CLP Výběr jazyka omezení CLP klauzule jako LP klauzule, ale její tělo může obsahovat omezení daného jazyka p(x,y) :- X #< Y+1, q(x), r(x,y,z). Rezoluční krok v LP kontrola existence mgu mezi cílem a hlavou Krok odvození v CLP také zahrnuje kontrola konzistence aktuální množiny omezení s omezeními v těle klauzule Vyvolání dvou řešičů: unifikace + řešič omezení Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

14 Operační sémantika CLP CLP výpočet Stor e množina aktivních omezení prostor omezení (constraint store) Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

15 Operační sémantika CLP CLP výpočet Stor e množina aktivních omezení prostor omezení (constraint store) inicializace Stor e = Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

16 Operační sémantika CLP CLP výpočet Stor e množina aktivních omezení prostor omezení (constraint store) inicializace Stor e = seznamy cílů prováděny v obvyklém pořadí Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

17 Operační sémantika CLP CLP výpočet Stor e množina aktivních omezení prostor omezení (constraint store) inicializace Stor e = seznamy cílů prováděny v obvyklém pořadí pokud narazíme na cíl s omezením c: NewStor e = Stor e {c} Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

18 Operační sémantika CLP CLP výpočet Stor e množina aktivních omezení prostor omezení (constraint store) inicializace Stor e = seznamy cílů prováděny v obvyklém pořadí pokud narazíme na cíl s omezením c: NewStor e = Stor e {c} snažíme se splnit c vyvoláním jeho řešiče Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

19 Operační sémantika CLP CLP výpočet Stor e množina aktivních omezení prostor omezení (constraint store) inicializace Stor e = seznamy cílů prováděny v obvyklém pořadí pokud narazíme na cíl s omezením c: NewStor e = Stor e {c} snažíme se splnit c vyvoláním jeho řešiče při neúspěchu se vyvolá backtracking při úspěchu se podmínky v NewStor e zjednoduší propagací omezení zbývající cíle jsou prováděny s upraveným NewStor e CLP výpočet je úspěšný, pokud se dostaneme z iniciálního stavu G, do stavu G, S, kde G je prázdný cíl a S je splnitelná. Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

20 Strom odvození CLP V LP kumulace substitucí, v CLP navíc kumulace omezení Strom CLP odvození obsahuje navíc v uzlu aktuální stav prostoru omezení fac(0,1). fac(n0,f0) :- N0 #>= 1, F0 #= N0*F, N #= N0-1, fac(n,f). :- fac(2,y). Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

21 CLP(X) CLP parametrické vzhledem k volbě jazyka omezení X CLP(T r ee) odpovídá LP T r ee identifikuje třídu rovností termů (term je strom) CLP(R): třída aritmetických omezení nad R CLP(F D): třída omezení nad proměnnými s konečnými doménami (CSP) Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

22 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í řešení labeling( Variables ). (1) a (2) deklarativní část modelování problému (3) řídící část prohledávání stavového prostoru řešení procedura pro hledání řešení (enumeraci) se nazývá labeling umožní nalézt jedno, všechna nebo optimální řešení Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

23 Rozvrhování úloh úloha doba trvání A 2 B 3 C 5 D 4 minimální doba trvání všech úloh A B C D F Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

24 Rozvrhování úloh úloha doba trvání A 2 B 3 C 5 D 4 minimální doba trvání všech úloh A B C D F reseni( [A,B,C,D,F] ) :- domain( [A,B,C,D,F], 0, 14), B #>= A + 2, C #>= A + 2, D #>= B + 3, Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

25 Rozvrhování úloh úloha doba trvání A 2 B 3 C 5 D 4 minimální doba trvání všech úloh A B C D F reseni( [A,B,C,D,F] ) :- domain( [A,B,C,D,F], 0, 14), B #>= A + 2, C #>= A + 2, D #>= B + 3, F #>= C + 5, F #>= D + 4, Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

26 Rozvrhování úloh úloha doba trvání A 2 B 3 C 5 D 4 minimální doba trvání všech úloh A B C D F reseni( [A,B,C,D,F] ) :- domain( [A,B,C,D,F], 0, 14), B #>= A + 2, C #>= A + 2, D #>= B + 3, F #>= C + 5, F #>= D + 4, labeling([minimize(f)],[a,b,c,d,f]). Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

27 Reprezentace domény Konečná doména často reprezentována jako interval celých čísel interval je uspořádaný doménu lze reprezentovat pomocí minimální a maximální hodnoty nebo v případě chybějících hodnot v intervalu: (min 1, max 1 ),..., (min n, max n ), kde (max i + 1) < min i+1 a min 1 max 1 < min 2 min 2 <... < min n max n :-? domain( [A,B], 1,3). domain( Variables, Min, Max) A in 1..3 B in 1..3 :-? A in 1..5, A #\= 4. X in Min..Max, X in Range A in (1..3) \/ (5..8) :-? A in (1..3) \/ (8..15) \/ (5..9) \/ {100}. A in (1..3) \/ (5..15) \/ {100} Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

28 Aritmetická omezení Intervalová konzistence konzistence mezí pro každý z podintervalů domény Expr RelOp Expr RelOp -> #= #\= #< #=< #> #>= A + B #=< 3, A #\= (C - 4) * ( D - 5), A/2 #= 4 sum(variables,relop,suma) domain([a,b,c,f],1,3), sum([a,b,c],#=,f) Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

29 Kombinatorická omezení: příklady Globální omezení pro řešení kombinatorických úloh all_distinct(list) všechny proměnné různé Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

30 Kombinatorická omezení: příklady Globální omezení pro řešení kombinatorických úloh all_distinct(list) všechny proměnné různé global_cardinality(list, KeyCounts) omezení na počet prvků daného typu v seznamu pro každý prvek Key-Count seznamu KeyCounts platí: Count prvků seznamu List se rovná klíči Key každé Key je celé číslo a vyskytuje se mezi klíči maximálně jednou Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

31 Kombinatorická omezení: příklady Globální omezení pro řešení kombinatorických úloh all_distinct(list) všechny proměnné různé global_cardinality(list, KeyCounts) omezení na počet prvků daného typu v seznamu pro každý prvek Key-Count seznamu KeyCounts platí: Count prvků seznamu List se rovná klíči Key každé Key je celé číslo a vyskytuje se mezi klíči maximálně jednou?- A in 1..3, B in 1..3, global_cardinality( [A,B], [1-N,2-2]). Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

32 Kombinatorická omezení: příklady Globální omezení pro řešení kombinatorických úloh all_distinct(list) všechny proměnné různé global_cardinality(list, KeyCounts) omezení na počet prvků daného typu v seznamu pro každý prvek Key-Count seznamu KeyCounts platí: Count prvků seznamu List se rovná klíči Key každé Key je celé číslo a vyskytuje se mezi klíči maximálně jednou?- A in 1..3, B in 1..3, global_cardinality( [A,B], [1-N,2-2]). A = 2, B = 2, N = 0 Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

33 Příklad: rozvrhování zaměstnanců vytvoření rozvrhu pro zaměstnance pracující na směny A = {R,D,N,Z,V} ráno, den, noc, záloha, volno P = {Petr,Pavel,Marie,...} W = {Po,Út,St,Čt,...} Po Út St Čt... Petr R N V R Pavel R Z R N Marie N V D D... Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

34 Příklad: rozvrhování zaměstnanců vytvoření rozvrhu pro zaměstnance pracující na směny A = {R,D,N,Z,V} ráno, den, noc, záloha, volno P = {Petr,Pavel,Marie,...} W = {Po,Út,St,Čt,...} Po Út St Čt... Petr R N V R Pavel R Z R N Marie N V D D... matice doménových proměnných: PetrPo, PetrUt,..., PavelPo,... Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

35 Příklad: rozvrhování zaměstnanců vytvoření rozvrhu pro zaměstnance pracující na směny A = {R,D,N,Z,V} = {1,2,3,4,5} ráno, den, noc, záloha, volno P = {Petr,Pavel,Marie,...} W = {Po,Út,St,Čt,...} Po Út St Čt... Petr R N V R Pavel R Z R N Marie N V D D... matice doménových proměnných: PetrPo, PetrUt,..., PavelPo,... Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

36 Příklad: rozvrhování zaměstnanců vytvoření rozvrhu pro zaměstnance pracující na směny A = {R,D,N,Z,V} = {1,2,3,4,5} ráno, den, noc, záloha, volno P = {Petr,Pavel,Marie,...} W = {Po,Út,St,Čt,...} Po Út St Čt... Petr R N V R Pavel R Z R N Marie N V D D... matice doménových proměnných: PetrPo, PetrUt,..., PavelPo,... každý den: minimální a maximální počet zaměstnanců každou směnu Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

37 Příklad: rozvrhování zaměstnanců vytvoření rozvrhu pro zaměstnance pracující na směny A = {R,D,N,Z,V} = {1,2,3,4,5} ráno, den, noc, záloha, volno P = {Petr,Pavel,Marie,...} W = {Po,Út,St,Čt,...} Po Út St Čt... Petr R N V R Pavel R Z R N Marie N V D D... matice doménových proměnných: PetrPo, PetrUt,..., PavelPo,... každý den: minimální a maximální počet zaměstnanců každou směnu R1 in MinRano1..MaxRano1, D1 in MinDen1..MaxDen1,... Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

38 Příklad: rozvrhování zaměstnanců vytvoření rozvrhu pro zaměstnance pracující na směny A = {R,D,N,Z,V} = {1,2,3,4,5} ráno, den, noc, záloha, volno P = {Petr,Pavel,Marie,...} W = {Po,Út,St,Čt,...} Po Út St Čt... Petr R N V R Pavel R Z R N Marie N V D D... matice doménových proměnných: PetrPo, PetrUt,..., PavelPo,... každý den: minimální a maximální počet zaměstnanců každou směnu R1 in MinRano1..MaxRano1, D1 in MinDen1..MaxDen1,... global_cardinality( [PetrPo,PavelPo,MariePo,...], [1-R1,2-D1,...,5-V1] ) Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

39 Příklad: rozvrhování zaměstnanců vytvoření rozvrhu pro zaměstnance pracující na směny A = {R,D,N,Z,V} = {1,2,3,4,5} ráno, den, noc, záloha, volno P = {Petr,Pavel,Marie,...} W = {Po,Út,St,Čt,...} Po Út St Čt... Petr R N V R Pavel R Z R N Marie N V D D... matice doménových proměnných: PetrPo, PetrUt,..., PavelPo,... každý den: minimální a maximální počet zaměstnanců každou směnu R1 in MinRano1..MaxRano1, D1 in MinDen1..MaxDen1,... global_cardinality( [PetrPo,PavelPo,MariePo,...], [1-R1,2-D1,...,5-V1] ) pro každého zaměstnance: minimální a maximální počet typu směny za týden Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

40 Příklad: rozvrhování zaměstnanců vytvoření rozvrhu pro zaměstnance pracující na směny A = {R,D,N,Z,V} = {1,2,3,4,5} ráno, den, noc, záloha, volno P = {Petr,Pavel,Marie,...} W = {Po,Út,St,Čt,...} Po Út St Čt... Petr R N V R Pavel R Z R N Marie N V D D... matice doménových proměnných: PetrPo, PetrUt,..., PavelPo,... každý den: minimální a maximální počet zaměstnanců každou směnu R1 in MinRano1..MaxRano1, D1 in MinDen1..MaxDen1,... global_cardinality( [PetrPo,PavelPo,MariePo,...], [1-R1,2-D1,...,5-V1] ) pro každého zaměstnance: minimální a maximální počet typu směny za týden R2 in MinRano2..MaxRano2, D2 in MinDen2..MaxDen2,... Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

41 Příklad: rozvrhování zaměstnanců vytvoření rozvrhu pro zaměstnance pracující na směny A = {R,D,N,Z,V} = {1,2,3,4,5} ráno, den, noc, záloha, volno P = {Petr,Pavel,Marie,...} W = {Po,Út,St,Čt,...} Po Út St Čt... Petr R N V R Pavel R Z R N Marie N V D D... matice doménových proměnných: PetrPo, PetrUt,..., PavelPo,... každý den: minimální a maximální počet zaměstnanců každou směnu R1 in MinRano1..MaxRano1, D1 in MinDen1..MaxDen1,... global_cardinality( [PetrPo,PavelPo,MariePo,...], [1-R1,2-D1,...,5-V1] ) pro každého zaměstnance: minimální a maximální počet typu směny za týden R2 in MinRano2..MaxRano2, D2 in MinDen2..MaxDen2,... global_cardinality( [PetrPo,PetrUt,...,PetrNe], [1-R2,2-D2,...,5-V2] ) Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

42 Labeling labeling( [] ). labeling( [Var Rest] ) :- % výběr nejlevější proměnné k instanciaci indomain( Var ), labeling( Rest ). % výběr hodnot ve vzrůstajícím pořadí Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

43 Labeling labeling( [] ). labeling( [Var Rest] ) :- % výběr nejlevější proměnné k instanciaci indomain( Var ), labeling( Rest ). % výběr hodnot ve vzrůstajícím pořadí?- X in 4..5, indomain(x). X = 4? ; X = 5? Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

44 Labeling labeling( [] ). labeling( [Var Rest] ) :- % výběr nejlevější proměnné k instanciaci indomain( Var ), labeling( Rest ). % výběr hodnot ve vzrůstajícím pořadí?- X in 4..5, indomain(x). X = 4? ; X = 5??- A in 0..2, B in 0..2, B#< A, labeling([a,b]). Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

45 Labeling labeling( [] ). labeling( [Var Rest] ) :- % výběr nejlevější proměnné k instanciaci indomain( Var ), labeling( Rest ). % výběr hodnot ve vzrůstajícím pořadí?- X in 4..5, indomain(x). X = 4? ; X = 5??- A in 0..2, B in 0..2, B#< A, labeling([a,b]). labeling( [] ). % MAC algortimus labeling( Variables ) :- select_variable( Variables, Var, Rest ), select_value( Var, Value ), ( Var #= Value, labeling( Rest ) ; Var #\= Value, labeling( Variables ) ). Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

46 Nejpoužívanější implementace CLP Swedish Institute of Computer Science: SICStus Prolog silná CLP(F D) knihovna komerční i akademické použití pro širokou škálu platforem příklady v přednášce z této implementace :- use_module(library(clpfd)) IC-PARC, Imperial College London: ECL i PS e široké možnosti kooperace mezi různými řešičemi: konečné domény, reálná čísla, repair akademické použití, komerční použití v rámci IC-PARC, platformy: Windows, Linux, Solaris CHIP knihovny dostupné pro Prolog i C++ GNU Prolog GNU licence, tj. volně dostupný sw Programování s omezujícími podmínkami I, 5. prosince Logické programování s omezujícími podmínkami

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

Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David

Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David Úvod do Prologu Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David Warren (Warren Abstract Machine) implementace

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

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

popel, glum & nepil 16/28

popel, glum & nepil 16/28 Lineární rezoluce další způsob zjemnění rezoluce; místo stromu směřujeme k lineární struktuře důkazu Lineární rezoluční odvození (důkaz) z Ë je posloupnost dvojic ¼ ¼ Ò Ò taková, že Ò ½ a 1. ¼ a všechna

Více

Logika a logické programování

Logika a logické programování Logika a logické programování témata ke zkoušce Poslední aktualizace: 16. prosince 2009 Zkouška je písemná, skládá se obvykle ze sedmi otázek (může být více nebo méně, podle náročnosti otázek), z toho

Více

Matematická logika. Miroslav Kolařík

Matematická logika. Miroslav Kolařík Matematická logika přednáška desátá Miroslav Kolařík Zpracováno dle textu R. Bělohlávka: Matematická logika poznámky k přednáškám, 2004. Obsah 1 Úvod do modální logiky 2 Logické programování a Prolog 3

Více

2.5 Rezoluční metoda v predikátové logice

2.5 Rezoluční metoda v predikátové logice 2.5. Rezoluční metoda v predikátové logice [101104-1520] 19 2.5 Rezoluční metoda v predikátové logice Rezoluční metoda v predikátové logice je obdobná stejnojmenné metodě ve výrokové logice. Ovšem vzhledem

Více

Programování v čistém Prologu

Programování v čistém Prologu Programování v čistém Prologu Petr Štěpánek S využitím materiálu Krysztofa R. Apta 2006 Logické programování 9 1 Ukázali jsme, že logické programy mohou sloužit k výpočtům. Volně řečeno, logiské programz

Více

Logické programy Deklarativní interpretace

Logické programy Deklarativní interpretace Logické programy Deklarativní interpretace Petr Štěpánek S využitím materialu Krysztofa R. Apta 2006 Logické programování 7 1 Algebry. (Interpretace termů) Algebra J pro jazyk termů L obsahuje Neprázdnou

Více

Logické programování I

Logické programování I Logické programování I PROLOG Program popisuje "svět" Prologu = databáze faktů a pravidel (tzv. klauzulí). fakta: predikát(arg1, arg2,...argn). cíle:?- predikát(arg1, arg2,...argn). pravidla: hlava :-

Více

Výroková a predikátová logika - V

Výroková a predikátová logika - V Výroková a predikátová logika - V Petr Gregor KTIML MFF UK ZS 2015/2016 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - V ZS 2015/2016 1 / 21 Dokazovací systémy VL Hilbertovský kalkul Hilbertovský

Více

Seminární práce z Teorie ICT

Seminární práce z Teorie ICT ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE Provozně ekonomická fakulta Seminární práce z Teorie ICT Implementace logické hádanky v Prologu Autor : Petr Pechek 1 Popis zvoleného problému Mým úkolem bylo vyřešit

Více

Modely Herbrandovské interpretace

Modely Herbrandovské interpretace Modely Herbrandovské interpretace Petr Štěpánek S využitím materialu Krysztofa R. Apta 2006 Logické programování 8 1 Uvedli jsme termové interpretace a termové modely pro logické programy a také nejmenší

Více

Výroková a predikátová logika - II

Výroková a predikátová logika - II Výroková a predikátová logika - II Petr Gregor KTIML MFF UK ZS 2015/2016 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - II ZS 2015/2016 1 / 18 Základní syntax Jazyk Výroková logika je logikou

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

Výroková a predikátová logika - XII

Výroková a predikátová logika - XII Výroková a predikátová logika - XII Petr Gregor KTIML MFF UK ZS 2018/2019 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - XII ZS 2018/2019 1 / 15 Rezoluční metoda v PL Rezoluční důkaz Obecné

Více

PA163 Programování s omezujícími podmínkami

PA163 Programování s omezujícími podmínkami Organizace předmětu PA163 Programování s omezujícími podmínkami Základní informace Web předmětu: http://www.fi.muni.cz/~hanka/cp Průsvitky: průběžně aktualizovány na webu předmětu Ukončení předmětu: cca

Více

Výroková a predikátová logika - X

Výroková a predikátová logika - X Výroková a predikátová logika - X Petr Gregor KTIML MFF UK ZS 2015/2016 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - X ZS 2015/2016 1 / 22 Herbrandova věta Úvod Redukce nesplnitelnosti na

Více

Stefan Ratschan. Fakulta informačních technologíı. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Stefan Ratschan. Fakulta informačních technologíı. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Logika pro každodenní přežití Stefan Ratschan Katedra číslicového návrhu Fakulta informačních technologíı České vysoké učení technické v Praze Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Více

Výroková a predikátová logika - III

Výroková a predikátová logika - III Výroková a predikátová logika - III Petr Gregor KTIML MFF UK ZS 2014/2015 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - III ZS 2014/2015 1 / 21 Výroková logika Horn-SAT Horn-SAT Jednotková

Více

Výroková a predikátová logika - II

Výroková a predikátová logika - II Výroková a predikátová logika - II Petr Gregor KTIML MFF UK ZS 2013/2014 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - II ZS 2013/2014 1 / 20 Základní syntax Jazyk Výroková logika je logikou

Více

Prolog 1-1. Rodinné vztahy pomocí Prologu:

Prolog 1-1. Rodinné vztahy pomocí Prologu: Prolog 1-1 - Prolog znamená programování v logice - namísto otázky jak se má získat určitá hodta se ptáme co platí mezi objekty - vhodný jazyk pro úlohy kde nás zajímají vztahy mezi objekty - namísto definic

Více

Negativní informace. Petr Štěpánek. S použitím materiálu M.Gelfonda a V. Lifschitze. Logické programování 15 1

Negativní informace. Petr Štěpánek. S použitím materiálu M.Gelfonda a V. Lifschitze. Logické programování 15 1 Negativní informace Petr Štěpánek S použitím materiálu M.Gelfonda a V. Lifschitze 2009 Logické programování 15 1 Negace jako neúspěch Motivace: Tvrzení p (atomická formule) neplatí, jestliže nelze odvodit

Více

Logické programování

Logické programování 30. října 2012 Osnova Principy logického programování 1 Principy logického programování 2 3 1 Principy logického programování 2 3 Paradigmata programování Strukturované programování Procedurální programování

Více

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky Vyučovací hodina 1vyučovací hodina: Opakování z minulé hodiny Nová látka Procvičení nové látky Shrnutí 5 min 20 min 15 min 5 min 2vyučovací hodiny: Opakování z minulé hodiny Nová látka Procvičení nové

Více

Sémantika predikátové logiky

Sémantika predikátové logiky Sémantika predikátové logiky pro analýzu sémantiky potřebujeme nejprve specifikaci jazyka (doména, konstanty, funkční a predikátové symboly) příklad: formální jazyk s jediným binárním predikátovým symbolem

Více

ILOG (aisa:/software/ilog/solver51/doc/index.html)

ILOG (aisa:/software/ilog/solver51/doc/index.html) ILOG Solver ILOG (aisa:/software/ilog/solver51/doc/index.html) CSP modelován pomocí C++ tříd, různé sady knihoven napsané v C++ ILOG Solver = základní knihovny pravidelná aktualizace sw na MU definice

Více

Rezoluční kalkulus pro logiku prvního řádu

Rezoluční kalkulus pro logiku prvního řádu AD4M33AU Automatické uvažování Rezoluční kalkulus pro logiku prvního řádu Petr Pudlák Logika prvního řádu (Někdy nepřesně nazývaná predikátová logika.) Výhody Vyšší vyjadřovací schopnost jazyka, V podstatě

Více

Výroková a predikátová logika - III

Výroková a predikátová logika - III Výroková a predikátová logika - III Petr Gregor KTIML MFF UK ZS 2017/2018 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - III ZS 2017/2018 1 / 16 2-SAT 2-SAT Výrok je v k-cnf, je-li v CNF a

Více

Výroková a predikátová logika - II

Výroková a predikátová logika - II Výroková a predikátová logika - II Petr Gregor KTIML MFF UK ZS 2017/2018 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - II ZS 2017/2018 1 / 17 Předběžnosti Základní pojmy n-ární relace a funkce

Více

Skolemizace. x(x + f(x) = 0). Interpretace f unární funkce, která pro daný

Skolemizace. x(x + f(x) = 0). Interpretace f unární funkce, která pro daný Skolemizace převod formulí na formule bez existenčních kvantifikátorů v jazyce, který je rozšířen o tzv. Skolemovy funkce; zachovává splnitelnost idea převodu: formuli x 1... x n yp (x 1,..., x n, y) transformujeme

Více

IB013 Logické programování I Hana Rudová. jaro 2011

IB013 Logické programování I Hana Rudová. jaro 2011 IB013 Logické programování I Hana Rudová jaro 2011 Hodnocení předmětu Zápočtový projekt: celkem až 40 bodů Průběžná písemná práce: až 30 bodů (základy programování v Prologu) pro každého jediný termín:

Více

Rezoluce v predikátové logice

Rezoluce v predikátové logice Rezoluce v predikátové logice Jiří Velebil: AD0B01LGR 2015 Rezoluce v PL 1/16 Základní myšlenky 1 M = ϕ iff X = M { ϕ} nesplnitelná. (M musí být množina sentencí, ϕ sentence.) 2 X nesplnitelná iff X =

Více

Formální systém výrokové logiky

Formální systém výrokové logiky Formální systém výrokové logiky 1.Jazyk výrokové logiky Nechť P = {p,q,r, } je neprázdná množina symbolů, které nazýváme prvotní formule. Symboly jazyka L P výrokové logiky jsou : a) prvky množiny P, b)

Více

4.2 Syntaxe predikátové logiky

4.2 Syntaxe predikátové logiky 36 [070507-1501 ] 4.2 Syntaxe predikátové logiky V tomto oddíle zavedeme syntaxi predikátové logiky, tj. uvedeme pravidla, podle nichž se tvoří syntakticky správné formule predikátové logiky. Význam a

Více

Programovací jazyk Prolog

Programovací jazyk Prolog Programovací jazyk Prolog Logické programování Šárka Vavrečková Ústav informatiky, Filozoficko-přírodovědecká fakulta Slezské univerzity v Opavě sarka.vavreckova@fpf.slu.cz 1. prosince 2008 Prolog Co je

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

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

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

Využití principů, ale vlastní naprogramování řešících

Využití principů, ale vlastní naprogramování řešících Programování Cvičení 1 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 Využití CSP Využití principů,

Více

platné nejsou Sokrates je smrtelný. (r) 1/??

platné nejsou Sokrates je smrtelný. (r) 1/?? Predikátová logika plně přejímá výsledky výrokové logiky zabývá se navíc strukturou jednotlivých jednoduchých výroků na základě této analýzy lze odvodit platnost některých výroků, které ve výrokové logice

Více

Tableaux metody. Jiří Vyskočil 2011

Tableaux metody. Jiří Vyskočil 2011 Tableaux metody Jiří Vyskočil 2011 Tableau [tabló] metoda Tableau metoda je další oblíbená metoda užívaná pro automatické dokazování vět v predikátové logice, ale i v dalších (modálních, temporálních,

Více

Rezoluce v predikátové logice

Rezoluce v predikátové logice Rezoluce v predikátové logice Jiří Velebil: X01DML 15. října 2010: Rezoluce v PL 1/16 Základní myšlenky 1 M = ϕ iff X = M { ϕ} nesplnitelná. (M musí být množina sentencí, ϕ sentence.) 2 X nesplnitelná

Více

Úvod do TI - logika Výroková logika - pokračování (3.přednáška) Marie Duží

Úvod do TI - logika Výroková logika - pokračování (3.přednáška) Marie Duží Úvod do TI - logika Výroková logika - pokračování (3.přednáška) Marie Duží marie.duzi@vsb.cz Normální formy formulí výrokové logiky Každé formuli výrokové logiky přísluší právě jedna pravdivostní funkce,

Více

Výroková logika. Sémantika výrokové logiky

Výroková logika. Sémantika výrokové logiky Výroková logika Výroková logika se zabývá vztahy mezi dále neanalyzovanými elementárními výroky. Nezabývá se smyslem těchto elementárních výroků, zkoumá pouze vztahy mezi nimi. Elementární výrok je takový

Více

klauzulí deklarativní (specifikace programu je přímo programem) popel, glum & nepil 1/18

klauzulí deklarativní (specifikace programu je přímo programem) popel, glum & nepil 1/18 IB101, log programování, Prolog Logické programování logický program: libovolná konečná množina programových Hornových klauzulí odvozování (dokazování) cílů založeno na SLD-rezoluci deklarativní (specifikace

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

IB015 Neimperativní programování. Neimperativní programování v Prologu. Jiří Barnat

IB015 Neimperativní programování. Neimperativní programování v Prologu. Jiří Barnat IB015 Neimperativní programování Neimperativní programování v Prologu Jiří Barnat Logické programování a Prolog IB015 Neimperativní programování 09 str. 2/35 Logické programování Deklarativní programovací

Více

Logické programování

Logické programování Logické programování Petr Štěpánek S využitím materialu Krysztofa R. Apta 2006 Logické programování 1 1 Prolog a Logické programování Prolog vznikl jako programovací jazyk v Marseille 1970, jeho autorem

Více

Predikátová logika. prvního řádu

Predikátová logika. prvního řádu Predikátová logika prvního řádu 2 Predikát Predikát je n-ární relace - vyjadřuje vlastnosti objektů a vztahy mezi objekty - z jednoduchého výroku vznikne vypuštěním alespoň jednoho jména objektu (individua)

Více

Úvod do logiky (presentace 2) Naivní teorie množin, relace a funkce

Úvod do logiky (presentace 2) Naivní teorie množin, relace a funkce Úvod do logiky (presentace 2) Naivní teorie množin, relace a funkce Marie Duží marie.duzi@vsb.cz 1 Úvod do teoretické informatiky (logika) Naivní teorie množin Co je to množina? Množina je soubor prvků

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

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 Už umíme používat výrokovou logiku pro reprezentaci znalostí a odvozování důsledků. Dnes Dnes zopakujeme

Více

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

Hranová konzistence. Arc consistency AC. Nejprve se zabýváme binárními CSP. podmínka odpovídá hraně v grafu podmínek 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

Více

Domény. Petr Štěpánek. S využitím materialu Krysztofa R. Apta

Domény. Petr Štěpánek. S využitím materialu Krysztofa R. Apta Domény Petr Štěpánek S využitím materialu Krysztofa R. Apta 2006 Logické programování 10 1 Typy programů v čistém Prologu je možné uspořádat podle různých pohledů. Zajímavá je charakteristika podle domén,

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

Predikátová logika dokončení

Predikátová logika dokončení Predikátová logika dokončení Jiří Velebil: X01DML 1. října 2010: Predikátová logika dokončení 1/18 Syntaktická analýza Jako ve výrokové logice (syntaktické stromy). Každý list úspěšného stromu je obsazen

Více

Výroková logika - opakování

Výroková logika - opakování - opakování ormální zavedení Výroková formule: Máme neprázdnou nejvýše spočetnou množinu A výrokových proměnných. 1. Každá proměnná je výroková formule 2. Když α, β jsou formule, potom ( α), (α β), (α

Více

Další (neklasické) logiky. Jiří Velebil: AD0B01LGR 2015 Predikátová logika 1/20

Další (neklasické) logiky. Jiří Velebil: AD0B01LGR 2015 Predikátová logika 1/20 Predikátová logika Jiří Velebil: AD0B01LGR 2015 Predikátová logika 1/20 Jazyk predikátové logiky Má dvě sorty: 1 Termy: to jsou objekty, o jejichž vlastnostech chceme hovořit. Mohou být proměnné. 2 Formule:

Více

Vyhněte se katastrofám pomocí výpočetní matematiky

Vyhněte se katastrofám pomocí výpočetní matematiky Vyhněte se katastrofám pomocí výpočetní matematiky Stefan Ratschan Ústav informatiky Akademie věd ČR Stefan Ratschan Vyhněte se katastrofám 1 / 29 x. x 2 = 2 Kvíz x. x 2 = 2 x. x 2 7 p q x. x 2 + px +

Více

1 REZOLUČNÍ FORMÁLNÍ DŮKAZY

1 REZOLUČNÍ FORMÁLNÍ DŮKAZY Vážená kolegyně / vážený kolego, součástí Vašeho rozšiřujícího studia informatiky je absolvování předmětu Logika pro učitele 2, jehož cílem je v návaznosti na předmět Logika pro učitele 1 seznámení se

Více

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí) Programovací jazyky Programovací jazyky nižší assembler (jazyk symbolických instrukcí) vyšší imperativní (procedurální) Pascal, C/C++, Java, Basic, Python, php neimperativní (neprocedurální) Lisp, Prolog

Více

Základy logiky Logika a logické systémy. Umělá inteligence a rozpoznávání, LS

Základy logiky Logika a logické systémy. Umělá inteligence a rozpoznávání, LS Základy logiky 22. 4. 2015 Umělá inteligence a rozpoznávání, LS 2015 6-1 Logika je naukou, která se zabývá studiem lidského uvažování. Mezi základní úlohy logiky patří nalézání metod správného usuzování,

Více

Úvod do umělé inteligence, jazyk Prolog

Úvod do umělé inteligence, jazyk Prolog Úvod do umělé inteligence, jazyk Prolog Aleš Horák E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ Obsah: Co je umělá inteligence Organizace předmětu PB016 Stručné shrnutí Prologu Úvod do umělé inteligence

Více

Úvod do umělé inteligence, jazyk Prolog

Úvod do umělé inteligence, jazyk Prolog Úvod do umělé inteligence, jazyk Prolog Aleš Horák E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ Obsah: Co je umělá inteligence Organizace předmětu PB016 Stručné shrnutí Prologu Úvod do umělé inteligence

Více

Rovnost lze vyjádřit jako predikát, např. můžeme zvolit, že P(x, y) reprezentujetvrzení xjerovnoy.

Rovnost lze vyjádřit jako predikát, např. můžeme zvolit, že P(x, y) reprezentujetvrzení xjerovnoy. Rovnost Jedním z nejdůležitějších druhů relací je rovnost(identita). Prvkyxayjsousirovny,cožzapisujeme x =y, jestližesejednáojedenatentýžprvek. Rovnost lze vyjádřit jako predikát, např. můžeme zvolit,

Více

Klauzulární logika. úvod. Šárka Vavrečková. 20. října Ústav informatiky Filozoficko-Přírodovědecká fakulta Slezské univerzity, Opava

Klauzulární logika. úvod. Šárka Vavrečková. 20. října Ústav informatiky Filozoficko-Přírodovědecká fakulta Slezské univerzity, Opava Klauzulární logika úvod Šárka Vavrečková Ústav informatiky Filozoficko-Přírodovědecká fakulta Slezské univerzity, Opava 20. října 2008 Klauzulární logika Hlavní vlastnosti pracujeme s klauzulemi, které

Více

Úvod do umělé inteligence, jazyk Prolog

Úvod do umělé inteligence, jazyk Prolog Úvod do umělé inteligence, jazyk Prolog Aleš Horák E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ systém, který se chová jako člověk Turingův test (1950) zahrnuje: zpracování přirozeného jazyka (NLP)

Více

Rozvrhování zaměstnanců

Rozvrhování zaměstnanců Rozvrhování zaměstnanců 23. dubna 2014 1 Úvod 2 Rozvrhování volných dnů 3 Rozvrhování směn 4 Cyklické rozvrhování směn 5 Rozvrhování pomocí omezujících podmínek Rozvrhování zaměstnanců Jedná se o problém

Více

Úvod do umělé inteligence, jazyk Prolog

Úvod do umělé inteligence, jazyk Prolog Úvod do umělé inteligence, jazyk Prolog Aleš Horák E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ Obsah: Organizace předmětu PB016 Co je umělá inteligence Stručné shrnutí Prologu Úvod do umělé inteligence

Více

1 Výroková logika 1. 2 Predikátová logika 3. 3 Důkazy matematických vět 4. 4 Doporučená literatura 7

1 Výroková logika 1. 2 Predikátová logika 3. 3 Důkazy matematických vět 4. 4 Doporučená literatura 7 1 Výroková logika 1 Výroková logika 1 2 Predikátová logika 3 3 Důkazy matematických vět 4 4 Doporučená literatura 7 Definice 1.1 Výrokem rozumíme každé sdělení, o kterém má smysl uvažovat, zda je, či není

Více

Úvod do umělé inteligence, jazyk Prolog

Úvod do umělé inteligence, jazyk Prolog Úvod do umělé inteligence, jazyk Prolog Aleš Horák E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ Obsah: Organizace předmětu PB016 Co je umělá inteligence Stručné shrnutí Prologu Úvod do umělé inteligence

Více

rovnic), Definice y + p(x)y = q(x), Je-li q(x) = 0 na M, nazývá se y + p(x)y =

rovnic), Definice y + p(x)y = q(x), Je-li q(x) = 0 na M, nazývá se y + p(x)y = Cíle Přehled základních typů diferenciálních rovnic prvního řádu zakončíme pojednáním o lineárních rovnicích, které patří v praktických úlohách k nejfrekventovanějším. Ukážeme například, že jejich řešení

Více

Oborové číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B. 1. úloha (4 body) Kolik existuje cest délky 4 v grafu K11? 2.

Oborové číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B. 1. úloha (4 body) Kolik existuje cest délky 4 v grafu K11? 2. PŘIJÍMACÍ TEST Z INFORMATIKY A MATEMATIKY NAVAZUJÍCÍ MAGISTERSKÉ STUDIUM V OBORU APLIKOVANÁ INFORMATIKA FAKULTA INFORMATIKY A MANAGEMENTU UNIVERZITY HRADEC KRÁLOVÉ ČÁST A Oborové číslo Hodnocení - část

Více

Úvod do TI - logika Logické programování, PROLOG (10.přednáška) Marie Duží

Úvod do TI - logika Logické programování, PROLOG (10.přednáška) Marie Duží Úvod do TI - logika Logické programování, PROLOG (10.přednáška) Marie Duží marie.duzi@vsb.cz Základy (logika) Prologu Metoda (čistého) logického programování je speciálním případem obecné rezoluční metody.

Více

Okruh č.3: Sémantický výklad predikátové logiky

Okruh č.3: Sémantický výklad predikátové logiky Okruh č.3: Sémantický výklad predikátové logiky Predikátová logika 1.řádu formalizuje úsudky o vlastnostech předmětů a vztazích mezi předměty pevně dané předmětné oblasti (univerza). Nebudeme se zabývat

Více

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu: Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury

Více

1 Polynomiální interpolace

1 Polynomiální interpolace Polynomiální interpolace. Metoda neurčitých koeficientů Příklad.. Nalezněte polynom p co nejmenšího stupně, pro který platí p() = 0, p(2) =, p( ) = 6. Řešení. Polynom hledáme metodou neurčitých koeficientů,

Více

Úvod do umělé inteligence, jazyk Prolog

Úvod do umělé inteligence, jazyk Prolog Úvod do umělé inteligence, jazyk Prolog Aleš Horák E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ Obsah: Organizace předmětu PB016 Co je umělá inteligence Úvod do umělé inteligence 1/12 1 / 22 Organizace

Více

6. Logika a logické systémy. Základy logiky. Lucie Koloušková, Václav Matoušek / KIV. Umělá inteligence a rozpoznávání, LS

6. Logika a logické systémy. Základy logiky. Lucie Koloušková, Václav Matoušek / KIV. Umělá inteligence a rozpoznávání, LS Základy logiky Umělá inteligence a rozpoznávání, LS 2012 6-1 Logika je naukou, která se zabývá studiem lidského uvažování. Mezi základní úlohy logiky patří nalézání metod správného usuzování, tedy postupů,

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

Kombinatorická minimalizace

Kombinatorická minimalizace Kombinatorická minimalizace Cílem je nalézt globální minimum ve velké diskrétní množině, kde může být mnoho lokálních minim. Úloha obchodního cestujícího Cílem je najít nejkratší cestu, která spojuje všechny

Více

Marie Duží

Marie Duží Marie Duží marie.duzi@vsb.cz Normální formy formulí výrokové logiky Každé formuli výrokové logiky přísluší právě jedna pravdivostní funkce, zobrazení {p, q, r } {0, 1} (pravdivostní tabulka). Naopak však

Více

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem. Algoritmus Algoritmus je schematický postup pro řešení určitého druhu problémů, který je prováděn pomocí konečného množství přesně definovaných kroků. nebo Algoritmus lze definovat jako jednoznačně určenou

Více

Occur-check (Test konfliktu proměnných)

Occur-check (Test konfliktu proměnných) Occur-check (Test konfliktu proměnných) Petr Štěpánek S využitím materialu Krysztofa R. Apta 2007 Logické programování 13 1 Při výpočtech v Prologu většina implementací používá zjednodušený algoritmus

Více

A4B33ZUI Základy umělé inteligence

A4B33ZUI Základy umělé inteligence LS 2014 Jméno: A4B33ZUI Základy umělé inteligence 11. 6. 2014 O1 O2 O3 O4 O5 Total (50) Instrukce: Na vypracování máte 150 min, můžete použít vlastní poznámky v podobě ručně popsaného listu A4. Použití

Více

Klasická predikátová logika

Klasická predikátová logika Klasická predikátová logika Matematická logika, LS 2012/13, závěrečná přednáška Libor Běhounek www.cs.cas.cz/behounek/teaching/malog12 PřF OU, 6. 5. 2013 Symboly klasické predikátové logiky Poznámky Motivace

Více

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí) Programovací jazyky Programovací jazyky nižší assembler (jazyk symbolických instrukcí) vyšší imperativní (procedurální) Pascal, C/C++, Java, Basic, Python, php neimperativní (neprocedurální) Lisp, Prolog

Více

Od Aristotela k Prologu

Od Aristotela k Prologu JIHOČESKÁ UNIVERZITA v ČESKÝCH BUDĚJOVICÍCH PEDAGOGICKÁ FAKULTA KATEDRA INFORMATIKY Od Aristotela k Prologu František Sedláček 2010 František Sedláček, Pedagogická fakulta Jihočeská Univerzita v Č.Budějovicích

Více

Úvod do TI - logika Predikátová logika 1.řádu (4.přednáška) Marie Duží marie.duzi@vsb.cz

Úvod do TI - logika Predikátová logika 1.řádu (4.přednáška) Marie Duží marie.duzi@vsb.cz Úvod do TI - logika Predikátová logika 1.řádu (4.přednáška) Marie Duží marie.duzi@vsb.cz Jednoduché úsudky, kde VL nestačí Všechny opice mají rády banány Judy je opice Judy má ráda banány Z hlediska VL

Více

vhodná pro strojové dokazování (Prolog) metoda založená na vyvracení: dokazuje se nesplnitelnost formulí

vhodná pro strojové dokazování (Prolog) metoda založená na vyvracení: dokazuje se nesplnitelnost formulí Rezoluce: další formální systém vhodná pro strojové dokazování (Prolog) metoda založená na vyvracení: dokazuje se nesplnitelnost formulí pracujeme s formulemi v nkf (též klauzulárním tvaru), ale používáme

Více

IA008 Computational logic Version: 6. května Formule je v konjunktivní normální formě (CNF), pokud má tvar α 1... α n,

IA008 Computational logic Version: 6. května Formule je v konjunktivní normální formě (CNF), pokud má tvar α 1... α n, 1 Převody do normálních forem Příklad 1.1: Vyjádřete následující formule v DNF pomocí pravdivostní tabulky a pomocí převodu logických spojek. a) (A B) C b) (A B) C c) (A B) (C D) Formule je v disjunktivní

Více

Výroková logika. Teoretická informatika Tomáš Foltýnek

Výroková logika. Teoretická informatika Tomáš Foltýnek Výroková logika Teoretická informatika Tomáš Foltýnek foltynek@pef.mendelu.cz Teoretická informatika strana 2 Opakování z minulé přednášky Co je to formalismus a co je jeho cílem? Formulujte Russelův paradox

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

Výroková a predikátová logika - VII

Výroková a predikátová logika - VII Výroková a predikátová logika - VII Petr Gregor KTIML MFF UK ZS 2018/2019 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - VII ZS 2018/2019 1 / 15 Platnost (pravdivost) Platnost ve struktuře

Více

Výroková a predikátová logika - XIII

Výroková a predikátová logika - XIII Výroková a predikátová logika - XIII Petr Gregor KTIML MFF UK ZS 2013/2014 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - XIII ZS 2013/2014 1 / 13 Úvod Algoritmická (ne)rozhodnutelnost Které

Více

0.1 Úvod do lineární algebry

0.1 Úvod do lineární algebry Matematika KMI/PMATE 1 01 Úvod do lineární algebry 011 Vektory Definice 011 Vektorem aritmetického prostorur n budeme rozumět uspořádanou n-tici reálných čísel x 1, x 2,, x n Definice 012 Definice sčítání

Více

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic Přednáška třetí (a pravděpodobně i čtvrtá) aneb Úvod do lineární algebry Matice a soustavy rovnic Lineární rovnice o 2 neznámých Lineární rovnice o 2 neznámých Lineární rovnice o dvou neznámých x, y je

Více

Základy umělé inteligence

Základy umělé inteligence Základy umělé inteligence Automatické řešení úloh Základy umělé inteligence - prohledávání. Vlasta Radová, ZČU, katedra kybernetiky 1 Formalizace úlohy UI chápe řešení úloh jako proces hledání řešení v

Více