Docenti: Alberto
Martelli e Pietro Torasso
Scopo: Lo scopo del corso è di sperimentare come linguaggi
logici e ambienti per intelligenza artificiale permettano la soluzione
di particolari classi di problemi e lo sviluppo di sistemi basati su conoscenza.
Nella prima parte del corso viene illustrato come la programmazione
logica possa essere utilizzata per formulare e risolvere problemi di intelligenza
artificiale, basandosi su tecniche classiche di risoluzione di problemi
e sull'uso della programmazione logica con vincoli.
Nella seconda parte del corso vengono illustrati e sperimentati ambienti
per lo sviluppo di sistemi basati su conoscenza. In particolare sono presi
in considerazione ambienti ibridi che permettono di utilizzare sia regole
di produzione che rappresentazioni strutturate (a frame ed a oggetti) al
fine di modellare e risolvere specifiche classi di problemi.
Modalità d'esame: l'esame consisterà in una discussione
individuale degli argomenti trattati nel corso e degli esercizi (sviluppati
anche in gruppo) proposti e concordati durante lo svolgimento del corso.
Prerequisiti: si assume la conoscenza dei contenuti del corso
di "Linguaggi di Programmazione: Paradigmi di Programmazione" e di "Intelligenza
Artificiale: Risoluzione di Problemi".
Avviso: gli
studenti che avessero il corso nel loro piano di studio e non avessero
avuto la possibilità di seguire (neppure in parte) il corso, sono
pregati di contattare i docenti per l'individuazione di esercizi da svolgere
utilizzando linguaggi ed ambienti software previsti per il corso.
Progetto 2001-02
Implementare un agente che agisca e ragioni nel mondo del Wumpus (Russell
e Norvig, Cap. 6 e 7)
Prolog
Programma
A.A. 2001-02
Parte prima
Richiami sulla programmazione logicaParte seconda
Dalla programmazione logica al Prolog
L'aritmetica in Prolog
Controllo: cut, negazione, setof, ...
Strutture dati: termini, operazioni
Meta-predicati: accesso alle clausole, modifiche del database
Meta-interpreti
Rappresentazione di problemi di intelligenza artificiale:spazio degli statiVincoli
ricerca in profondita' - iterative deepening
euristica - Algoritmo IDA*soddisfacimento di vincoli: propagazione, consistenza
Constraint logic programming
Richiami su formalismi a regole e formalismi a frameL'ambiente CLIPS:
fatti ordinati e non ordinatiInterpreti forward chaining e backward chaining
formalismo a regole
pattern matching
strategie di controllo
Conoscenza sul dominio e conoscenza di controllo in sistemi basati su conoscenza
Risoluzione di problemi e tasks
Sviluppo e verifica di una base di conoscenza
Materiale bibliografico e di documentazione:
Parte prima:
L. Console, E. Lamma, P. Mello, M. Milano: "Programmazione logica e
Prolog" (nuova edizione), UTET 1997
Lucidi su Problemi di soddisfacimento di vincoli (PDF) e su Programmazione Logica con Vincoli (PDF)
Esercizi proposti sui vincoli (PDF)
Per saperne di più sui vincoli:
K. Marriott e P. J. Stuckey, Programming with Constraints: An Introduction,
MIT Press, 1998
P. van Hentenryck, Constraint Satisfaction in Logic Programming, MIT
Press, 1989.
Parte seconda:
oltre al materiale indicato per il corso di Intelligenza Artificiale:
Risoluzione dei problemi guardare:
P. Jackson: "Introduction to Expert Systems", 2nd edition, Addison Wesley. Cap 13.1 , 13.2, cap. 14, cap. 16.1, cap. 17 e cap. 21.
Documentazione a diverso livello di dettaglio su CLIPS (manuali, esempi,
un rapporto introduttivo) è disponibile nella directory CLIPS su
disco D del server NT della rete didattica.