Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s        Predykaty wbudowane   Technik...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s           Predykaty wbudowane   Tech...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Operatory         Operacjy wyj´ cia/wej´ cia
                              s        s       Predykaty wbudowane   Techniki...
Upcoming SlideShare
Loading in...5
×

Sztuczna Inteligencja - Prolog 3

2,208

Published on

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

  • Be the first to like this

No Downloads
Views
Total Views
2,208
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
32
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Sztuczna Inteligencja - Prolog 3"

  1. 1. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Sztuczna Inteligencja i Systemy Ekspertowe Prolog 3 Aleksander Pohl http://apohllo.pl/dydaktyka/ai Wy˙ sza Szkoła Zarzadzania i Bankowo´ ci z ˛ s 23 marca 2009 Aleksander Pohl WSZiB Prolog 3
  2. 2. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Plan prezentacji Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Aleksander Pohl WSZiB Prolog 3
  3. 3. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Plan prezentacji Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Aleksander Pohl WSZiB Prolog 3
  4. 4. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Typy operatorów infiksowe ◮ np. 5 + 10, a ∨ b prefiksowe ◮ np. - 5, ¬ a postfiksowe ◮ np. 5, 6 + (notacja Łukasiewicza) Aleksander Pohl WSZiB Prolog 3
  5. 5. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Dyrektywy op(N,T,Name). ◮ s´ N – liczbowa warto´ c priorytetu operatora ◮ T – typ operatora ◮ Name – nazwa atomu ◮ Aleksander Pohl WSZiB Prolog 3
  6. 6. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania 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 3
  7. 7. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Typy operatorów infiksowe ◮ xfx, xfy, yfx prefiksowe ◮ fx, fy postfiksowe ◮ xf, yf Aleksander Pohl WSZiB Prolog 3
  8. 8. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania 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 3
  9. 9. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Przykład not jako fx ◮ not(not p) jako fy ◮ not not p Aleksander Pohl WSZiB Prolog 3
  10. 10. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania 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 3
  11. 11. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania 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 3
  12. 12. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania 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 3
  13. 13. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Plan prezentacji Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Aleksander Pohl WSZiB Prolog 3
  14. 14. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Wstep ˛ ´ Wej´ cie inne ni˙ w formie pytan logincznych (np. w jezyku s z ˛ ◮ naturalnym) Formatowanie wyj´ cia s ◮ Współpraca z innymi urzadzeniami peryferyjnymi ni˙ ˛ z ◮ terminal Dwa otwarte strumienie: ◮ ´ bie˙ acy strumien wej´ ciwy ˛z ˛ s ◮ ´ bie˙ acy strumien wyj´ ciowy z˛ s ◮ domy´ lnie – terminal user s ◮ Aleksander Pohl WSZiB Prolog 3
  15. 15. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Operacje na wej´ ciu i wyj´ ciu s s see – zamiana aktualnego wej´ cia na inne: s ◮ see(file1) ◮ read_from_file(Info) ◮ see(user) ◮ tell – zamiana aktualnego wyj´ cia na inne s ◮ Aleksander Pohl WSZiB Prolog 3
  16. 16. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Operacje na wej´ ciu i wyj´ ciu s s Zamykanie strumieni: ◮ seen ◮ told ◮ end_of_file – koniec pliku ◮ get, put – pojedyncze znaki ◮ read, write – termy ◮ Aleksander Pohl WSZiB Prolog 3
  17. 17. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Operacje na wej´ ciu s read(X) – odczyt termu z bie˙ acego strumienia wej´ cia z˛ s ◮ X zmienna – podstawienie warto´ ci s ◮ brak dopasowania – fail ◮ nie ma nawrotu w celu przeczytania nastepnego elementu ˛ ◮ Aleksander Pohl WSZiB Prolog 3
  18. 18. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Operacje na wyj´ ciu s write(X) – zapis termu do bie˙ acego strumienia wyj´ cia z˛ s ◮ tab(N) – wypisanie N spacji ◮ nl – przej´ cie do nowej linii s ◮ Aleksander Pohl WSZiB Prolog 3
  19. 19. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Schemat przetwarzania pliku processfile :- read(Term), ◮ process(Term). process(end_of_file) :- !. ◮ process(Term) :- ◮ treat(Term), processfile. Aleksander Pohl WSZiB Prolog 3
  20. 20. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Przetwarzanie pliku – przykład błedny! ˛ cube :- read(stop), !. ◮ cube :- read(N), ◮ C is N*N*N, write(C), cube. Aleksander Pohl WSZiB Prolog 3
  21. 21. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Przetwarzanie pliku – przykład poprawny cube :- ◮ write(’Next Item, please:’), read(X),process(X). process(stop) :- !. ◮ process(N) :- C is N*N*N, ◮ write(’Cube of ’), write(N), write(’ is ’), write(C),nl,cube. Aleksander Pohl WSZiB Prolog 3
  22. 22. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Wczytywanie i wypisywanie znaków put(C) – wypisanie pojedynczego znaku ◮ get(C) – wczytanie pojedynczego, widocznego znaku ◮ (nie-spacji) get0(C) – wczytanie pojedynczego znaku ◮ Aleksander Pohl WSZiB Prolog 3
  23. 23. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Przykład – operacje na znakach squeeze :- ◮ get0(C), put(C), dorest(C). dorest(46) :- !. %46 ASCII „.” ◮ dorest(32) :- !, get(C), put(C), ◮ dorest(C). %32 ASCII „ ” dorest(Letter) :- squeeze. ◮ Aleksander Pohl WSZiB Prolog 3
  24. 24. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Operacje na znakach name(A, L) – zamiana termu na kody znaków ◮ name(zx232, [ 122, 120, 50, 51, 50 ]) ◮ Aleksander Pohl WSZiB Prolog 3
  25. 25. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Wczytywanie plików consult(F) ◮ compile(F) ◮ consult([file1, file2, queens]) ◮ Aleksander Pohl WSZiB Prolog 3
  26. 26. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Plan prezentacji Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Aleksander Pohl WSZiB Prolog 3
  27. 27. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Testowanie typu var(X) – zmienna o warto´ ci nieprzypisanej s ◮ nonvar(X) ◮ s´ atom(X) – warto´ c atomowa ◮ integer(X) – liczba całkowita ◮ float(X) – liczba zmiennopozycyjna ◮ number(X) – liczba ◮ s´ atomic(X) – liczba lub warto´ c atomowa ◮ compound(X) – struktura ◮ Aleksander Pohl WSZiB Prolog 3
  28. 28. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Testowanie typu – przykład (1) count(_,[],0). ◮ count(A,[A|L],N) :- !, ◮ count(A,L,N1),N is N1 +1. count(A,[_|L],N) :- count(A,L,N). ◮ count(a,[a,b,a,a],Nb). ◮ Nb=3 ◮ Aleksander Pohl WSZiB Prolog 3
  29. 29. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Testowanie typu – przykład (2) count1(_,[],0). ◮ count1(A,[B|L],N) :- ◮ atom(B),A=B,!, count1(A,L,N1), N is N1 +1 ; count1(A,L,N). Aleksander Pohl WSZiB Prolog 3
  30. 30. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Testowanie typu – przykład (3) count(a,[a,b,X,Y],Nb). ◮ Nb=3 count1(a,[a,b,X,Y],Nb). ◮ Nb=1 Aleksander Pohl WSZiB Prolog 3
  31. 31. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Predykat =.. Term =.. L ◮ f(a,b) =.. L ◮ L=[f,a,b] ◮ T=..[rectangle,4,5] ◮ T=rectangle(4,5) ◮ Aleksander Pohl WSZiB Prolog 3
  32. 32. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Predykat =.. – przykład (1) enlarge(Type(Par),F,Type(Par1)) :- ◮ Par1 is Par * F. square(side), triangle(s1,s2,s3), ◮ rectangle(s1,s2) Aleksander Pohl WSZiB Prolog 3
  33. 33. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Predykat =.. – przykład (2) enlarge(Fig,F,Fig1) :- ◮ Fig=..[Type,Params], multiply_list(Params,F,Params1), Fig1=..[Type,Params1]. multiply_list([],_,[]). ◮ multiply_list( [X|L],F,[X1|L1]) :- ◮ X1 is X*F, multiply_list(L,F,L1). Aleksander Pohl WSZiB Prolog 3
  34. 34. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum arg i functor functor(D,date,3). ◮ D=date(_5,_6,_7). ◮ arg(1,D,29) ◮ arg(2,D,june) ◮ arg(3,D,1982) ◮ D = date(29,june,1982). ◮ Aleksander Pohl WSZiB Prolog 3
  35. 35. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Porównywanie termów s´ X=Y – równo´ c termów ◮ X is E – ewaluacja warto´ ci liczbowej s ◮ s´ X=:=Y – równo´ c warto´ ci liczbowych s ◮ s´ X=/=Y – nierówno´ c warto´ ci liczbowych s ◮ s´ T1==T2 – identyczno´ c termów ◮ s´ T1/==T2 – nieidentyczno´ c termów ◮ X@<Y – porównywanie słownikowe ◮ @<, @<=, @>=, @> ◮ Aleksander Pohl WSZiB Prolog 3
  36. 36. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Zarzadzanie asercjami ˛ assert(X) – dodanie asercji ◮ retract(X) – usuniecie asercji ˛ ◮ asserta(X) – dodanie asercji na poczatku ˛ ◮ ´ assertz(X) – dodanie asercji na koncu ◮ assert(rodzic(jan, anna)) ◮ Aleksander Pohl WSZiB Prolog 3
  37. 37. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Plan prezentacji Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Aleksander Pohl WSZiB Prolog 3
  38. 38. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Caching solve(problem1, Solution), ◮ asserta(solve(problem1,Solution)). fib(1,1):- !. ◮ fib(2,1):- !. ◮ fib(N,M) :- ◮ N1 is N-1, fib(N1,M1), N2 is N-2, fib(N2,M2),M is M1 + M2, asserta(fib(N,M)). Aleksander Pohl WSZiB Prolog 3
  39. 39. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Sterowanie ! – odciecie ˛ ◮ ´ fail – cel, który zawsze konczy sie niepowodzeniem ˛ ◮ ´ true – cel, który zawsze konczy sie sukcesem ˛ ◮ not(P) – negacja (przez odciecie!) ˛ ◮ call(P) – wywołanie procedury ◮ repeat – potwórzenie: ◮ repeat. ◮ repeat:-repeat. ◮ Aleksander Pohl WSZiB Prolog 3
  40. 40. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Powtórzenie – przykład doSquare :- ◮ repeat, read(X), (X = stop, ! ; Y is X*X, write(Y), fail). Aleksander Pohl WSZiB Prolog 3
  41. 41. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Zbieranie wyników bagof(X,P,L) – L lista obiektów X spełniajacych ˛ ◮ predykat P setof(X,P,L) – L posortowana lista obiektów ◮ X spełniajacych predykat P ˛ ˛˙ findall(X,P,L) – podobny do bagof, z ta ró˙ nica, ze ˛z ◮ dla wyniku istotna jest tylko zmienna X Aleksander Pohl WSZiB Prolog 3
  42. 42. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum bagof – przykład (1) age(peter,7). ◮ age(ann,5). ◮ age(pat,8). ◮ age(tom,5). ◮ bagof(C,age(C,5),L). ◮ L=[ann,tom] ◮ Aleksander Pohl WSZiB Prolog 3
  43. 43. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum bagof – przykład (2) bagof(C,age(C,A),L). ◮ A=7, L=[peter] ◮ A=5, L=[ann,tom] ◮ A=8, L=[pat] ◮ Aleksander Pohl WSZiB Prolog 3
  44. 44. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum bagof, setof, findall – przykład bagof(C,A^age(C,A),L). ◮ L=[peter, ann , pat, tom] setof(C,A^age(C,A),ChildList). ◮ ChildList = [ ann, pat, peter , tom ] setof(A,C^age(C,A),AgeList). ◮ AgeList = [ 5,7,8 ] findall(C,age(C,A),L). ◮ L=[peter, ann , pat, tom] Aleksander Pohl WSZiB Prolog 3
  45. 45. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Optymalizacja ostatniego wywołania p(...) :- .... ◮ p(...) :- .... ◮ P(...) :- ...., !, p(...). ◮ Zmiana rekursji na iteracje ˛ ◮ Aleksander Pohl WSZiB Prolog 3
  46. 46. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Akumulator – problem małpy canget(state(_,_,_,has),[]). ◮ canget(State1,[Move| L]) :- ◮ print(Move), write(’ ’), move( State1, Move, State2), canget( State2, L ). Aleksander Pohl WSZiB Prolog 3
  47. 47. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Wykorzystanie akumulatora Brak tail recursion: sumlist([],0). ◮ sumlist([First|Rest],Sum) :- ◮ sumlist(Rest,Sum0), Sum is X + Sum0. Wykorzystanie tail recursion: sumlist(L,S) :- sumlist(L,0,S). ◮ sumlist([],S,S). ◮ sumlist([First|Rest],PartialSum,TotalSum) ◮ :- NewPartialSum is PartialSum + First, sumlist(Rest, NewPartialSum, TotalSum). Aleksander Pohl WSZiB Prolog 3
  48. 48. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Tablice functor(A, f, 100). ◮ A = f(_,_,_,....,_) ◮ arg(60,f,1). ◮ W jezyku C: f[60]=1 ˛ ◮ arg(60,f,X). ◮ W jezyku C: X=f[60] ˛ ◮ Aleksander Pohl WSZiB Prolog 3
  49. 49. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Listy ró˙ nicowe (1) z conc([], L, L). ◮ conc([X|L1],L2,[X|L3]):- ◮ conc(L1,L2,L3). Aleksander Pohl WSZiB Prolog 3
  50. 50. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Listy ró˙ nicowe (2) z [a,b,c] → [a,b,c|T]-T ◮ [] → L-L ◮ conc(A1-Z1,Z1-Z2,A1-Z2). ◮ Aleksander Pohl WSZiB Prolog 3
  51. 51. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Listy ró˙ nicowe (3) z ... czyli conc(L1,L2,L3). ◮ ?- conc([a,b,c|T1]-T1,[d,e|T2]-T2,L). ◮ Aleksander Pohl WSZiB Prolog 3
  52. 52. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Plan prezentacji Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Aleksander Pohl WSZiB Prolog 3
  53. 53. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania 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 3
  54. 54. Operatory Operacjy wyj´ cia/wej´ cia s s Predykaty wbudowane Techniki programowania Postscriptum Dziekuje! ˛ ˛ Aleksander Pohl WSZiB Prolog 3
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×