INTELLIGENZA ARTIFICIALE Il campo dell’Intelligenza Artificiale o AI (dall’inglese Artificial Intelligence) tenta di capire e costruire entità intelligenti. Nata nel 1956. Quale definizione di Intelligenza? Quale definizione di Intelligenza Artificiale? Alcune definizioni: "È lo studio di come far fare ai calcolatori cose che, ora come ora, gli esseri umani fanno meglio" (definizione transitoria...., scacchi.....) "È la costruzione di un manipolatore di simboli che è in grado di soddisfare il test di Turing" Test di Turing: Interazione con un terminale in cui io posso fare domande e ottengo risposte. Dall'altra parte c’è o una persona o un computer. Se dopo 30 minuti non sono in grado di distinguere fra persona e computer.... Il computer deve avere le seguenti capacità: - Elaborazione del linguaggio naturale; - Rappresentazione della conoscenza; - Ragionamento automatico; - Apprendimento automatico. Test di Turing totale (interazioni fisiche dirette): - Visione artificiale; - Robotica. 1 AI Introduzione e Controllo Questioni filosofiche legate all’Intelligenza Artificiale: AI debole: è possibile costruire macchine in modo che agiscano come se fossero intelligenti? Argomenti contro: • Ci sono cose che i computer non possono fare indipendentemente da come li si programmi (incompletezza dei sistemi formali); • Fallimento nel lungo periodo (apprendimento); • L’effettiva costruzione di programmi appropriati non è fattibile (complessità della conoscenza). AI forte: è possibile costruire macchine che pensino intelligentemente? (che abbiano menti coscienti reali?) solleva alcuni dei problemi concettuali più difficili di tutta la filosofia. I fondamenti dell’IA sono: - Filosofia; - Matematica (logica); - Psicologia; - Linguistica; - Ingegneria dei calcolatori. 2 AI Introduzione e Controllo La storia dell’ IA in periodi: - (1943-1956) La gestazione dell’ IA reti neurali, programmi per il gioco degli scacchi, dimostratori di teoremi; - (1952-1969) Entusiasmo Iniziale, Grandi Aspettative prima il calcolatore era solo concepito come elaboratore aritmetico. General Problem Solver, Programmi per il Gioco della Dama in torneo, Reti Neurali, Il linguaggio LISP. Due filoni: • McCarthy (Stanford) Logica • Minsky (MIT) Visione anti-logica, Micromondi (mondo a blocchi) - (1966-1974) Una dose di realtà Alcuni programmi non erano davvero competenti (ELIZA, traduzioni puramente sintattiche), altri erano intrattabili (esplosione combinatoria). Le reti neurali erano inadeguate. 3 AI Introduzione e Controllo - (1969-1979) Sistemi basati sulla conoscenza: la chiave del potere? Conoscenza intensiva su un dominio di ampiezza limitata. Sistemi Esperti. - (1980-1988) L’ AI diventa un’ industria Sistemi Esperti commerciali di successo; Progetto quinta generazione giapponese (1981); Compagnie per lo sviluppo di sistemi di AI; Fondi per la ricerca. - (1986-oggi) Il ritorno delle reti neurali Algoritmo di apprendimento con propagazione all’indietro. Delusione sui sistemi basati sulla conoscenza. - Eventi recenti e futuri sviluppi Pi ù realismo e nuova consapevolezza. Superamento dei micromondi; AI in molti campi pratici quali pianificazione, scheduling, agenti intelligenti distribuiti; Ulteriori aree : Internet, conoscenza troppo ampia che va filtrata in modo intelligente. 4 AI Introduzione e Controllo Intelligenza Artificiale: due grosse branche MACCHINE INTELLIGENTI: si costruiscono programmi che raggiungono un alto livello di competenza nella conoscenza di problemi particolari approccio ingegneristico Non ci si occupa di simulare l'attività umana di ragionamento, ma di emularla selettivamente. SCIENZA COGNITIVA: si cerca di modellare il comportamento umano e i suoi processi di informazione approccio di filosofi, psicologi, linguisti, biologi. Il computer è un mezzo di sperimentazione. Siamo ancora lontani dalla costruzione della macchina "intelligente", per cui ci si è limitati per adesso a problemi più semplici e trattabili. 5 AI Introduzione e Controllo Categorie di Attività in Intelligenza Artificiale: Attività Normali (ovvero come è possibile che cose così semplici siano così complicate?): Processo del linguaggio naturale: - Comprensione; - Generazione; - Traduzione. Percezione: - Visione; - Linguaggio parlato. Ragionamento di buon senso Controllo di Robot Attività Formali: Giochi: - Scacchi; - Dama Matematica e Logica: - Prova automatica di Teoremi; - Geometria; - Calcolo differenziale; - Dimostrazione di proprietà di programmi. Attività Specializzate: Ingegneria - Progetto; - Ricerca di guasti (diagnosi); - Pianificazione della produzione; - Programmazione automatica Diagnosi medica Analisi finanziaria Analisi scientifica ecc. 6 AI Introduzione e Controllo L'Intelligenza Artificiale è una disciplina giovane e non ancora assestata. Dopo una fase empirica si sono trovati alcuni principi astratti comuni. Intelligenza Artificiale ha tre grosse aree: 1. Strategie di Ricerca 2. Rappresentazione della Conoscenza 3. Applicazioni Visione simbolica e dichiarativa. Alternative (sistemi sub-simbolici): Connessionismo, reti neurali; Brooks e la costruzione di piccoli sistemi artificiali reattivi (insetti). Noi seguiremo principalmente la visione simbolica e dichiarativa (AI "classica"). I due approcci possono essere integrati. 7 AI Introduzione e Controllo SISTEMI BASATI SULLA CONOSCENZA Un sistema di Intelligenza Artificiale generalmente esamina un largo numero di possibilità e costruisce dinamicamente una soluzione. "La potenza di un programma intelligente nel risolvere un problema dipende primariamente dalla quantità e qualità di conoscenza che possiede su tale problema". (Feigenbaum) Il programma non è un insieme di istruzioni immutabili che rappresentano la soluzione del problema, ma un ambiente in cui: * rappresentare * utilizzare * modificare una base di conoscenza. 8 AI Introduzione e Controllo PRINCIPI ARCHITETTURALI * Ogni sistema basato sulla conoscenza deve riuscire ad esprimere due tipi di conoscenza: Conoscenza sul dominio dell’applicazione (COSA); Conoscenza su conoscenza per CONTROLLO. COME utilizzare tale risolvere problemi - Questi due tipi di conoscenza dovrebbero essere tenuti SEPARATI: ALTA MODULARITÀ 9 AI Introduzione e Controllo PROGRAMMAZIONE DICHIARATIVA PROGRAMMA=CONOSCENZA+CONTROLLO * La conoscenza sul problema è espressa indipendentemente dal suo utilizzo (COSA non COME); * Alta modularità e flessibilità; * I moderni linguaggi e AMBIENTI per Intelligenza Artificiale tendono a riprodurre tale schema; * Definire un ambiente (linguaggio) in tale schema significa definire come il programmatore può esprimere la conoscenza e quale tipo di controllo può utilizzare; * Problematiche conoscenza; * Problematiche di organizzazione del problema e strategie di controllo; * Linguaggi e Ambienti per Sistemi basati sulla conoscenza: 10 AI Introduzione e Controllo di rappresentazione della DICHIARATIVO - PROCEDURALE Esempio: Tracciare una circonferenza DICHIARATIVO La circonferenza è l'insieme dei punti equidistanti da un dato punto detto centro. PROCEDURALE Per tracciare una circonferenza ........ Esempio: Ordinamento di una lista DICHIARATIVO "Il risultato dell'ordinamento di una lista vuota è la lista vuota" "Il risultato dell'ordinamento di una lista L è L' se la lista L' è ordinata ed è una permutazione di L" PROCEDURALE "Controlla prima se la lista è vuota; se sì dai come risultato la lista vuota" "Altrimenti calcola una permutazione L' di L e controlla se è ordinata; se sì termina dando come risultato L', altrimenti calcola un'altra permutazione di L etc...." 11 AI Introduzione e Controllo VANTAGGI DELL’APPROCCIO DICHIARATIVO a) ALTO LIVELLO: è più semplice impostare il problema (catena di IF..THEN); b) GENERALITÀ: posso usare la stessa conoscenza in differenti modi; c) FLESSIBILITÀ facile modifica, debugging ecc. cambio del controllo 12 AI Introduzione e Controllo UNA NUOVA MACCHINA VIRTUALE INTERFACCIA UTENTE ACQUISIZIONE SPIEGAZIONE BASE DI CONTROLLO CONOSCENZA AMBIENTE per SISTEMI BASATI sulla CONOSCENZA LINGUAGGIO DI PROGRAMMAZIONE SISTEMA OPERATIVO COMPUTER 13 AI Introduzione e Controllo Un altro esempio: Semplicissimo problema di diagnostica: prescrivere una medicina in base ai risultati di un esame di laboratorio. GOAL: prescribe(Drug) cioè "prescrivere una medicina adeguata per un determinato paziente". FATTI: gram(neg). not(allergic(antb)). REGOLE: 1) gram ( neg ) --> id ( ecoli ). "Se il risultato dell'esame è gram-negativo allora l'identità è enterium-coli " 2) gram ( pos ) --> id ( strep ). "Se il risultato dell'esame è gram-positivo allora l'identità è streptococco" 3) id ( strep ) OR id ( bact ) -->ind ( pen ). "Se l'identità è streptococco o bactero allora è bene indicare penicillina" 4) ind (X) AND not (allergic (X))--> prescribe ( X ). "Se è bene indicare una certa medicina e il paziente non è allergico a tale medicina, allora si può prescrivere tale medicina al paziente" 5) id ( ecoli ) --> ind ( antb ). "Se l'identità è enterium-coli allora è bene indicare antibiotici" 14 AI Introduzione e Controllo CONTROLLO (Backward) GrafoAND/OR: GOAL: prescribe(Drug) Match R4 {Drug/X} prescribe(X) and Act R4 ind(X) not (allergic(X)) Match R5 {X/antb} Match R3 {X/pen} SI ind(pen) ind(antb) or Act R3 Act R3 id(strep) id(bact) Match R2 id(strep) Act R5 id(ecoli) Match R1 NO Act R2 id(ecoli) Act R1 gram(pos) NO 15 AI Introduzione e Controllo gram(neg) SI FORWARD: Grafo AND/OR: FATTI: gram(neg) and not(allergic(antb)) gram(neg) not(allergic(antb)) Match1 gram(neg) Act1 id(ecoli) Match5 id(ecoli) Match4 Act5 ind(antb) Match4 ind(antb) and not(allergic(antb)) Act4 prescribe(antb) Match con goal Drug=antb 16 AI Introduzione e Controllo Alcune considerazioni sul particolare problema (tipico problema di diagnosi): * I fatti iniziali sono molto numerosi e dunque è bene domandarli selettivamente all'utente quando necessario. * L'impostazione del problema preferibile è backward. askable: gram e allergic. =================================== Esempio di sessione di lavoro: User: esecuzione Sys: È la coltura Graam positiva ? User: NO. Sys: È la coltura Graam negativa? User: SI. Sys: Il paziente è allergico agli antibiotici ? User: NO. Sys: Allora prescriverei una cura a base di antibiotici. ==================================== 17 AI Introduzione e Controllo SESSIONE DI SPIEGAZIONE Sys: È la coltura Graam positiva ? User: WHY? < perchè è importante determinare tale informazione? >. Sys: Tale informazione è di aiuto per determinare se (R1) l'identità dell'organismo è streptococco. User: WHY? Sys: Tale informazione è di aiuto perchè per tale organismo è indicata la penicilina ( R3 ). Sys: ... Allora prescriverei una cura a base di antibiotici. User: HOW? <come puoi concludere tale responso? > Sys: Ho utilizzato la regola R4: ho prescritto antibiotici poichè sono indicati per tale infezione (prem1) e il paziente non è allergico (prem2). User: HOW Premessa 1 ? <come puoi concludere che sono indicati gli antibiotici?> Sys: Ho utilizzato la regola R5: sono indicati antibiotici poichè l'organismo che ha causato l'infezione è ecoli. 18 AI Introduzione e Controllo STRUTTURA ALGORITMICA program prescribe(input,output); var Answer: string[2]; presc: boolean; begin presc:=false; write(’e la coltura Graam Positiva?’); read(Answer); if Answer=’Si’ then begin write('il paziente è allergico alla penicillina?'); read(Answer); if Answer='No' then begin write('allora prescriverei una cura a base di penicillina'); presc:=true end; end; if not presc then begin write('coltura Graam Negativa?'); read(Answer); if Answer='Si' then begin write('il paziente è allergico agli antibiotici?'); read(Answer); if Answer='No' then begin write('allora prescriverei una cura a base di antibiotici'); presc:=true end; end; end; if not presc then write('prescrizione impossibile'); end. 19 AI Introduzione e Controllo SOLUZIONE DEL PROBLEMA COME RICERCA IN UNO SPAZIO DEGLI STATI: Gran parte dei problemi di Intelligenza Artificiale hanno la ricerca (o controllo) come componente fondamentale. I problemi si possono modellare come Problemi di Ricerca in uno spazio degli stati (Strategie di Ricerca). Spazio degli stati Lo spazio degli stati è l’insieme di tutti gli stati raggiungibili dallo stato iniziale con una qualunque sequenza di operatori. Lo Spazio degli Stati è Caratterizzato da: • Uno stato iniziale in cui l’agente sa di trovarsi (non noto a priori); • Un insieme di azioni possibili che sono disponibili da parte dell’agente (Operatori che trasformano uno stato in un altro o più formalmente una funzione successore S(X) che riceve in ingresso uno stato e restituisce l’insieme degli stati raggiungibili). Un cammino è una sequenza di azioni che conduce da uno stato a un altro. 20 AI Introduzione e Controllo Esiste poi un Test OBIETTIVO per determinare se l’agente ha raggiunto il goal La verifica può essere solo l’appartenenza dello stato raggiunto all’insieme dello stato (o degli stati) goal. A volte lo stato obiettivo può essere decritto in modo “astratto” attraverso proprietà (si pensi allo stato di scacco matto). Altri obiettivi (non solo raggiungere il goal, ma...): * trovare la sequenza di operatori che arrivano al goal; * trovare tutte le soluzioni; * trovare una soluzione ottima. In quest’ultimo caso vuol dire che una soluzione può essere preferibile a un’altra. Una funzione costo di cammino assegna un costo a un cammino (in gran parte dei casi quale somma del costo delle azioni individuali lungo il cammino). 21 AI Introduzione e Controllo Discussione: Misurare l’efficacia della ricerca: 1. Si riesce a trovare una soluzione? 2. È una buona soluzione? (con basso costo di cammino – costo in linea) 3. Qual è il costo della ricerca? (tempo per trovare una soluzione – costo fuori linea) Costo totale di ricerca = costo di cammino + costo di ricerca. Scegliere stati dell’astrazione 22 AI Introduzione e Controllo e azioni Å L’importanza ESEMPIO: Il rompicapo dell’8 • Stati: posizione di ciascuna delle tessere; • Operatori: lo spazio vuoto si sposta a destra, a sinistra, in alto e in basso; • Test obiettivo: descrizione dello stato finale; • Costo di cammino: ciascun passo costa 1. I: 2 8 3 1 6 4 7 5 G: 1 2 3 8 4 7 6 5 I: 2 8 3 1 6 4 7 5 2 8 3 1 6 4 7 5 2 8 3 1 4 7 6 5 23 AI Introduzione e Controllo 2 8 3 1 4 7 6 5 2 3 1 8 4 7 6 5 2 8 3 1 6 4 7 5 2 8 3 1 6 4 7 5 Altri esempi: (problemi giocattolo e del mondo reale) Il problema dei Missionari e dei Cannibali: 3 missionari e 3 cannibali devono attraversare un fiume. C'è una sola barca che può contenere al massimo due persone. Per evitare di essere mangiati i missionari non devono mai essere meno dei cannibali sulla stessa sponda (stati di fallimento). Stato: sequenza ordinata di tre numeri che rappresentano il numero di missionari, cannibali e barche sulla sponda del fiume da cui sono partiti. Perciò lo stato iniziale è: (3,3,1) (nota l’importanza dell’astrazione). Operatori: gli operatori devono portare in barca 1 missionario, 1 cannibale, 2 missionari, 2 cannibali, 1 missionario e 1 cannibale. Al più 5 operatori (grazie all’astrazione sullo stato scelta). Test Obiettivo: (0,0,0) Costo di cammino: numero di traversate. 24 AI Introduzione e Controllo La criptoaritmetica: S E N D + M O R E = ____________________ M O N E Y • Stati: un rompicapo di criptoaritmetica con lettere e numeri; • Operatori: sostituisci tutte le stesse lettere con una cifra che non compare nel rompicapo; • Test obiettivo: il rompicapo contiene solo cifre e rappresenta una somma corretta; • Costo di cammino: 0 Il problema delle 8 regine Inserire 8 regine su una scacchiera in modo che non si mangino. • Stati: qualsiasi configurazione da 0 a 8 regine sulla scacchiera; • Operatori: aggiungi una regina in un qualsiasi quadrato; • Test obiettivo: 8 regine sulla scacchiera, nessuna minacciata; • Costo di cammino: zero. 25 AI Introduzione e Controllo Altri esempi (proposti e da modellare come problemi di ricerca in uno spazio degli stati): La torre di Hanoi (1) (2) (3) Spostare i cilindri concentrici da (1) a (3) nella stessa configurazione di (1) utilizzando eventualmente anche (2). Un cilindro più grande non può essere inserito su un cilindro più piccolo. Il problema del commesso viaggiatore: Un commesso viaggiatore ha una lista di città che deve visitare tutte una sola volta. Vi sono strade dirette fra ogni coppia di città. Si trovi la strada più breve che il commesso deve seguire per compiere un viaggo completo che inizi e temini in una qualsiasi delle città. (esplosione combinatoria, per 10 città è 10!) Il problema della scimmia e la banana: Afferrare una banana appesa al soffitto (avendo a disposizione una sedia e bastone). 26 AI Introduzione e Controllo Il problema della capra, il lupo e il cavolo: Portare capra, lupo e cavolo dall’altra parte senza che si mangino (si mangiano se rimangono assieme senza il conducente della barca). Nella barca se ne può trasportare uno solo alla volta. Soluzione: * Porta la capra sull'altra sponda; * Torna indietro * Porta il cavolo sull'altra sponda * Porta indietro la capra * Porta il lupo sull'altra sponda * Torna indietro * Porta la capra sull'altra sponda Le parole crociate: (spazio di ricerca ampissimo) T U R E Giochi: scacchi 27 AI Introduzione e Controllo O R R A SCHEMA ARCHITETTURALE: SISTEMA DI PRODUZIONE * Insieme di Operatori (regole); *Uno o più database (Memorie di lavoro); *Strategia di Controllo. MODULARITÀ - FLESSIBILITÀ operatori: IF <pattern> THEN <body> (non si chiamano per nome, ma si attivano in base al pattern-matching) 28 AI Introduzione e Controllo ARCHITETTURA GENERALE: INTERPRETE O CONTROLLO Matching Selezione Esecuzione REGOLE APPLICABILI 29 AI Introduzione e Controllo MEMORIA DI LAVORO REGOLE O OPERATORI DUE MODALITÀ DI "RAGIONAMENTO" FORWARD O DATA-DRIVEN: * La memoria di lavoro nella sua configurazione iniziale contiene la conoscenza iniziale sul problema, cioè i fatti noti. * Le regole di produzione applicabili sono quelle il cui antecedente può fare matching con la memoria di lavoro (F-rules). * Ogni volta che una regola viene selezionata ed eseguita nuovi fatti dimostrati vengono inseriti nella memoria di lavoro. * Il procedimento termina con successo quando nella memoria di lavoro viene inserito anche il goal da dimostrare (condizione di terminazione). BACKWARD O GOAL-DRIVEN: * La memoria di lavoro iniziale contiene il goal (o i goal) del problema. * Le regole di produzione applicabili sono quelle il cui conseguente può fare matching con la memoria di lavoro (B-rules). * Ogni volta che una regola viene selezionata ed eseguita, nuovi subgoals da dimostrare vengono inseriti nella memoria di lavoro. * Il procedimento termina con successo quando nella memoria di lavoro vengono inseriti fatti noti (CONDIZIONE DI TERMINAZIONE). 30 AI Introduzione e Controllo QUANDO APPLICARE QUANDO FORWARD: BACKWARD E * Esistono più Stati Iniziali o più Goals? * Quale è il numero medio di rami generati da un singolo nodo? * Quale è la modalità di ragionamento più naturale? (spiegazione all'utente) BIDIREZIONALE O MISTO: • È la combinazione precedentemente; dei metodi descritti • La memoria di lavoro viene suddivisa in due parti l`una contenente i fatti e l'altra i goals o subgoals; • Si applicano simultaneamente F-rules e B-rules alle due parti di memoria di lavoro e si termina il procedimento con successo quando la parte di memoria di lavoro ricavata mediante backward chaining è uguale o un sottoinsieme di quella ricavata mediante (CONDIZIONE DI TERMINAZIONE). 31 AI Introduzione e Controllo Più precisamente: Un agente con diverse opzioni immediate di esito sconosciuto può decidere cosa fare esaminando prima le differenti sequenze possibili di azioni che conducono a stati di esito conosciuto scegliendo, poi, quella migliore. Il processo di cercare tale sequenza è chiamato ricerca. L’idea è quella di mantenere ed estendere un insieme di sequenze soluzioni parziali. È utile pensare al processo di ricerca come la costruzione di un albero di ricerca i cui nodi sono stati e i cui rami sono operatori. Un algoritmo di ricerca prende come input un problema e restituisce una soluzione nella forma di una sequenza di azioni. Una volta che viene trovata la soluzione, le azioni suggerite possono essere realizzate. Questa fase è chiamata esecuzione. 32 AI Introduzione e Controllo STRATEGIE DI RICERCA I problemi che i sistemi basati sulla conoscenza devono risolvere sono non-deterministici (don’t know) In un certo istante più azioni possono essere svolte (azioni: applicazioni di operatori) STRATEGIA: è un'informazione sulla conoscenza che sarà applicata potendone invocare molteplici. POSSIBILITÀ Non utilizzare alcuna conoscenza sul dominio: applicare regole in modo arbitrario (strategie noninformate) e fare una ricerca ESAUSTIVA. Impraticabile complessità. per problemi di una certa La strategia di controllo deve allora utilizzare CONOSCENZA EURISTICA SUL PROBLEMA per la selezione degli operatori applicabili: STRATEGIE INFORMATE ESTREMO: La conoscenza sulla strategia è così completa da selezionare ogni volta la regola CORRETTA REGIME IRREVOCABILE (ALTRIMENTI PER TENTATIVI) 33 AI Introduzione e Controllo Altre caratteristiche del problema: IL SISTEMA È DECOMPONIBILE? Esempio: •X + 3X + sin X * cos X dX corrisponde alla somma degli integrali: •X dX + •3X dX + •sin X * cos X dX NON TUTTI I SISTEMI SONO DECOMPONIBILI: Si possono avere sottoproblemi interagenti, 34 AI Introduzione e Controllo Esempio: il MONDO A BLOCCHI (planning) GOAL STATO INIZIALE A C A B C B Stato Iniziale: handempty. on(c,a). clear(b). ontable(a). clear(c). ontable(b). Operatori: clear(X) --> ontable(X) clear(X) and clear(Y) -->on(X,Y) Goal: on(b,c) and on(a,b) I due sottogoals NON POSSONO ESSERE RISOLTI SEPARATAMENTE perchè interagiscono. 35 AI Introduzione e Controllo Altre domande: • Esiste interazione con l’utente (spiegazione, conoscenza incompleta)? • Si possono ignorare dei passi? (come nella dimostrazione di teoremi) • Si possono annullare dei passi (8-puzzle) o il sistema è irricoverabile (scacchi)? 36 AI Introduzione e Controllo SISTEMI DI PRODUZIONE MONOTONI: L’applicazione di una regola R non invalida la possibilità di applicare regole applicabili all'atto della selezione di R. NON C'È NECESSITÀ DI BACKTRCKING Esempio (logica-dimostratore di teoremi) fatto: a. a→e a → d. d → f. goal: f. Non è il caso del mondo a blocchi Nota: Il formalismo dei sistemi di produzioni è generale (può rappresentare tutte le funzioni computabili). È possibile trasformare un sistema di produzione non-monotono in uno monotono (formulazione di Green; formulazione di Kowakski). La trattazione, però, si complica notevolmente. 37 AI Introduzione e Controllo Altri tipi di problemi: Problema a stati singoli: Lo stato è sempre accessibile. L’agente conosce esattamente che cosa produce ciascuna delle sue azioni e può calcolare esattamente in quale stato sarà dopo qualunque sequenza di azioni. Problema a stati multipli: Lo stato non è completamente accessibile. L’agente deve ragionare su possibili stati che potrebbe raggiungere. In più: anche l’effetto delle azioni può essere sconosciuto o imprevisto. Spesso risolvere questi problemi richiede capacità di rilevamento durante la fase di esecuzione. → Agire nel mondo reale piuttosto che in un suo modello. Tratteremo estesamente solo problemi a stati singoli. 38 AI Introduzione e Controllo Cercare soluzioni Generare sequenze di azioni. Espansione: si parte da uno stato e applicando gli operatori (o la funzione successore) si generano nuovi stati. Strategia di ricerca: ad ogni passo scegliere quale stato espandere. Albero di ricerca: rappresenta l’espansione degli stati a partire dallo stato iniziale (la radice dell’albero). Le foglie dell’albero rappresentano gli stati da espandere. 39 AI Introduzione e Controllo STRATEGIE DI RICERCA La scelta di quale stato espandere nell’albero di ricerca prende il nome di strategia. Abbiamo strategie informate e non informate. Le stategie si valutano in base a quattro criteri: 1. Completezza: la strategia garantisce di trovare una soluzione quando ne esiste una? 2. Complessità temporale: quanto tempo occorre per trovare una soluzione? 3. Complessità spaziale: Quanta memoria occorre per effettuare la ricerca? 4. Ottimalità: la strategia trova la soluzione di “qualità massima” quando ci sono più soluzioni? NON-INFORMATE: 1. breadth-first; 2. depth-first; 3. depth-first a profondità limitata; 4. ad approfondimento iterativo. 40 AI Introduzione e Controllo BREADTH-FIRST Definizione di profondità: La PROFONDITÀ del nodo da cui si parte è uguale a 0; la profondità di un qualunque altro nodo è la profondità del genitore più 1. ESPANDE sempre i nodi MENO PROFONDI dell'albero. Nel caso peggiore, se abbiamo profondità d e fattore di ramificazione b il numero massimo di d nodi espansi nel caso peggiore sarà b . (complessità temporale). 2 3 d d 1 + b + b + b +…+(b – 1) --> b All’ultimo livello sottraiamo 1 perchè il goal non viene ulteriormente espanso. Questo valore coincide anche con la complessità spaziale (numero di nodi che manteniamo contemporaneamente in memoria). L'esplorazione dell'albero avviene tenendo CONTEMPORANEAMENTE aperte più strade. 41 AI Introduzione e Controllo Tale strategia garantisce la COMPLETEZZA, ma NON permette una EFFICIENTE IMPLEMENTAZIONE su sistemi monoprocessore (architetture multi-processore). In particolare, con profondità 10 e fattore di 10 ramificazione 10 dovremmo espandere 10 nodi, (tempo 128 giorni e 1 terabyte di memoria immaginando che un nodo richieda 100 byte di memoria e vengano espansi 1000 nodi al secondo. Il problema della memoria sembra essere il più grave. Trova sempre il cammino a costo minimo se il costo coincide con la profondità (altrimenti dovremmo utilizzare un’altra strategia che espande sempre il nodo a costo minimo Å strategia a costo uniforme). 42 AI Introduzione e Controllo È completa e, a differenza della ricerca in ampiezza, ottimale anche quando gli operatori non hanno costi uniformi. (complessità temporale e spaziale uguale a quella in ampiezza). n0 n1 n11 n2 n12 n13 n21 n3 n4 n31 n32 n33 n41 n22 n42 0 1 5 2 6 7 8 3 9 43 AI Introduzione e Controllo 4 10 11 12 13 14 DEPTH FIRST ESPANDE per primi nodi PIÙ PROFONDI; I nodi di UGUALE PROFONDITÀ vengono selezionati ARBITRARIAMENTE (quelli più a sinistra). La ricerca in profondità richiede un’occupazione di memoria molto modesta. Per uno spazio degli stati con fattore di ramificazione b e profondità massima d la ricerca richiede la memorizzazione di b*d nodi. La complessità temporale è invece analoga a quella in ampiezza. Nel caso peggiore, se abbiamo profondità d e fattore di ramificazione b il numero massimo di d nodi espansi nel caso peggiore sarà b . (complessità temporale). BACKTRACKING: Cronologico ⇒ Intelligente 44 AI Introduzione e Controllo n0 n1 n11 n2 n12 n13 n21 n3 n4 n31 n32 n33 n41 n22 n42 0 1 2 5 3 4 6 8 7 12 9 10 11 13 14 EFFICIENTE dal punto di vista implementativo: può essere memorizzata una sola strada alla volta (un unico stack) Può essere NON-COMPLETA (possibili loops in presenza di rami infiniti). (INTERPRETE PROLOG). 45 AI Introduzione e Controllo ALGORITMO DI RICERCA: 1. Sia L una lista dei nodi iniziali del problema; 2. Sia n il primo nodo di L. Se L è vuota fallisci; 3. Se n è il goal fermati e ritorna esso piu' la strada percorsa per raggiugerlo. 4. Altrimenti rimuovi n da L e aggiungi a L tutti i nodi figli di n, con label la strada percorsa partendo dal nodo iniziale. Ritorna al passo 2 DEPTH-FIRST: figli espansi aggiunti in testa a L. BREADTH-FIRST: figli espansi aggiunti in coda a L. 46 AI Introduzione e Controllo ESEMPIO: n0 n1 n11 n2 n12 n13 n21 n22 GOAL n3 n31 n32 n33 n41 n4 n42 Depth-first: n0 n1,n2,n3,n4 n11,n12,n13,n2,n3,n4 n11,n12,n13,n2,n3,n4 n12,n13,n2,n3,n4 n13,n2,n3,n4 n2,n3,n4 n21,n22,n3,n4 Successo Breadh-first: n0 n1,n2,n3,n4 n2,n3,n4,n11,n12,n13 n3,n4,n11,n12,n13,n21,n22 n4,n11,n12,n13,n21,n22,n31,n32,n33 n11,n12,n13,n21,n22,n31,n32,n33,n41,n42 n12,n13,n21,n22,n31,n32,n33,n41,n42 n13,n21,n22,n31,n32,n33,n41,n42 n21,n22,n31,n32,n33,n41,n42 Successo 47 AI Introduzione e Controllo RICERCA A PROFONDITÀ LIMITATA In generale si può prevedere una PROFONDITÀ MASSIMA di ricerca. Quando si raggiunge il MASSIMO di profondità o un FALLIMENTO si considerano STRADE ALTERNATIVE della stessa profondità (se esistono), poi minori di una unità e così via (BACKTRACKING). Si possono stabilire limiti massimi di profondità (non necessariamente risolvono il problema della completezza). 48 AI Introduzione e Controllo AD APPROFONDIMENTO ITERATIVO La ricerca ad approfondimento iterativo evita il problema di scegliere il limite di profondità massimo provando tutti i possibili limiti di profondità. Prima 0, poi 1, poi 2 ecc… Combina i vantaggi delle due strategie. È completa e sviluppa un solo ramo alla volta. In realtà tanti stati vengono espansi più volte, ma questo non peggiora sensibilmente i tempi di esecuzione. In particolare, il numero totale di espansioni è: 2 d-2 d-1 d (d+1)1 + (d)b + (d-1)b +…+ 3b + 2b +b . In generale è il preferito quando lo spazio di ricerca è molto ampio. 49 AI Introduzione e Controllo STRATEGIE INFORMATE "L'intelligenza di un sistema non è misurabile in termini di capacità di ricerca, ma nella capacità di utilizzare conoscenza sul problema per eliminare il pericolo dell'esplosione combinatoria. Se il sistema avesse un qualche controllo sull'ordine nel quale vengono generate le possibili soluzioni, sarebbe allora utile disporre questo ordine in modo che le soluzioni vere e proprie abbiano un'alta possibilità di comparire prima. L’intelligenza, per un sistema con capacità di elaborazione limitata consiste nella saggia scelta di cosa fare dopo.....". Newell-Simon: I metodi di ricerca precedenti in uno spazio di profondità d e fattore di ramificazione b risultano di complessità proporzionale a bd per trovare un goal in una delle foglie. Questo è inaccettabile per problemi di una certa complessità. Invece di espandere i nodi in modo qualunque utilizziamo conoscenza euristica sul dominio (funzioni di valutazione) per decidere quale nodo espandere per primo. Le funzioni di valutazione danno una stima computazionale dello sforzo per raggiungere lo stato finale. 50 AI Introduzione e Controllo Nota: Il tempo speso per valutare mediante una funzione euristica il nodo da espandere deve corrispondere a una riduzione nella dimensione dello spazio esplorato. Trade-off fra tempo necessario nel risolvere il problema (livello base) e tempo speso nel decidere come risolvere il problema (metalivello). Le ricerche non informate non hanno attività di meta-livello. 51 AI Introduzione e Controllo PROBLEMI: Come trovare le funzioni di valutazione corrette, cioè come si fa a valutare bene quale è il nodo più "promettente"? È difficile caratterizzare numericamente conoscenza empirica sul problema. la Non sempre la scelta più ovvia è la migliore. Esempio: Scelta euristica: muoversi sempre per ridurre la distanza dall'uscita. Nel caso di questo labirinto sceglieremmo la strada più lunga. 52 AI Introduzione e Controllo Esempio: gioco del filetto La distanza dal goal è stimata in base al numero di caselle fuori posto: 1 7 6 Goal: 1 8 7 2 8 3 4 5 2 3 4 5 6 Sinistra: distanza 2 Destra: distanza 4 Su: distanza 3 (non è detto che la distanza stimi esattamente il numero di mosse necessarie) 1 7 6 2 8 3 4 5 Distanza=3 ma in realtà sono necessarie 4 mosse per arrivare alla soluzione. 53 AI Introduzione e Controllo RICERCA GREEDY (golosa): Cerca di muoversi verso il massimo (minimo) di una funzione che “stima” il costo per raggiungere il goal. Best-first (greedy): 1. Sia L una lista dei nodi iniziali del problema, ordinati secondo la loro distanza dal goal (nodi più vicini al goal precedono quelli più lontani); 2. Sia n il primo nodo di L. Se L è vuota fallisci; 3. Se n è il goal fermati e ritorna esso più la strada percorsa per raggiugerlo 4. Altrimenti rimuovi n da L e aggiungi a L tutti i nodi figli di n con label la strada percorsa partendo dal nodo iniziale. Poi ordina tutta la lista L in base alla stima della distanza relativa dal goal. Ritorna al passo 2 54 AI Introduzione e Controllo Problemi di questo approccio: La ricerca di questo tipo non è ottimale e può essere incompleta (presenta gli stessi difetti della ricerca in profondità). Nel caso peggiore, se abbiamo profondità d e fattore di ramificazione b il numero massimo di d nodi espansi sarà b . (complessità temporale). Poichè, inoltre, tiene in memoria tutti i nodi la complessità spaziale coincide con quella temporale. Con una buona funzione euristica, la complessità spaziale e temporale possono essere ridotte sostanzialmente. 55 AI Introduzione e Controllo Ricerca lungo il cammino migliore La ricerca in salita non è detto che trovi la soluzione migliore, ovvero il cammino migliore per arrivare alla soluzione (si pensi all'esempio del labirinto). Questo perchè la tecnica best-first cerca di trovare il più presto possibile un nodo con distanza 0 dal goal senza curarsi di trovare quel nodo che ha profondità più bassa. 3 (1) (2) 2 4 (3) 1 1 (4) 1 goal (5) 1 (6) 1 (7) goal 56 AI Introduzione e Controllo Invece di considerare solo la distanza dal goal, noi consideriamo anche il "costo" nel raggiungere il nodo N dalla radice. Espandiamo quindi i nodi in ordine crescente di f(n) = g(n) + h’(n) Dove g(n) è la profondità del nodo e h'(n) la distanza dal goal. Scegliamo come nodo da espandere quello per cui questa somma è più piccola. In pratica cerchiamo di combinare i vantaggi della ricerca in salita (efficienza) e della ricerca a costo uniforme (ottimalità e completezza). 0+3 (1) (2) 1+2 (3) 2+1 (4) 3+1 (5) 4+1 5+ 1 goal 57 AI Introduzione e Controllo 1+4 (6) 2+1 (7) 3+0 (8) goal Algoritmo A*: 1. Sia L una lista dei nodi iniziali del problema. 2. Sia n il nodo di L per cui g(n) + h'(n) è minima. Se L è vuota fallisci; 3. Se n è il goal fermati e ritorna esso più la strada percorsa per raggiungerlo 4. Altrimenti rimuovi n da L e aggiungi a L tutti i nodi figli di n con label la strada percorsa partendo dal nodo iniziale. Ritorna al passo 2 Nota: ancora una volta l'algoritmo non garantisce di trovare la strada ottima. Nell'esempio, se il nodo con label 5 fosse stato il goal sarebbe stato trovato prima di quello sulla strada destra (ottimale). 58 AI Introduzione e Controllo ESEMPIO: Il gioco del filetto f(n)=g(n)+h’(n) dove: g(n) = profondità del nodo n; h'(n) = numero di numeri nel posto scorretto (1) f=0+4 2 8 3 1 6 4 7 5 f=6 2 8 3 1 6 4 7 5 f=4 (2) 2 8 3 1 4 7 6 5 f=5 (3) 2 8 3 1 4 7 6 5 f=6 8 3 2 1 4 7 6 5 f=6 2 8 3 1 6 4 7 5 f=5 (4) 2 3 1 8 4 7 6 5 f=7 2 8 3 7 1 4 6 5 f=5 (5) 2 3 1 8 4 7 6 5 f=5 (6) 1 2 3 8 4 7 6 5 f=5+0 1 2 3 8 4 7 6 5 59 AI Introduzione e Controllo f=6 2 8 3 1 4 7 6 5 1 2 3 7 8 4 6 5 f=7 2 3 1 8 4 7 6 5 A* non garantisce di trovare la soluzione ottima (dipende dalla funzione euristica). Si supponga di indicare con h(n) la vera distanza fra il nodo corrente e il goal. La funzione euristica h'(n) è ottimistica se abbiamo sempre che h'(n) <= h(n). Tale funzione euristica è chiamata ammissibile. Teorema: Se h'(n) <= h(n) per ogni nodo, allora l'algoritmo A* troverà sempre il nodo goal ottimale. Ovviamente l'euristica perfetta h' = h è sempre ammissibile. Se h' = 0 otteniamo sempre una funzione euristica ammissibile ⇒ ricerca breadh-first (ovviamente la depth-first non lo sarà mai). 60 AI Introduzione e Controllo Esempio: Ricerca con ammissibile una funzione 0+3 (1) (2) 1+2 (3) 2+1 3+1 4+1 5+ 1 goal 61 AI Introduzione e Controllo 1+2 (4) 2+1 (5) 3+0 (6) goal euristica La scelta precedente per il gioco del filetto (contare le tessere fuori posto h') è sempre ammissibile perchè ogni mossa può ridurlo al più di 1. Si può pensare a un'altra euristica, ad esempio la distanza spaziale. Per ogni tessera fuori posto si calcola la distanza in termini di righe e colonne. Poi si sommano tutte le distanze. Esempio: N: 6 2 3 4 7 8 5 1 Goal: 1 8 7 3 4 5 2 6 distanza di 1 = 4 distanza totale = h'* =4 + 0 + 2 +3 + 1 + 3 + 1 + 3 = 17 ammissibile anche essa in quanto ogni mossa riesce al più a mettere a posto un elemento. Poichè h'<=h'*<=h la migliore è h'*. È meglio usare una funzione euristica con valori più alti, a patto che sia ottimista. 62 AI Introduzione e Controllo Inventare funzioni euristiche Spesso il costo di una soluzione esatta per un problema rilassato è una buona euristica per il problema originale. Se la definizione del problema è descritta in un linguaggio formale è possibile costruire problemi rilassati automaticamente. Esempio: gioco del filetto Descrizione: una tessera può muoversi dal quadrato A al quadrato B se A è adiacente a B e B è vuoto. Problemi rilassati che rimuovono alcune condizioni: (a) una tessera può muoversi dal quadrato A al quadrato B se A è adiacente a B. (b) una tessera può muoversi dal quadrato A al quadrato B se B è vuoto. 63 AI Introduzione e Controllo Da alberi a grafi: Abbiamo assunto fin qui che lo spazio di ricerca sia un albero e non un grafo. Non è quindi possibile raggiungere lo stesso nodo da strade diverse. L'assunzione è ovviamente semplicistica: si pensi al gioco del filetto, ai missionari e cannibali ecc. Come si estendono gli algoritmi precedenti per trattare con i grafi? Due liste: Nodi espansi e rimossi dalla lista per evitare di esaminarli nuovamente (nodi chiusi); Nodi ancora da esaminare (nodi aperti). A* che cerca in un grafo invece che in un albero Modifiche: Aggiunta della lista dei nodi chiusi e assunzione che g(n) valuta la distanza minima del nodo n dal nodo di partenza. 64 AI Introduzione e Controllo Algoritmo A* per grafi: 1. Sia La una lista aperta dei nodi iniziali del problema. 2. Sia n il nodo di La per cui g(n) + h'(n) è minima. Se La è vuota fallisci; 3. Se n è il goal fermati e ritorna esso più la strada percorsa per raggiungerlo 4. Altrimenti rimuovi n da La, inseriscilo nella lista dei nodi chiusi Lc e aggiungi a La tutti i nodi figli di n con label la strada percorsa partendo dal nodo iniziale. Se un nodo figlio è già in La, non riaggiungerlo, ma aggiornalo con la strada migliore che lo connette al nodo iniziale. Se un nodo figlio è già in Lc, non aggiungerlo a La, ma, se il suo costo è migliore, aggiorna il suo costo e i costi dei nodi già espansi che da lui dipendevano. Ritorna al passo 2 65 AI Introduzione e Controllo Esempio: 0 + 2 (1) 1 + 1 (2) 2 + 1 (4) 3 + 1 (6) 1 + 1 (3) 2 + 1 (5) 1 + 3 (8) 2 + 2 (9) 3 + 1 (7) 3+2 4+1 5+0 goal 4 + 1 (10) 3+1 4+1 4+0 goal 5+0 goal 66 AI Introduzione e Controllo ALGORITMI COSTRUTTIVI e ALGORITMI DI RICERCA LOCALE Gli algoritmi costruttivi (visti fino ad ora) generano una soluzione ex-novo aggiungendo ad una situazione di partenza (vuota o iniziale) delle componenti in un particolare ordine fino a “costruire” la soluzione completa. Gli algoritmi di ricerca locale partono da una soluzione iniziale e iterativamente cercano di rimpiazzare la soluzione corrente con una “migliore” in un intorno della soluzione corrente. In questi casi non interessa la “strada” per raggiungere l’obiettivo. Diversi problemi (ad esempio, il problema delle 8 regine) hanno la proprietà che la descrizione stessa dello stato contiene tutte le informazioni necessarie per la soluzione (il cammino è irrilevante). In questo caso gli algoritmi con miglioramenti iterativi spesso forniscono l’approccio più pratico. Ad esempio, possiamo cominciare con tutte le regine sulla scacchiera e poi spostarle per ridurre il numero di attacchi. 67 AI Introduzione e Controllo RICERCA LOCALE La ricerca locale è basata sull’esplorazione iterativa di “soluzioni vicine”, che possono migliorare la soluzione corrente mediante modifiche locali. Struttura dei “vicini” (neighborhood). Una struttura dei “vicini” è una funzione F che assegna a ogni soluzione s dell’insieme di soluzioni S un insieme di soluzioni N(s) sottoinsieme di S. La scelta della funzione F è fondamentale per l’efficienza del sistema e definisce l’insieme delle soluzioni che possono essere raggiunte da s in un singolo passo di ricerca dell’algoritmo. Tipicamente è definita implicitamente attraverso le possibili mosse. La soluzione trovata da un algoritmo di ricerca locale non è detto sia ottima globalmente, ma può essere ottima rispetto ai cambiamenti locali. Massimo (minimo) locale Un massimo locale è una soluzione s tale che per qualunque s’ appartenente a N(s), data una funzione di valutazione f, f(s) ≥ f(s’). Quando risolviamo un problema di massimizzazione (minimizzazione) cerchiamo un massimo (minimo) globale sopt cioè tale che per qualunque s, f(sopt) > f(s). 68 AI Introduzione e Controllo Più è largo il neighborhood più è probabile che un massimo locale sia anche un massimo globale (ma ovviamente esiste un problema di complessità computazionale). Quindi, più è largo un neighborhood più aumenta la qualità della soluzione L’algoritmo base a cui ci si riferisce è detto “iterative improvement” (miglioramentio iterativo). Tipicamente, tale algoritmo parte con una soluzione di tentativo generata in modo casuale o mediante un procedimento costruttivo e cerca di migliorare la soluzione corrente muovendosi verso i vicini. Se fra i vicini c’è una soluzione migliore, tale soluzione va a rimpiazzare la corrente. Altrimenti termina in un massimo (minimo) locale. 69 AI Introduzione e Controllo Algoritmo più noto (Hill-climbing): function HILL-CLIMBING (problem) returns a solution state inputs: problem local variables: current-node, next-node current-node Ä MAKE-NODE(INITIAL-STATE(problem)) loop do next-nodeÄ a highest-valued successor of current-node if VALUE(next-node) < VALUE(current-node) then return current-node else current-node Ä next-node end Si noti che l’algoritmo non tiene traccia dell’albero di ricerca. Un modo semplice per capire questo algoritmo è di immaginare che tutti gli stati facciano parte di una superficie di un territorio. L’altezza dei punti corrisponde alla loro funzione di valutazione. Dobbiamo muoverci cercando le sommità più alte tenendo conto solo dello stato corrente e dei vicini immediati. Hill climbing si muove verso i valori più alti (o bassi) che corrispondono a massimi (o minimi) locali Problema: l’algoritmo può incappare in un minimo (massimo) locale di scarsa qualità 70 AI Introduzione e Controllo Ha il limite di essere un metodo locale che non valuta tutta la situazione, ma solo gli stati abbastanza vicini a quello corrente. L’algoritmo non gestisce un albero di ricerca, ma solo lo stato e la sua valutazione. PROBLEMI Massimi locali Stati migliori di tutti i vicini, ma peggiori di altri stati che non sono nelle vicinanze. Il metodo ci spinge verso il massimo locale, peggiorando la situazione. Pianori o Altopiani: Zone piatte dello stato di ricerca in cui gli stati vicini hanno tutti lo stesso valore. In quale direzione muoversi (scelta casuale)? Crinali: È una zona più alta di quelle adiacenti verso cui dovremmo andare, ma non possiamo andarci in modo diretto. Dobbiamo quindi muoverci in un'altra direzione per raggiungerlo. Una possibile (semplice) soluzione: ripartire con una nuova ricerca da una soluzione di partenza random o generata in modo costruttivo. Si salva poi la soluzione migliore dopo una serie di tentativi (bound dovuto al tempo di CPU o numero di iterazioni). 71 AI Introduzione e Controllo META EURISTICHE Si definiscono meta-euristiche l’insieme di algoritmi, tecniche e studi relativi all’applicazione di criteri euristici per risolvere problemi di ottimizzazione (e quindi di migliorare la ricerca locale con criteri abbastanza generali). Ne citiamo alcuni (li approfondiremo con un seminario) ANT colony optimization: ispirata al comportamento di colonie di insetti. Tali insetti mostrano capacità globali nel trovare, ad esempio, il cammino migliore per arrivare al cibo dal formicaio (algoritmi di ricerca cooperativi) Tabu search: La sua caratteristica principale è l’utilizzo di una memoria per guidare il processo di ricerca in modo da evitare la ripetizione di stati già esplorati. Algoritmi genetici: Sono algoritmi evolutivi ispirati ai modelli dell’evoluzione delle specie in natura. Utilizzano il principio della selezione naturale che favorisce gli individui di una popolazione che sono più adatti ad uno specifico ambiente per sopravvivere e riprodursi. Ogni individuo rappresenta una soluzione con il corrispondente valore della funzione di valutazione (fitness). I tre principali operatori sono: selezione, mutazione e ricombinazione. 72 AI Introduzione e Controllo META EURISTICHE (Continua) Simulated Annealing Cerca di evitare il problema dei massimi locali, seguendo in pratica la strategia in salita, ma ogni tanto fa un passo che non porta a un incremento in salita. Quando rimaniamo bloccati in un massimo locale, invece di cominciare di nuovo casualmente potremmo permettere alla ricerca di fare alcuni passi in discesa per evitare un massimo locale. Ispirato al processo di raffreddamento dei metalli. In pratica, ci suggerisce di esaminare, ogni tanto, nella ricerca un nodo anche se sembra lontano dalla soluzione. 73 AI Introduzione e Controllo Ricerca in grafi AND/OR Fino a questo momento abbiamo discusso strategie di ricerca per grafi OR nei quali vogliamo trovare un singolo cammino verso la soluzione. Il grafo (o albero) AND/OR risulta appropriato quando si vogliono rappresentare problemi che si possono risolvere scomponendoli in un insieme di problemi più piccoli che andranno poi tutti risolti. ⇒ arco AND che deve puntare a un qualunque numero di nodi successori che si devono tutti risolvere per risolvere il nodo AND stesso. Dal nodo AND possono anche partire rami OR che indicano soluzioni alternative. Esempio: Obiettivo: munirsi di TV Rubare TV 74 AI Introduzione e Controllo Ottenere Denaro Comprare TV L’algoritmo di ricerca va opportunamente modificato per essere in grado di trattare gli archi AND. In particolare, va opportunamente trattato il cammino migliore. Infatti: A (38) (18) B C (17) D (27) (9) E F G (5) (10) (3) H I (4) (15) J (10) Ora dobbiamo calcolare che un nodo AND necessita la soluzione di tutti i nodi figli. Supponiamo che il costo di ogni arco sia 1. Il nodo più promettente se preso singolarmente è G che ha valore 3 per f' e che è parte dell'arco più promettente G-H il cui costo totale è 9. Ma questo arco non fa parte del cammino migliore perchè è accoppiato all'arco I-J che ha costo 27. Il cammino che va da A a i nodi E e F passando per B è migliore avendo costo 18. Dunque il prossimo nodo da espandere va cercato esaminando E e F. 75 AI Introduzione e Controllo Algoritmo di riduzione del problema (algoritmo semplificato dell’algoritmo AO*) Introduciamo un nuovo valore: COSTO-LIMITE, che se superato dal costo stimato di una soluzione ci porta ad abbandonare la ricerca. COSTO-LIMITE anche se trovassimo una soluzione sarebbe troppo alta per essere accettata. 76 AI Introduzione e Controllo Algoritmo: 1) Inizializza il grafo al nodo iniziale; 2) Si intraprende il seguente ciclo finchè o al nodo iniziale viene associata l'etichetta RISOLTO o il suo costo supera COSTO-LIMITE: (a) si attraversa il grafo, partendo dal nodo iniziale e, percorrendo il miglior cammino corrente, si accumula l'insieme dei nodi lungo tale cammino che non sono ancora stati espansi o etichettati come risolti. (b) si sceglie uno di questi nodi e lo si espande. Se non ci sono successori si associa a tale nodo il valore di COSTOLIMITE. Altrimenti, si aggiungono al grafo i suoi successori e per ognuno di essi si calcola il valore di f' (utilizzando solo h' e ignorando g). Se il valore di f' per un nodo risulta 0 lo si marca come RISOLTO. (c) Si modifica la stima f' del nodo appena espanso in modo da tenere conto della nuova informazione fornita dai successori e si propaga all'indietro nel grafo tale modifica. Se da un nodo parte un arco i cui discendenti sono tutti etichettati con RISOLTO si etichetta il nodo stesso con RISOLTO. A ogni nodo che viene visitato risalendo nel grafo si decide quale dei suoi archi uscenti è più promettente e lo si marca come parte del cammino migliore corrente: ciò può avere come effetto che il cammino migliore corrente cambi. 77 AI Introduzione e Controllo Esempio: Prima del passo 1 A (5) Prima del passo 2 A (6) (9) D B C (3) (4) (5) Prima del passo 3 A (11) (9) B C (3) (4) 78 AI Introduzione e Controllo D (10) E F (4) (4) Prima del passo 4 A (12) (6) B (10) D (4) C G H E F (5) (7) (4) (4) Alcune osservazioni sull’algoritmo: Il cammino migliore da un nodo all'altro non è sempre quello a minor costo. Ciò è dovuto alla presenza di nodi AND per cui singoli cammini da nodo a nodo non possono essere considerati indipendentemente da altri cammini che passano per nodi connessi con quelli originari attraverso archi AND. Esempio: Un cammino più lungo può essere migliore A B G D C E H I 79 AI Introduzione e Controllo J F Insolubile I nodi sono espansi nell’ordine alfabetico. Il cammino verso E da J è più lungo di quello che passa per C, ma dal momento che qust'ultimo dipende da D che è insolubile è migliore il cammino che passa da J. Inoltre alcuni sottoproblemi possono interagire. Esempio: A D C E (5) (2) Il grafo indica che per risolvere A si devono risolvere sia C sia D. Ma poi considera separatamente il problema di risolvere C e D. Se, risolvendo prima D, E risulta essere il cammino migliore risolverà E, mentre a livello globale sarebbe stato più opportuno utilizzare C. 80 AI Introduzione e Controllo TRASFORMAZIONE DI ALBERI AND/OR IN ALBERI DI RICERCA: g. e. i. s → a. c and e → a. f → c. g → c. h → b. i → b. Goal: a and b 81 AI Introduzione e Controllo ALBERO AND/OR: a and b a s b c and e h i SI c f e SI g SI ALBERO DI RICERCA ab sb ceb feb geb eb b SI Nota: non ha alcuna influenza, al fine del raggiungimento della soluzione, l’ordine di espansione dei golas in AND. 82 AI Introduzione e Controllo ALTRO ESEMPIO: FATTI: F1: b(a). F2: b(b). F3: e(b). F4: e(a). F5: f(b). R1: f(a) → a(X). R2: b(X) and c(X) → a(X). R3: d(Y) → c(Y). R4: e(X) and f(X) → d(X). R5: b(a) → a(a). GOAL: a(X) 83 AI Introduzione e Controllo ALBERO DI RICERCA BACKWARD: a(X) R1 {X/a} f(a) R2 R5 b(X),c(X) F1 {X/a} b(a) F2 {X/b} F1 fail c(a) R3 d(a) R4 R3 d(b) R4 e(a),f(a) F4 f(a) fail 84 AI Introduzione e Controllo c(b) e(b),f(b) F3 f(b) SI X=b SI X=a ALTRE TECNICHE EURISTICHE SCELTA IN BASE AGLI OPERATORI (regole, task inseriti in un’agenda): a) Insita nel controllo e IMPLICITAMENTE dall’utente: influenzata Prolog: ordine testuale delle regole OPS: strategie in base alla dell’antecedente (LEX MEA) forma b) Influenzata ESPLICITAMENTE dall’utente: Attribuire alle regole dei valori di priorità rappresentati come numeri interi; in questo modo l’interprete selezionerà sempre la regola applicabile a più alta priorità. 85 AI Introduzione e Controllo ESEMPIO: R1: IF <la temperatura è maggiore di 100 gradi>, AND <la pressione ha valore p1> THEN <attiva la valvola .....> AND <segnala una situazione di allarme all'operatore> --- priorità 10 R2: IF <la pressione ha valore p1> THEN <attiva la procedura di funzionamento normale PROC5> --- priorità 5. PRIORITÀ DINAMICHE: Fattori: a) lo stato della memoria di lavoro; b) la presenza di particolari regole applicabili; c) la precedente esecuzione di regole correlate; d) l'andamento dell’esecuzione per particolari scelte fatte precedentemente. PROBLEMI: 1) risulta particolarmente complesso individuare il corretto valore di priorità; 2) l’attribuzione dei valori di priorità è oscura: diventa dunque carente nel sistema la capacità di spiegazione. 3) la modificabilità della base di conoscenza diminuisce: controllo e conoscenza sul dominio non separati; le regole presentano dipendenze implicite. 86 AI Introduzione e Controllo META-CONOSCENZA = CONOSCENZA SULLA CONOSCENZA Può risolvere i problemi precedentemente citati (vasta applicazione non solo per il controllo). meta-regola: MR1 "Usa regole che esprimono situazioni di allarme prima di regole che esprimono situazioni di funzionamento normale". ESEMPI: Sistemi Esperti: Molgen, Neomycin, Teiresias. VANTAGGI: a) il sistema è maggiormente flessibile e modificabile; un cambiamento nella strategia di controllo implica semplicemente il cambiamento di alcune meta-regole. b) la strategia di controllo è semplice da capire e descrivere. c) potenti meccanismi di spiegazione del proprio comportamento. 87 AI Introduzione e Controllo TEIRESIAS: META-CONOSCENZA INFLUENZARE IL CONTROLLO PER Tale meta-conoscenza ha tre scopi fondamentali: a) sono utilizzate meta-regole per definire strategie di controllo; b) sono utilizzati "modelli" per descrivere regole di livello oggetto; c) sono utilizzati metodi descrittivi espliciti per descrivere la rappresentazione utilizzata e dunque poterla modificare. CONTROLLO: Meta-Regola 1 IF <ci sono regole che menzionano........> AND <ci sono regole che menzionano........>. THEN <le prime dovrebbero essere eseguite prima delle seconde> (FC=0.4). Meta-Regola 2 IF <il paziente è......> AND <ci sono regole che menzionano ...> THEN <è certo che nessuna di esse sarà utile ulteriormente> (FC=1). meta-regola 1: ordine parziale sulle regole di livello oggetto; meta-regola 2: utilità di certe regole di livello oggetto; NOTA: La sintassi delle meta-regole e` identica a quella di livello oggetto 88 AI Introduzione e Controllo NUOVE FUNZIONI: MENTIONS: serve per referenziare le regole di livello oggetto; UTILITY e BEFORE: servono per influenzare la strategia di controllo. FUNZIONAMENTO: 1) Trova le regole di livello oggetto applicabili (L); 2) Trova le meta-regole associate (L’); 3) Valuta ogni meta-regola di L' e determina se è applicabile per alcune regole di L; 4) Ordina o toglie elementi da L in accordo ai criteri delle meta-regole; 5) Esegue ogni regola rimasta in L nell'ordine ottenuto. 89 AI Introduzione e Controllo META-CONOSCENZA PER IL CONTROLLO: NUOVA ARCHITETTURA Così si espande anche l'interprete: INTERPRETE O CONTROLLO Matching Selezione Esecuzione METAREGOLE APPLICABILI 90 AI Introduzione e Controllo MEMORIA DI LAVORO META-REGOLE O META-OPERATORI