La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

FMZ Sistemi basati su conoscenza Esercizi Prolog Dott. Fabio Massimo Zanzotto a.a. 2001-2002.

Presentazioni simili


Presentazione sul tema: "FMZ Sistemi basati su conoscenza Esercizi Prolog Dott. Fabio Massimo Zanzotto a.a. 2001-2002."— Transcript della presentazione:

1 FMZ Sistemi basati su conoscenza Esercizi Prolog Dott. Fabio Massimo Zanzotto a.a

2 FMZ Esercizi FATTI: male(…). female(…). father(Father,Son). mother(Mother,Son).

3 FMZ Esercizio part_of_parent(X,Y). X è uno dei genitori di Y. part_of_parent(X,Y) :- father(X,Y). part_of_parent(X,Y) :- mother(X,Y).

4 FMZ Esercizio parents(X,Y,Z). X,Y sono i genitori di Z. parents(X,Y,Z) :- father(X,Z), mother(Y,Z). parents(X,Y,Z) :- mother(X,Z), father(Y,Z).

5 FMZ Esercizio brother(X,Y). X è fratello di Y. brother(X,Y) :- mother(Z,X), mother(Z,Y), male(X).

6 FMZ Esercizio aunt(X,Y). X è zia di Y. aunt(X,Y) :- female(X), mother(Z,Y), sister(X,Z). aunt(X,Y) :- female(X), father(Z,Y), sister(X,Z).

7 FMZ Esercizio a,b,c,d … sono punti in un piano e i fatti sono del tipo line(X,Y). Definire una regola che stabilisca se quello in memoria è un triangolo. triangle :- line(A,B), line(B,C), line(C,A). Proviamo sui fatti: line(a,b). line(a,c). line(c,b).

8 FMZ Esercizio a,b,c,d … sono punti in un piano e i fatti sono del tipo line(X,Y). Definire una regola che stabilisca se quello in memoria è un triangolo. triangle :- connected(A,B), connected(B,C), connected(C,A). connected(A,B):- line(B,A). connected(A,B):- line(A,B).

9 FMZ Esercizio path(A,P,B):- line(A,P), line(P,B). a,b,c,d … sono punti in un piano e i fatti sono del tipo line(X,Y). Definire una regola path(X,P,Y). che sia vera quando esiste un percorso di due passi che tocchi il punto P.

10 FMZ Esercizio path(A,P,B):- line(A,P), line(P,B). a c b d Ci sono due soluzioni possibili!!

11 FMZ Tipi di dato: associate ai termini Caratteri Interi Reali Stringhe Liste

12 FMZ Funzioni built-in Gestione I/O write(predicate) tell(file_name) told Gestione Regole assert(fatto) retract(fatto)

13 FMZ Operatori Operatori matematici is : assegnamento + - * \ A is B + C. Comparazione =/= non uguale

14 FMZ Le liste Definizione [a1,a2,…,an] Accedere ad una lista [Head¦Tail] Esempi di head-tail LISTHeadTail [a,b,c]a[b,c] [[a,b,c],d,e][a,b,c][d,e] [a]a[] []nessun valore

15 FMZ Esercizi sulle liste Contare gli elementi di una lista member append: unire due liste rivoltare una lista Usiamo la lista per modellare gli insiemi: –unione –intersezione

16 FMZ Esercizi Lunghezza lenght(Lista,N). vera se N è il numero di elementi della lista. lenght([],0). lenght([Elemento|Resto],N):- lenght(Resto,M), N is M + 1.

17 FMZ Esercizi Membro della lista member(Elemento,Lista). vera se Elemento è un elemento della lista. member(Elemento,[Elemento|_]). member(Elemento,[_|Resto]):- member(Elemento,Resto).

18 FMZ Esercizi Concatenazione tra liste append(L1,L2,L12). vera se L12 è la concatenazione di L1 e L2. append([],L2,L2). append([El|Resto],L2,[El|L12]):- append(Resto,L2,L12).

19 FMZ Esercizi Restanti Ultimo elemento last_element(List,Rest,LastEl). vera se List è una lista e LastEl il suo ultimo elemento e Rest il resto rella lista. last_element([El],[],El). last_element([El|Rest],[El|RestB],Last):- last_element(Rest,RestB,Last).

20 FMZ Esercizi Reverse di una lista reverse(A,A_Reversed). vera se A è rivoltata rispetto a A_Reversed. reverse([],[]). reverse([A|ARest],B):- last_element(B,BRest,A), reverse(ARest,BRest).

21 FMZ Esercizi Reverse di una lista reverse(A,A_Reversed). vera se A è rivoltata rispetto a A_Reversed. reverse([],[]). reverse(A,B):- reverse(A,[],B). reverse([],A,B). reverse([A|ARest],C,B):- reverse(ARest,[A|C],B).

22 FMZ Esercizi Intersezione di due insiemi intersect(A,B,AIB). vera se AIB è lintersezione di A e B. intersect(A,[],[]). intersect([],B,[]). intersect(A,[B|BR],[B|AIB]):- memeber(B,A), intersect(A,BR,AIB).

23 FMZ Esercizi Unione di due insiemi union(A,B,AUB). vera se AUB è lunione di A e B. union(A,[],A). union(A,[B|BR],[B|AIB]):- intersect(A,BR,AIB).

24 FMZ Esercizi Verifica se una lista è un insieme set(A). vera se A è un insieme, ovvero A non contiene elementi duplicati. set([]). set([A|B]):- \+member(A,B), set(B).

25 FMZ Esercizi Lista equivalente senza duplicati duplicates(A,B). vera se A contiene una sola volta tutti gli elementi di B.

26 FMZ Riflessioni \+ not Implica la ricerca in tutto lo spazio delle soluzioni per affermare che sia vero.

27 FMZ Esercizi Media average(ListaDiNumeri,Media). vera se Media è la lista dei numeri in ListaDiNumeri. average(ListaDiNumeri,Media):- somma(ListaDiNumeri,N), lenght(ListaNumeri,M), Media is N/M.

28 FMZ Esercizi somma([],0). somma([El|Rest],N):- lenght(Rest,M), N is El + M.


Scaricare ppt "FMZ Sistemi basati su conoscenza Esercizi Prolog Dott. Fabio Massimo Zanzotto a.a. 2001-2002."

Presentazioni simili


Annunci Google