PROGRAMOWANIE W PROLOGU
mgr inż. Roman Huk
[email protected]
Na dzisiejszych zajęciach... ● ● ● ●
Kilka słów o przedmiocie Kilka słów o sztucznej inteligencji Składnia prologu Zadanie
Laboratorium sztucznej inteligencji ● ● ●
4 spotkania po 4 godziny. Zaliczenie na ostatnich zajęciach. Warunki zaliczenia: – –
●
Oddanie 4(6) sprawozdań; Obecność na zajęciach.
Ocena: – –
Średnia “wojskowa” z ocen za sprawozdania; Każda nieobecność obniża stopień o 0,75.
Postać sprawozdania ●
Format: – – –
●
tekst (UTF-8, ISO-8859-2,CP-1250), PDF, PS, HTML, RTF lub (w ostateczności MS Word).
Zawartość: – – – – – –
Imię, Nazwisko, grupa, data wykonania, Treść zadania, Krótki opis pomysłu rozwiązania, Kod źródłowy, Uzasadnienie odcięć, Ew. komentarze.
Literatura ●
●
W.F. Clocksin, C.S. Melish Prolog. Programowanie. Wydawnictwo Helion, Gliwice ????. Ulf Nilsson, Jan Małuszyński: Logic, Programming and Prolog (2ed). http://www.ida.liu.se/~ulfni/lpp
Narzędzia sztucznej inteligencji ●
● ● ● ● ●
Logika matematyczna, rachunek zdań, rachunek predykatów, algebra zbiorów; Zbiory rozmyte i zbiory przybliżone, Sieci neuronowe, Algorytmy ewolucyjne, Programowanie z bazą wiedzy, ...
Elementy programowania w Prologu ● ● ●
● ● ● ● ●
Fakty, Reguły, Zapytania. Stałe Zmienne Relacje Operatory ODCIĘCIE
Fakty
ojciec(jan, marta). ojciec(jan, krzysztof). ojciec(pawel, maria). matka(ewa,marta). matka(ewa,maria). matka(anna,krzysztof).
Reguły
ma_dzieci(X) :- ojciec(X, Y). rodzic(X) :- ma_dzieci(X). rodzic(X) :- ojciec(X,_). rodzic(X) :- matka(X,_). rodzic(X) :- ojciec(X,_);matka(X,_).
Pytania
?- rodzic(jan). ?- rodzic(X).
Przykład 1. dziadek(X,Y) :rodzic(X,Z),rodzic(Z,Y). rodzic(X,Y) :- ojciec(X,Y). rodzic(X,Y) :- matka(X,Y). ojciec(jan,krzysztof). ojciec(jan,marta). ojciec(pawel, maria). matka(ewa,marta). matka(ewa,maria). matka(anna,krzysztof).
Przykład 2a. not(1,0). not(0,1). and(1,1,1). and(_,0,0). ond(0,_,0). or(0,0,0). or(1,_,1). or(_,1,1). nand(X,Y,Z) :- and(X,Y,W),not(W,Z).
Przykład 2b. not(X,Y) :- Y is 1-X. and(X,Y,Z) :- Z is X*Y. nand(X,Y,Z) :- and(X,Y,Q),not(Q,Z).
Przykład 2c. not(X) :- X=0. and(X,Y) :- X=1,Y=1. nand(X,Y,Z) :- and(X,Y,Q),not(Q,Z).
Listy p([a,b,c]). p([a,[b,c,d],e]). ?-p([H|T]).
Rekurencja append([],Lista,Lista). append([X|Lista1],Lista2,[X|Lista3]) :- append(Lista1, Lista2, Lista3). length([],0). length([H|T],L) :length(T,Y), L is Y+1. member(X,[X|_]). member(X,[_|Y]) :- member(X,Y).
Zadania ● ● ● ● ● ●
Wieże Hanoi Kalkulator Sortowanie listy Przeszukiwanie grafu Upraszczanie wyrażeń algebraicznych Pizzeria