| Per informazioni aggiornate fare riferimento al sito
ufficiale del corso.
Il programma si trova qui.
Testo consigliato
- S.Russell, P.Norvig, Intelligenza Artificiale. Un approccio
moderno, Seconda Edizione, Volume 1, Pearson Education Italia srl,
Milano, 2005
Testi di consultazione
- S.Russell, P.Norvig, Intelligenza Artificiale. Un approccio
moderno, Seconda Edizione, Volume 2, Pearson Education Italia srl,
Milano, 2005.
- N.J.Nilsson, Intelligenza Artificiale, APOGEO, Milano, 2002.
- L.Console, E.Lamma, P.Mello, M.Milano, Programmazione logica e
Prolog, Utet Università, 1997.
Diapositive per il Corso di Prolog
| Argomento |
Formato 4 x f |
Formato 2 x f |
| Principio di Risoluzione e Programmazione
Logica |
... |
... |
| Esercizi su trasformazione in clausole e
PdR |
... |
... |
| Digressione sulla funzione di Skolem |
... |
... |
| Dalla Programmazione Logica al Prolog |
... |
... |
| Aritmetica e Ricorsione |
... |
... |
| Le Liste |
... |
... |
| Controllo di un programma |
... |
... |
| Esercizi sul Prolog |
... |
... |
Alcuni esempi di codice relativi alle diapositive della seconda
lezione. Gli interpreti sui quali è stato verificato il codice
sono: GNU-Prolog e SWI-Prolog
Per provare gli esempi avviare l'interprete e poi scrivere:
consult('path/nomefile').
- 0-base.pl:
il più semplice programma possibile; unica interrogazione
ammessa: p.
- 1-primo_p.pl
(diapositiva 6):
il primo programma mostrato a lezione; alcune interrogazioni
ammesse: q., q(1, 0)., r(b)., p(0)., p(r(a)).
- 2-trace.pl
(diapositiva 12):
esempio di tracing (~debugging) che segue i
passi mostrati a lezione; interrogazioni ammesse: scrivere
trace, p.; usare <INVIO> per vedere i vari
passi.
- 3-infinito!.pl
(diapositiva 13):
esempio di programma che non termina mai (importanza dell'ordine
delle clausole); interrogazioni ammesse: si consiglia solo
p0., p1. sarebbe infinita!
- 4-occurs_check.pl
(diapositiva 16):
limitazione dell'algoritmo di unificazione; interrogazioni
ammesse: p(X) ha successo, in realtà dovrebbe
fallire (in GNU non funziona nemmeno!), p1(X)
infatti fallisce, ma fa un controllo più costoso
q(X) non dà problemi perché è in testa.
- 5-multiple.pl
(diapositiva 17):
interrogazioni con più soluzioni; interrogazioni ammesse: il
predicato persona/1 può essere unificato più volte,
digitare persona(P) e poi usare ";" per
vedere le alternative.
- 6-disgiuntiva.pl
(diapositiva 18):
uso di ";" all'interno delle regole (predicato
bisestile) e trasformazione equivalente in DNF
(predicato bisestile1); interrogazioni ammesse:
bisestile(2000)., bisestile1(2001).
- 7-sorella.pl
(diapositiva 20):
reversibilità; alcune interrogazioni ammesse:
sorella(sofia, X). - di chi è sorella Sofia?
sorella(sofia, eliana). - Sofia è sorella di
Eliana?
sorella(X, eliana). - chi è la sorella di
Eliana?
sorella(X, Y). - trovami tutte le coppie di
sorelle
sorella(X, Y), madre(Z, X). - trovami tutte le
coppie di sorelle da parte di madre
sorella(X, Y), padre(Z, X). - trovami tutte le
coppie di sorelle da parte di padre
padre(X, Z), madre(Z, Y). - verifica che X è
il nonno di Y
- 8-hello.pl
(diapositiva 21):
output su terminale; interrogazioni ammesse:
ciao('Sofia')., ciao1('Marco').
- 9-io.pl
(diapositiva 22):
output su file (di clausole); interrogazioni ammesse:
scrivi('Sofia.')., leggi(Nome).
- A-db.pl
(diapositiva 24):
analogie con i database e modifica run-time del
codice; interrogazioni ammesse: inizia.
|