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*.