Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Sztuczna Inteligencja - Prolog 1
1. Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Sztuczna Inteligencja i Systemy Ekspertowe
Prolog 1
Aleksander Pohl
Wy˙ sza Szkoła Zarzadzania i Bankowo´ ci
z ˛ s
12 marca 2009
Aleksander Pohl WSZiB
Prolog 1
2. 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
3. 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
4. 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”
◮
s´
Ograniczona ilo´ c instrukcji
◮
put, get, unify, variable, value, execute,
proceed, try, retry, trust
e´ ´
Standard ISO (1995) uzgadniajacy cz˛ sc wspólna
˛ ˛
◮
dialektów
Aleksander Pohl WSZiB
Prolog 1
5. 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
6. 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
7. Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Unifikacja
Unifikacja dwóch termów polega na znalezieniu takich
◮
´
podstawien za zmienne wystepujace w tych termach aby
˛ ˛
po ich wykonaniu termy stały sie identyczne.
˛
W Prologu do unifikacji dwóch termów słu˙ y predykat =.
z
◮
Podczas sprawdzenia warunku t1 = t2 albo termy zostana ˛
zunifikowane i zostanie wykonane na nich odpowiednie
podstawienie zmiennych albo, je´ li takie podstawienie nie
s
istnieje, warunek nie bedzie spełniony i nastapi nawrót
˛
Unifikator dla Q(a, Y, Z), Q(Y, b, c)
◮
Q(a, Y, Z), Q(Y1, b, c), Y1 = a, Y = b, Z =
c
Aleksander Pohl WSZiB
Prolog 1
8. 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 ich
alternatywa jest prawdziwa. Klauzula pusta jest fałszywa.
Klauzula Horna (ang. Horn Clause) – to klauzula w której
◮
co najwy˙ ej jeden element jest niezanegowany.
z
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
9. 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
10. Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Wyra˙ enia atomowe
z
Wyra˙ eniami atomowymi sa:
z ˛
´
łancuchy zło˙ one z liter, cyfr, znaku _ zaczynajace sie od
z ˛ ˛
◮
małej litery np. anna, x25
´
łancuchy zło˙ one ze znaków specjalnych np. <-->, .:.
z
◮
´
łancuchy ograniczone pojedynczymi cudzysłowami np.
◮
’Tom’, ’Jan Kowalski’
Aleksander Pohl WSZiB
Prolog 1
11. Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Zmienne
Zmiennymi sa:
˛
´
łancuchy zło˙ one z liter, cyfr, znaku _, zaczynajace sie od
z ˛ ˛
◮
´
du˙ ej litery bad´ znaku podkreslenia, np. Number,
z ˛z
_value
zmienna anonimowa : oznaczona przez _
◮
Aleksander Pohl WSZiB
Prolog 1
12. Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Fakty i reguły
Fakty
◮
parent(jan, anna)
Reguły
◮
ojciec(X, Y) :- rodzic(X, Y), m˛˙czyzna(X). ez
„X jest ojcem Y, je´ li X jest rodzicem Y i X jest me˙ czyzna.”
s ˛z ˛
:- – „wtedy, gdy”, „je´ li”
s
◮
, – koniunkcja
◮
; – alternatywa
◮
Aleksander Pohl WSZiB
Prolog 1
13. 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
14. Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Funktory
Funktory – predykaty, termy zło˙ one
z
nazwa – takie same reguły jak nazwa atomu
◮
s´
arno´ c – liczba argumentów
◮
np. parent(X, Y)
◮
efekty uboczne, np. write(’hello’)
◮
Aleksander Pohl WSZiB
Prolog 1
15. 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
16. 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
17. 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), je´ li istnieje
˛˛ s
◮
˙
instancja klauzuli K = F :- C1 , C2 , ... Cn taka, ze
jej funktor główny F jest identyczny z celem C
◮
jej wszystkie cele składowe C1 , C2 , ... Cn sa˛
◮
osiagniete (prawdziwe)
˛˛
Aleksander Pohl WSZiB
Prolog 1
18. 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
19. Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Imperatywne (proceduralne) znaczenie programu
´
1. je´ li lista celów (ang. goal) jest pusta zakoncz sukcesem,
s
w przeciwny razie:
2. znajd´ klauzule K, o takim samym funktorze głównym jak
z ˛
´
pierwszy cel C1 , bad´ zakoncz niepowodzeniem
˛z
3. dokonaj dopasowania (ang. matching) K i C1
4. je´ li K jest postaci H :- B1 ,...,Bn uzupełnij liste celów
s ˛
o B1 ... Bn
˙
5. je´ li K jest faktem – n = 0 (tzn. nie dodajemy zadnego celu)
s
6. powtórz w/w procedure (od p. 1)
˛
´
je´ li zakonczy sie sukcesem, zwró´ sukces
s ˛ c
◮
je´ li pora˙ ka – odrzu´ cele B1 ...Bn , szukaj kolejnych
s z˛ c
◮
predykatów pasujacych do K
˛
Aleksander Pohl WSZiB
Prolog 1
20. Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Dopasowanie
Dwa termy pasuja do siebie je´ li:
˛ s
sa identyczne
˛
◮
jeden z termów jest zmienna – nastepuje podstawienie
˛ ˛
◮
sa wyra˙ eniami zło˙ onymi – zmienne w obu termach moga
˛ z z ˛
◮
zosta´ podstawione tak, aby po podstawieniu termy jako
c
s´
cało´ c stały sie identyczne
˛
Aleksander Pohl WSZiB
Prolog 1
21. 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
22. 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: pora˙ ka, wracamy do
z
◮
dark(X), big(X)
4ty: brown(X), big(X)
◮
5ty: big(bear)
◮
X = bear
◮
Aleksander Pohl WSZiB
Prolog 1
23. Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
´
Zagro˙ enia – petle nieskonczone
z ˛
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
24. Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
´
Zagro˙ enia – petle nieskonczone
z ˛
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
25. Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Odciecie
˛
H :- B1, B2 , ... , Bm , ! , ... , Bn
◮
Przy napotkaniu odciecia, odciecie zwraca sukces, ale dla
˛ ˛
◮
skutecznego spełnienia głównego funktora, musza zosta´
˛ c
spełnione cele pomiedzy głównym funktorem a odcieciem
˛ ˛
Aleksander Pohl WSZiB
Prolog 1
26. 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
27. 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.
◮
s´
Z odcieciem – wieksza wydajno´ c
˛ ˛
◮
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
28. 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
29. Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Negacja – zagro˙ enia
z
˛s´
„Zało˙ enie o zamknieto´ ci swiata” (ang. closed world
z
◮
assumption)
?- not(human(mary)).
yes
przy negacji – zmiana kwantyfikatora na ogólny
◮
Aleksander Pohl WSZiB
Prolog 1
30. Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Negacja – przykład zagro˙ enia
z
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
31. Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Negacja – wyja´ nienie
s
not droga(X)
◮
to samo co
◮
¬(∃X : droga(X ))
◮
czyli
◮
∀X : ¬droga(X )
◮
Aleksander Pohl WSZiB
Prolog 1
32. 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
33. 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
34. Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Operatory
sklejanie .(Head, Tail)
◮
rozdzielanie L = [Head | Tail]
◮
Aleksander Pohl WSZiB
Prolog 1
35. 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
36. 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
37. 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
38. 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
39. 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
40. Historia Podstawy teoretyczne Składnia Wykonanie programu Listy Postscriptum
Dziekuje!
˛ ˛
Aleksander Pohl WSZiB
Prolog 1