Sei sulla pagina 1di 13

Università degli Studi di Roma "Tor Vergata"

Facoltà di Ingegneria

Tesi di Laurea Specialistica in Ingegneria Gestionale

UN ALGORITMO EFFICIENTE DI
CAMMINO MINIMO PER SISTEMI
INFORMATIVI TERRITORIALI

Relatore: Candidato:
Prof. Giuseppe Confessore Giancarlo Volpe

Correlatore:
Ing. Giuseppe Stecca

Anno Accademico 2007/2008


____________________________________________________________________

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

_________________________________________________________________ 3
____________________________________________________________________

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

_________________________________________________________________ 4
____________________________________________________________________

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

_________________________________________________________________ 6
____________________________________________________________________

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.

_________________________________________________________________ 7
____________________________________________________________________

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.

_________________________________________________________________ 8
____________________________________________________________________

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

_________________________________________________________________ 110
____________________________________________________________________

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

_________________________________________________________________ 111
____________________________________________________________________

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.

_________________________________________________________________ 112
____________________________________________________________________

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.

_________________________________________________________________ 113
____________________________________________________________________

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

_________________________________________________________________ 114
____________________________________________________________________

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.

_________________________________________________________________ 115
____________________________________________________________________

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.

_________________________________________________________________ 116