Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma Intelligenza Artificiale Risoluzione dei Problemi Agostino Poggi Stefano Cagnoni.

Slides:



Advertisements
Presentazioni simili
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità E1 Dallanalisi del problema alla definizione dellalgoritmo.
Advertisements

Analisi della complessità degli algoritmi
Estendere i linguaggi: i tipi di dato astratti
Procedure e funzioni A. Ferrari.
Analisi della complessità degli algoritmi
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
Generazione di Piani attraverso Grafi di Pianificazione
Intelligenza Artificiale Simbolica
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Teoria e Implementazione
Sistemi basati su conoscenza Metodi di ricerca informata Prof. M.T. PAZIENZA a.a
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Strutture dati per.
Intelligenza Artificiale 1 Gestione della conoscenza lezione 5 Prof. M.T. PAZIENZA a.a
Sistemi basati su conoscenza Ricerca di soluzioni a problemi Prof. M.T. PAZIENZA a.a
Sistemi basati su conoscenza Ricerca di soluzioni a problemi Prof. M.T. PAZIENZA a.a
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
Algoritmi e Strutture Dati (Mod. B)
Trovare il percorso minimo da b ad ogni altro vertice
Ingegneria della conoscenza e sistemi esperti Dario Bianchi, 1999 Risoluzione di problemi e ricerca.
Programmazione logica
Intelligenza Artificiale Risoluzione di Problemi
Intelligenza Artificiale
AOT Lab Dipartimento di Ingegneria dellInformazione Università degli Studi di Parma Intelligenza Artificiale Rappresentazione della Conoscenza e Ragionamento.
Intelligenza Artificiale
Dipartimento di Ingegneria dellInformazione Università degli Studi di Parma Intelligenza Artificiale Apprendimento Parte 2 Agostino Poggi Stefano Cagnoni.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Problemi e algoritmi. I problemi È un quesito che attende una risposta detta soluzione Ma come trovare la soluzione? Spesso si ricorre a tentativi fino.
ELEMENTI DI PROGRAMMAZIONE
Elementi di Informatica di base
Passo 3: calcolo del costo minimo
Per valutare la complessità ammortizzata scomponiamo ogni Union: nelle due FindSet e nella Link che la costituiscono e valuteremo la complessità in funzione.
Risoluzione di problemi e ricerca
Applicazioni di intelligenza artificiale LS Manni Tiziano
ND-partizione (A) n   A  somma  0 M  1/2 (  a i ) for i  1 to n do S[i]  choice ({true, false}) if S[i] then somma  somma + a i if somma > M then.
Ricerca di soluzioni a problemi Prof. M.T. PAZIENZA a.a
Implementazione di dizionari Problema del dizionario dinamico Scegliere una struttura dati in cui memorizzare dei record con un campo key e alcuni altri.
Algoritmi online Maria Simi, a.a. 2007/08 Problemi di esplorazione  Gli agenti per il problem-solving assumono:  ambienti deterministici e osservabili.
Ricerca euristica Maria Simi a.a. 2008/2009 Ricerca euristica  La ricerca esaustiva non è praticabile in problemi di complessità esponenziale  Noi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Strutture dati per.
Alberi Alberi radicati : alberi liberi in cui un vertice è stato scelto come radice. Alberi liberi : grafi non orientati connessi e senza cicli. Alberi.
Didattica e Fondamenti degli Algoritmi e della Calcolabilità Terza giornata: principali classi di complessità computazionale dei problemi Guido Proietti.
Intelligenza Artificiale Metodologie di ragionamento Prof. M.T. PAZIENZA a.a
Paola Disisto, Erika Griffini, Yris Noriega.  Insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce.
Sistemi basati su conoscenza Ricerca di soluzioni a problemi Prof. M.T. PAZIENZA a.a
Esecuzione di un Programma [P] Una computazione corrisponde al tentativo di dimostrare, tramite la regola di risoluzione, che una formula (goal) segue.
1 Ordinamento (Sorting) INPUT: Sequenza di n numeri OUTPUT: Permutazione π = tale che a 1 ’  a 2 ’  … …  a n ’ Continuiamo a discutere il problema dell’ordinamento:
Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma Intelligenza Artificiale Rappresentazione della Conoscenza e Ragionamento.
Sistemi basati su conoscenza Metodi di ricerca informata Prof. M.T. PAZIENZA a.a
Sistemi basati su conoscenza Metodi di ricerca informata Prof. M.T. PAZIENZA a.a
Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma Intelligenza Artificiale Risoluzione dei Problemi (parte 2) Agostino Poggi.
Il Problema del Commesso Viaggiatore. Traveling Salesman’s Problem (TSP) Un commesso viaggiatore deve visitare un certo numero di città Conosce la distanza.
Ricerca locale M. Simi, Algoritmi di ricerca locale  Efficienti in occupazione di memoria: tengono traccia solo dello stato corrente (non.
Intelligenza Artificiale Metodologie di ragionamento Prof. M.T. PAZIENZA a.a
Intelligenza Artificiale Risoluzione di Problemi
AOT Lab Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma Intelligenza Artificiale Rappresentazione della Conoscenza e Ragionamento.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Intelligenza Artificiale 1 Gestione della conoscenza lezione 4 Prof. M.T. PAZIENZA a.a
1 Ordinamento (Sorting) Input: Sequenza di n numeri Output: Permutazione π = tale che: a i 1  a i 2  ……  a i n Continuiamo a discutere il problema dell’ordinamento:
Laureando: Enrico Sperindio Relatore: Prof. GIORGIO ROMANIN JACUR
Gli agenti per il problem solving Maria Simi a.a 2007/2008.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Sistemi basati su conoscenza Ricerca di soluzioni a problemi Prof. M.T. PAZIENZA a.a
Didattica e Fondamenti degli Algoritmi e della Calcolabilità Sesta giornata Risolvere efficientemente un problema in P: Il problema dell’ordinamento: Insertion.
Sistemi e Tecnologie Informatiche Complessità di calcolo.
Dal problema al programma
Agenti risolutori di problemi Risolvere i problemi mediante ricerca Maria Simi a.a 2013/2014.
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Transcript della presentazione:

Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma Intelligenza Artificiale Risoluzione dei Problemi Agostino Poggi Stefano Cagnoni

Risoluzione dei Problemi 2 Risoluzione di Problemi  Un problema è definito da un goal e dall’insieme di strumenti a disposizione per raggiungerlo.  La prima fase della risoluzione di un problema è la formulazione del problema.  In questa fase, oltre a dare una buona definizione del goal, bisogna decidere quali sono le azioni, quale è lo spazio degli stati e quale è lo stato da cui si parte (stato iniziale).  E’ essenziale scegliere delle azioni, e quindi degli stati, che permettano di formulare soluzioni al giusto livello di dettaglio.

Risoluzione dei Problemi 3 Risoluzione di Problemi  A partire dallo stato iniziale bisogna trovare una sequenza di azioni, detta soluzione, che soddisfi il goal del problema.  L’esecuzione di ogni azione ha un costo, che può variare da azione ad azione, che costituisce il criterio utilizzato nella ricerca della soluzione migliore.  Quindi, ad ogni sequenza di azioni è possibile assegnare un costo complessivo (somma dei costi associati alle varie azioni), per valutare quale sia la soluzione migliore.  La scelta della sequenza corrisponde alla seconda fase della risoluzione di un problema e viene individuata con il nome di ricerca.  Infine, trovata la soluzione, nella terza fase, detta di esecuzione, le azioni sono eseguite per raggiungere il goal.

Risoluzione dei Problemi 4 Classi di Problemi  I problemi possono essere divisi in quattro classi in dipendenza della conoscenza che si ha sullo stato del mondo e sulle azioni che si possono eseguire su di esso:  Problemi a stato singolo (single-state problems) : si ha conoscenza dello stato del mondo e degli effetti delle azioni.  Problemi a stato multiplo (multiple-state problems) : si ha conoscenza completa degli effetti delle azioni, ma non dello stato del mondo.  Problemi con imprevisti (contingency problems): alcune azioni possono avere effetti non del tutto determinati (incertezza, malfunzionamenti ecc.). Spesso per la soluzione è necessario agire (e verificare l’effetto della propria azione) prima di avere trovato una soluzione.  Problemi di esplorazione (exploration problems) : non si ha conoscenza né sullo stato del mondo né sugli effetti delle azioni. E’ necessario apprendere i possibili stati del mondo e gli effetti delle proprie azioni attraverso l’esperienza.

Risoluzione dei Problemi 5 Esempi di Problemi  Problemi giocattolo (modelli semplificati di classi di problemi reali):  Il problema dell’8-puzzle (versione ridotta del gioco del 15)  Il problema delle 8 regine (disporre 8 regine su una scacchiera in modo che nessuna dia scacco alle altre)  Il problema della cripto-aritmetica (GATTO - CANE = TOPO)  Il problema dei tre missionari e dei tre cannibali (trasportare 3 m. e 3 c. da un lato a un altro di un fiume con una barca a due posti in modo tale che sulle 2 rive non ci siano mai c. in sovrannumero rispetto ai m.)  Problemi reali  Il calcolo di un percorso su un grafo  Il problema del commesso viaggiatore (date n città, trovare il percorso più breve che passa una e una sola volta per ciascuna di esse)  Il disegno di un layout VLSI  La navigazione di robot  Il calcolo di una sequenza di assemblaggio

Risoluzione dei Problemi 6 Algoritmo Generale  Cerchiamo di definire un algoritmo generale di ricerca per il caso di problemi a stato singolo.  Per semplificare la sua definizione, introduciamo alcune funzioni ausiliarie.  Occorre definire il tipo di dato Problem Datatype Problem Components: Initial-State, Operators, Goal-Test, Path-Cost-Function  Occorre una funzione per ricavare lo stato iniziale dalla descrizione del problema:  Init-State(Problem)  Occorre una funzione per trasformare una descrizione di stato nel nodo di un albero:  Make-Node(State)

Risoluzione dei Problemi 7 Algoritmo generale  Occorre definire il tipo di dato Node Datatype Node Components: State, Parent-Node, Operator, Depth, Path-Cost  Occorre una funzione per espandere un nodo:  Expand(Node, Problem, [Depth  ]), genera i successori del nodo se non è stata raggiunta la profondità Depth.  Servono 4 funzioni per gestire delle code di nodi:  Make-Queue(Elements), genera una coda contenente Elements;  Empty(Queue), controlla se la coda è vuota;  Remove-Front(Queue), estrae il primo elemento;  Queueing-Fn(Queue, Elements), inserisce Elements nella coda.  Infine serve una funzione per controllare se il nodo coincide con un goal del problema:  Goal(Node, Problem)

Risoluzione dei Problemi 8 Algoritmo Generale  Possiamo definire un algoritmo generale per la ricerca su alberi come segue: function General-Search(problem, Queueing-Fn, [ Depth  ]) { nodes = Make-Queue(Make-Node(Initial-State(problem))); while true { if Empty(nodes) return failure; node =Remove-Front(nodes); if Goal(State(node), problem) return node; nodes = Queueing-Fn(nodes, Expand(node, problem, Depth)); }  L’insieme di nodi contenuti in nodes è detta frontiera dell’albero di ricerca.

Risoluzione dei Problemi 9 Valutazione delle strategie di ricerca  Completezza : l’algoritmo garantisce di trovare una soluzione, se questa esiste ?  Complessità temporale : quanto tempo è necessario per raggiungerla ?  Complessità spaziale : quanta memoria è richiesta per raggiungerla ?  Ottimalità : la soluzione trovata è la migliore ?

Risoluzione dei Problemi 10 Ricerca in Ampiezza (Breadth-First Search)  Un algoritmo di ricerca in ampiezza garantisce che ogni nodo di profondità d sia espanso prima di qualsiasi altro nodo di profondità maggiore.  Possiamo definire un algoritmo di ricerca in ampiezza come segue: function Breadth-First-Search(problem) { return General-Search(problem, Enqueue-At-End); }

Risoluzione dei Problemi 11 Ricerca in Ampiezza  Ottimalità: è ottimo quando  il costo è una funzione non decrescente della profondità del nodo;  il costo è lo stesso per ciascun operatore.  Completezza: è completo visto che utilizza una strategia sistematica che considera prima le soluzioni di lunghezza 1, poi quelle di lunghezza 2 e così via.  Complessità: Se b è il fattore di ramificazione e d la profondità della soluzione, allora il numero massimo di nodi espansi è: 1 + b + b 2 + b b d  Complessità temporale: b d  Complessità spaziale: b d

Risoluzione dei Problemi 12 Ricerca in Ampiezza  Se b =10 e per ogni nodo sono richiesti un tempo di elaborazione di 1 millisecondo e un’occupazione di memoria di 100 byte avremo i seguenti valori:  (la cosiddetta “Curse of Dimensionality”!)