Systemy ekspertowe. Wykład 3 Reprezentacja wiedzy Rachunek predykatów pierwszego rzędu. Joanna Kołodziejczyk

Podobne dokumenty
Systemy ekspertowe. Wykład 3 Reprezentacja wiedzy. Rachunek predykatów pierwszego rzędu. Joanna Kołodziejczyk. 30 marca 2011

Logika predykatów pierwszego rzędu PROLOG. Zarządzanie wiedzą. Wykład Reprezentacja wiedzy logika predykatów. Joanna Kołodziejczyk.

Zarządzanie wiedzą. Reprezentacja wiedzy: logika predykatów pierwszego rzędu

Reprezentacja wiedzy: logika predykatów pierwszego rzędu

Elementy Sztucznej Inteligencji

PODSTAWY SZTUCZNEJ INTELIGENCJI

Programowanie w logice

1. Składnia. Logika obliczeniowa - zadania 1 SKŁADNIA Teoria

Ziemia obraca się wokół Księżyca, bo posiadając odpowiednią wiedzę można stwierdzić, czy są prawdziwe, czy fałszywe. Zdaniami nie są wypowiedzi:

Elementy logiki. Wojciech Buszkowski Wydział Matematyki i Informatyki UAM Zakład Teorii Obliczeń

Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki. Wykład 9. Koniunkcyjne postacie normalne i rezolucja w KRZ

Język rachunku predykatów Formuły rachunku predykatów Formuły spełnialne i prawdziwe Dowody założeniowe. 1 Zmienne x, y, z...

Logika Stosowana. Wykład 1 - Logika zdaniowa. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017

Składnia rachunku predykatów pierwszego rzędu

Rezolucja w rachunku predykatów. Przedrostkowa koniunkcyjna postać normalna. Formu ly ustalone. Joanna Józefowska. Poznań, rok akademicki 2009/2010

Interpretacja Niech U będzie zbiorem formuł takim, że zbiór {p 1,..., p k } jest zbiorem wszystkich symboli predykatywnych, {f 1,..., f l } jest zbior

Adam Meissner.

Programowanie w Logice

LOGIKA I TEORIA ZBIORÓW

1. Wstęp do logiki. Matematyka jest nauką dedukcyjną. Nowe pojęcia definiujemy za pomocą pojęć pierwotnych lub pojęć uprzednio wprowadzonych.

Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu.

Programowanie deklaratywne

Tautologia (wyrażenie uniwersalnie prawdziwe - prawo logiczne)

III rok kognitywistyki UAM,

Adam Meissner SZTUCZNA INTELIGENCJA

Wprowadzenie do logiki Zdania, cz. III Język Klasycznego Rachunku Predykatów

Rachunek predykatów. Formuły rachunku predykatów. Plan wykładu. Relacje i predykaty - przykłady. Relacje i predykaty

Matematyka ETId Elementy logiki

Logika formalna wprowadzenie. Ponieważ punkty 10.i 12. nie były omawiane na zajęciach, dlatego można je przeczytać fakultatywnie.

Programowanie deklaratywne

Michał Lipnicki (UAM) Logika 11 stycznia / 20

Języki programowania deklaratywnego

Programowanie logiczne a negacja

METODY DOWODZENIA TWIERDZEŃ I AUTOMATYZACJA ROZUMOWAŃ

Programowanie deklaratywne

Podstawy Sztucznej Inteligencji (PSZT)

Adam Meissner STUCZNA INTELIGENCJA

Klasyczny rachunek predykatów

Logika binarna. Prawo łączności mówimy, że operator binarny * na zbiorze S jest łączny gdy (x * y) * z = x * (y * z) dla każdego x, y, z S.

0.1. Logika podstawowe pojęcia: zdania i funktory, reguły wnioskowania, zmienne zdaniowe, rachunek zdań.

Alfred N. Whitehead

Wprowadzenie do Sztucznej Inteligencji

Wstęp do Techniki Cyfrowej... Algebra Boole a

Semantyka rachunku predykatów

Logika Stosowana. Wykład 7 - Zbiory i logiki rozmyte Część 3 Prawdziwościowa logika rozmyta. Marcin Szczuka. Instytut Informatyki UW

Modele Herbranda. Logika obliczeniowa. Joanna Józefowska. Szukamy modelu. Przykład Problemy. Model Herbranda

Logika pragmatyczna. Logika pragmatyczna. Kontakt: Zaliczenie:

Metoda Tablic Semantycznych

Rachunek zdań. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Konsekwencja logiczna

Np. Olsztyn leży nad Łyną - zdanie prawdziwe, wartość logiczna 1 4 jest większe od 5 - zdanie fałszywe, wartość logiczna 0

Andrzej Wiśniewski Logika I Materiały do wykładu dla studentów kognitywistyki. Wykłady 12 i 13. Dowód i dowodzenie w KRP. Tezy KRP

Systemy ekspertowe. Wykład 2 Reprezentacja wiedzy Rachunek zdań. Joanna Kołodziejczyk. Joanna Kołodziejczyk Systemy ekspertowe / 41

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.

RACHUNEK ZDAŃ 7. Dla każdej tautologii w formie implikacji, której poprzednik również jest tautologią, następnik także jest tautologią.

Logika pragmatyczna dla inżynierów

MATEMATYKA DYSKRETNA, PODSTAWY LOGIKI I TEORII MNOGOŚCI

Przykłady zdań w matematyce. Jeśli a 2 + b 2 = c 2, to trójkąt o bokach długości a, b, c jest prostokątny (a, b, c oznaczają dane liczby dodatnie),

Wprowadzenie do Sztucznej Inteligencji

Reprezentowanie wiedzy Logika a reprezentacji wiedzy Rachunek zdań Literatura. Systemy ekspertowe. Wykład 2 Reprezentacja wiedzy Rachunek zdań

vf(c) =, vf(ft 1... t n )=vf(t 1 )... vf(t n ).

Programowanie w Logice Struktury danych (Lista 2)

Rachunki relacji. Rachunki relacji. RRK Relacyjny Rachunek Krotek

Rachunek zdań i predykatów

Dedukcyjne bazy danych

Dedukcyjne bazy danych i rekursja

Wprowadzenie do Sztucznej

Dalszy ciąg rachunku zdań

Logika Matematyczna (10)

Elementy logiki matematycznej

Elementy logiki. Algebra Boole a. Analiza i synteza układów logicznych

Kultura logicznego myślenia

Programowanie w logice Prolog 2

Elementy logiki i teorii mnogości

Wykład 2. Informatyka Stosowana. 8 października 2018, M. A-B. Informatyka Stosowana Wykład 2 8 października 2018, M. A-B 1 / 41

Uwagi wprowadzajace do reguł wnioskowania w systemie tabel analitycznych logiki pierwszego rzędu

Systemy ekspertowe i ich zastosowania. Katarzyna Karp Marek Grabowski

III rok kognitywistyki UAM,

Andrzej Wiśniewski Logika II. Materiały do wykładu dla studentów kognitywistyki

Reprezentacja wiedzy i wnioskowanie

SZTUCZNA INTELIGENCJA

Programowanie w logice Wykład z baz danych dla

Języki programowania deklaratywnego

Reprezentacja wiedzy ontologie, logiki deskrypcyjne

Struktury formalne, czyli elementy Teorii Modeli

Paradygmaty programowania

Logika Stosowana. Wykład 2 - Logika modalna Część 2. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017

ROZDZIAŁ 1. Rachunek funkcyjny

Paradygmaty dowodzenia

Prolog (Pro-Logic) Programowanie w Logice. Dr inż. Piotr Urbanek

Notacja. - operator implikacji, - operator koniunkcji v operator alternatywy - operator równoważności ~ operator negacji Duża litera (np.

Podstawy matematyki dla informatyków. Logika formalna. Skªadnia rachunku zda« Skróty i priorytety. Wykªad 10 (Klasyczny rachunek zda«) 15 grudnia 2011

Laboratorium przedmiotu Paradygmaty Programowania

Jest to zasadniczo powtórka ze szkoły średniej, być może z niektórymi rzeczami nowymi.

Drzewa Semantyczne w KRZ

Egzamin z logiki i teorii mnogości, rozwiązania zadań

Wprowadzenie do Sztucznej Inteligencji Laboratorium lista 0.2 Elementy języka Prolog: reguły i rekurencja. Przemysław Kobylański

Wstęp do logiki. Klasyczny Rachunek Zdań II

Języki programowania zasady ich tworzenia

Metody dowodzenia twierdzeń i automatyzacja rozumowań Systemy aksjomatyczne I

Transkrypt:

Systemy ekspertowe Wykład 3 Reprezentacja wiedzy Rachunek predykatów pierwszego rzędu Joanna Kołodziejczyk 2016 Joanna Kołodziejczyk Systemy ekspertowe 2016 1 / 43

Plan wykładu 1 Rachunek predykatów pierwszego rzędu Składnia Wyrażanie wiedzy w Rachunek predykatów pierwszego rzędu Wnioskowanie w Rachunek predykatów pierwszego rzędu 2 Prolog Joanna Kołodziejczyk Systemy ekspertowe 2016 2 / 43

Składnia Porównanie z rachunkiem zdań Rachunek zdań ograniczona ekspresja: świat składa się tylko z faktów literały opisują fakty, bądź reguły o konkretnych obiektach treść rozpatrywanych zdań nie ma znaczenia, istotna jest jedynie ich wartość logiczna. Rachunek predykatów pierwszego rzędu bardziej uniwersalna: można wyrazić wszystko, co się da zaprogramować pozwala reprezentować i wyrażać bardziej ogólne fakty i reguły zachowuje wszystkie poczynione w ramach klasycznego rachunku zdań ustalenia. Joanna Kołodziejczyk Systemy ekspertowe 2016 3 / 43

Składnia Składnia Symbole stałe nazywają pojedyncze rzeczy, jeden obiekt, są najczęściej argumentami predykatów. np. Jan, A, Marcus. Symbole predykatów Reprezentują relacje między obiektami np. P(A), R(A, B). Oznaczamy je wielkimi literami: P;Q;R; S lub wyrazami: relacja, rodzic. rodziec jest symbolem predykatu binarnego, który zachowuje relację (lub nie) pomiędzy dwoma obiektami. Symbole funkcji Relacja funkcyjna jest zachowana dla dokładnie jednego obiektu w relacji np. cosinus(5), ojciec(jan). Oznaczamy je wielkimi literami: P;Q;R; S lub wyrazami: relacja, rodzic. rodzic jest symbolem predykatu binarnego, który zachowuje relację (lub nie) pomiędzy dwoma obiektami. Joanna Kołodziejczyk Systemy ekspertowe 2016 4 / 43

Składnia Składnia cd Zdanie atomowe Wyraża fakt odnoszący się do obiektów i relacji pomiędzy nimi opisanymi symbolami predykatów, np. brat(ryszard, Jan), małżeństwo (ojciec(ryszard), matka(jan)). Zdanie atomowe ma wartość logiczną TRUE, jeżeli relacja opisana symbolem predykatu zachodzi pomiędzy obiektami podanymi jako argumenty relacji. Operatory zdaniotwórcze Takie same jak w rachunku zdań:,,,, Równość termów term 1 = term 2 jest prawdziwe w danej interpretacji jeżeli term 1 i term 2 odnoszą się do tego samego obiektu, gdzie term i to symbol stałej lub symbol funkcji. = wykorzystuje się w zdaniach złożonych. ojciec(jan) = Henryk Joanna Kołodziejczyk Systemy ekspertowe 2016 5 / 43

Składnia Składnia cd Kwantyfikatory Określają pewną liczbę indywiduów, którym przysługuje pewna własność lub które pozostają w relacji. Kwantyfikator ogólny (duży/uniwersalny) x Dla każdego x Kwantyfikator szczególny (mały/egzystencjonalny) y Istnieje takie y Joanna Kołodziejczyk Systemy ekspertowe 2016 6 / 43

Składnia Przykład na zdania z małym kwantyfikatorem Istnieją ludzie, którzy są aniołami. x(czlowiek(x) aniol(x)) Istnieją ludzie, którzy nie są aniołami. x(czlowiek(x) aniol(x)) Nie tylko ludzie są aniołami. x( czlowiek(x) aniol(x)) Mały kwantyfikator nie łączy się z implikacją! Joanna Kołodziejczyk Systemy ekspertowe 2016 7 / 43

Składnia Przykład na zdania z wielkim kwantyfikatorem Wszyscy ludzie są aniołami x(czlowiek(x) aniol(x)) Żaden człowiek nie jest aniołem x(czlowiek(x) aniol(x)) Tylko ludzie są aniołami. x(czlowiek(x) aniol(x)) Duży kwantyfikator nie łączy się z iloczynem logicznym! Joanna Kołodziejczyk Systemy ekspertowe 2016 8 / 43

Składnia Własności kwantyfikatorów 1 Równoważność zapisów x y i y x i x, y 2 Równoważność zapisów x y i y x 3 x y nie jest równoważne x y 4 Prawa de Morgana dla kwantyfikatorów xp(x) x P(x) xp(x) x P(x) xp(x) x P(x) x P(x) xp(x) Joanna Kołodziejczyk Systemy ekspertowe 2016 9 / 43

Wyrażanie wiedzy w Rachunek predykatów pierwszego rzędu Przykład bardziej złożony 1 Marcus był człowiekiem. man(marcus) 2 Marcus był mieszkańcem Pompei. pompeian(marcus) 3 Wszyscy mieszkańcy Pompei byli Rzymianami. x pompeian(x) roman(x) 4 Cezar był władcą. ruler(caesar) 5 Wszyscy Rzymianie byli lojalni wobec Cezara, lub nienawidzili go. x roman(x) loyalto(x, Caesar) hate(x, Caesar) 6 Każdy człowiek jest wobec kogoś lojalny. x y loyalto(x, y) 7 Ludzie starają się zgładzić tylko takiego władcę, wobec którego nie są lojalni. x,y man(x) ruler(y) trytoassassinate(x, y) loyalto(x, y) 8 Marcus próbował zgładzić Cezara. trytoassassinate(marcus, Caesar) Joanna Kołodziejczyk Systemy ekspertowe 2016 10 / 43

Wyrażanie wiedzy w Rachunek predykatów pierwszego rzędu Analiza przykładu Nie uwzględniono czasu przeszłego. W dalszych rozważaniach nie będzie to miało znaczenia. Wszystko dzieje się w przeszłości. Imiona nie zawsze wskazują na konkretne indywiduum. Dokładność wymaga sporej ilości wiedzy przechowywanej w bazie. Problem zasięgu. Czy dla każdego istnieje ktoś dla kogo jest się lojalnym? Czy są to różne osoby? Czy istnieje ktoś, wobec kogo wszyscy są lojalni? Zdanie 7 można też zapisać jako: x, y person(x) ruler(y) loyalto(x, y) trytoassassinate(x, y) Joanna Kołodziejczyk Systemy ekspertowe 2016 11 / 43

Wnioskowanie w Rachunek predykatów pierwszego rzędu Inżynieria wiedzy w rachunek predykatów pierwszego rzędu 1 Zidentyfikuj zadanie. 2 Zgromadź wymaganą wiedzę. 3 Wybierz słownik predykatów, funkcji i stałych. 4 Zakoduj ogólną wiedzę dotyczącą zadania. 5 Zakoduj specyficzną wiedzę dotyczącą zadania. 6 Postaw pytania do procedury wnioskowania i otrzymaj odpowiedzi. 7 Usuń błędy z bazy wiedzy. Joanna Kołodziejczyk Systemy ekspertowe 2016 12 / 43

Wnioskowanie w Rachunek predykatów pierwszego rzędu Dowodzenie w logice pierwszego rzędu Dla rachunku zdań przedstawione zostały reguły wnioskowania takie jak modus ponens, rezolucji czy eliminacja koninunkcji i te same reguły są poprawne dla logiki predykatów. Wymaga się jednak dodatkowych operacji, które poradzą sobie z kwantyfikatorami. Jedną z nich jest UNIFIKACJA. Joanna Kołodziejczyk Systemy ekspertowe 2016 13 / 43

Wnioskowanie w Rachunek predykatów pierwszego rzędu Unifikacja Algorytm unifikacji jest rekurencyjną procedurą, porównującą dwa predykaty i odkrywającą, czy istnieje zbiór podstawień, które sprawią, że termy staną się identyczne. Przykład na unifikację p i q. Wynikiem działania unifikacji jest θ. p q θ Knows(John,x) Knows(John,Jane) Jane/x Knows(John,x) Knows(y,OJ) OJ/x,John/y Knows(John,x) Knows(y,Mother(y)) John/y,Mother(John)/x Knows(John,x) Knows(x,OJ) fail Joanna Kołodziejczyk Systemy ekspertowe 2016 14 / 43

Wnioskowanie w Rachunek predykatów pierwszego rzędu Unifikacja - MGU MGU Most General Unifier dane są fakty: hate(x, y) i hate(marcus, z) Unifikacja może zwrócić listę podstawień: 1 (Marcus/x, z/y) 2 (Marcus/x, y/z) 3 (Marcus/x, Caesar/y, Caesar/z) 4 (Marcus/x, Paulus/y, Paulus/z) Podstawienia 1 i 2 są bardziej ogólne niż 3 i 4. Ostatecznie do dalszej rezolucji poszukuje się jak najbardziej ogólnego unifikatora. Joanna Kołodziejczyk Systemy ekspertowe 2016 15 / 43

Wnioskowanie w Rachunek predykatów pierwszego rzędu Reguła rezolucji w logice pierwszego rzędu Reguła rezolucji l 1 l k, m 1 m n l 1 l i 1 l i+1 l k m 1 m j 1 m j+1 m n Gdzie: l i i m i to predykaty lub termy Wymagania: wymaga ze względu na argumenty relacji zastosowania unifikacji zdania muszą być podane w koniunkcyjnej postaci normalnej (CNF). Joanna Kołodziejczyk Systemy ekspertowe 2016 16 / 43

Wnioskowanie w Rachunek predykatów pierwszego rzędu Reguła rezolucji w logice pierwszego rzędu Przykład ( rich(x) happy(x)) (rich(richard)) happy(richard) gdzie w wyniku unifikacji: θ = Richard/x zdania dane są w koniunkcyjnej postaci normalnej (CNF). Joanna Kołodziejczyk Systemy ekspertowe 2016 17 / 43

Wnioskowanie w Rachunek predykatów pierwszego rzędu Konwersja do postaci normalnej koniunkcyjnej w logice pierwszego rzędu 1 Eliminacja zamiana na iloczyn implikacji. 2 Eliminacja zamiana na sumę. 3 Przesunięcie do nawiasów stosując prawa de Morgana i podwójną negacje. 4 Standaryzacja zmiennych np.: zamień xp(x) xq(x) na xp(x) yq(y). 5 Przesunięcie wszystkich kwantyfikatorów np.: zamień xp(x) yq(y) na x yp(x) Q(y). 6 Usunięcie małego kwantyfikatora - skolemizacja: np. zamień x yp(x, y) na xp(x, S(x)). 7 Usunięcie wielkiego kwantyfikatora po prostu dalej się je pomija. 8 Zastosowanie prawa rozdzielności względem. 9 Kolejna standaryzacja zmiennych zróżnicowanie zmiennych w poszczególnych klauzulach. Joanna Kołodziejczyk Systemy ekspertowe 2016 18 / 43

Wnioskowanie w Rachunek predykatów pierwszego rzędu Przykład konwersji Każdy Rzymianin, który zna Marcusa nienawidzi Cezara, albo myśli, że każdy, kto nienawidzi kogokolwiek jest głupcem. x(roman(x) know(x, Marcus)) (hate(x, Caesar) ( y( z hate(y, z)) thinkcrazy(x, y))) Joanna Kołodziejczyk Systemy ekspertowe 2016 19 / 43

Wnioskowanie w Rachunek predykatów pierwszego rzędu Kolejne etapy konwersji Etap 2 x (roman(x) know(x, Marcus)) (hate(x, Caesar) ( y ( z hate(y, z)) thinkcrazy(x, y))) Etap 3 x( roman(x) know(x, Marcus)) (hate(x, Caesar) ( y( z hate(y, z) thinkcrazy(x, y))) Etap 5 x y z( roman(x) know(x, Marcus)) (hate(x, Caesar) ( hate(y, z) thinkcrazy(x, y))) Etap 7 roman(x) know(x, Marcus) hate(x, Caesar) hate(y, z) thinkcrazy(x, y))) Joanna Kołodziejczyk Systemy ekspertowe 2016 20 / 43

Wnioskowanie w Rachunek predykatów pierwszego rzędu Przykład konwersja na CNF W wyniku konwersji bazy wiedzy ze slajdu 10 na postać CNF otrzymujemy: 1 man(marcus) 2 pompeian(marcus) 3 pompeian(x 1 ) roman(x 1 ) 4 ruler(caesar) 5 roman(x 2 ) loyalto(x 2, Caesar) hate(x 2, Caesar) 6 loyalto(x 3, f (x 3 )) 7 man(x 4 ) ruler(y 1 ) tryassassinate(x 4, y 1 ) loyalto(x 4, y 1 ) 8 tryassassinate(marcus, Caesar) Joanna Kołodziejczyk Systemy ekspertowe 2016 21 / 43

Wnioskowanie w Rachunek predykatów pierwszego rzędu Algorytm rezolucji 1 Konwersja zdań z bazy wiedzy na klauzule (CNF). 2 Zaneguj P (predykat do udowodnienia) i przekształć na klauzulę. Dodaj do zbioru klauzul z bazy wiedzy. 3 Powtarzaj, do osiągnięcia klauzuli pustej, lub zatrzymaj, gdy nie ma postępu: 3.1 Wybierz 2 klauzule (rodzicielskie). 3.2 Porównaj je. Klauzula wynikowa - rezolwenta jest sumą logiczną wszystkich literałów obu klauzuli rodzicielskich z zastosowaniem odpowiednich podstawień z następującymi wyjątkami: Jeżeli istnieje para unifikowalnych literałów T 1 i T 2 i T 1 i T 2 to literały komplementarne. Zastosuj zbiór podstawień wynikający z unifikacji do produkcji rezolwenty. Jeżeli liczba literałów komplementarnych jest > 1, to w rezolwencie wybieramy tylko jedną z nich. 3.3 Jeżeli rezolwenta jest klauzulą pustą, to dowód zkończono. Jeżeli nie, to dodaj klauzulę do zbioru klauzul. Joanna Kołodziejczyk Systemy ekspertowe 2016 22 / 43

Wnioskowanie w Rachunek predykatów pierwszego rzędu Przykład rezolucji Joanna Kołodziejczyk Systemy ekspertowe 2016 23 / 43

Prolog Plan wykładu 1 Rachunek predykatów pierwszego rzędu 2 Prolog Przejście ze składni logiki do Prologu Prolog - tylko klauzule Horna Ważne informacje o Prologu Joanna Kołodziejczyk Systemy ekspertowe 2016 24 / 43

Prolog Przejście ze składni logiki do Prologu Co wiemy 1 Jaka jest składnia i semantyka rachunku predykatów pierwszego rzędu. 2 Jak działa algorytm rezolucji (Jeżeli teza {A 1, A 2,..., A n } jest niesprzeczna, formuła B jest wnioskiem z {A 1, A 2,..., A n } wtedy i tylko wtedy, gdy teza {A 1, A 2,..., A n, B} jest sprzeczna). 3 Czym jest postać klauzulowa. 4 Jak działa unifikacja. Joanna Kołodziejczyk Systemy ekspertowe 2016 25 / 43

Prolog Przejście ze składni logiki do Prologu Popatrzmy na klauzule inaczej Zakładamy klauzule (p 1 (x) p 2 (x) p n (x)) ( q 1 (x) q 2 (x) q n (x)) Jest ona równoważna (p 1 (x) p 2 (x) p n (x)) ( (q 1 (x) q 2 (x) q n (x)) Co jest z kolei równoważne (p 1 (x) p 2 (x) p n (x)) (q 1 (x) q 2 (x) q n (x)) Jeżeli oznaczymy ( jako,) a ( jako ;) a ( jako :-) (p 1 (x); p 2 (x);... ; p n (x)) : (q 1 (x), q 2 (x),..., q n (x)) Joanna Kołodziejczyk Systemy ekspertowe 2016 26 / 43

Prolog Przejście ze składni logiki do Prologu Reguły i fakty w nowej formule Reguła zawiera znak: :-. Po lewej stronie znaku znajduje się głowa, a po prawie treść reguły. Fakty są głowami klauzul bez treści, gdyż reprezentują aksjomaty. np.. kobieta(ala) w postaci klauzuli ma taką samą postać, co jest równoważne zapisowi: kobieta(ala) :-. Joanna Kołodziejczyk Systemy ekspertowe 2016 27 / 43

Prolog Przejście ze składni logiki do Prologu Przykład w nowej składni W wyniku konwersji zdań CNF ze slajdu 21 otrzymujemy: 1 man(marcus) : 2 pompeian(marcus) : 3 roman(x 1 ) : pompeian(x 1 ) 4 ruler(caesar) : 5 loyalto(x 2, Caesar); hate(x 2, Caesar) : roman(x 2 ) 6 loyalto(x 3, f (x 3 )) : 7 loyalto(x 4, y 1 ) : man(x 4 ), ruler(y 1 ), tryassassinate(x 4, y 1 ) 8 tryassassinate(marcus, Caesar) : Joanna Kołodziejczyk Systemy ekspertowe 2016 28 / 43

Prolog Przejście ze składni logiki do Prologu Rezolucja na nowej składni Dowodzimy, że hate(marcus, Caesar), zatem do bazy wprowadzamy zanegowaną hipotezę. Joanna Kołodziejczyk Systemy ekspertowe 2016 29 / 43

Prolog Prolog - tylko klauzule Horna Klauzula Horna Kluzula Horna Jest to klauzula zawierająca co najwyżej jeden niezanegowany predykat. Klauzule Horna dzieli się na: 1 z głową posiadające jeden niezanegowany predykat 2 bez głowy bez niezanegowanego predykatu Klauzulą Horna nie jest: loyalto(x 2, Caesar); hate(x 2, Caesar) : roman(x 2 ) Joanna Kołodziejczyk Systemy ekspertowe 2016 30 / 43

Prolog Prolog - tylko klauzule Horna Zbiory klauzul Horna jako baza wiedzy Wszystkie klauzule poza jedną posiadają głowę. Baza wiedzy zawiera klauzule z głową. Cel wywodu (pytanie) jest klauzulą bez głowy. Istnienie jednej klauzuli bez głowy daje szansę uzyskania sprzeczności czyli uzyskanie pustej głowy i pustej treści. Istnienie wielu klauzul bez głowy jest zbędne, ponieważ każdy dowód można wyprowadzić przy użyciu co najwyżej jednej klauzuli bez głowy. Zatem klauzula pusta wynika tylko z klauzul z głową i jednej bez głowy. Joanna Kołodziejczyk Systemy ekspertowe 2016 31 / 43

Prolog Prolog - tylko klauzule Horna Prolog - programowanie w logice Program zawiera informacje o danych z odpowiednią ich interpretacją. (Symboliczne opisanie wiedzy). Baza wiedzy zawiera oprócz danych (faktów) interpretowalne reguły (zależności pomiędzy danymi). Aby wyrazić reguły i fakty stosuje się logikę predykatów, a dokładnie klauzule Horna. Stosując zasady logiki tworzy się system zawierający fakty i reguły. Zadaje się pytania dotyczące zebranej wiedzy. Joanna Kołodziejczyk Systemy ekspertowe 2016 32 / 43

Prolog Prolog - tylko klauzule Horna Przykład logika xpet(x) small(x) apartment(x) xcat(x) dog(x) pet(x) xpoodle(x) dog(x) small(x) poodle(fluffy) Prolog apartment(x) :- pet(x),small(x). pet(x):-cat(x); dog(x). small(x) :- poodle(x). dog(x) :- poodle(x). poodle(flaffy). Joanna Kołodziejczyk Systemy ekspertowe 2016 33 / 43

Prolog Ważne informacje o Prologu Cechy programowania w Prologu Ź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óbując wszystkie kombinacje klauzul z bazy. Nie wykorzystuje się powstałych pośrednio wniosków (nie dopisuje się ich ani tymczasowo, ani na stałe). Jeżeli cel jest złożony, 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 końcu składa podcele. Algorytm sprawdzający wszystkie możliwości to strategia w głąb - DFS (Depth First Search). Joanna Kołodziejczyk Systemy ekspertowe 2016 34 / 43

Prolog Ważne informacje o Prologu Niuanse Dlaczego xpoodle(x) dog(x) small(x) to w Prologu dog(x) :- poodle(x). small(x) :- poodle(x). xpoodle(x) dog(x) small(x) x poodle(x) (dog(x) small(x)) poodle(x) (dog(x) small(x)) ( poodle(x) dog(x)) ( poodle(x) small(x)) dog(x) poodle(x) dog(x) poodle(x) small(x) poodle(x) small(x) poodle(x) dog(x) :- poodle(x). small(x) :- poodle(x). Joanna Kołodziejczyk Systemy ekspertowe 2016 35 / 43

Prolog Ważne informacje o Prologu Unifikacja w PROLOGU Proces kojarzenia zmiennych i wartości. Zmienna, której przypisano stałą wartość nazywa się ukonkretnioną. Reguły unifikacji Stała może być zunifikowana tylko ze sobą. Dwie struktury(predykaty) 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. Joanna Kołodziejczyk Systemy ekspertowe 2016 36 / 43

Prolog Ważne informacje o Prologu Kolejność wnioskowania Dany jest plik źródłowy apartmentpet(x) :- pet(x), small(x). pet(x) :- cat(x). pet(x) :- dog(x). dog(x) :- poodle(x). small(x) :- poodle(x). poodle(fluffy). Sprawdzamy, czy apartmentpet(fluffy) jest prawdziwe. Joanna Kołodziejczyk Systemy ekspertowe 2016 37 / 43

Prolog Ważne informacje o Prologu Przykład rezolucji Joanna Kołodziejczyk Systemy ekspertowe 2016 38 / 43

Prolog Ważne informacje o Prologu Kolejność kluzul 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łaściwa kolejność definicji klauzul może zaowocować nieskończoną pętlą. Joanna Kołodziejczyk Systemy ekspertowe 2016 39 / 43

Prolog Ważne informacje o Prologu Rekurencja Dany jest plik źródłowy parent(pam, bob). parent(tom, bob). parent(tom, liz). parent(bob, ann). parent(bob, pat). parent(pat, jim). predecessor(x, Y):- parent(x, Y). predecessor(x, Y):- parent(x, Z), predecessor(z, Y). Sprawdzamy, czy predecessor(tom, pat). jest prawdziwe. Joanna Kołodziejczyk Systemy ekspertowe 2016 40 / 43

Prolog Ważne informacje o Prologu Poprawna rekurencja Joanna Kołodziejczyk Systemy ekspertowe 2016 41 / 43

Prolog Ważne informacje o Prologu Rekurencja z błędem Zmieniony kod na przodka predecessor(x, Y):- predecessor(x, Z), parent(z, Y). predecessor(x, Y):- parent(x, Y). Sprawdzamy, czy predecessor(tom, pat). jest prawdziwe. Joanna Kołodziejczyk Systemy ekspertowe 2016 42 / 43

Prolog Ważne informacje o Prologu Niepoprawna rekurencja Joanna Kołodziejczyk Systemy ekspertowe 2016 43 / 43