Sistemi basati su conoscenza Esercizi Prolog - PowerPoint PPT Presentation

1 / 28
About This Presentation
Title:

Sistemi basati su conoscenza Esercizi Prolog

Description:

Title: Presentazione di PowerPoint Author: zanzotto Last modified by: zanzotto Created Date: 1/3/2001 11:38:49 AM Document presentation format: Presentazione su schermo – PowerPoint PPT presentation

Number of Views:37
Avg rating:3.0/5.0
Slides: 29
Provided by: zan58
Category:

less

Transcript and Presenter's Notes

Title: Sistemi basati su conoscenza Esercizi Prolog


1
Sistemi basati su conoscenzaEsercizi Prolog
  • Dott. Fabio Massimo Zanzotto
  • a.a. 2001-2002

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

3
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
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
Esercizio
  • brother(X,Y).
  • X è fratello di Y.
  • brother(X,Y)-
  • mother(Z,X),
  • mother(Z,Y),
  • male(X).

6
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
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). connected(A,B)- li
ne(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
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
  • write(predicate)
  • tell(file_name)
  • told
  • Gestione Regole
  • assert(fatto)
  • retract(fatto)

13
Operatori
  • Operatori matematici
  • is assegnamento
  • - \
  • A is B C.
  • Comparazione
  • / non uguale

14
Le liste
  • Definizione
  • a1,a2,,an
  • Accedere ad una lista HeadTail
  • 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(ElementoResto,N)- lengh
t(Resto,M), N is M 1.
17
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(ElResto,L2,ElL12)
- append(Resto,L2,L12).
19
Esercizi
Restanti Ultimo elemento last_element(List,Rest,La
stEl). vera se List è una lista e LastEl il suo
ultimo elemento e Rest il resto rella lista.
last_element(El,,El). last_element(ElRest,
ElRestB,Last)- last_element(Rest,RestB,Last).

20
Esercizi
Reverse di una lista reverse(A,A_Reversed). vera
se A è rivoltata rispetto a A_Reversed.
reverse(,). reverse(AARest,B)- last_elem
ent(B,BRest,A), reverse(ARest,BRest).
21
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(AARest,C,B)- reverse
(ARest,AC,B).
22
Esercizi
Intersezione di due insiemi intersect(A,B,AIB). ve
ra se AIB è lintersezione di A e B.
intersect(A,,). intersect(,B,). intersec
t(A,BBR,BAIB)- memeber(B,A), intersect(A,
BR,AIB).
23
Esercizi
Unione di due insiemi union(A,B,AUB). vera se AUB
è lunione di A e B.
union(A,,A). union(A,BBR,BAIB)- interse
ct(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(AB)- \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
Esercizi
Media average(ListaDiNumeri,Media). vera se Media
è la lista dei numeri in ListaDiNumeri.
average(ListaDiNumeri,Media)- somma(ListaDiNumer
i,N), lenght(ListaNumeri,M), Media is N/M.
28
Esercizi
somma(,0). somma(ElRest,N)- lenght(Rest,M),
N is El M.
Write a Comment
User Comments (0)
About PowerShow.com