scudo

Pagina personale di Marco Falda

foto

Intelligenza Artificiale (supporto)

Laurea Specialistica in Ingegneria Informatica

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.

Ultima modifica: 9 Gennaio 2007.