Elementy Sztucznej Inteligencji Reprezentacja wiedzy: logika predykatów pierwszego rzdu wykład 7 Plan wykładu Logika predykatów pierwszego rzdu Metoda rezolucji Unifikacja Przejcie od logiki predykatów do Prologu PROgramming in LOGic Procedura przegldania bazy wiedzy Predykaty rekurencyjne 2
Rachunku zda kontra logika predykatów pierwszego rzdu Rachunek zda: Ograniczona ontologia zakłada, e wiat składa si tylko z faktów. Logika predykatów pierwszego rzdu Moe wyraa fakty o wszystkich obiektach w mikrowiecie. Pozwala na reprezentowanie ogólnych reguł rzdzcych rzeczywistoci. Nie potrafi reprezentowa kategorii, czasu czy zdarze (niekoniecznie). Dowolno reprezentacji faktów. Uniwersalna: moe wyrazi wszystko, co da si zaprogramowa. 3 Logika predykatów Logika predykatów reprezentuje fakty o obiektach, tj. rzeczach o indywidualnej tosamoci i własnociach, które odróniaj je od innych obiektów. Pomidzy obiektami zachowywane s róne relacje. Wród relacji wyrónia si funkcje (relacje z jedn wartoci dla danego wejcia). Przykłady faktów: Pola ssiadujce z wumpusem cuchn: obiekty: wumpus, pole własno: cuchnie relacja: ssiedni Zły król Jan rzdził Angli w 200. obiekty: Jan, Anglia, 200 własno: zły, król relacja: rzdził (lub król jako relacja pomidzy krajem i człowiekiem) 4
Składnia (syntaksa) Symbole stałe, np.: A, B, Jan nazywaj dokładnie jeden obiekt. Symbole predykatów, np.: okrgły, brat szczególna relacja w modelu. brat moe reprezentowa relacj jest bratem. brat jest symbolem predykatu binarnego, który zachowuje relacj (lub nie) pomidzy dwoma obiektami. symbole funkcji, np.: cosinus, ojciec relacja funkcyjna jest zachowana dla dokładnie jednego obiektu w relacji. (Kady ma jednego ojca, a kada warto kta ma dokładnie jedn warto cosinusa). Wybór symboli zaley tylko od uytkownika! 5 Składnia termy Term wyraenie logiczne odnoszce si do obiektu. Do termów zalicza si: symbole stałe: Jan symbole funkcji: lewa_noga(jan) (jest to złoona nazwa nie zwracamy wartoci (lewej nogi Jana)!!). 6
Składnia zdania atomowe Zdanie atomowe wyraa fakt odnoszcy si do obiektów i relacji pomidzy nimi opisanymi symbolami predykatów. brat(ryszard, Jan) małestwo(ojciec(ryszard), matka(jan)) Zdanie atomowe jest true, jeeli relacja opisana symbolem predykatu zachodzi pomidzy obiektami podanymi jako argumenty relacji. 7 Składnia zdania złoone Aby zbudowa zdania złoone stosuje si operatory zdaniotwórcze (takie jak w rachunku zda): negacja (nie), np.: brat(robin, Jan) (jest true, jeeli Robin nie jest bratem Jana); koniunkcja (i), np.: brat(ryszard, Jan) brat(jan, Ryszard) (jest true, jeeli Ryszard jest bratem Jana i Jan jest bratem Ryszarda); alternatywa (lub), np..: starszy(jan, 30) młodszy(jan, 30) (jest true, jeeli Jan jest starszy ni 30 lub Jan ma mniej ni 30 lat); implikacja (z tego wynika, e), np..: starszy(jan, 30) młodszy(jan, 30) (Jeeli Jan ma wicej ni 30 lat to nie moe mie mniej ni 30); 8
Składnia Kwantyfikator wielki (ogólny) Pozwala okreli własnoci grupy obiektów, np..: Wszystkie koty to ssaki : kot( ssak( Stosuje si zmienne np.. y (oznaczone małymi literami). Zmienna jest termem. Co jeeli poprzednik implikacji fałszywy? Nie ma to znaczenia, bo kwantyfikator ogranicza grup obiektów do takich, dla których poprzednik jest tylko prawdziwy. Błd w interpretacji: : kot( ssak( (Wszystko jest kotami i wszystko jest ssakami). (Nie łczy i!!!). 9 Składnia Kwantyfikator mały (szczególny) Pozwala okreli własnoci jakiego szczególnego obiektu bez nazywania go, np.: Spot ma siostr, która jest kotem x: siostra( Spot) kot( Błd w interpretacji: x: siostra( Spot) kot( (Nie łczy i ), bo rozwinicie dla przypadków: siostra(spot, Spot) kot(spot) siostra(rebeca, Spot) kot(spot) siostra(jan, Spot) kot(spot) zadanie z implikacj bdzie zawsze prawdziwe, jeeli przesłanka jest fałszywa, wic dla kadego dla którego siostra( Spot) jest fałszywe. W przypadku iloczynu obie relacje musz by prawdziwe. 0
Zagniedanie kwantyfikatorów y jest równowane y jest równowane y x y jest równowane y x x y nie jest równowane y x y kocha(y) Kady kogo kocha x y kocha(y) Istnieje kto, kto wszystkich kocha y kocha(y) Istnieje kto, kto jest przez wszystkich kochany [kot( x brat(ryszard,] w takim przypadku znaczenie ma najbardziej wewntrzny kwantyfikator (w niniejszym przypadku nie ma adnego efektu) Kada zmienna musi by zwizana z jakim kwantyfikatorem. Dualizm kwantyfikatorów lubi(lody) Kady lubi lody x lubi(brokuły) x lubi(lody) Nie istnieje kto, kto nie lubi lodów lubi(brokuły) Istnieje kto, kto lubi brokuły Nie kady nie lubi brokuły Prawa De Morgana: : P( x : P( : P( x : P( : P( x : P( x : P( : P( 2
Równo Symbol równoci moe słuy do budowania zda. term = term 2 jest prawdziwe w danej interpretacji jeeli term i term 2 odnosz si do tego samego obiektu. np.. ojciec(jan) = Henryk np.. y rodzestwo(y) [ (x = y) m,f (m = f) rodzic(m, rodzic(f, rodzic(m,y) rodzic(f,y)] 3 Logika predykatów na przykładzie. Marcus był człowiekiem. 2. Marcus był mieszkacem Pompei. 3. Wszyscy mieszkacy Pompei byli Rzymianami. 4. Cezar był władc. 5. Wszyscy Rzymianie byli, albo lojalni wobec Cezara, lub nienawidzili go. 6. Kady człowiek jest wobec kogo lojalny. 7. Ludzie staraj si zgładzi tylko takiego władc, wobec którego nie s lojalni. 8. Marcus próbował zgładzi Cezara. 4
Logika predykatów na przykładzie man(marcus ) Pompeian (Marcus) : Pompeian( Roman( ruler( : Roman( loyalto( hate( : y : loyalto( y) : y : person( ruler( y) tryassass( y) loyalto( y) tryassass( Marcus, 5 Co pominito w przykładzie Ad. Nie uwzgldniono czasu przeszłego. W dalszych rozwaaniach nie bdzie to miało znaczenia. Ad 4. Imiona nie zawsze wskazuj na konkretne indywiduum. Dokładno wymaga sporej iloci wiedzy przechowywanej w bazie. Ad 6. Problem zasigu. Czy dla kadego istnieje kto dla kogo jest si lojalnym? Czy s to róne osoby? Czy istnieje kto, wobec kogo wszyscy s lojalni? Ad 7. Zdanie jest dwuznaczne. Interpretacja przedstawiona: : y : person( ruler( y) tryassass( y) loyalto( y) S ludzie chccy zgładzi władc zatem s wobec władcy nielojalni. Inna interpretacja: Ludzie chc zgładzenia władcy, wobec którego s nielojalni. : y : person( ruler( y) loyalto( y) tryassass( y) Ad 7. Predykat: try to assassinate jest uproszczon reprezentacj faktu. Predykat dziki temu ma dwa argumenty. 6
Inynieria wiedzy w logice predykatów pierwszego rzdu. Zidentyfikuj zadnie. 2. Zgromad wymagan wiedz. 3. Wybierz słownik predykatów, funkcji i stałych. 4. Zakoduj ogóln wiedz dotyczc zadnia. 5. Zakoduj specyficzn wiedz dotyczc zadania. 6. Postaw pytania do procedury wnioskowania i otrzymaj odpowiedzi 7. Usu błdy z bazy wiedzy. 7 Dowodzenie w logice predykatów Dla rachunku zda przedstawione zostały reguły wnioskowania takie jak modus ponens, rezolucji czy eliminacja AND i te reguły s poprawne dla logiki predykatów. Wymaga si jednak dodatkowych reguł, które poradz sobie z kwantyfikatorami. Jako SUBST(θ,a) oznaczona bdzie wynik zastosowania podstawie θ do zdania a. 8
Podstawienia uniwersalne Kade podstawienie wielkiego kwantyfikatora oznaczone zostanie: v Subst({v/g}, ) dla kadej zmiennej v i termu g. np., a, v = x: King( Greedy( Evil(: g = John: King(John) Greedy(John) Evil(John) g = Richard : King(Richard) Greedy(Richard) Evil(Richard) g = Father(John): King(Father(John)) Greedy(Father(John)) Evil(Father(John)) 9 Podstawienie szczególne Dla kadego zdania, zmiennej v, i stałej k, która nie pojawia si gdzie indziej w bazie wiedzy. Czyli istnieje obiekt spełniajcy warunek a podstawienie daje nazw obiektu: v Subst({v/k}, ) np.., x Kill(Victim) daje: Kill(Murderer,Victim) Murderer jest nowym symbolem stałej zwanej stał Skolemow. Murderer nie naley te do innego obiektu. 20
Unifikacja Algorytm unifikacji jest rekurencyjn procedur, porównujc dwa termy i odkrywajc, czy istnieje zbiór podstawie, które sprawi, e termy stan si identyczne. Np. man(john) i man(john) unifikuj si, natomiast man(john) i man(spot) nie, bo maj róne argumenty. 2 Algorytm unifikacji załoenia Jeeli symbole predykatów inicjalizujcych s takie same, to kontynuuj. W przeciwnym przypadku unifikacji zawodzi niezalenie od argumentów. Np.. tryassasisinate(marcus, i hate(marcus,. Jeeli symbole równe, to sprawdzamy argumenty, ich liczb i wartoci. Zasady porównania: predykat równy predykatowi, argument argumentowi, zmienna zmiennej. Problem typu: P( i P(y,z). Predykat P jest zgodny. Porównujemy zatem x i y i decydujemy, e jeeli podstawimy y za x to uzyskamy odpowiednio. Podstawienie zapisuje si jako y/x [P(y,y) i P(y,z)]. Mona oczywicie dokona podstawienia odwrotnego. Nie mona jednak podstawi y i z za x. Algorytm zwraca list podstawie. Pusta oznacza ich BRAK. 22
Przykłady unifikacji p q Knows(John, Knows(John,Jane) {Jane/x}} Knows(John, Knows(y,OJ) {OJ/John/y}} Knows(John, Knows(y,Mother(y)) {John/y,Mother(John)/x}} Knows(John, Knows(OJ) {fail} 23 Przykład unifikacji dane: hate(y), hate(marcus,z) Unifikacja moe zwróci list nastpujcych podstawie:. (Marcus/ z/y) 2. (Marcus/ y/z) 3. (Marcus/ Caesar/y, Caesar/z) 4. (Marcus/ Paulus/y, Paulus/z) jeeli dane: hate(marcus,paulus), hate(marcus,julian), hate(marcus, Podstawienia i 2 s bardziej ogólne ni 3 i 4. Ostatecznie do dalszej rezolucji poszukuje si jak najbardziej ogólnego unifikatora (mgu). 24
Uogólniony modus ponens p ', p 2 ',, p n ', ( p p 2 p n q) q p ' to King(John) p to King( p 2 ' to Greedy(y) p 2 to Greedy( to {x/john,y/john} q to Evil( q to Evil(John) 25 Wnioskowanie wstecz na przykładzie Hipoteza: Czy Marcus był lojalny wobec Cezara? Wnioskowanie wstecz metod modus ponens. Zalenoci reguł mona przedstawi jako drzewo typu AND-OR. Oczywicie poszukiwanie jest obszerniejsze ni zademonstrowane na nastpnym slajdzie. W przykładzie pokazana jest tylko jedna gał. Wykorzystano fakty i reguły ze slajdu 5. Wprowadzono dodatkowe zdanie: Kada osoba jest człowiekiem. : man( person( 26
Przykład cd. loyalto( Marcus, person( Marcus) ruler( tryassass( Marcus, person( Marcus) (fakt 4) tryassass( Marcus, (fakt 8) person(marcus) man(marcus) (reguła 7, podstawienie) (reguła dodatkowa) (fakt ma warto logiczn zatem Marcus nie był lojalny wobec Cezara) 27 Problemy w dowodzeniu Niejednoznaczno interpretacji znaczenia. Naley uwzgldnia fakty oczywiste, które mog nie by bezporednio zdefiniowane w zadaniu, ale s niezbdne, by przeprowadzi wnioskowanie. Nie wiadomo z góry jakie zdanie dowodzi. (Czy Marcus był lojalny wobec Cezara?) loyalto( Marcus, loyalto( Marcus, 28
Predykaty obliczeniowe Dana jest baza wiedzy:. Marcus był człowiekiem. 2. Marcus był mieszkacem Pompei. 3. Marcus urodził si w roku 40. 4. Wszyscy ludzie s miertelni. 5. Wszyscy mieszkacy Pompei zmarli podczas erupcji wulkanu w roku 79. (rozbicie na dwa predykaty) 7. Nie zanotowano człowieka yjcego dłuej ni 50 lat. 8. Teraz jest 2007. Fakty dodatkowe: 9. ywy oznacza nie martwy. 0. Jeeli kto umrze, to jest ju nieywy w czasie po jego mierci. 29 Baza w logice predykatów man(marcus) Pompeian(Marcus) born(marcus,40) : man( mortal( : Pompeian( died( 79) erupted(volcano,79) : t : t : mortal( born( t ) gt( t t,50) dead( t ) 2 2 2 now = 2007 : t : alive( t) dead( t) : t : dead( t) alive( t) : t : t : died( t ) gt( t, t ) dead( t ) 2 2 2 30
Dowodzenie z obliczeniami Na nastpnych dwóch slajdach zostanie przedstawiony logiczny wywód, odpowiadajcy na pytanie: Czy Markusyje? Wybieramy do dowodzenia hipotez zanegowan: Markus nie yje. Dowodzenie odbdzie si z wykorzystaniem metody wstecz (do przesłanek) uogólnion metod modus ponens. Przedstawione zostan tylko pojedyncze gałzie prowadzce do potwierdzenia hipotezy. 3 cieka pierwsza alive( Marcus, now) dead( Marcus, now) died( Marcus, t) gt( now, t) (reguła 5, unifikacja) Pompeian( Marcus) gt( now,79) gt(now,79) gt(2007,79) (reguła 9, unifikacja) (reguła 0, unifikacja) (reguła 2) (równo, unifikacja) (obliczenie gt) 32
cieka druga alive( Marcus, now) dead( Marcus, now) (reguła 9b, unifikacja) (reguła 7, unifikacja) mortal( Marcus) born( Marcus, t ) gt( now t,50) man( Marcus) born( Marcus, t ) gt( now t,50) born( Marcus, t ) gt( now t,50) gt( now 40,50) gt( 2007 40,50) gt(967,50) (reguła 4, unifikacja) (reguła ) (reguła 3, unifikacja) (równo 8) (obliczenie odejmowania) (obliczenie gt) 33 Rezolucja Wersja reguły dla logiki predykatów pierwszego rzdu k, n ( i- i+ k j- j+ n ) gdzie unifikacja( i, j ) =. Reguł stosuj si dla zda w postaci formy CNF Przykład, Rich( Unhappy( Rich(Ken) Unhappy(Ken) z= {Ken/x} Stosuje si rezolucj do zda w CNF dla (KB ); gdzie hipoteza (cel) 34
Konwersja do postaci normalnej koniunkcyjnej CNF - Conjunctive Normal Form. Posta ta zwiera literały lub ich negacj (p lub p) Zawiera tylko dysjunkcj. Zdania w postaci normalnej koniunkcyjnej to klauzule (alternatywa literałów). Cel: uzyskuje si mniej zagniedonych komponentów forma jest prostsza. 35 Przykład postaci normalnej Kady Rzymianin, który zna Marcusa albo nienawidzi Cezara, albo myli, e kady, kto nienawidzi kogokolwiek jest głupcem. zdanie logiczne :[ Roman( know( Marcus)] [ hate( ( y : z : hate( y, z) thinkcrazy( y))] klauzula Roman( know( Marcus) hate( hate( y, z) thinkcrazy( y) 36
Algorytm konwersji do klauzul Algorytm składa si z dziewiciu kroków. Operuje na złoonym zdaniu logicznym i poprzez przeprowadzanie upraszczajcych operacji doprowadzi do powstania uproszczonej w formie klauzuli. Zdanie i klauzula s logicznymi ekwiwalentami. 37 Etap Usunicie implikacji Korzysta z własnoci a b a b Przykład: : male( X ) man( X ) : male( X ) man( X ) 38
Etap 2 Przesunicie negacji Krok ten prowadzi do uproszczenia wyrae z negacj. Redukuje nawiasy. Korzysta z własnoci ( p) p ( a b) a b ( a b) a b : P( x : P( x : P( : P( 39 Etap 3 standaryzacja zmiennych Zmienne opisywane przez róne kwantyfikatory otrzymuj róne nazwy. Przed: Po: : P( : Q( : P( y : Q( y) 40
Etap 4 przesunicie wszystkich kwantyfikatorów Przenosi si wszystkie kwantyfikatory poza wyraenie. Nie powoduje to zmiany interpretacji wyraenia. Przed: : ( mezczyzna( ( y : ( kobieta( y) lubi( y)))) Po: : y : ( mezczyzna( ( kobieta( y) lubi( y))) 4 Etap 5 skolemizacja Usunicie kwantyfikatora istnienia. Wprowadza si nowe symbole reprezentujce stałe, w miejsce zmiennych spod usuwanych kwantyfikatorów. Przypadek pierwszy: Przed: x : President( Po: President(s) Przypadek z wielkim kwantyfikatorem (S2( funkcja od zmiennej : Przed: : y : father( y) Po: : father( S2( ) 42
Etap 6 usunicie wielkiego kwantyfikatora Opuszcza si w wyraeniu kwantyfikatory wielkie i nie zmienia to znaczenia całego wyraenia. Przed: Po: : father( mark) father( marek) 43 Etap 7 wyprowadzenie i przed lub Konwersja wyraenia na iloczyn sum. Koniunkcje nie mog pojawia si wewntrz alternatyw. Przed: ( p( q( ) r( y) Po: ( p( r( y)) ( q( r( y)) 44
Etap 8 stworzenie klauzul Stworzenie niezalenych klauzul dla kadej koniunkcji. Kady czynnik iloczynu musi mie warto logiczn. Przed: ( p( q( ) ( q( r( y)) Po: powstały 2 klauzule.( p( r( y)) 2.( q( r( y)) 45 Etap 9 standaryzacja zmiennych Standaryzacja zmiennych w niezalenych klauzulach. Kadej zmiennej mona nada inn nazw, co nie zmieni znaczenia logicznego, a zapobiega myleniu zmiennych podczas dowodzenia. 46
Przykład konwersji :[ Roman( know( Marcus)] [ hate( ( y : z : hate( y, z) thinkcrazy( y))] (etap ) : [ Roman( know( Marcus)] [ hate( ( y : ( z : hate( y, z)) thinkcrazy( y))] (etap 2) :[ Roman( know( Marcus)] [ hate( ( y : z : hate( y, z) thinkcrazy( y))] (etap 4) : y : z :[ Roman( know( Marcus)] [ hate( ( hate( y, z) thinkcrazy( y))] (etap 6) [ Roman( know( Marcus)] [ hate( ( hate( y, z) thinkcrazy( y))] (etap 7) Roman( know( Marcus) hate( hate( y, z) thinkcrazy( y) 47 Rezolucja w logice predykatów. Konwersja aksjomatów F na klauzule. 2. Zaneguj P (predykat do udowodnienia) i przekształ na klauzul. Dodaj do zbioru klauzul F. 3. Powtarzaj, do osignicia klauzuli pustej, lub zatrzymaj, gdy nie ma postpu: a. Wybierz 2 klauzule (rodzicielskie). b. Porównaj je. Klauzula wynikowa - rezolwenta jest sum logiczn wszystkich literałów obu klauzuli rodzicielskich z zastosowaniem odpowiednich podstawie z nastpujcymi wyjtkami: Jeeli istnieje para literałów T i T2, takich e jedna z klauzul rodzicielskich zawiera T, a druga zwiera T2, to zarówno T jak i T2 s unifikowane. T i T2 to literały komplementarne. Zastosuj zbiór podstawie wynikajcy z unifikacji do produkcji rezolwenty. Jeeli liczba literałów komplementarnych jest >, to w rezolwencie wybieramy tylko jedn z nich. c. Jeeli rezolwenta jest klauzul pust, to dowód zkoczono. Jeeli nie, to dodaj klauzul do zbioru klauzul. 48
49 Przykład Przykład Przekształcenie zda ze slajdu 5 na klauzule: ), ( 8. ), ( ) ( ) ( ), ( 7. )) (, ( 6. ), ( ), ( ) ( 5. ) ( 4. ) ( ) ( 3. ) ( 2. ) (. 4 4 4 3 3 2 2 2 Caesar Marcus tryassasinate y x tryassasinate y ruler x man y x loyalto x f x loyalto Caesar x hate Caesar x loyalto x Roman Caesar ruler x Roman x Pompeian Marcus Pompeian Marcus man 50
Przykład 2 (z funkcjami). man(marcus) 2. Pompeian(Marcus) 3. born(marcus,40) 4. man(x) mortal(x) 5. Pompeian(x2) died(x2,79) 6. erupted(volcano,79) 7. mortal(x3) born(x3,t) gt(t2-t,50) dead(x3,t2) 8. now=2007 9. Predykat 9a i 9b alive(x4,t3) dead(x4,t3) dead(x5,t4) alive(x5,t4) 0. died(x6,t5) gt(t6,t5) dead(x6,t6) 5 died( (2007,79) 52
Przykład 3 (unifikacje)!"#$% 9. hate(marcus,paulus) 0. hate(marcus,julian). hate(marcus, 53 54
Co wiemy Czym jest logika predykatów. Jak działa algorytm rezolucji. Jeeli teza {A, A2,..., An} jest niesprzeczna, formuła B jest wnioskiem z {A, A2,..., An} wtedy i tylko wtedy gdy teza {A, A2,..., B} jest sprzeczna. Czym jest posta klauzulowa. Czym jest unifikacja. 55 Interpretacja klauzul Zakładamy klauzul ( p( p2( pn ( ) ( q( q2( qn( ) Co jest równowane: ( p( p2( pn( ) ( q( q2( qn( ) Co jest równowane: p ( p ( p ( ) ( q ( q ( q ( )) ( 2 n 2 n x Oznaczamy jako,, jako ;, a jako :-. p( ; p2( ; ; pn ( : q(, q2(,, qn( 56
Przykład Kadego małego zwierzaka mona trzyma w mieszkaniu. : maly( zwierzak( trzymac( mieszkanie) Po przekształceniu na klauzule: Co daje: : ( maly( zwierzak( ) trzymac( mieszkanie) : maly( zwierzak( trzymac( mieszkanie) maly( zwierzak( trzymac( mieszkanie) trzymac( mieszkanie) ( ( maly( zwierzak( )) trzymac( mieszkanie) maly( zwierzak( trzymac( mieszkanie) : maly(, zwierzak( 57 Reguły i Fakty Reguła zawiera znak: :-. Po lewej stronie znaku znajduje si głowa, a po prawie tre reguły. Fakty s głowami klauzul bez treci, gdy reprezentuj aksjomaty. np.. kobieta(ala) w postaci klauzuli ma tak sam posta, co jest równowane zapisowi: kobieta(ala) :-. 58
Klauzule slajd5. man( Marcus) 2. Pompeian( Marcus) 3. Pompeian( x ) Roman( x ) 4. ruler( 5. Roman( x 6. loyalto( x, f ( x )) 3 2 ) loyalto( x, hate( x, 7. loyalto( x, y ) man( x 4 8. tryassasinate( Marcus, 3 2 4 ) ruler( y ) tryassasinate( x, y ) 2 4 59 Te same klauzule w nowej składni. man( Marcus) :. 2. Pompeian( Marcus) :. 3. Roman( x ) : Pompeian( x ). 4. ruler( :. 5. loyalto( x, ; hate( x, : Roman( x 2 6. loyalto( x, f ( x )) :. 3 7.: loyalto( x, y ), man( x 4 3 8. tryassasinate( Marcus, :. 4 2 ), ruler( y ), tryassasinate( x, y ). 2 ). 4 60
Przykład dowodzenia rezolucj załoenia Chcemy udowodni, e Marcus nienawidzi Caesara. Zatem stawiamy hipotez hate(marcus,. Spełniajc załoenia rezolucji negujemy hipotez. Co daje klauzul: hate(marcus,. W nowej składni klauzula bdzie miała posta: :- hate(marcus,. 6 Przykład cd. : hate( Marcus,. loyalto( x2, ; hate( x2, : Roman( x2). loyalto( Marcus, : Roman( Marcus). Marcus / x 2 Roman x ) : Pompeian( ). ( x Marcus / x Pompeian( Marcus) :. loyalto( Marcus, : Pompeian( Marcus). loyalto ( Marcus, :. loyalto( x, y ), man( x ), ruler( y ), tryassasinate( x, ). : 4 4 4 y man( Marcus) :. Marcus / x y 4, Caesar / : man( Marcus), ruler(, tryassasinate( Marcus,. : ruler(, tryassasinate( Marcus,. ruler( :. tryassasinate( Marcus, :. : : tryassasinate( Marcus,. 62
Jeszcze raz rezolucja Zupełno: jeeli jaki fakt jest wnioskiem z hipotezy, moliwe jest udowodnienie go przez wykazanie fałszywoci zbioru przesłanek uzupełnionych negacj faktu. Jak zmylnie dobiera kolejne klauzule w celu dopasowania? Zadowoli nas system, który pokae wszystkie moliwe wnioski. 63 Klauzula Horna Jest to klauzula zawierajca co najwyej jeden niezanegowany predykat. Klauzulami Horna nie s zdania typu: : Roman( loyalto( hate( loyalto( x2, ; hate( x2, : Roman( x2). To uproszczenie pozwala na ułatwienie wnioskowania. Klauzule Horna dzieli si na: z głow: posiadajce jeden niezanegowany predykat;np.. man( :- person(. man(marcus) :-. bez głowy: bez niezanegowanego predykatu; :-person(. 64
Zbiory klauzul Horna Wszystkie klauzule poza jedn posiadaj głow. Załoenie to pozwala na rozwizanie dowolnego problemu. Baza wiedzy zawiera klauzule z głow. Cel wywodu (pytanie) jest klauzul bez głowy. Istnienie jednej klauzuli bez głowy daje szans uzyskania sprzecznoci czyli uzyskanie pustej głowy i pustej treci. Istnienie wielu klauzul bez głowy jest zbdne, poniewa kady dowód mona wyprowadzi przy uyciu co najwyej jednej klauzuli bez głowy. Zatem klauzula pusta wynika tylko z klauzul z głow i jednej bez głowy. 65 PROLOG Program zawiera informacje o danych z odpowiedni ich interpretacj. (Symboliczne opisanie wiedzy). Baza wiedzy zawiera oprócz danych (faktów) interpretowalne reguły (zalenoci pomidzy danymi). Aby wyrazi reguły i fakty stosuje si logik predykatów. 66
Implementacja. Stosujc zasady logiki tworzy si system zawierajcy fakty i reguły. 2. Zadaje si pytania dotyczce wiedzy zebranej w punkcie. pytania mog mie charakter tak lub nie, lub wyszukaj wszystkie dane, dla których podane wyraenie bdzie miało warto TRUE. 67 Przykład Reprezentacja logiczna. : pet( small( apartmentpet( 2. : cat( dog( pet( 3. : poodle( dog( small( 4. poodle(fluffy) '() Reprezentacja w PROLOGU. apartmentpet(x) :- pet(x), small(x). 2. pet(x) :- cat(x). 3. pet(x) :- dog(x). 4. dog(x) :- poodle(x). 5. small(x) :- poodle(x). 6. poodle(fluffy). &$# 68
Zaleno Prologu i logiki ródło w Prologu to zbiór klauzul Horna z głow. Do wnioskowania stosuje si rezolucj, która dopasowuje cel (klauzul bez głowy) do innych klauzul z głow, próbujc wszystkie kombinacje klauzul z bazy. Nie wykorzystuje si powstałych porednio wniosków (nie dopisuje si ich ani tymczasowo, ani na stałe). Jeeli cel jest złoony, np.. : parent(x,y), female(x)., to Prolog dowodzi pierwszy z lewej, dopiero póniej po uzyskaniu dla niego pustej klauzuli przechodzi do kolejnego celu. Na kocu składa podcele. Algorytm sprawdzajcy wszystkie moliwoci to strategia w głb - DFS (Depth First Search). 69 Składnia. - koniec klauzuli; ; - OR (dysjunkcja);, - AND(koninkcja); :- - implikacja; % - komentarz; man( Marcus ). - fakt man(x) :- person(x).- reguła 70
Termy Kada klauzula składa si z termów: stałe (atomy, identyfikator zaczyna si z małej litery lub liczby) np.. pismo, 4.5 zmienne (identyfikator zaczyna si z wielkiej litery lub podkrelenia) np.. Zmienna, _zmienna struktury (predykaty lub struktury danych) np.. matka(ala), data(rok,miesiac,dzien) &$# '*#) 7 Niuanse Dlaczego:. pet(x) :- cat(x). 2. pet(x) :- dog(x). jest równowane: pet(x) :- cat(x);dog(x). pet( X ) : dog( X ). pet( X ) : cat( X ). pet( X ) dog( X ) pet( X ) cat( X ) ( pet ( X ) dog( X )) ( pet( X ) cat( X )) pet ( X ) ( dog( X ) cat( X )) pet( X ) ( ( dog( X ) cat( X ))) pet( X ) ( dog( X ) cat( X )) pet( X ) : dog( X ); cat( X ). 72
Unifikacja Proces kojarzenia zmiennych i wartoci. Zmienna, której przypisano stał warto nazywa si ukonkretnion. Reguły unifikacji: Stała moe by zunifikowana tylko ze sob. Dwie struktury mog ze sob zunifikowa wtedy i tylko wtedy, gdy nazwy funktorów s takie same, maj tak sam liczb argumentów, dopiero w kolejnym kroku rekurencyjnie unifikuje si ich argumenty. Zmienne unifikuj si ze wszystkim. 73 Unifikowalno Znak równoci w Prologu oznacza operacj unifikacji Na przykład:?- jablko = jablko. Yes?- jablko = gruszka. No?- lubi(osoba, jablko) = lubi(adam, Jedzenie). Osoba = adam Jedzenie = jablko ; No?- lubi(osoba, gruszka) = lubi(adam, jablko). No?- lubi(osoba, Jedzenie) = lubi(adam, Jedzenie). Osoba = adam Jedzenie = _G58 ; No Wewntrzna reprezentacja niezunifikowanej zmiennej. Jakiekolwiek podstawienie dowodzi prawdy 74
Kolejno wnioskowania Dany jest plik ródłowy:. apartmentpet(x) :- pet(x), small(x). 2. pet(x) :- cat(x). 3. pet(x) :- dog(x). 4. dog(x) :- poodle(x). 5. small(x) :- poodle(x). 6. poodle(fluffy). Sprawdzamy, czy apartmentpet(fluffy) jest prawdziwe. 75 Schemat odpowiedzi apartmentpet(fluffy) +,- pet(fluffy) small(fluffy)./ cat(fluffy) dog(fluffy) & poodle(fluffy) poodle(fluffy) 76
Kolejno klauzul Zachowanie interpretera jest przewidywalne, bo ródło jest przeszukiwane zgodnie z algorytmem DFS. Szczególnie istotnie wpływa to na predykaty rekurencyjne (głowa i tre reguły zawiera ten sam funktor). Niewłaciwa kolejno definicji klauzul moe zaowocowa nieskoczon ptl. 77 Rekurencja Dany jest plik ródłowy:. parent(pam, bob). 2. parent(tom, bob). 3. parent(tom, liz). 4. parent(bob, ann). 5. parent(bob, pat). 6. parent(pat, jim). Podane s definicje przodka: 7. predecessor(x, Y):- parent(x, Y). 8. predecessor(x, Y):- parent(x, Z), predecessor(z, Y). Sprawdzamy prawdziwo zdania (cel): predecessor(tom, pat). 78
Rozwizanie parent(tom, pat) & predecessor(tom, pat)./ +,- parent(tom, _G00) predecessor(_g00, pat) _G00=bob parent(tom, bob) predecessor(bob, pat) parent(bob, pat) 3 "%!&0% '!%"%)'*##*2 79 Niepoprawna rekurencja Do bazy ze slajdu 78 dodano inne reguły na przodka, a mianowicie:. predecessor(x, Y):- predecessor(x, Z), parent(z, Y). 2. predecessor(x, Y):- parent(x, Y). Sprawdzamy prawdziwo zdania (cel): predecessor(tom, pat). 80
Rozwizanie predecessor(tom, pat)./ parent(tom, pat) +,- predecessor(tom, _G00) parent(_g00, pat)./ parent(tom, _G00) +,- predecessor(tom, _G002) parent(_g002, _G00) +,- predecessor(tom, _G003) parent(_g003, _G002) $4%$0 8