Sztuczna Inteligencja - Prolog 1
-
Upload
aleksander-pohl -
Category
Technology
-
view
3.566 -
download
0
Transcript of Sztuczna Inteligencja - Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Sztuczna Inteligencja i Systemy EkspertoweProlog 1
Aleksander Pohl
Wyzsza Szkoła Zarzadzania i Bankowosci
12 marca 2009
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Plan prezentacji
Historia
Podstawy teoretyczne
Składnia
Wykonanie programu
Listy
Postscriptum
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Plan prezentacji
Historia
Podstawy teoretyczne
Składnia
Wykonanie programu
Listy
Postscriptum
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Historia
◮ Alain Colmerauer, Phillipe Roussel pocz. lat 70-tych:Uniwersytet w Aix-Marseilles (1975)
◮ Robert Kowalski: Uniwersytet w Edynburgu (1974)◮ David H.D. Warren – U.C. Berkeley (1985)
◮ WAM – „Warren Abstract Machine”◮ Ograniczona ilosc instrukcji
put, get, unify, variable, value, execute,proceed, try, retry, trust
◮ Standard ISO (1995) uzgadniajacy czesc wspólnadialektów
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Historia
◮ Prolog:◮ jezyk proceduralny◮ unifikacja◮ przeszukiwanie z nawrotami
◮ WAM:◮ kontrola sekwencyjna◮ unifikacja◮ przeszukiwanie z nawrotami◮ optymalizacje
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Plan prezentacji
Historia
Podstawy teoretyczne
Składnia
Wykonanie programu
Listy
Postscriptum
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Unifikacja
◮ Unifikacja dwóch termów polega na znalezieniu takichpodstawien za zmienne wystepujace w tych termach abypo ich wykonaniu termy stały sie identyczne.
◮ W Prologu do unifikacji dwóch termów słuzy predykat =.Podczas sprawdzenia warunku t1 = t2 albo termy zostanazunifikowane i zostanie wykonane na nich odpowiedniepodstawienie zmiennych albo, jesli takie podstawienie nieistnieje, warunek nie bedzie spełniony i nastapi nawrót
◮ Unifikator dla Q(a, Y, Z), Q(Y, b, c)Q(a, Y, Z), Q(Y 1, b, c), Y 1 = a, Y = b, Z =c
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Klauzule Horna
◮ Klauzula – to zbiór literałów i zanegowanych literałów,który jest prawdziwy wtedy i tylko wtedy, gdy ichalternatywa jest prawdziwa. Klauzula pusta jest fałszywa.
◮ Klauzula Horna (ang. Horn Clause) – to klauzula w którejco najwyzej jeden element jest niezanegowany.
◮ Dla formuły r ∧ q ∧ s ⇒ p klauzula Horna w postaci:◮ logicznej: (¬r ∨ ¬q ∨ ¬s) ∨ p◮ prologowej: p :- r,q,s;
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Plan prezentacji
Historia
Podstawy teoretyczne
Składnia
Wykonanie programu
Listy
Postscriptum
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Wyrazenia atomowe
Wyrazeniami atomowymi sa:◮ łancuchy złozone z liter, cyfr, znaku _ zaczynajace sie od
małej litery np. anna , x25
◮ łancuchy złozone ze znaków specjalnych np. <--> , .:.
◮ łancuchy ograniczone pojedynczymi cudzysłowami np.’Tom’ , ’Jan Kowalski’
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Zmienne
Zmiennymi sa:◮ łancuchy złozone z liter, cyfr, znaku _, zaczynajace sie od
duzej litery badz znaku podkre slenia , np. Number,_value
◮ zmienna anonimowa : oznaczona przez _
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Fakty i reguły
◮ Faktyparent(jan, anna)
◮ Regułyojciec(X, Y) :- rodzic(X, Y), me zczyzna(X).
„X jest ojcem Y, jesli X jest rodzicem Y i X jest mezczyzna.”◮ :- – „wtedy, gdy”, „jesli”◮ , – koniunkcja◮ ; – alternatywa
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Fakty i reguły – przykłady
◮ Fakty◮ ssak(lew)◮ stolica(polska,warszawa)
◮ Reguły◮ rodzic(X,Y) :- ojciec(X,Y).◮ rodzic(X,Y) :- matka(X,Y).◮ Zespół reguł - procedura
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Funktory
Funktory – predykaty, termy złozone◮ nazwa – takie same reguły jak nazwa atomu◮ arnosc – liczba argumentów◮ np. parent(X, Y)
◮ efekty uboczne, np. write(’hello’)
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Przykład
◮ parent(anna, jan).
◮ haschild(X) :- parent(X,Y).
◮ ?- haschild(anna).
◮ yes
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Plan prezentacji
Historia
Podstawy teoretyczne
Składnia
Wykonanie programu
Listy
Postscriptum
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Deklaratywne znaczenie programu
◮ Program jest sterowany celem (ang. goal driven)◮ Cel C (ang. goal) jest osiagniety (prawdziwy), jesli istnieje
instancja klauzuli K = F :- C 1, C 2, ... C n taka, ze◮ jej funktor główny F jest identyczny z celem C◮ jej wszystkie cele składowe C1, C 2, ... C n sa
osiagniete (prawdziwe)
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Przykład
◮ omylny(X) :- czlowiek(X).
◮ czlowiek(sokrates).
◮ ?- omylny(sokrates).
◮ yes
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Imperatywne (proceduralne) znaczenie programu
1. jesli lista celów (ang. goal) jest pusta zakoncz sukcesem,w przeciwny razie:
2. znajdz klauzule K, o takim samym funktorze głównym jakpierwszy cel C1, badz zakoncz niepowodzeniem
3. dokonaj dopasowania (ang. matching) K i C1
4. jesli K jest postaci H :- B 1,...,B n uzupełnij liste celówo B1 ... Bn
5. jesli K jest faktem – n = 0 (tzn. nie dodajemy zadnego celu)6. powtórz w/w procedure (od p. 1)
◮ jesli zakonczy sie sukcesem, zwróc sukces◮ jesli porazka – odrzuc cele B1...Bn, szukaj kolejnych
predykatów pasujacych do K
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Dopasowanie
Dwa termy pasuja do siebie jesli:◮ sa identyczne◮ jeden z termów jest zmienna – nastepuje podstawienie◮ sa wyrazeniami złozonymi – zmienne w obu termach moga
zostac podstawione tak, aby po podstawieniu termy jakocałosc stały sie identyczne
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Przykład wykonania programu
◮ big(bear).
◮ big(elephant).
◮ small(cat).
◮ brown(bear).
◮ black(cat).
◮ gray(elephant).
◮ dark(Z) :- black(Z).
◮ dark(Z):- brown(Z).
◮ ?- dark(X), big(X).
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Przykład – cd.
◮ Lista celów: dark(X) , big(X)
◮ 1-szy przebieg: black(X) , big(X)
◮ 2-gi: big(cat)
◮ 3-ci: porazka, wracamy dodark(X) , big(X)
◮ 4ty: brown(X) , big(X)
◮ 5ty: big(bear)
◮ X = bear
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Zagrozenia – petle nieskonczone
◮ Jeden z 4 wariantów:przodek(X,Z) :- przodek(X,Y) ,rodzic(Y,Z).
przodek(X,Y) :- rodzic(X,Y).
◮ Uwage na lewostronna rekursje
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Zagrozenia – petle nieskonczone
Poprawne warianty:◮ przodek(X,Z) :- rodzic(Y,Z), przodek(X,Y).
przodek(X,Y) :- rodzic(X,Y).
◮ przodek(X,Y) :- rodzic(X,Y).przodek(X,Z) :- przodek(X,Y) , rodzic(Y,Z).
◮ przodek(X,Y) :- rodzic(X,Y).przodek(X,Z) :- rodzic(Y,Z)., przodek(X,Y)
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Odciecie
◮ H :- B1, B2 , ... , Bm , ! , ... , Bn
◮ Przy napotkaniu odciecia, odciecie zwraca sukces, ale dlaskutecznego spełnienia głównego funktora, musza zostacspełnione cele pomiedzy głównym funktorem a odcieciem
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Odciecie – przykład
◮ C :- P,Q,R,!,S,T,U.
◮ C :- V.
◮ A :- B,C,D.
◮ ?- A.
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Przykład – if-else
◮ Bez odciecia◮ max(X,Y,X) :- X >= Y.◮ max(X,Y,Y) :- X < Y.
◮ Z odcieciem – wieksza wydajnosc◮ max(X,Y,X) :- X >= Y, !.◮ max(X,Y,Y).
◮ Problem:◮ max(3, 1, 1).◮ max(X,Y,Max) :- X >= Y, !, Max = X; Max =
Y.
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Negacja
◮ Przykład:◮ different(X,X) :- !, fail.◮ different(X,Y).
◮ Ogólnie:not(P) :- P, !, fail; true.
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Negacja – zagrozenia
◮ „Załozenie o zamknietosci swiata” (ang. closed worldassumption)?- not(human(mary)).yes
◮ przy negacji – zmiana kwantyfikatora na ogólny
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Negacja – przykład zagrozenia
dobrarestauracja(wierzynek).droga(wierzynek).dobrarestauracja(ubabcimaliny).rozsadna(X) :- not droga(X).?- dobrarestauracja(X), rozsadna(X).X=ubabcimaliny?- rozsadna(X), dobrarestauracja(X) .no
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Negacja – wyjasnienie
◮ not droga(X)
◮ to samo co◮ ¬(∃X : droga(X ))
◮ czyli◮ ∀X : ¬droga(X )
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Plan prezentacji
Historia
Podstawy teoretyczne
Składnia
Wykonanie programu
Listy
Postscriptum
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Listy
◮ [ann, tom, tennis]
◮ „głowa” – head: ann
◮ „ogon” – tail: [tom, tennis]
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Operatory
◮ sklejanie .(Head, Tail)
◮ rozdzielanie L = [Head | Tail]
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Przykłady (1)
Element listy◮ member(X, [X | Tail]).
◮ member(X, [Head | Tail]) :-member(X, Tail).
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Przykłady (2)
Element listy z wykorzystaniem odciecia◮ member(X, [X | Tail]) :- !.
◮ member(X, [Head | Tail]) :-member(X, Tail).
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Przykłady (3)
Konkatenacja listy◮ conc([],L,L).
◮ conc([X | L1], L2, [X | L3]) :-conc(L1, L2, L3).
Dekompozycja◮ conc(L1, L2, [a, b, c]).
Wyszukiwanie◮ conc(Przed, [c | Po], [a, b, c, d, e, f]).
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Plan prezentacji
Historia
Podstawy teoretyczne
Składnia
Wykonanie programu
Listy
Postscriptum
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Materiały zródłowe
◮ L.Sterling, E.Shapiro - „The Art Of Prolog”◮ Ivan Bratko - „Prolog – Programming For Artificial
Intelligence”◮ Slajdy zostały przygotowane za zgoda
dr. Michała Korzyckiego na podstawie jego wykładu.
Aleksander Pohl WSZiB
Prolog 1
Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Dziekuje!
Aleksander Pohl WSZiB
Prolog 1