Programowanie w logice i systemy ekspertowe Krzysztof TARGIEL
- Slides: 25
Programowanie w logice i systemy ekspertowe Krzysztof TARGIEL Część II
Plan • Podstawy logiki matematycznej • logika predykatów - przykłady • Automatyczne dowodzenie twierdzeń • Zasada rezolucji dla klauzul hornowskich • Programowanie w logice • przykład • strategie poszukiwania klauzuli pustej 2
Podstawy logiki matematycznej Logika predykatów Dziedzina D : Interpretacją I formuły nazywamy parę (D, m) 3
Podstawy logiki matematycznej Logika predykatów m zeus Interpretacją I formuły nazywamy parę (D, m) 4
Podstawy logiki matematycznej Logika predykatów = ojciec ( ) zeus = ojciec(atena) symbol funkcyjny (funktor) 5
Podstawy logiki matematycznej Logika predykatów Y = ojciec ( X ) Y = ojciec(X) Wart. I, v (fkn (t 1, . . . , tn)) = m(fkn)(Wart. I, v (t 1), . . . , Wart. I, v (tn)) Wart. I, v (ojciec(atena)) = zeus 6
Podstawy logiki matematycznej Logika predykatów zeus stała funkcja zeroargumentowa 7
Podstawy logiki matematycznej Logika predykatów 1 = jest_ojcem ( , ) jest_ojcem(zeus, ares) Wart. I, v (Pkn (t 1, . . . , tn)) = m(Pkn)(Wart. I, v (t 1), . . . , Wart. I, v (tn)) Wart. I, v (jest_ojcem(zeus, ares)) = 1 8
Podstawy logiki matematycznej Logika predykatów 0 = jest_ojcem ( , ) jest_ojcem(hera, ares) Wart. I, v (Pkn (t 1, . . . , tn)) = m(Pkn)(Wart. I, v (t 1), . . . , Wart. I, v (tn)) Wart. I, v (jest_ojcem(hera, ares)) = 0 9
Podstawy logiki matematycznej Logika predykatów 1 prawda() Predykat zeroargumetowy, stała zdaniowa Wart. I, v (Pk 0 ) = m(Pk 0) Wart. I, v (prawda()) = 1 10
Podstawy logiki matematycznej Logika predykatów 0 fałsz Predykat zeroargumetowy, stała zdaniowa Wart. I, v (Pk 0 ) = m(Pk 0) Wart. I, v (fałsz) = 0 11
Podstawy logiki matematycznej Logika predykatów v Bóg_olimpijski = zeus Wartościowanie zmiennych Wart. I, v (xk) = v(xk) Wart. I, v (Bóg_olimpijski) = zeus Wart. I, v (Bóg_olimpijski) = ares 12
Podstawy logiki matematycznej Logika predykatów pierwszego rzędu (Gottlob Frege) Syntaktyka (składnia) Alfabet (zmienne, funktory, stałe, predykaty, stałe zdaniowe, spójniki logiczne, symbole interpunkcyjne ) Termy, Formuły atomowe (Atomy) Zasady formowania Semantyka (znaczenie) Interpretacja, Wartościowanie Rachunek zdań Logika zdań Rachunek kwantyfikatorów, Rachunek predykatów Logika predykatów pierwszego rzędu 13
Podstawy logiki matematycznej Logika predykatów Literał jest_ojcem(zeus, ares) lub ¬ jest_ojcem(zeus, ares) Klauzula jest_dziadkiem(zeus, harmonia) ¬ jest_ojcem(zeus, ares) ¬ jest_ojcem(ares, harmonia) jest_synem(ares) ¬ jest_ojcem(zeus, ares) ¬ jest_ojcem(ares, harmonia) jest_dziadkiem(zeus, harmonia) jest_synem(ares) Ponieważ ¬ a ¬ b ¬ (a b) ¬ (jest_ojcem(zeus, ares) jest_ojcem(ares, harmonia)) (jest_dziadkiem(zeus, harmonia) jest_synem(ares)) oraz ¬ a b jest_ojcem(zeus, ares) jest_ojcem(ares, harmonia) jest_dziadkiem(zeus, harmonia) jest_synem(ares) 14
Podstawy logiki matematycznej Logika predykatów Klauzula hornowska ¬ jest_ojcem(zeus, ares) ¬ jest_ojcem(ares, harmonia) jest_dziadkiem(zeus, harmonia) Ponieważ ¬ (a b) ¬ a ¬ b ¬ (jest_ojcem(zeus, ares) jest_ojcem(ares, harmonia)) jest_dziadkiem(zeus, harmonia) oraz ¬ a b jest_ojcem(zeus, ares) jest_ojcem(ares, harmonia) jest_dziadkiem(zeus, harmonia) 15
Podstawy logiki matematycznej Logika predykatów Klauzula hornowska jest_ojcem(zeus, ares) jest_ojcem(ares, harmonia) jest_dziadkiem(zeus, harmonia) Możemy też zapisać jest_dziadkiem(zeus, harmonia) jest_ojcem(zeus, ares) jest_ojcem(ares, harmonia) Lub w zapisie prologowym jest_dziadkiem(zeus, harmonia) : - jest_ojcem(zeus, ares), jest_ojcem(ares, harmonia). 16
Automatyczne dowodzenie twierdzeń Zasada rezolucji A B 1 . . Bm , ¬ A E 1 . . Em B 1 . . Bm E 1 . . Em Wywód rezolucyjny Dowód niespełnialności Reguły wnioskowania modus ponens a, a b b ponieważ a b ¬ a b a, ¬ a b b 17
Automatyczne dowodzenie twierdzeń Zasada rezolucji dla klauzul hornowskich ¬ B A; ¬ E ¬ A C ¬ B ¬ E C Ponieważ ¬ a ¬ b ¬ (a b) ¬ B A; ¬ (E A) C ¬ ( B E ) C oraz ¬ a b B A; (E A) C ( B E ) C 18
Automatyczne dowodzenie twierdzeń Zasada rezolucji dla klauzul hornowskich B A; (E A) C ( B E ) C Lub w innym zapisie C (E A); A B C (E B) W szczególności C ( A); A � Co daje C � ; � C � 19
Programowanie w logice Zapis prologowy ( x 1, . . . , xn ) A 1 . . . An B 1 . . Bm B 1 : - A 1, . . . , An Bm : - A 1, . . . , An Fakt : B : - co zapisujemy jako B. Pytanie: : - A to zaprzeczenie faktu A : co zapisujemy jako Goal : A 1, . . . , An 20
Programowanie w logice Przykład (C 1) jest_ojcem(zeus, apollo). (C 2) jest_ojcem(zeus, ares). (C 3) jest_ojcem(ares, harmonia). (C 4) jest_dziadkiem(Dziadek, Wnuk) : - jest_ojcem(Dziadek, Syn), jest_ojcem(Syn, Wnuk). Pytanie (C*) : -jest_dziadkiem(zeus, harmonia) Co równoważne ¬ jest_dziadkiem(zeus, harmonia) 21
Programowanie w logice Poszukiwanie klauzuli pustej Strategie poszukiwania • „wszerz” - BFS ( ang. Breadth-First Search ) • pełna • nieefektywna • „w głąb” - DFS ( ang. Depth-First Search ) • niepełna • nawracanie ( ang. backtracking ) SLD-rezolucja (ang. Source Linear resolution for Definite clause) rezolucja źródłowa uporządkowana • liniowa - jedną z przesłanek jest bieżąca rezolwenta • źródłowa - drugą przesłąnką jest jedna z klauzul zdefiniowanych Unifikacja (uzgadnianie zmiennych) 22
Programowanie w logice Przykład cd. (C 1) jest_ojcem(zeus, apollo). = j_o(zeus, apollo) (C 2) jest_ojcem(zeus, ares). = j_o(zeus, ares) (C 3) jest_ojcem(ares, harmonia). = j_o(ares, harmonia) (C 4) jest_dziadkiem(Dziadek, Wnuk) : - jest_ojcem(Dziadek, Syn), jest_ojcem(Syn, Wnuk). = j_d(D, W) : - j_o(D, S), j_o(S, W). (C*) : -jest_dziadkiem(zeus, harmonia) = j_d(zeus, harmonia) (C 4) : - j_d(zeus, harmonia) : - j_o(zeus, S), j_o(S, harmonia). S= {apollo} S= {harmonia} S= { ares } (C 1) : - j_o(zeus, apollo), j_o(apollo, harmonia). (C 2) : - j_o(apollo, harmonia). : - j_o(zeus, ares), j_o(ares, harmonia). : - j_o(ares, harmonia). (C 3) 23
Programowanie w logice Program : DOMAINS bog=symbol PREDICATES jest_ojcem(bog, bog) jest_dziadkim(bog, bog) CLAUSES jest_ojcem(zeus, ares). jest_ojcem(zeus, apollo). jest_ojcem(ares, harmonia). jest_dziadkiem(Dziadek, Wnuk) : - jest_ojcem(Dziadek, Syn), jest_ojcem(Syn, Wnuk). GOAL : jest_dziadkiem(zeus, harmonia) 24
Koniec części II 25
- Systemy ekspertowe
- Napisz jak nazywamy zdania nie połączone spójnikiem
- Minimizarea functiilor logice
- Stosunek podprzeciwieństwa
- Ghicitori figuri geometrice gradinita
- Circuit secvential
- Tipuri de temeiuri
- Minimizarea functiilor logice
- Functia xor
- Programowanie imperatywne
- Dyskretny problem plecakowy
- Algorytm lamporta
- Programowanie vba
- Bascom 8051
- Programowanie deklaratywne
- Programowanie imperatywne
- Schemat żywienia niemowląt 2016 who
- Quiz informatyczny
- Delphi programowanie
- Yagni programowanie
- Bramki logiczne fbd
- 1000 pierwszych dni
- Vba lista komend
- Programowanie wizualne
- Programowanie nieliniowe
- Krzysztof dobosz