Programowanie w logice i systemy ekspertowe Krzysztof TARGIEL

  • Slides: 25
Download presentation
Programowanie w logice i systemy ekspertowe Krzysztof TARGIEL Część II

Programowanie w logice i systemy ekspertowe Krzysztof TARGIEL Część II

Plan • Podstawy logiki matematycznej • logika predykatów - przykłady • Automatyczne dowodzenie twierdzeń

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,

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)

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

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)

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 zeus stała funkcja zeroargumentowa 7

Podstawy logiki matematycznej Logika predykatów 1 = jest_ojcem ( , ) jest_ojcem(zeus, ares) Wart.

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.

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

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

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

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,

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,

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,

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

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

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 ¬

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 (

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 )

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)

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.

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)

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,

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

Koniec części II 25