Intelligenza Artificiale
Compito d’esame - 9 Aprile 2003
Tempo due ore. Per superare l’esame occorre avere almeno 5 punti per ciascun gruppo di
domande. Motivare sempre le risposte.
Logica e rappresentazione della conoscenza
(1a)(2 punti) Spiegare la differenza tra la misura delle prestazioni e la funzione di utilità nello
schema di funzionamento di un agente.
(1b)(2 punti) ∀x (P (x) ∧ Q(x)) ≡ ¬∃x (¬P (x)) ∧ ¬∃x (¬Q(x)) è una tautologia della logica del
primo ordine [vero o falso?].
(1c)(2 punti) i termini f (cons(car(X), cdr(Y )), Z, X) e f (Z, Z, cons(car(X), cdr(a))) unificano?
In caso positivo specificare l’unificatore altrimenti indicare altrimenti indicare una
modifica del secondo termine che lo renda unificabile con il primo. X, Y, Z sono
variabili e a è costante.
(1d)(2 punti) Rappresentare in logica del primo ordine le frasi:
A, B e C sono cubi.
A è su B, B è su C.
A è verde e C non è verde.
Tutti i cubi sono colorati.
Un cubo è libero se non ci sono cubi sopra.
(1e)(2 punti) Sia S un insieme di frasi:
∀x(Dalmata(x) → Cane(x))
∀x(Cane(x) → M ammif ero(x))
∀x(M ammif ero(x) → Animale(x))
M ammif ero(f ido)
Verificare se con il Modus Ponens Generalizzato si possono derivare:
a) Animale(f ido)
b) Cane(f ido);
x è un simbolo di variabile e f ido è un simbolo di costante.
(1f)(2 punti) Trasformare in forma a clausole le frasi dell’esercizio 1e.
Programmazione Logica
Si considerino dei termini Prolog che rappresentano le informazioni relative ad uno studente: nome, cognome, matricola, lista esami, in cui lista esami (superati) è una lista di
coppie (esame,voto).
(2a)(3 punti) Scrivere un programma PROLOG che restituisce vero se il suo argomento è una
lista che rappresenta un elenco di studenti appena immatricolati (con la lista degli
esami vuota).
(2b)(3 punti) Scrivere un programma PROLOG che, data una lista che rappresenta un elenco di
studenti, calcola il numero di studenti che hanno superato almeno un esame.
(2c)(3 punti) Scrivere un programma PROLOG che, dato un termine che rappresenta uno studente, verifica se lo studente è ”in corso”, cioè ha superato almeno 3 esami ed ha la
media superiore a 24.
(2d)(3 punti) Scrivere un programma PROLOG che, data una lista che rappresenta un elenco di
studenti, calcola la percentuale di studenti non ”in corso”.
Ricerca e Pianificazione
In una catena di montaggio ci sono due macchine che operano su un piano di lavoro, la
prima (indicata con la lettera M) posiziona i pezzi sul piano di lavoro prendendoli da un
raccoglitore, la seconda (indicata con la lettera T) li toglie da piano di lavoro, portandoli
alla successiva fase di lavorazione, oppure rimettendoli nel raccoglitore. I pezzi sono si
3 tipi, A, B, C. Quando sul piano di lavoro sono presenti 3 pezzi di tipo diverso, si è
ottenuto un insieme di pezzi pronto per la fase successiva di lavorazione.
La macchina M opera con le seguenti modalità:
- può prelevare dal raccoglitore 2 o 3 pezzi alla volta;
- quando preleva 3 pezzi alla volta almeno due saranno dello stesso tipo;
- quando può entrare in funzione la macchina T, M si blocca ed aspetta che T abbia
completato le sue operazioni.
La macchina T opera con le seguenti modalità:
- quando ci sono 3 pezzi diversi sul piano di lavoro li preleva e li avvia alla fase succcessiva
di lavorazione;
- quando ci sono 3 pezzi uguali toglie uno dei 3 pezzi uguali.
Sul piano di lavoro possono stare al massimo 4 pezzi e non ci possono stare due pezzi
di tipo C o due pezzi di tipo B contemporaneamente.
Formalizzare il problema di selezionare una sequenza di operazioni delle due macchine
come un problema di ricerca.
(3a)(2 punti) caratterizzare lo spazio degli stati (in cui interessa solo il piano di lavoro), lo stato
iniziale e lo stato obiettivo (con riferimento al punto 3d).
(3b)(2 punti) caratterizzare gli operatori
(3c)(2 punti) costruire gli stati raggiungibili a partire dallo stato iniziale con un singolo operatore
(3d)(4 punti) costruire una soluzione ottima (in termini del numero di operazioni) per inviare due
insiemi di pezzi alla fase successiva di lavorazione (senza lasciare pezzi sul piano di
lavoro). Disegnare l’albero di ricerca con l’indicazione delle operazioni sugli archi e
dello stato sui nodi. Indicare i nodi di fallimento in cui non è possibile proseguire
la ricerca ed i nodi già visitati.
(3e)(2 punti) Illustrare le differenze tra la ricerca golosa e la ricerca euristica con A*.