Sztuczna Inteligencja - Prolog 1

40
Historia Podstawy teoretyczne Skladnia Wykonanie programu Listy Postscriptum Sztuczna Inteligencja i Systemy Ekspertowe Prolog 1 Aleksander Pohl Wy˙ zsza Szkola Zarz ˛ adzania i Bankowo´ sci 12 marca 2009 Aleksander Pohl WSZiB Prolog 1

Transcript of Sztuczna Inteligencja - Prolog 1

Page 1: 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

Page 2: Sztuczna Inteligencja - 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

Page 3: Sztuczna Inteligencja - 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

Page 4: Sztuczna Inteligencja - 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

Page 5: Sztuczna Inteligencja - 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

Page 6: Sztuczna Inteligencja - 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

Page 7: Sztuczna Inteligencja - 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

Page 8: Sztuczna Inteligencja - 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

Page 9: Sztuczna Inteligencja - 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

Page 10: Sztuczna Inteligencja - 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

Page 11: Sztuczna Inteligencja - 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

Page 12: Sztuczna Inteligencja - 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

Page 13: Sztuczna Inteligencja - 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

Page 14: Sztuczna Inteligencja - 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

Page 15: Sztuczna Inteligencja - 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

Page 16: Sztuczna Inteligencja - 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

Page 17: Sztuczna Inteligencja - 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

Page 18: Sztuczna Inteligencja - 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

Page 19: Sztuczna Inteligencja - 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

Page 20: Sztuczna Inteligencja - 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

Page 21: Sztuczna Inteligencja - 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

Page 22: Sztuczna Inteligencja - 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

Page 23: Sztuczna Inteligencja - 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

Page 24: Sztuczna Inteligencja - 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

Page 25: Sztuczna Inteligencja - 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

Page 26: Sztuczna Inteligencja - 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

Page 27: Sztuczna Inteligencja - 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

Page 28: Sztuczna Inteligencja - 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

Page 29: Sztuczna Inteligencja - 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

Page 30: Sztuczna Inteligencja - 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

Page 31: Sztuczna Inteligencja - 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

Page 32: Sztuczna Inteligencja - 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

Page 33: Sztuczna Inteligencja - 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

Page 34: Sztuczna Inteligencja - Prolog 1

Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum

Operatory

◮ sklejanie .(Head, Tail)

◮ rozdzielanie L = [Head | Tail]

Aleksander Pohl WSZiB

Prolog 1

Page 35: Sztuczna Inteligencja - 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

Page 36: Sztuczna Inteligencja - 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

Page 37: Sztuczna Inteligencja - 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

Page 38: Sztuczna Inteligencja - 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

Page 39: Sztuczna Inteligencja - 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

Page 40: Sztuczna Inteligencja - Prolog 1

Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum

Dziekuje!

Aleksander Pohl WSZiB

Prolog 1