Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoErnesto Adamo Modificato 9 anni fa
1
Politecnico di Torino INTELLIGENZA ARTIFICIALE 2012 Esempio: visita in profondità Carlo Prone carlo.prone@studenti.polito.it
2
Problema: da Arad a Bucarest
3
Problema Trovare un percorso dalla città di Arad alla città di Bucarest sul grafo appena visto Metodo risolutivo Visita in profondità del grafo
4
Visita in profondità – in breve Si visita il primo nodo di una lista di OPEN Tutti i suoi figli non ancora etichettati vengono segnati OPEN e inseriti IN TESTA ALLA LISTA con ordine arbitrario Il nodo diventa CLOSED Primo passo: il nodo di partenza (radice dell’albero) in OPEN
5
Visita in profondità – in breve Terminazione: – nodo goal raggiunto (successo) – OPEN vuota (fallimento) Possibile introdurre un limite di profondità: se il nodo attuale ha una distanza maggiore o uguale a un limite fissato e non è soluzione NON proseguo l’esplorazione sui suoi discendenti, ma altrove (BACKTRACKING) – non si hanno garanzie di trovare soluzione, se esiste – non adottato in questo esempio
6
Visita in profondità – in breve Stesso procedimento di una visita in ampiezza ma utilizzando una STACK (LIFO) piuttosto che una QUEUE (FIFO) per i nodi OPEN Si scende sull’albero piuttosto che esplorare esaustivamente un livello Inserimento dei nodi figli in OPEN con ordine ARBITRARIO – approccio greedy: figli con costo minore
7
Step 0 OPEN: – Arad Arad 0 Zerind 75 Sibiu 140 Timisoara 118 CLOSED: (empty)
8
Step 1 OPEN: – Zerind – Timisoara – Sibiu Arad 0 Zerind 75 Sibiu 140 Timisoara 118 CLOSED: – Arad
9
Step 2 OPEN: – Oradea – Timisoara – Sibiu Zerind 75 Oradea 71 CLOSED: – Arad – Zerind
10
Step 3 Oradea 146 Sibiu 151
11
Step 3 OPEN: – Timisoara – Sibiu Oradea 146 Sibiu 151 CLOSED: – Arad – Zerind – Oradea
12
Step 4 OPEN: – Lugoj – Sibiu Timisoara 118 Lugoj 111 CLOSED: – Arad – Zerind – Oradea – Timisoara
13
Step 5 OPEN: – Mehadia – Sibiu Lugoj 229 Mehadia 70 CLOSED: – Arad – Zerind – Oradea – Timisoara – Lugoj
14
Step 6 OPEN: – Dobreta – Sibiu Mehadia 299 Dobreta 75 CLOSED: – Arad– Mehadia – Zerind – Oradea – Timisoara – Lugoj
15
Step 7 OPEN: – Craiova – Sibiu Dobreta 374 Craiova 120 CLOSED: – Arad– Mehadia – Zerind– Dobreta – Oradea – Timisoara – Lugoj
16
Step 8 OPEN: – Pitesti – Rimnicu Vilcea – Sibiu Craiova 494 Pitesti 138 Rimnicu Vilcea 146 CLOSED: – Arad– Mehadia – Zerind– Dobreta – Oradea– Craiova – Timisoara – Lugoj
17
Step 9 OPEN: – Bucharest – Rimnicu Vilcea – Sibiu Pitesti 632 Bucharest 101 Rimnicu Vilcea 97 CLOSED: – Arad– Mehadia – Zerind– Dobreta – Oradea– Craiova – Timisoara – Lugoj – Pitesti
18
Albero finale Arad 0 Zerind 75 Oradea 71 Timisoara 118 Lugoj 111 Mehadia 70 Dobreta 75 Craiova 120 Pitesti 138 Bucharest 101 Rimnicu Vilcea 146 Sibiu 140
19
Percorso finale Arad 0 Zerind 75 Oradea 71 Timisoara 118 Lugoj 111 Mehadia 70 Dobreta 75 Craiova 120 Pitesti 138 Bucharest 101 Rimnicu Vilcea 146 Sibiu 140
20
Soluzione trovata NON ottima Costo percorso finale Arad 0 Timisoara 118 Lugoj 111 Mehadia 70 Dobreta 75 Craiova 120 Pitesti 138 Bucharest 101 TOTALE 733 Costo percorso ottimo Arad 0 Sibiu 140 Rimnicu Vilcea 80 Pitesti 97 Bucharest 101 TOTALE 418
21
Considerazioni finali
22
Euristiche È possibile introdurre delle valutazioni di tipo euristico con l’intento di migliorare le prestazioni dell’algoritmo Valutazione euristica dei nodi: – espandere il figlio "più promettente" anziché uno a caso – abbandonare un nodo senza esplorare tutta la sua discendenza e ripartire da un predecessore su un altro figlio (leap-frogging)
23
Euristiche Possibili criteri euristici per valutare se un nodo è subversive (ovvero non porterà mai a una soluzione e non ha senso esplorarne la discendenza) – distanza finora compiuta maggiore del risultato che mi aspetto – direzione errata (so che devo andare verso sud, il nodo è a nord, necessita di informazioni aggiuntive)
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.