La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

PROBLEM SOLVING INTELLIGENZA ARTIFICIALE A.A. 2014/2015 FRANCESCO RUSSO – 200486 ALBERTO SAGLIMBENI-190141.

Presentazioni simili


Presentazione sul tema: "PROBLEM SOLVING INTELLIGENZA ARTIFICIALE A.A. 2014/2015 FRANCESCO RUSSO – 200486 ALBERTO SAGLIMBENI-190141."— Transcript della presentazione:

1 PROBLEM SOLVING INTELLIGENZA ARTIFICIALE A.A. 2014/2015 FRANCESCO RUSSO – 200486 ALBERTO SAGLIMBENI-190141

2 PROBLEMA  Bisogna trovare il percorso che va dal punto iniziale (Arad) fino al punto finale (Bucharest).  Non tutti gli algoritmi possono essere applicati semplicemente senza appoggiarsi a variabili o vincoli aggiuntivi.  Tratteremo la ricerca in profondità e al Leap Frogging applicati al nostro problema.

3 MAPPA CITTA’

4 DISTANZE AEREE

5 RICERCA IN PROFONDITA’ SIANO : OPEN= LISTA NODI APERTI CLOSED=LISTA NODI CHIUSI N_MAX= MASSIMO LIMITE DI PROFONDITA’ STATO INIZIALE: OPEN={ARAD} N=0 PSEUDOCODICE : If(empty(OPEN)) return false; If(n==n_max) return false; Node temp=Pop(OPEN); If(is_goal(temp)) return true; If(is_deadend(temp)) return false; Push_back(CLOSED,temp); ArrayList temp_list= successori(temp); Foreach(Node t in temp_list) { if(closed.contains(t)) return false; if(open.contains(t)) return false; } Francesco Russo 200486- Alberto Saglimbeni 190141

6 RICERCA IN PROFONDITA’  Open.Add_List(temp_list);  //Fine pseudocodice  IsDeadend restituisce true se il nodo è terminale  Empty restituisce true se la lista è vuota  E’ necessario porre un limite di profondità dell’albero, poiché usiamo uno stack implicito e quindi in certi casi potremmo provocare uno stack overflow  Possiamo supporre n=5, guardando la mappa a nostra disposizione Francesco Russo 200486- Alberto Saglimbeni 190141

7 RICERCA IN PROFONDITA’ 1)OPEN={}  temp=ARAD  CLOSED={ARAD}  non è un goal, né un deadend  espandiamo Arad  temp_list={Zerind,Sibiu,Timisoara}  OPEN={ZERIND,SIBIU,TIMISOARA} Francesco Russo 200486- Alberto Saglimbeni 190141

8 RICERCA IN PROFONDITA’ 2)OPEN={SIBIU,TIMISOARA}  temp=ZERIND  CLOSED={ARAD,ZERIND}  no goal, no deaded, n true  temp_list={Oradea}  OPEN={ORADEA,SIBIU,TIMISOARA} Francesco Russo 200486- Alberto Saglimbeni 190141

9 RICERCA IN PROFONDITA’  3)OPEN= {SIBIU,TIMISOARA}  temp=ORADEA  CLOSED={ARAD,ZERIND,ORADEA}  no goal, no deadend, n true  temp_list : problema, Sibiu è già in open, quindi  usciamo con fallimento Francesco Russo 200486- Alberto Saglimbeni 190141

10 RICERCA IN PROFONDITA’  4)OPEN = {TIMISOARA}  temp=SIBIU  CLOSED={ARAD,ZERIND,ORADEA,SIBIU}  no goal, no deadend, n true  temp_list={Fagaras,Rimnicu Vilcea}  OPEN= {FAGARAS, RIMINCU VILCEA, TIMISOARA} Francesco Russo 200486- Alberto Saglimbeni 190141

11 RICERCA IN PROFONDITA’  5)OPEN={RIMNICU VILCEA,TIMISOARA}  temp=FAGARAS  CLOSED={ARAD,ZERIND,ORADEA,SIBIU, FAGARAS}  no goal, no deadend, n true  temp_list={Bucharest}  OPEN={BUCHAREST, RIMNICU VILCEA, TIMISOARA} Francesco Russo 200486- Alberto Saglimbeni 190141

12 RICERCA IN PROFONDITA’  OPEN= {RIMNICU VILCEA, TIMISOARA}  temp=BUCHAREST  Is goal true, uscire con successo Francesco Russo 200486- Alberto Saglimbeni 190141

13 RICERCA IN PROFONDITA’  Scegliendo n=4 e Timisoara come primo nodo di espansione, l’algoritmo non avrebbe trovato nessuna soluzione poiché la profondità dell’albero avrebbe superato i limiti imposti.  Ciò porta a riflettere su come scegliere un criterio adatto per la selezione dei nodi, oltre al fatto che essendo n un «limite» per l’algoritmo, si rischia di non trovare nessuna soluzione, sebbene ce ne siano varie. Francesco Russo 200486- Alberto Saglimbeni 190141

14 LEAP FROGGING  Consideriamo come criteri di eliminazione dei figli generati da un nodo :  -Ripetizioni in closed  -Distanza dal goal aumentata rispetto all’ultimo  -Nodo in closed Francesco Russo 200486- Alberto Saglimbeni 190141

15 LEAP FROGGING  Utilizziamo a tale scopo la mappa delle distanze fornita.  L’inserimento nella lista open può essere decrescente(in funzione della distanza)  Notazione : Città(distanza)  Pseudocodice:  If(empty(open)) return false;  Node temp=pop(open);  Closed.push_back(temp); Francesco Russo 200486- Alberto Saglimbeni 190141

16 LEAP FROGGING  ArrayList figli_temp=genera_figli(temp);  If(figli_temp.empty()) {  cerca_subversive();Return false;  }  Foreach(Node n in figli_temp){  if(not_valid(n))figli_temp.remove(n);  If(n.is_goal) return true;  }  open.insord(figli_temp); //Decrescente Francesco Russo 200486- Alberto Saglimbeni 190141

17 LEAP FROGGING  1)Open={Arad(366)}  ->Closed={Arad(366)}  Figli_temp= {Zerind(374),Timisoara(329),Sibiu(253)}  Zerind non è valido poiché aumenta la distanza  Open= {Timisoara(329) ),Sibiu(253)} Francesco Russo 200486- Alberto Saglimbeni 190141

18 LEAP FROGGING  2)Open={Sibiu(253)}  Closed={Arad(366),Timisoara(329) }  figli_temp=Lugoj(244)  Aggiungiamo Lugoj  Open={Lugoj(244),Sibiu(253)} Francesco Russo 200486- Alberto Saglimbeni 190141

19 LEAP FROGGING  3)Open={Sibiu(253)}  Closed={Arad(366),Timisoara(329), Lugoj(244) }  Figli_temp=Mehadia(241)  Open={Mehadia(241),Sibiu(253)} Francesco Russo 200486- Alberto Saglimbeni 190141

20 LEAP FROGGING  4)Open={Sibiu(253)}  Closed={Arad(366),Timisoara(329),Lugoj(344),  Mehadia(241) };  Figli_temp=Dobreta(242);  Dobreta non è valido perché stiamo aumentando la distanza. Adesso dobbiamo cancellare da closed tutti i figli fino a tornare ad un fratello del nodo subversive valido. Francesco Russo 200486- Alberto Saglimbeni 190141

21 LEAP FROGGING  5)Open={Sibiu(253)}  Closed={Arad(366)}  E si continua con Sibiu Francesco Russo 200486- Alberto Saglimbeni 190141

22 LEAP FROGGING  6)Open={}  Closed={Arad(366),Sibiu(253)}  Figli_temp={Fagaras(176),R.V.(193)}  Open={R.V.(193), Fagaras(176)} Francesco Russo 200486- Alberto Saglimbeni 190141

23 LEAP FROGGING  7)Open={Fagaras(176)}  Closed={Arad(366),Sibiu(253),R.V.(193) }  Figli_temp= {Craiova(138),Pitesti(100) }  Open={Craiova(138),Pitesti(100), Fagaras(176)} Francesco Russo 200486- Alberto Saglimbeni 190141

24 LEAP FROGGING  8)Open= {Pitesti(100),Fagaras(176)}  Closed={Arad(366),Sibiu(253),R.V.(193),  Craiova(138) }  Figli_temp={Pitesti(100),Dobreta(242)}  Dobreta si elimina dato che aumenta la distanza  Pitesti è già in open, non facciamo nulla Francesco Russo 200486- Alberto Saglimbeni 190141

25 LEAP FROGGING  9)Open={Fagaras}  Closed={Arad(366),Sibiu(253),R.V.(193), Craiova(138), Pitesti(100) }  Figli_temp= {BUCHAREST(0)}  E’ il nodo goal, si ripercorre il percorso fino al padre. Francesco Russo 200486- Alberto Saglimbeni 190141


Scaricare ppt "PROBLEM SOLVING INTELLIGENZA ARTIFICIALE A.A. 2014/2015 FRANCESCO RUSSO – 200486 ALBERTO SAGLIMBENI-190141."

Presentazioni simili


Annunci Google