Sztuczna Intelignecja - Prolog 2

2,413 views

Published on

Published in: Education, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,413
On SlideShare
0
From Embeds
0
Number of Embeds
99
Actions
Shares
0
Downloads
33
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Sztuczna Intelignecja - Prolog 2

  1. 1. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Sztuczna Inteligencja i Systemy Ekspertowe Prolog 2 Aleksander Pohl http://apohllo.pl/dydaktyka/ai Wy˙ sza Szkoła Zarzadzania i Bankowo´ ci z ˛ s 17 marca 2009 Aleksander Pohl WSZiB Prolog 2
  2. 2. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Plan prezentacji Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Aleksander Pohl WSZiB Prolog 2
  3. 3. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Plan prezentacji Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Aleksander Pohl WSZiB Prolog 2
  4. 4. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Listy [ann, tom, tennis] ◮ „głowa” – head: ann ◮ „ogon” – tail: [tom, tennis] ◮ Aleksander Pohl WSZiB Prolog 2
  5. 5. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Operatory sklejanie .(Head, Tail) ◮ rozdzielanie L = [Head | Tail] ◮ Aleksander Pohl WSZiB Prolog 2
  6. 6. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Testowanie obecno´ ci (1) s Element listy member(X, [X | Tail]). ◮ member(X, [Head | Tail]) :- ◮ member(X, Tail). Aleksander Pohl WSZiB Prolog 2
  7. 7. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Testowanie obecno´ ci (2) s Element listy z wykorzystaniem odciecia ˛ member(X, [X | Tail]) :- !. ◮ member(X, [Head | Tail]) :- ◮ member(X, Tail). Aleksander Pohl WSZiB Prolog 2
  8. 8. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Konkatenacja 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 2
  9. 9. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Usuwanie i dodawania elementu Usuwanie elementu del(X, [X | Tail],Tail). ◮ del(X, [Y | Tail],[Y,Tail1]) :- ◮ del(X, Tail, Tail1). Dodawanie elementu insert( X, List, BiggerList) :- ◮ del( X, BiggerList, List). Aleksander Pohl WSZiB Prolog 2
  10. 10. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Permutacje Permutacje dla zbioru {a, b, c}: (a, b, c) ◮ (a, c, b) ◮ (b, a, c) ◮ (c, a, b) ◮ (b, c, a) ◮ (c, b, a) ◮ W Prologu permutation([],[]). ◮ permutation( [X | L ],P) :- ◮ permutation(L,L1), insert(X,L1,P). Aleksander Pohl WSZiB Prolog 2
  11. 11. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Plan prezentacji Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Aleksander Pohl WSZiB Prolog 2
  12. 12. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Obliczanie warto´ ci s X = 1 + 2. ◮ X=1+2 ◮ X is 1 + 2. ◮ X = 3. ◮ Aleksander Pohl WSZiB Prolog 2
  13. 13. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Porównywanie liczb X>Y ◮ X<Y ◮ X>=Y ◮ X=<Y ◮ s´ X=:=Y (równo´ c) ◮ s´ X=/=Y (nierówno´ c) ◮ Aleksander Pohl WSZiB Prolog 2
  14. 14. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Przykład porównywania liczb 1 + 2 =:= 2 + 1. ◮ yes ◮ 1 + 2 = 2 + 1. ◮ no ◮ 1 + A = B + 2. ◮ A=2 ◮ B=1 ◮ Aleksander Pohl WSZiB Prolog 2
  15. 15. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Przykład – obliczanie długo´ ci listy s length1( [] , 0 ). ◮ length1( [ _ | Tail ], N) :- ◮ N = 1 + N1, length1( Tail, N1 ). length1( [ _ | Tail ], 1 + N) :- ◮ length1( Tail, N ). Aleksander Pohl WSZiB Prolog 2
  16. 16. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Obliczanie długo´ ci – wyniki s ?- length1([a,b,c,d],N) ◮ N = 1 + (1 + (1 + (1 + 0))) ◮ ?- length1([a,b,c,d],N), Length is N. ◮ N = 1 + (1 + (1 + (1 + 0))) ◮ Length = 4 ◮ Aleksander Pohl WSZiB Prolog 2
  17. 17. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Obliczanie długo´ ci – rozwiazanie poprawne s ˛ length( [] , 0 ). ◮ length( [ _ | Tail ], N) :- ◮ length( Tail, N1 ), N is 1 + N1. Aleksander Pohl WSZiB Prolog 2
  18. 18. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Plan prezentacji Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Aleksander Pohl WSZiB Prolog 2
  19. 19. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Predykaty jako struktury date(5, may, 2000). ◮ date – funktor główny ◮ Aleksander Pohl WSZiB Prolog 2
  20. 20. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Struktura zło˙ ona z family( person(tom, fox, date(7,may,1960),works(bbc,4200)), person(ann, fox, date(9, may,1961),unemployed), [person(pat, fox, date(5, may,1983),unemployed), person(jim, fox, date(11, may,1985),unemployed)]). Aleksander Pohl WSZiB Prolog 2
  21. 21. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Rodzina – zapytania (1) family(_,_,[ _,_,_]). ◮ family(person( _, fox, _ , _ ), _ ,_). ◮ husband(X) :- ◮ family(X, _ ,_). wife(X) :- ◮ family(_,X,_). child(X) :- ◮ family(_,_,Children), member(X, Children). exists(Person) :- ◮ husband(Person);wife(Person); child(Person). Aleksander Pohl WSZiB Prolog 2
  22. 22. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Rodzina – zapytania (2) dateofbirth(person(_,_,Date,_),Date). ◮ salary(person(_,_,_,works(_,S)),S). ◮ salary(person(_,_,_,unemployed),0). exists(person(Name,Surname,_,_)). ◮ child(X), dateofbirth(X,date(_,_,2000)). ◮ exists(Person), ◮ dateofbirth(Person, date(_,_,Year)), Year<1960, salary(Person,Salary), Salary<8000. Aleksander Pohl WSZiB Prolog 2
  23. 23. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Rodzina – zapytania (3) total([],0). ◮ total([Person|List], Sum) :- ◮ salary(Person,S), total(List, Rest), Sum is S+Rest. family(Husband, Wife, Children), ◮ total([Husband,Wife|Children],Income). Aleksander Pohl WSZiB Prolog 2
  24. 24. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Plan prezentacji Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Aleksander Pohl WSZiB Prolog 2
  25. 25. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Aleksander Pohl WSZiB Prolog 2
  26. 26. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Ruchy małpy (1) move( ◮ state(middle,onbox,middle,hasnot), grasp, state(middle,onbox,middle,has)). move( ◮ state(P,onfloor,P,H), climb, state(P,onbox,P,H)). Aleksander Pohl WSZiB Prolog 2
  27. 27. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Ruchy małpy (2) move( ◮ state(P1,onfloor,P1,H), push(P1,P2), state(P2, onfloor, P2, H)). move( ◮ state( P1, onfloor, B, H), walk(P1,P2), state(P2, onfloor, B, H)). Aleksander Pohl WSZiB Prolog 2
  28. 28. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Cel małpy canget( state(_,_,_,has)). ◮ canget( State1 ) :- ◮ move( State1 , Move , State2), canget(State2), print(Move), write(’ ’). ?- canget(state(atdoor, onfloor, atwindow, ◮ hasnot)) Aleksander Pohl WSZiB Prolog 2
  29. 29. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Plan prezentacji Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Aleksander Pohl WSZiB Prolog 2
  30. 30. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Typy operatorów infiksowe ◮ np. 5 + 10, a ∨ b prefiksowe ◮ np. - 5, ¬ a postfiksowe ◮ np. 5, 6 + (notacja Łukasiewicza) Aleksander Pohl WSZiB Prolog 2
  31. 31. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Dyrektywy op(N,T,Name). ◮ N — priorytet operatora ◮ T – typ operatora ◮ Name – nazwa atomu ◮ Aleksander Pohl WSZiB Prolog 2
  32. 32. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Priorytety s´ Im ni˙ szy warto´ c priorytetu (im wy˙ szy priorytet), tym operator z z wia˙ e silniej. ˛z term, bad´ wyra˙ enie w nawiasach: 0 ˛z z ◮ priorytet struktury: priorytet funktora głównego ◮ s´ x – warto´ c priorytetu silnie mniejsza od warto´ ci s ◮ priorytetu operatora głównego s´ y – warto´ c priorytetu mniejsza bad´ równa warto´ ci ˛z s ◮ priorytetowi operatora głównego Aleksander Pohl WSZiB Prolog 2
  33. 33. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Typy operatorów infiksowe ◮ xfx, xfy, yfx prefiksowe ◮ fx, fy postfiksowe ◮ xf, yf Aleksander Pohl WSZiB Prolog 2
  34. 34. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Przykład a-b-c ◮ (a-b)-c – tradycyjna interpretacja ◮ definiujemy jako yfx ◮ a-b priorytet równy warto´ ci operatora, czyli y ma taki s sam priorytet jak operator główny definiujemy jako xfy (błednie) ˛ ◮ a-b priorytet równy warto´ ci operatora, ale x nie mo˙ e s z mie´ priorytetu takiego jak operator główny c Aleksander Pohl WSZiB Prolog 2
  35. 35. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Przykład not jako fx ◮ not(not p) jako fy ◮ not not p Aleksander Pohl WSZiB Prolog 2
  36. 36. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Predefiniowane operatory op(1200,xfx,[ :- , -> ] ) ◮ op(1100,xfy,’;’) ◮ op(1000,xfy,’,’) ◮ op(900,fy, not ) ◮ op(700,xfx,[ is,=,=,=:=,== ]) ◮ op(500,yfx,[ +,- ]) ◮ op(400,yfx,[ *,/,//,mod ]) ◮ op(200, xfx , ** ) ◮ op(200,fy,-) ◮ Aleksander Pohl WSZiB Prolog 2
  37. 37. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Przykład (1) ¬(A ∨ B) ↔ ¬A ∨ ¬B ◮ equiv(not( and(A,B)),or(not(A),not(B))) ◮ op( 800,xfx, <===>). ◮ op(700,xfy,v). ◮ op(600,xfy,&). ◮ op(500,fy,∼). ◮ ∼(A & B) <===> ∼A v ∼B. ◮ Aleksander Pohl WSZiB Prolog 2
  38. 38. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Przykład (2) op(300,xfx, plays). ◮ op(200,xfy,and). ◮ jimmy plays football and squash. ◮ Who plays football and squash. ◮ Who = jimmy ◮ jimmy plays What. ◮ What = football and squash ◮ Aleksander Pohl WSZiB Prolog 2
  39. 39. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Plan prezentacji Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Aleksander Pohl WSZiB Prolog 2
  40. 40. Listy Arytmetyka Struktury Problem małpy :-) Operatory 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 2
  41. 41. Listy Arytmetyka Struktury Problem małpy :-) Operatory Postscriptum Dziekuje! ˛ ˛ Aleksander Pohl WSZiB Prolog 2

×