Un Algoritmo Efficiente di Cammino Minimo per Sistemi Informativi Territoriali (Estratto)

13
Università degli Studi di Roma "Tor Vergata" Facoltà di Ingegneria Tesi di Laurea Specialistica in Ingegneria Gestionale U U N N A A L L G G O O R R I I T T M M O O E E F F F F I I C C I I E E N N T T E E D D I I C C A A M M M M I I N N O O M M I I N N I I M M O O P P E E R R S S I I S S T T E E M M I I I I N N F F O O R R M M A A T T I I V V I I T T E E R R R R I I T T O O R R I I A A L L I I Relatore: Candidato: Prof. Giuseppe Confessore Giancarlo Volpe Correlatore: Ing. Giuseppe Stecca Anno Accademico 2007/2008

description

Tesi di laurea Specialistica Ingegneria Gestionale.

Transcript of Un Algoritmo Efficiente di Cammino Minimo per Sistemi Informativi Territoriali (Estratto)

Page 1: Un Algoritmo Efficiente di Cammino Minimo per Sistemi Informativi Territoriali (Estratto)

Università degli Studi di Roma "Tor Vergata"

Facoltà di Ingegneria

Tesi di Laurea Specialistica in Ingegneria Gestionale

UUNN AALLGGOORRIITTMMOO EEFFFFIICCIIEENNTTEE DDII

CCAAMMMMIINNOO MMIINNIIMMOO PPEERR SSIISSTTEEMMII

IINNFFOORRMMAATTIIVVII TTEERRRRIITTOORRIIAALLII

Relatore: Candidato:

Prof. Giuseppe Confessore Giancarlo Volpe

Correlatore:

Ing. Giuseppe Stecca

Anno Accademico 2007/2008

Page 2: Un Algoritmo Efficiente di Cammino Minimo per Sistemi Informativi Territoriali (Estratto)

____________________________________________________________________

_________________________________________________________________ 3

SOMMARIO

INTRODUZIONE...................................................................................................... 6

1. SISTEMI INFORMATIVI TERRITORIALI.................................................. 9

1.1. Che cos’è un Sistema Informativo Territoriale................................................ 9

1.1.1. Informazione e sistema informativo ............................................................ 9

1.1.2. Informazione territoriale ............................................................................ 13

1.1.3. Sistema informativo territoriale ................................................................. 17

1.1.4. Breve storia ................................................................................................ 19

1.2. Struttura di un GIS......................................................................................... 21

1.2.1. Modellazione dello spazio: modello Vector e Raster ................................ 21

1.2.2. Topologia ................................................................................................... 26

1.2.3. DBMS e Query .......................................................................................... 28

1.3. Come lavora il GIS ........................................................................................ 32

1.3.1. Overlay....................................................................................................... 33

1.3.2. Buffer ......................................................................................................... 34

1.3.3. Map algebra ............................................................................................... 35

1.4. L’origine dei dati ........................................................................................... 37

1.4.1. Il formato Shapefile ................................................................................... 37

1.4.2. Caratteristiche del database NAVSTREETS®

........................................... 39

1.5. Interfaccia tra dati cartografici e software di ................................................. 41

navigazione ................................................................................................................ 41

1.5.1. Libreria GeoTools...................................................................................... 42

2. IL PROBLEMA DEL CAMMINO MINIMO ............................................... 43

2.1. Descrizione del problema .............................................................................. 43

2.2. Cenni di teoria dei grafi ................................................................................. 44

2.2.1. Definizioni fondamentali ........................................................................... 45

2.2.2. Cammini, cammini orientati e componenti connesse ................................ 47

2.3. Cammini minimi ............................................................................................ 49

2.3.1. Percorso orientato di peso minimo ............................................................ 49

2.3.2. Formulazione matematica del problema.................................................... 50

3. ALGORITMI DI RISOLUZIONE.................................................................. 52

3.1. Analisi della letteratura.................................................................................. 52

Page 3: Un Algoritmo Efficiente di Cammino Minimo per Sistemi Informativi Territoriali (Estratto)

____________________________________________________________________

_________________________________________________________________ 4

3.2. Descrizione degli algoritmi implementati...................................................... 56

3.2.1. Algoritmo di Dijkstra................................................................................. 57

3.2.2. Algoritmo A*............................................................................................. 60

3.2.3. Algoritmo di Dijkstra Bidirezionale .......................................................... 65

3.2.4. Algoritmo A* Bidirezionale ...................................................................... 69

3.3. Analisi delle strutture dati.............................................................................. 73

3.3.1. Priority Queue............................................................................................ 75

4. ALGORITMO SOGLIA* ................................................................................ 78

4.1. Motivazioni.................................................................................................... 78

4.2. L’idea di base................................................................................................. 79

4.3. Descrizione dell’algoritmo ............................................................................ 80

4.3.1. Fase di ricerca nella soglia......................................................................... 81

4.3.2. Fase di ricerca verso la destinazione.......................................................... 82

4.4. Ammissibilità dell’algoritmo Soglia*............................................................ 85

4.4.1. Ammissibilità della stima euristica............................................................ 85

4.4.2. Assunzione di consistenza ......................................................................... 87

4.4.3. Ottimalità dell’algoritmo Soglia* .............................................................. 89

5. TEST E RISULTATI........................................................................................ 92

5.1. Descrizione della rete..................................................................................... 92

5.2. Descrizione delle simulazioni........................................................................ 93

5.3. Risultati sperimentali ..................................................................................... 96

5.3.1. Funzione obiettivo DISTANCE.................................................................. 96

5.3.2. Funzione obiettivo TIME ........................................................................... 99

5.4. Considerazioni sul valore della soglia ......................................................... 106

6. CONCLUSIONI E SVILUPPI FUTURI ...................................................... 110

APPENDICE: CODICE JAVA ............................................................................ 117

RINGRAZIAMENTI............................................................................................. 118

BIBLIOGRAFIA ................................................................................................... 119

Page 4: Un Algoritmo Efficiente di Cammino Minimo per Sistemi Informativi Territoriali (Estratto)

____________________________________________________________________

_________________________________________________________________ 6

INTRODUZIONE

La pianificazione dei percorsi stradali è un’attività che si è fortemente radicata nella

cultura sociale dei nostri giorni. Questo fenomeno, spinto dal progredire della

tecnologia realizzata per supportarlo, coinvolge svariati ambiti, dal pubblico al

commerciale, al sociale. Basti pensare alla vastissima offerta di navigatori satellitari

presente sul mercato o alla disponibilità, su vari siti web specializzati, di software per

calcolare le rotte ottimali, in base a determinati requisiti. In ambito commerciale, tra

le aziende che si occupano di spedizioni o di servizi logistici, nasce l’esigenza di

pianificare in modo sempre più ottimale le rotte dei mezzi di cui dispongono per

offrire un alto livello di servizio e, soprattutto, per ottimizzare i propri costi; infatti, i

costi del carburante e del personale sono delle voci predominanti nei bilanci di queste

aziende, e cercare di allocare le risorse in modo da ottimizzare tali costi, diventa una

strategia fondamentale, un vantaggio competitivo imprescindibile.

I requisiti fondamentali di un utente generico che richiede la pianificazione di un

percorso sono la correttezza della soluzione e la tempestività con cui tale soluzione è

resa disponibile. In ambito sociale, questi requisiti determinano dei benefici per la

collettività; i servizi sanitari di pronto soccorso, gli enti di pubblica sicurezza e le

associazioni che operano per il soccorso della popolazione in caso di calamità

naturali (terremoti, incendi, frane, ecc..), basano la qualità del loro servizio in

relazione al tempo di risposta ottenuto per pianificare il percorso dalle loro basi

operative fino ai luoghi dove prestare assistenza. Essi contano, anche, sulla sicurezza

di poter disporre in tempo reale di percorsi alternativi, necessari nei casi in cui tali

catastrofi naturali causino il dissesto del suolo e delle infrastrutture stradali.

In questo lavoro di tesi presentiamo un nuovo algoritmo che permette di risolvere in

modo efficiente il problema del cammino minimo in un sistema informativo

territoriale. L’obiettivo alla base dell’implementazione è stato proprio quello di

ridurre il tempo di risposta, avvicinarsi il più possibile ad una modalità real-time, in

maniera tale da poter essere disponile e utile per le numerose applicazioni sopra

descritte. L’algoritmo è il frutto di un’attenta elaborazione delle tecniche classiche

dedite alla risoluzione del problema in esame e dell’introduzione di semplici idee con

Page 5: Un Algoritmo Efficiente di Cammino Minimo per Sistemi Informativi Territoriali (Estratto)

____________________________________________________________________

_________________________________________________________________ 7

una solida base teorica, che hanno prodotto i risultati desiderati in termini di

performance. La strategia si basa su un approccio euristico, cioè vengono sfruttate le

informazioni contenute implicitamente nella rete per migliorare la qualità dei dati di

input e, di conseguenza, ottenere una soluzione in minor tempo investigando solo

una piccola parte della rete stradale.

L’algoritmo è stato implementato mediante linguaggio di programmazione Java ed è

stato testato sulla rete stradale del territorio italiano. Sono stati effettuati dei test su

percorsi stradali di lunghezza diversa e le prestazioni sono state confrontate con

quelle degli altri algoritmi descritti. Dall’analisi dei risultati è risultata evidente la

maggiore efficienza dell’esecuzione del nostro algoritmo.

Nel Capitolo 1 verrà introdotto il concetto di sistema informativo territoriale, il GIS

(Geographical Information System), che rappresenta il framework del nostro lavoro e

saranno analizzate le mappe utilizzate per l’esecuzione degli algoritmi. Nel Capitolo

2 sarà descritto il problema generale del cammino minimo e saranno richiamati i

concetti basilari di teoria dei grafi, lo strumento matematico utile ad analizzare e

formulare il problema. La letteratura presente e gli algoritmi classici sviluppati per

risolvere il problema, saranno introdotti nel Capitolo 3, dove descriveremo le

seguenti tecniche: Dijkstra, Dijkstra bidirezionale, A* e A* bidirezionale. Saranno,

poi, studiate le strutture dati utilizzate nell’implementazione degli algoritmi. Nel

Capitolo 4 sarà presentato il nuovo algoritmo introdotto in questa tesi, identificato

nel corso del lavoro con Soglia*, con la descrizione dell’idea base e delle tecniche

utilizzate per la su implementazione. Saranno presentate e dimostrate alcune

proprietà delle funzioni euristiche di stima usate dall’algoritmo e discuteremo

teoricamente i vantaggi in termini di efficienza forniti dall’algoritmo rispetto alle

altre tecniche. Nel Capitolo 5 saranno esposti i risultati dei test effettuati per

l’algoritmo Soglia* sulle mappe a disposizione, e confrontati con le prestazioni degli

altri algoritmi descritti. Le simulazioni sono state condotte considerando due funzioni

obiettivo, la distanza e il tempo, e i risultati analizzati in termini di tempo di

esecuzione dell’algoritmo e di vastità dell’area visitata. Nel Capitolo 6 saranno

esposte le conclusioni sul lavoro svolto e gli sviluppi futuri ipotizzati.

Page 6: Un Algoritmo Efficiente di Cammino Minimo per Sistemi Informativi Territoriali (Estratto)

____________________________________________________________________

_________________________________________________________________ 8

Il presente lavoro di tesi è stato svolto presso l’ITIA (Istituto di Tecnologie

Industriali e Automazione) del CNR, nel comprensorio dell’Area della Ricerca di

Roma 1 con sede a Montelibretti, Roma. Il lavoro fa parte di un progetto svolto in

collaborazione con la società di ingegneria ACT SOLUTIONS, riguardante lo studio

e l’implementazione di un sistema di pianificazione di rotte stradali.

Page 7: Un Algoritmo Efficiente di Cammino Minimo per Sistemi Informativi Territoriali (Estratto)

____________________________________________________________________

_________________________________________________________________ 110

CAPITOLO 6

CONCLUSIONI E SVILUPPI FUTURI

Il presente lavoro di tesi è stato finalizzato all’analisi del problema di determinare il

cammino ottimo in una rete territoriale. L’algoritmo Soglia* è una nuova

implementazione basata su tecniche euristiche che riduce efficientemente lo spazio di

ricerca degli algoritmi classici. Gli esperimenti hanno mostrato che l’algoritmo

ottiene le prestazioni migliori considerando come parametri di valutazione

l’estensione dell’area visitata durante la ricerca e il tempo di esecuzione degli

algoritmi. I confronti sono stati effettuati con tecniche algoritmiche sviluppate nel

corso degli anni con l’intendo di migliorarne l’efficienza, a partire

dall’implementazione classica di Dijkstra. I miglioramenti sono stati apportati con le

strategie di ricerca bidirezionali, euristiche e una combinazione delle precedenti.

L’algoritmo presentato in questa tesi sfrutta queste tecniche introducendo alcune

modifiche nella scelta della strategia usata per alternare le ricerche bidirezionali e

sfruttando tale strategia per ottenere delle funzioni euristiche di stima migliori, più

informate, che concorrono a rendere l’esecuzione dell’algoritmo più efficiente, nel

senso che, per individuare la soluzione ottima, si visita un’area di ricerca molto

ristretta. L’introduzione del concetto di soglia ha permesso di ottenere questi

benefici, dimostrando l’ammissibilità della funzione euristica ad essa associata nella

ricerca in direzione forward.

Abbiamo visto come il tempo di esecuzione di un algoritmo di cammino minimo

dipenda dal numero di nodi scanditi e visitati durante la ricerca, e ciò ha confermato

il fatto che l’algoritmo Soglia* ha ottenuto le prestazioni migliori anche secondo

questo parametro, per tutte le tipologie di percorso simulate.

Tra i due criteri di valutazione utilizzati, si è posta l’attenzione maggiore sul valore

del Ratio, la misura di efficienza data dalla differenza tra il numero di nodi scanditi

durante la ricerca e il numero di nodi sul percorso ottimo, proprio perché il tempo di

esecuzione (Run-Time) è funzione di questo valore; la condizione desiderabile per un

algoritmo di cammino minimo è che questo valore sia uguale ad 1, cioè si

scandiscono esattamente tutti e soli i nodi del percorso ottimo. Per ottenere questa

Page 8: Un Algoritmo Efficiente di Cammino Minimo per Sistemi Informativi Territoriali (Estratto)

____________________________________________________________________

_________________________________________________________________ 111

qualità bisognerebbe agire con le tecniche euristiche migliorando utilizzando una

funzione di stima ottima. Seguendo questa strada, si può intuitivamente visualizzare

l’area di ricerca come un corridoio attorno al cammino ottimo, che si stringe sempre

di più attorno ad esso man mano che il valore di Ratio si avvicina 1. L’algoritmo

Soglia* fornisce proprio una soluzione che riduce l’area di questo corridoio. Il

miglioramento è notevole se si pensa all’andamento ottenuto da altri algoritmi: ad

esempio, Dijkstra visita un’area approssimabile ad un cerchio centrato nell’origine e

con un raggio uguale alla distanza o-d; Dijkstra bidirezionale migliora, è

approssimabile a due cerchi che si incontrano, centrati nell’origine e la destinazione.

Le tecniche euristiche A* e A* bidirezionale rendono più visibile l’idea del corridoio

intorno al cammino.

Considerando il percorso Ciampino-Velletri, utilizzato nei test, con distanza aerea di

19 Km e percorso ottimo di 23 Km, visualizziamo nelle figure successive l’area di

ricerca reale ottenuta dalle simulazioni degli algoritmi descritti.

Figura 6.1: Area visitata dall’algoritmo di Dijkstra

Page 9: Un Algoritmo Efficiente di Cammino Minimo per Sistemi Informativi Territoriali (Estratto)

____________________________________________________________________

_________________________________________________________________ 112

Figura 6.2: Area visitata dall’algoritmo di Dijkstra bidirezionale

Le immagini sono state ottenute do ogni simulazione degli algoritmi, memorizzando

l’area man mano visitata e visualizzandola su file KML tramite il supporto

dell’immagine satellitare fornita da GOOGLE EARTH. La sequenza di strade che

formano il percorso visualizzato in rosso è l cammino ottimo individuato.

Queste immagini rendono l’idea dell’efficienza degli algoritmi in termini del numero

di nodi visitati durante la ricerca.

Le Figure 6.1 e 6.2 mostrano lo spazio di ricerca degli algoritmi Dijkstra e Dijkstra

bidirezionale; si vedono chiaramente i fenomeni ipotizzati in precedenza: dei cerchi

centrati nell’origine, e nell’origine e nella destinazione che si incontrano. Osservando

la 6.1 si vede la vastità dello spazio inutilmente ricercato da Dijkstra, nelle zone

completamente opposte alla destinazione; risulta essere altamente inefficiente.

Page 10: Un Algoritmo Efficiente di Cammino Minimo per Sistemi Informativi Territoriali (Estratto)

____________________________________________________________________

_________________________________________________________________ 113

Mentre in Figura 6.2 vediamo già i primi benefici dovuti alla tecnica di ricerca in due

direzioni: viene visitata anche la zona tutto intorno alla destinazione, ma l’area totale

investigata è ridotta di molto.

Figura 6.3: Area visitata dall’algoritmo A*

Le Figure 6.3 e 6.4 mostrano chiaramente il principio su cui si basano le tecniche di

ricerca euristica: la ricerca è condotta direttamente verso la destinazione (e verso

l’origine), concentrandosi sull’area compresa tra i due punti di partenza e di arrivo,

sfruttando le informazioni date dalla topologia della rete. Prende forma il concetto di

corridoio intorno al percorso ottimo, che si assottiglia ulteriormente passando da A*

ad A* bidirezionale. La parte di territorio inutile ai fine della ricerca del percorso

ottimo, quella sul territorio della città di Roma, è stata ignorata.

Page 11: Un Algoritmo Efficiente di Cammino Minimo per Sistemi Informativi Territoriali (Estratto)

____________________________________________________________________

_________________________________________________________________ 114

Figura 6.4: Area visitata dall’algoritmo A* bidirezionale

Infine, in Figura 6.5 è visualizzata l’area investigata dall’algoritmo Soglia*. In

questo caso il corridoio aderisce in modo quasi totale all’andamento del percorso

ottimo e l’aerea totale risulta essere molto ridotta. La differenza è netta, nonostante il

percorso analizzato è relativamente breve, e questo fa comprendere ancora meglio

l’efficienza di questa tecnica se pensiamo a cosa potrebbe accadere considerando un

percorso più lungo dove gli altri algoritmi visiterebbero un’area inutilmente vasta.

Analizzando la figura, notiamo intorno alla destinazione, Velletri, una piccola area

circoscritta che è il limite di ricerca relativo al valore della soglia. Se confrontiamo

con le figure relative alle tecniche euristiche il tratto di corridoio intorno all’origine,

risulta chiaramente la dimensione molto ridotta di quello generato da Soglia*; questo

è giustificato dai risultati teorici presentati in precedenza, dove il l’utilizzo di una

Page 12: Un Algoritmo Efficiente di Cammino Minimo per Sistemi Informativi Territoriali (Estratto)

____________________________________________________________________

_________________________________________________________________ 115

stima euristica della distanza “più informata” produce un beneficio in termini di nodi

visitati dalla ricerca.

Figura 6.5: Area visitata dall’algoritmo Soglia*

Concludendo, l’algoritmo presentato in questo lavoro di tesi ha fornito una soluzione

efficiente ad uno dei problemi di ricerca operativa più classici e più utilizzato in

applicazioni del mondo reale, il problema del cammino minimo. L’algoritmo è

particolarmente flessibile e può essere direttamente impiegato in applicazioni relative

alla pianificazione di rotte stradali all’interno di reti reali che costituiscono un

sistema informativo territoriale.

Page 13: Un Algoritmo Efficiente di Cammino Minimo per Sistemi Informativi Territoriali (Estratto)

____________________________________________________________________

_________________________________________________________________ 116

Un primo miglioramento che può essere apportato all’algoritmo, consiste

nell’individuazione teorica del valore di soglia ottima da utilizzare nelle simulazioni.

Relativamente a questo problema, è stato effettuato uno studio solo sperimentale che

ha fornito un range di valori possibili in cui individuare la soglia ottima. Sebbene

tutti i valori interni al range garantiscono risultati migliori degli altri algoritmi,

individuare il valore di soglia ottima in modo teorico produrrebbe ulteriori benefici.

Un’ulteriore sviluppo riguarda l’integrazione dell’algoritmo con le tecniche di

preprocessing, essendo questo l’approccio verso il quale si sta focalizzando la ricerca

riguardo al problema del cammino minimo.

La tecnica si basa sulla disponibilità ulteriore di memoria, dove vengono

memorizzati i risultati del preprocessing, cioè i percorsi minimi precalcolati tra punti

particolari di una rete. L’algoritmo Soglia* può essere utilizzato sia nella fase di

preprocessing, diminuendo il tempo di esecuzione che rappresenta in questa fase una

grossa inefficienza, e sia nella fase di risposta alla query che viene effettuata in

tempo reale.

L’aumento effettivo di qualità della soluzione e di efficienza dell’esecuzione, indotti

da questa tecnica, dovrebbero essere notevoli.