La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Sistemi basati su conoscenza Esercizi Prolog

Presentazioni simili


Presentazione sul tema: "Sistemi basati su conoscenza Esercizi Prolog"— Transcript della presentazione:

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

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

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

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

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

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

7 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 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). line(A,B).

9 Esercizio 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. path(A,P,B):- line(A,P), line(P,B).

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

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

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

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

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

15 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 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 member(Elemento,Lista).
Esercizi Membro della lista member(Elemento,Lista). vera se Elemento è un elemento della lista. member(Elemento,[Elemento|_]). member(Elemento,[_|Resto]):- member(Elemento,Resto).

18 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 last_element(List,Rest,LastEl).
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 reverse(A,A_Reversed).
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 reverse(A,A_Reversed).
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 Esercizi Intersezione di due insiemi intersect(A,B,AIB).
vera se AIB è l’intersezione di A e B. intersect(A,[],[]). intersect([],B,[]). intersect(A,[B|BR],[B|AIB]):- memeber(B,A), intersect(A,BR,AIB).

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

24 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 Esercizi Lista equivalente senza duplicati duplicates(A,B).
vera se A contiene una sola volta tutti gli elementi di B.

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

27 average(ListaDiNumeri,Media).
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 Esercizi somma([],0). somma([El|Rest],N):- lenght(Rest,M),
N is El + M.


Scaricare ppt "Sistemi basati su conoscenza Esercizi Prolog"

Presentazioni simili


Annunci Google