Ευφυής Προσδιορισμός Βέλτιστων Διαδρομών βάσει Μεθόδων Μηχανικής Μάθησης ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

Σχετικά έγγραφα
ΤΥΦΛΗ ΑΝΑΖΗΤΗΣΗ (1) ΣΤΡΑΤΗΓΙΚΗ Ή ΑΛΓΟΡΙΘΜΟΣ ΑΝΑΖΗΤΗΣΗΣ

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

Ασκήσεις μελέτης της 4 ης διάλεξης. ), για οποιοδήποτε μονοπάτι n 1

Δομές Δεδομένων & Αλγόριθμοι

4.3. Γραµµικοί ταξινοµητές

Αλγόριθµοι δροµολόγησης µε µέσα µαζικής µεταφοράς στο µεταφορικό δίκτυο των Αθηνών

Υπολογιστικό Πρόβληµα

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος

Τεχνητή Νοημοσύνη. 4η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

Το Πρόβλημα του Περιοδεύοντος Πωλητή - The Travelling Salesman Problem

ΕΡΩΤΗΜΑΤΑ σε ΑΝΑΖΗΤΗΣΗ

ΥΣ02 Τεχνητή Νοημοσύνη Χειμερινό Εξάμηνο

Τεχνητή Νοημοσύνη. 3η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

Εφαρμόζονται σε προβλήματα στα οποία δεν υπάρχει πληροφορία που να επιτρέπει την αξιολόγηση των καταστάσεων του χώρου αναζήτησης.

Επίλυση προβλημάτων με αναζήτηση

Επίλυση Προβλημάτων και Τεχνικές Αναζήτησης Εισαγωγή

Αναζήτηση σε Γράφους. Μανόλης Κουμπαράκης. ΥΣ02 Τεχνητή Νοημοσύνη 1

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΙΑΤΜΗΜΑΤΙΚΟ ΠΜΣ «ΜΑΘΗΜΑΤΙΚΑ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ & ΤΩΝ ΑΠΟΦΑΣΕΩΝ ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ η Σειρά Ασκήσεων ΑΠΑΝΤΗΣΕΙΣ

Δροµολόγηση (Routing)

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες)

Εισαγωγικές Έννοιες. ημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

Γ. Κορίλη Αλγόριθµοι ροµολόγησης

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ

Περίληψη ιπλωµατικής Εργασίας

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΚΕΦΑΛΑΙΟ Μηχανική Μάθηση

Άσκηση 2: Λαβύρινθοι και ρομπότ Α. (Σχεδιασμός χώρου καταστάσεων) Ενδεικτική επίλυση

Μηχανισµοί & Εισαγωγή στο Σχεδιασµό Μηχανών Ακαδηµαϊκό έτος: Ε.Μ.Π. Σχολή Μηχανολόγων Μηχανικών - Εργαστήριο υναµικής και Κατασκευών - 3.

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

Άσκηση 3 (ανακοινώθηκε στις 14 Μαΐου 2018, προθεσμία παράδοσης: 8 Ιουνίου 2018, 12 τα μεσάνυχτα).

Επίλυση Προβλημάτων 1

Διαδραστικότητα και πλοήγηση σε ψηφιακούς χάρτες

Τεχνητή Νοημοσύνη. 2η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

Δυναμικές Δομές Δεδομένων Λίστες Δένδρα - Γράφοι

Αλγόριθµοι Εκτίµησης Καθυστέρησης και

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

Κεφάλαιο 4ο: Δικτυωτή Ανάλυση

Αλγόριθµοι και Πολυπλοκότητα

ΕΦΑΡΜΟΓΕΣ ΔΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΝΕΥΡΩΝΙΚΑ ΙΚΤΥΑ

Γραµµικός Προγραµµατισµός - Μέθοδος Simplex

Οι Εξελικτικοί Αλγόριθμοι (ΕΑ) είναι καθολικοί στοχαστικοί αλγόριθμοι βελτιστοποίησης, εμπνευσμένοι από τις βασικές αρχές της φυσικής εξέλιξης.

Κεφάλαιο 6. Μέθοδοι επίλυσης προβλημάτων ακέραιου προγραμματισμού

Αλγόριθμοι και Πολυπλοκότητα

Προβλήματα Ελάχιστου Κόστους Ροής σε Δίκτυο. Δίκτυα Ροής Ελάχιστου Κόστους (Minimum Cost Flow Networks)

Αναγνώριση Προτύπων Ι

4. ΔΙΚΤΥΑ

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

Επίλυση προβληµάτων. Αλγόριθµοι Αναζήτησης

ΜΕΘΟΔΟΙ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗΣ ΑΠΟΙΚΙΑΣ ΜΥΡΜΗΓΚΙΩΝ ANT COLONY OPTIMIZATION METHODS

ΤΙΤΛΟΣ ΑΝΑΦΟΡΑΣ: ΕΦΑΡΜΟΓΗ ΚΑΙ ΑΠΟΤΕΛΕΣΜΑΤΑ ΣΕ ΕΠΙΛΕΓΜΕΝΕΣ ΠΕΡΙΤΠΩΣΕΙΣ

Αλγόριθµοι και Πολυπλοκότητα

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Γραφήματα. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΑΛΓΟΡΙΘΜΙΚΕΣ ΜΕΘΟΔΟΙ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗΣ

Ηλεκτρονικός οδηγός για τους φοιτητές ενός Α.Ε.Ι.

ΔΙΔΑΣΚΑΛΙΑ ΤΗΣ ΕΝΝΟΙΑΣ ΤΟΥ ΟΡΙΟΥ ΣΥΝΑΡΤΗΣΗΣ

Q 12. c 3 Q 23. h 12 + h 23 + h 31 = 0 (6)

Ασκήσεις Φροντιστηρίου «Υπολογιστική Νοημοσύνη Ι» 5 o Φροντιστήριο

ΔΙΑΧΕΙΡΙΣΗ ΕΦΟΔΙΑΣΤΙΚΗΣ ΑΛΥΣΙΔΑΣ

ΕΥΡΕΣΗ ΕΛΑΧΙΣΤΩΝ ΜΟΝΟΠΑΤΙΩΝ & ΚΑΤΗΓΟΡΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

Το λογισµικό εκπόνησης οικονοµοτεχνικών µελετών COBA. Η δυνατότητα εφαρµογής του στην Ελλάδα.

ΔΙΚΤΥΑ (13) Π. Φουληράς

Δρομολόγηση (Routing)

ΤΕΙ ΛΑΜΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ ΥΠΟΛΟΓΙΣΤΩΝ

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

Ε..Ε. ΙI ΑΠΑΓΟΡΕΥΜΕΝΗΕΡΕΥΝΑ TABU SEARCH ΧΡΗΣΤΟΣ. ΤΑΡΑΝΤΙΛΗΣ MANAGEMENT SCIENCE IN PRACTICE II

ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ ΜΑΘΗΜΑ 2 ΑΝΑΠΑΡΑΣΤΑΣΗ - ΤΕΧΝΙΚΕΣ ΤΝ (1)

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΝΕΥΡΩΝΙΚΑ ΙΚΤΥΑ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Στοχαστικές Στρατηγικές. διαδρομής (1)

Θεωρήστε ένα puzzle (παιχνίδι σπαζοκεφαλιάς) με την ακόλουθη αρχική διαμόρφωση : b b b w w w e

Συντομότερες Διαδρομές

Περιεχόμενα. Περιεχόμενα

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής

Παράλληλοι Υπολογισµοί (Μεταπτυχιακό)

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Γ Γυμνασίου: Οδηγίες Γραπτής Εργασίας και Σεμιναρίων. Επιμέλεια Καραβλίδης Αλέξανδρος. Πίνακας περιεχομένων

ΑΚΕΡΑΙΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ & ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΚΕΦΑΛΑΙΟ 1

1. Τι είναι η Κινηματική; Ποια κίνηση ονομάζεται ευθύγραμμη;

Στο στάδιο ανάλυσης των αποτελεσµάτων: ανάλυση ευαισθησίας της λύσης, προσδιορισµός της σύγκρουσης των κριτηρίων.

Ε π ι μ έ λ ε ι α Κ Ο Λ Λ Α Σ Α Ν Τ Ω Ν Η Σ

Επιχειρησιακή Έρευνα I

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Κίνηση ΚΕΦΑΛΑΙΟ 2 Β ΓΥΜΝΑΣΙΟΥ

ΔΕΙΓΜΑ ΠΡΙΝ ΤΙΣ ΔΙΟΡΘΩΣΕΙΣ - ΕΚΔΟΣΕΙΣ ΚΡΙΤΙΚΗ

ΣΧΕΔΙΑΣΜΟΣ ΚΙΝΗΣΗΣ ΚΑΙ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΙΩΝ ΣΕ ΒΙΟΜΗΧΑΝΙΚΑ ΠΕΡΙΒΑΛΛΟΝΤΑ

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 3: Συναρτήσεις

ιαδίκτυα & Ενδοδίκτυα Η/Υ

5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Θεωρία Λήψης Αποφάσεων

Επίλυση Προβληµάτων µε Greedy Αλγόριθµους

PROJECT ΣΤΟ ΜΑΘΗΜΑ ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΕΥΡΕΤΙΚΕΣ ΜΕΘΟ ΟΥΣ

Δέντρα Απόφασης (Decision(

Transcript:

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΕΠΙΚΟΙΝΩΝΙΩΝ, ΗΛΕΚΤΡΟΝΙΚΗΣ ΚΑΙ ΣΥΣΤΗΜΑΤΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Ευφυής Προσδιορισμός Βέλτιστων Διαδρομών βάσει Μεθόδων Μηχανικής Μάθησης ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ Γεώργιος Β. Σομπόνης Επιβλέπων : Μιχαήλ Ε. Θεολόγου Καθηγητής Ε.Μ.Π. Αθήνα, Ιούλιος 2012

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΕΠΙΚΟΙΝΩΝΙΩΝ, ΗΛΕΚΤΡΟΝΙΚΗΣ ΚΑΙ ΣΥΣΤΗΜΑΤΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Ευφυής Προσδιορισμός Βέλτιστων Διαδρομών βάσει Μεθόδων Μηχανικής Μάθησης ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ Γεώργιος Β. Σομπόνης Επιβλέπων : Μιχαήλ Ε. Θεολόγου Καθηγητής Ε.Μ.Π. Εγκρίθηκε από την τριμελή εξεταστική επιτροπή τη 12 η Ιουλίου 2012.... Μιχαήλ Ε. Θεολόγου Καθηγητής Ε.Μ.Π.... Ευστάθιος Δ. Συκάς Καθηγητής Ε.Μ.Π.... Γεώργιος Ι. Στασινόπουλος Καθηγητής Ε.Μ.Π. Αθήνα, Ιούλιος 2012

... Γεώργιος Β. Σομπόνης Διπλωματούχος Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών Ε.Μ.Π. Copyright Γεώργιος Β. Σομπόνης, 2012 Με επιφύλαξη παντός δικαιώματος. All rights reserved. Απαγορεύεται η αντιγραφή, αποθήκευση και διανομή της παρούσας εργασίας, εξ ολοκλήρου ή τμήματος αυτής, για εμπορικό σκοπό. Επιτρέπεται η ανατύπωση, αποθήκευση και διανομή για σκοπό μη κερδοσκοπικό, εκπαιδευτικής ή ερευνητικής φύσης, υπό την προϋπόθεση να αναφέρεται η πηγή προέλευσης και να διατηρείται το παρόν μήνυμα. Ερωτήματα που αφορούν τη χρήση της εργασίας για κερδοσκοπικό σκοπό πρέπει να απευθύνονται προς τον συγγραφέα. Οι απόψεις και τα συμπεράσματα που περιέχονται σε αυτό το έγγραφο εκφράζουν τον συγγραφέα και δεν πρέπει να ερμηνευθεί ότι αντιπροσωπεύουν τις επίσημες θέσεις του Εθνικού Μετσόβιου Πολυτεχνείου. 4

Πρόλογος Η παρούσα διπλωματική εργασία εκπονήθηκε στα πλαίσια της ερευνητικής δραστηριότητας του εργαστήριου Δικτύων Κινητών και Προσωπικών Επικοινωνιών της σχολής Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ του Εθνικού Μετσόβιου Πολυτεχνείου και πραγματεύεται τη χρήση των Νευρωνικών Δικτύων, και συγκεκριμένα του δικτύου Hopfield, για τη δρομολόγηση οχημάτων σε οδικά δίκτυα. Στις επόμενες σελίδες παρουσιάζονται και αναλύονται τόσο οι δημοφιλέστεροι υπολογιστικοί αλγόριθμοι δρομολόγησης, όσο και τα Νευρωνικά Δίκτυα, με ιδιαίτερη έμφαση στο δίκτυο Hopfield, μια τροποποιημένη εκδοχή του οποίου χρησιμοποιείται, στη συνέχεια, για την εύρεση της βέλτιστης διαδρομής σε οδικά δίκτυα. Η εργασία ολοκληρώνεται με την έκθεση των αποτελεσμάτων και των συμπερασμάτων, που προέκυψαν, ύστερα από πειραματικές μελέτες. Για την πραγματοποίηση αυτών των μελετών οι εξεταζόμενοι αλγόριθμοι υλοποιήθηκαν στο περιβάλλον προγραμματισμού MATLAB. Κλείνοντας τον σύντομο αυτό πρόλογο θα ήθελα να ευχαριστήσω θερμά τον επιβλέποντα καθηγητή κ. Μιχαήλ Θεολόγου για την ευκαιρία, που μου προσέφερε, να εργαστώ πάνω σε ένα σύγχρονο και ενδιαφέρον θέμα καθώς και τον υποψήφιο διδάκτορα κ. Μιχαήλ Μασίκο για την αμέριστη βοήθεια και την άψογη συνεργασία. Γεώργιος Β. Σομπόνης Αθήνα, Ιούλιος 2012 5

Περίληψη Η παρούσα διπλωματική εργασία ασχολείται με τη δρομολόγηση οχημάτων σε οδικά δίκτυα χρησιμοποιώντας το Νευρωνικό Δίκτυο Hopfield. Για λόγους σαφήνειας και πληρότητας αρχικά περιγράφονται οι δημοφιλέστεροι «συμβατικοί» αλγόριθμοι δρομολόγησης. Στη συνέχεια παρουσιάζονται οι βασικότερες αρχές των Νευρωνικών Δικτύων ούτως ώστε να καταστεί κατανοητή η λειτουργία του δικτύου Hopfield, η ανάλυση της οποίας έπεται. Έχοντας, πλέον, τα απαραίτητα γνωστικά εφόδια, η διπλωματική προχωράει στην επεξήγηση του προτεινόμενου δικτύου Hopfield με τροποποιημένη συνάρτηση ενέργειας, που καλείται να επιλύσει το πρόβλημα της δρομολόγησης μεταξύ δύο δοσμένων κόμβων σε οδικά δίκτυα. Η εφαρμογή του νευρωνικού αυτού δικτύου σε ένα τμήμα του οδικού δικτύου της Αθήνας και η αντίστοιχη προσομοίωση προσφέρουν σημαντικά αποτελέσματα, τα οποία επεξηγούνται και αναλύονται. Στα πλαίσια της πειραματικής ανάλυσης υλοποιήθηκε στο MATLAB μία εφαρμογή δρομολόγησης, που υπολογίζει τις βέλτιστες ή σχεδόν βέλτιστες διαδρομές μεταξύ δύο κόμβων κάνοντας χρήση είτε του προτεινόμενου δικτύου Hopfield, είτε του αλγόριθμου Dijkstra. Λέξεις κλειδιά Δίκτυο Hopfield, νευρωνικό δίκτυο, μηχανική μάθηση, αλγόριθμος δρομολόγησης, οδικό δίκτυο, βέλτιστη διαδρομή, συνάρτηση ενέργειας, αλγόριθμος Dijkstra 6

Abstract This diploma thesis deals with the vehicle routing problem. For clarity and completeness purposes the most popular conventional routing algorithms are initially described. The basic principles of Neural Networks are then presented in order to make intelligible the operation of Hopfield network, whose analysis follows. Having now the necessary cognitive skills, the thesis moves on explaining the proposed Hopfield network with a modified energy function, that is called to solve the routing problem between two given nodes in road networks. The implementation of the proposed network into a section of the road network of the city of Athens and the corresponding simulation provide significant results, which are explained and analyzed. The experimental analysis is performed with a MATLAB application that calculates the optimal or near optimal path between two nodes using either the proposed Hopfield network or Dijkstra s Algorithm. Keywords Hopfield network, neural network, machine learning, routing algorithm, road network, optimal path, energy function, Dijkstra s algorithm 7

Πίνακας περιεχομένων 1 Εισαγωγή...11 1.1 Διάρθρωση... 12 2 Αλγόριθμοι δρομολόγησης...15 2.1 Βασικές έννοιες... 15 2.2 Αλγόριθμοι συντομότερης διαδρομής... 17 2.2.1 Ο αλγόριθμος Dijkstra... 17 2.2.2 Τροποποιημένος αλγόριθμος Dijkstra... 20 2.3 Ευριστική αναζήτηση... 24 2.3.1 Αλγόριθμος A*... 25 2.4 Αμφίδρομη αναζήτηση... 31 2.5 Ιεραρχική αναζήτηση... 37 2.6 Άλλοι αλγόριθμοι... 39 3 Νευρωνικά Δίκτυα...43 3.1 Ιστορική αναδρομή... 44 3.2 Μοντέλο βιολογικού νευρώνα... 46 3.3 Μοντέλο Τεχνητού Νευρώνα... 47 3.4 Βασικές ιδιότητες... 49 3.5 Αρχιτεκτονικές Νευρωνικών δικτύων... 50 3.5.1 Νευρωνικά δίκτυα προσοτροφοδότησης... 50 3.5.2 Νευρωνικά δίκτυα ανατροφοδότησης... 52 3.6 Μάθηση των Νευρωνικών Δικτύων... 53 3.6.1 Επιβλεπόμενη μάθηση... 54 3.6.2 Ενισχυτική μάθηση... 54 3.6.3 Μη επιβλεπόμενη μάθηση... 55 3.7 Συσχετιστικές μνήμες... 56 3.8 Εφαρμογές Νευρωνικών Δικτύων... 56 4 Νευρωνικό Δίκτυο Hopfield...59 4.1 Αρχιτεκτονική... 60 4.2 Δυναμική συμπεριφορά... 61 4.2.1 Διακριτό δίκτυο Hopfield... 62 4.2.2 Αναλογικό δίκτυο Hopfield... 62 4.3 Υλοποίηση δικτύου Hopfield με αναλογικά κυκλώματα... 64 8

4.4 Εφαρμογές... 66 4.4.1 Αναγνώριση προτύπων... 66 4.4.2 Πρόβλημα Περιοδεύοντος Πωλητή (Travel Salesman Problem)... 67 5 Δίκτυο Hopfield δρομολόγηση σε οδικά δίκτυα...69 5.1 Ορισμός του προβλήματος... 70 5.2 Συνάρτηση ενέργειας... 72 5.3 Μετασχηματισμός συνάρτησης ενέργειας... 73 6 Εφαρμογή δρομολόγησης σε οδικό δίκτυο...75 7 Πειραματική μελέτη και αποτελέσματα...81 7.1 Ρύθμιση παραμέτρων... 83 7.2 Αλγόριθμος... 85 7.3 Αποτελέσματα προσομοίωσης... 86 8 Συμπεράσματα και μελλοντικές επεκτάσεις...91 9 Παράρτημα...95 9.1 Hopfield_run.m... 95 9.2 Hopfield_Network.m... 104 9.3 Διαδικασία επέκτασης εφαρμογής... 109 Βιβλιογραφία... 111 9

10

1 Εισαγωγή O σχεδιασµός διαδροµής ή η δροµολόγηση είναι µια διαδικασία, που αποτελεί θεµελιώδες πρόβληµα στον τοµέα της πλοήγησης οχηµάτων και µπορεί να ταξινοµηθεί σε δροµολόγηση πολλαπλών οχηµάτων (multivehicle), η οποία περιλαµβάνει τον υπολογισµό διαδροµών πολλαπλών προορισµών (multidestination) για ό λα τα οχήµατα σε ένα συγκεκριµένο οδικό δίκτυο και σε δροµολόγηση ενός οχήµατος (singlevehicle), η οποία σχεδιάζει µια ενιαία διαδροµή για ένα και µόνο όχηµα, σύµφωνα µε την τρέχουσα θέση αυτού και έναν καθορισµένο προορισµό [3]. Στην επιστήµη των υπολογιστών η εύρεση µίας διαδροµής από το σηµείο Α στο σηµείο Β συχνά αναφέρεται ως πρόβληµα συντοµότερης διαδροµής (shortest path problem - SP). Για την επίλυση του προβλήµατος αυτού έχουν αναπτυχθεί πολλοί αλγόριθµοι, οι οποίοι αντιµετωπίζουν καταστάσεις ανάλογες µε τον σχεδιασµό διαδροµής ενός ή πολλαπλών οχηµάτων. Η κατασκευή φορητών συσκευών, για την πλοήγηση οχηµάτων, δηµιούργησε την ανάγκη εύρεσης αποδοτικότερων µεθόδων για τον σχεδιασµό της διαδροµής σε πραγµατικό χρόνο, µε κύριο γνώµονα την άµεση απόκριση και το χαµηλό κόστος. Στην πράξη χρησιµοποιούνται κυρίως υπολογιστικοί αλγόριθµοι, σε διάφορες παραλλαγές, ούτως ώστε να ικανοποιούν τις παραπάνω απαιτήσεις. Ωστόσο, το ερευνητικό ενδιαφέρον έχει πλέον στραφεί προς την ευφυή πλοήγηση µε εφαρµογές Τεχνητής Νοηµοσύνης και Μηχανικής Μάθησης. 11

Στην παρούσα διπλωµατική εργασία προτείνεται µία ευφυής µέθοδος δροµολόγησης, η οποία βασίζεται σε ένα νευρωνικό δίκτυο Hopfield µε τροποποιηµένη συνάρτηση ενέργειας. 1.1 Διάρθρωση Η διπλωµατική εργασία αναπτύσσεται σε οκτώ κεφάλαια. Τα τέσσερα πρώτα, συνιστούν το θεωρητικό µέρος και προσφέρουν το απαραίτητο υπόβαθρο για την κατανόηση των υπολοίπων, ενώ τα επόµενα τέσσερα αποτελούν το πρακτικό τµήµα. Στο Κεφάλαιο 2 γίνεται µια συνοπτική παρουσίαση της απαραίτητης ορολογίας και κατόπιν περιγράφονται οι κυριότεροι «συµβατικοί» υπολογιστικοί αλγόριθµοι, οι οποίοι χρησιµοποιούνται στην πλοήγηση των οχηµάτων. Το Κεφάλαιο 3 αποτελεί εισαγωγή σ τα Νε υρωνικά Δίκτυα αρχίζοντας από µια σύντοµη ιστορική αναδροµή και συνεχίζοντας µε την ανάλυση των µοντέλων του βιολογικού και τεχνητού νευρώνα, τις αρχιτεκτονικές των νευρωνικών δικτύων και τις τεχνικές µάθησης. Το κεφάλαιο ολοκληρώνεται µε µία επιγραµµατική αναφορά στις εφαρµογές των νευρωνικών δικτύων. Στο Κεφάλαιο 4 παρουσιάζονται εκτενέστερα τόσο το διακριτό όσο και το αναλογικό δίκτυο Hopfield, το οποίο θα χρησιµοποιήσουµε στην παρούσα εργασία. Η παρουσίαση αρχίζει µε µία επισκόπηση της αρχιτεκτονικής, ενώ κατόπιν εµβαθύνει στη δυναµική συµπεριφορά του. Στη συνέχεια, αναλύεται η υλοποίηση του εν λόγω δικτύου µε αναλογικά κυκλώµατα και κλείνοντας αναφέρονται ορισµένα παραδείγµατα προβληµάτων, στην επίλυση των οποίων είναι ιδιαίτερα αποδοτικό. Στο Κεφάλαιο 5 προτείνεται ένα δίκτυο Hopfield µε τροποποιηµένη συνάρτηση ενέργειας για τη δροµολόγηση οχηµάτων σε οδικό δίκτυο. Στο Κ εφάλαιο 6 παρουσιάζεται η εφαρµογή, που υλοποιεί το προτεινόµενο δίκτυο Hopfield και παρέχει µία χρηστική γραφική διεπαφή (Graphical User Interface - GUI), ούτως ώστε να µπορεί ο χρήστης να υπολογίζει τις βέλτιστες διαδροµές µεταξύ δύο κόµβων στο οδικό δίκτυο της Αθήνας. 12

Το Κεφάλαιο 7 αποτελεί την πειραµατική µελέτη του προτεινόµενου δικτύου Hopfield, το οποίο χρησιµοποιείται για τον υπολογισµό διαδροµών σε ένα τµήµα του οδικού δικτύου της Αθήνας και στη συνέχεια εκθέτονται τα αποτελέσµατα. Στο Κ εφάλαιο 8 συνοψίζονται τα συµπεράσµατα, τα οποία προέκυψαν από την ανάλυση, υλοποίηση και προσοµοίωση της προτεινόµενης µεθόδου δροµολόγησης σε οδικά δίκτυα, ενώ σκιαγραφούνται οι µελλοντικές εξελίξεις στον τοµέα αυτό. Τέλος, στο Παράρτηµα παρατίθεται ο κώδικας της εφαρµογής, που παρουσιάστηκε στο Κεφάλαιο 6, εµπλουτισµένος µε αναλυτικά σχόλια για είναι πλήρως κατανοητός από τον αναγνώστη, καθώς και η διαδικασία, η οποία πρέπει να ακολουθηθεί, για να χρησιµοποιηθεί η εν λόγω εφαρµογή σε άλλα οδικά δίκτυα. 13

14

2 Αλγόριθµοι δροµολόγησης Για την εύρεση της διαδροµής µεταξύ δύο σηµείων υπάρχουν πολλοί αλγόριθµοι, που κάνουν χρήση υπολογιστικών µεθόδων και βρίσκουν εφαρµογή σε δίκτυα επικοινωνιών, δίκτυα υπολογιστών, οδικά δίκτυα κ.τ.λ.. Στο κεφάλαιο αυτό παρουσιάζουµε και αναλύουµε τους σηµαντικότερους αλγόριθµους δροµολόγησης, δίνοντας ιδιαίτερη έµφαση σε εκείνους, που χρησιµοποιούνται για τον σχεδιασµό διαδροµής ενός οχήµατος και την πλοήγηση οχηµάτων σε οδικά δίκτυα. Η δροµολόγηση πολλαπλών οχηµάτων είναι πιο σύνθετη διαδικασία και δεν θα αναλυθεί περαιτέρω. 2.1 Βασικές έννοιες Η ουσιαστικότερη κατανόηση του προβλήµατος δροµολόγησης και των τεχνικών επίλυσης του, προϋποθέτει τ η γνώση ορ ισµένων εννοιών. Για λόγους πληρότητας παραθέτουµε τις βασικότερες: Γράφος: Ένας γράφος G = V, E ορίζεται από ένα µη - κενό, πεπερασµένο σύνολο κορυφών ή κόµβων V και ένα σύνολο ακµών ή τόξων ή συνδέσµων E u, v όπου u, v V και u v. Θεωρούµε ότι ο γράφος αποτελείται από n κόµβους και s συνδέσµους. Κάθε κόµβος ή σύνδεσµος ενός γράφου έχει ένα µοναδικό όνοµα, που ονοµάζεται επιγραφή ή ετικέτα (label). Κάθε σύνδεσµος 15

ορίζεται από ένα ζεύγος κόµβων, ενώ αν ο γράφος είναι κατευθυνόµενος, τότε το ζεύγος αυτό είναι διατεταγµένο. Δίκτυο: Ως δίκτυο N = G, w ορίζεται ένας κατευθυνόµενος γράφος µαζί µε µία πραγµατική συνάρτηση βάρους w: E R, η οποία αντιστοιχεί σε κάθε σύνδεσµό του από έναν αριθµό, που ονοµάζεται βάρος συνδέσµου. Σε ένα οδικό δίκτυο κάθε κόµβος του γράφου είναι µια διασταύρωση ή ένα αδιέξοδο και κάθε σύνδεσµος είναι ένας δρόµος. Το βάρος κάθε συνδέσµου αποτελεί το κόστος ταξιδιού (travel cost) και εξαρτάται από πολλούς παράγοντες όπως η απόσταση, ο χρόνος, η ταχύτητα, ο αριθµός των στροφών και των φαναριών, και η κίνηση. Μονοπάτι: Ως µονοπάτι από τον κόµβο αφετηρίας s (source) προς τον κόµβο προορισµού d (destination) στον γράφο G ορίζεται µία πεπερασµένη α κολουθία p = (s = n!, n!,, n! = d) κόµβων του G για τις οποίες ισχύει n!, n!!! E για i = 1,2,, k 1, όπου κ > 0. Αν κάθε κόµβος εµφανίζεται το πολύ µία φορά στο p το µονοπάτι λέγεται στοιχειώδες. Αν ο κόµβος s ταυτίζεται µε τον κόµβο d το µονοπάτι ονοµάζεται κύκλος. Ως εκ τούτου, για οποιουσδήποτε κόµβους s, d υπάρχει ένα µονοπάτι στον G αν και µόνο αν υπάρχει ένα στοιχειώδες µονοπάτι από τον s στoν d στον G. Βάρος µονοπατιού: Το βάρος ή το κόστος του µονοπατιού p ισούται µε το άθροισµα των βαρών των συνδέσµων, που το αποτελούν :!!! w p = w(n!, n!!! ) (2.1)!!! Συντοµότερο µονοπάτι: Ως συντοµότερο µονοπάτι από τον s στον d ορίζεται ένα µονοπάτι p µεταξύ των δύο κόµβων µε βάρος w(s, d), που δίνεται από τη σχέση: w s, d = min[w p : s d], αν υπάρχει το μονοπάτι από τον s στον d, διαφορετικά (2.2) Άµεση συνέπεια του παραπάνω ορισµού είναι ότι υπάρχει συντοµότερο µονοπάτι από τον s στον d αν και µόνο αν υπάρχει στοιχειώδες µονοπάτι από τον s στον d [1]. 16

Μπορούµε, πλέον, να διατυπώσουµε µε σαφήνεια το πρόβληµα, στο οποίο επικεντρώνεται η παρούσα διπλωµατική εργασία: Δεδοµένου ενός δικτύου Ν = G, w να βρεθεί το συντοµότερο µονοπάτι από τον κόµβο αφετηρίας s προς τον κόµβο προορισµού d. Το πρόβληµα αυτό αποτελεί υποπερίπτωση του παρακάτω προβλήµατος: Δεδοµένου ενός δικτύου Ν = G, w να βρεθεί το συντοµότερο µονοπάτι από τον κόµβο αφετηρίας s προς κάθε άλλο κόµβο του N. Τέλος, για λόγους πληρότητας αναφέρουµε και τον ορισµό του γενικότερου προβλήµατος: Δεδοµένου ενός δικτύου Ν = G, w να βρεθεί το συντοµότερο µονοπάτι µεταξύ κάθε ζεύγους κόµβων s, d. Κατά την επίλυση του προβλήµατος εύρεσης της συντοµότερης διαδροµής σε ένα οδικό δίκτυο µια συνάρτηση αξιολόγησης καλείται να ελαχιστοποιήσει το κόστος (travel cost) ενός µονοπατιού p µεταξύ του κόµβου αφετηρίας και του κόµβου προορισµού. Μερικοί οδηγοί µπορεί να προτιµούν τη µικρότερη απόσταση, ενώ άλλοι µπορεί να προτιµούν τον µικρότερο χρόνο ταξιδιού κ.τ.λ.. Ως εκ τούτου, η συνάρτηση αξιολόγησης, που έχει επιλεχθεί για να ελαχιστοποιήσει το κόστος αυτό, εξαρτάται από τον σχεδιασµό του συστήµατος και τις προτιµήσεις του χρήστη. 2.2 Αλγόριθµοι συντοµότερης διαδροµής Οι συγκεκριµένοι αλγόριθµοι υπολογίζουν όλα τα πιθανά µονοπάτια µεταξύ δύο κόµβων και επιλέγουν το συντοµότερο. Στην παράγραφο αυτή αρχικά θα µελετήσουµε τον δηµοφιλέστερο αλγόριθµο υπολογισµού της συντοµότερης διαδροµής και κατόπιν θα ασχοληθούµε µε τροποποιήσεις αυτού. 2.2.1 Ο αλγόριθµος Dijkstra Ένας από τους πιο αντιπροσωπευτικούς αλγόριθµους της κατηγορίας αυτής είναι ο αλγόριθµος Dijkstra [2], ο οποίος κάνει χρήση µίας τεχνικής, που απαντάται συχνά σε προβλήµατα βελτιστοποίησης. Με βάση την τεχνική αυτή ο αλγόριθµος σε κάθε βήµα 17

λαµβάνει τις βέλτιστες αποφάσεις σε τοπικό επίπεδο µε την ελπίδα πως αυτές οι επιλογές θα οδηγήσουν σε µια συνολικά βέλτιστη λύση. Με δοσµένο έναν σταθµισµένο και κατευθυνόµενο γράφο, παρόµοιο µε αυτόν του σχήµατος 2.1, ο αλγόριθµος Dijkstra διατηρεί ένα σ ύνολο S από κόµβους, των οποίων τα ελάχιστα βάρη σε σχέση µε τον κόµβο προέλευσης είναι ήδη γνωστά. 1 35 22 4 10 2 72 100 3 60 Σχήµα 2.1: Κατευθυνόµενος γράφος µε βάρη Αρχικά, αυτό το σύνολο περιέχει µόνο τον κόµβο εκκίνησης, ενώ όλοι οι άλλοι αποτελούν το σύνολο V-S. Σε κάθε β ήµα προσθέτουµε στο σύνολο S έναν εναποµείναντα κόµβο, του οποίου το βάρος σχέση µε τον κόµβο προέλευσης είναι το µικρότερο δυνατό. Υποθέτοντας ότι όλοι οι σύνδεσµοι έχουν µη-αρνητικά βάρη, µπορούµε πάντα να βρούµε τη συντοµότερη διαδροµή από την αφετηρία µέχρι οποιονδήποτε άλλο κόµβο, που να διέρχεται µόνο από κόµβους, οι οποίοι ανήκουν στο σύνολο S, και σ ε κάθε βήµα, χρησιµοποιούµε έναν πίνακα για να την καταγράφουµε. Όταν το σύνολο S περιλαµβάνει όλους τους κόµβους, ο πίνακας θα περιέχει τη συντοµότερη απόσταση από τον κόµβο εκκίνησης προς κάθε κόµβο. Ο αλγόριθµος αυτός είναι παρόµοιος µε τους αλγόριθµους αναζήτησης κατά πλάτος, που είναι κατά προσέγγιση ανάλογοι της επιπεδοδιατεταγµένης διάσχισης ενός δέντρου. Η µετατροπή ενός οδικού δικτύου σε έναν κατευθυνόµενο γράφο παρόµοιο µε αυτόν του σχήµατος 2.1. είναι ιδιαίτερα εύκολη. Μια απαραίτητη συνθήκη για τη χρήση του αλγόριθµου αυτού είναι η απαίτηση το βάρος για κάθε σύνδεσµο να είναι µηαρνητικό, το οποίο ισχύει πάντα στην πλοήγηση οχηµάτων. Εφ όσον η παραπάνω συνθήκη ικανοποιείται, ο αλγόριθµος του Dijkstra θα βρει τις βέλτιστες λύσεις από τον κόµβο εκκίνησης προς κάθε άλλο κόµβο. Στο παράδειγµα µας, αυτό σηµαίνει πως 18

ο αλγόριθµος θα βρει τις διαδροµές ελάχιστου κόστους από τον κόµβο 1 προς τους κόµβους 2,3, και 4 αντίστοιχα. Έστω n o συνολικός αριθµός των κόµβων και s ο συνολικός αριθµός των συνδέσµων σε ένα οδικό δίκτυο. Η πολυπλοκότητα του αλγόριθµου Dijkstra είναι O n! + s = O n!, δηλαδή τετραγωνική. Παραπάνω είδαµε ότι ο αλγόριθµος Dijkstra επιλέγει τον κόµβο µε το ελάχιστο βάρος και σχέση µε τον κόµβο προέλευσης και τον κάνει µέλος του συνόλου S. Με τον τρόπο αυτό χτίζεται σταδιακά το συντοµότερο µονοπάτι από την αφετηρία προς όλους τους υπόλοιπους κόµβους. Στον αρχικό αλγόριθµο οι κόµβοι του συνόλου V-S δεν είναι ταξινοµηµένοι. Αυτό πρακτικά σηµαίνει ότι για να βρούµε τον κόµβο µε το ελάχιστο βάρος πρέπει να ελέγχουµε τα βάρη όλων των κόµβων σε κάθε επανάληψη, πράγµα το οποίο είναι ασύµφορο. Μία βελτίωση του αρχικού αλγορίθµου Dijkstra θα ήταν η αποθήκευση των κόµβων σε µία δοµή δεδοµένων µε τέτοιο τρόπο ώστε οι κόµβοι να είναι ταξινοµηµένοι µε αύξουσα διάταξη των βαρών τους. Αυτό είναι εφικτό όταν για τ ον παράγοντα διακλάδωσης b, ο οποίος ορίζεται ως ο µέσος αριθµός των συνδέσµων, που ξεκινούν από κάθε κόµβο, ισχύει b << n. Σε προβλήµατα πλοήγησης οχηµάτων η συνθήκη b << n ικανοποιείται εύκολα επειδή ο αριθµός των διασταυρώσεων στην περιοχή του προβλήµατος είναι συνήθως πολύ µεγαλύτερος από τον µέσο αριθµό των δρόµων, που αποτελούν την κάθε διασταύρωση. Συνεπώς, είναι πρακτική η οργάνωση των κόµβων σε µια ου ρά προτεραιότητας µε µία δυαδική σωρό. Η πολυπλοκότητα αυτού του αλγόριθµου είναι Ο((n + s)logn) ή Ο(slogn) στην περίπτωση, που όλοι οι κόµβοι είναι προσβάσιµοι από την αφετηρία. Μια άλλη τροποποίηση είναι να εφαρµόσουµε µια σειρά προτεραιότητας µε σωρό Fibonacci. Αυτό θα έχει ως αποτέλεσµα η πολυπλοκότητα αυτής της έκδοσης του αλγόριθµου Dijkstra να γίνει Ο(nlogn + s) = O(nlogn). Με άλλα λόγια, η χρήση καλύτερων δοµών δεδοµένων µειώνει την τετραγωνική πολυπλοκότητα του αλγόριθµου Dijkstra σε λογαριθµική. Περαιτέρω µείωση της πολυπλοκότητας µπορεί να επιτευχθεί µε χρήση και άλλων δοµών δεδοµένων, όπως η σωρός radix [3]. 19

2.2.2 Τροποποιηµένος αλγόριθµος Dijkstra Για την πλοήγηση οχηµάτων δεν είναι απαραίτητο να βρεθεί η βέλτιστη διαδροµή από τον κόµβο εκκίνησης προς όλους τους άλλους κόµβους στο οδικό δίκτυο. Ο αλγόριθµος Dijkstra µπορεί να τροποποιηθεί, ώστε να τερµατίζει όταν βρει τη βέλτιστη διαδροµή µόνο προς τον κόµβο προορισµού. Παρακάτω παρατίθεται µια τροποποίηση του αλγόριθµου Dijkstra µε µία διπλά συνδεδεµένη λίστα. Κάθε κόµβος στη λίστα έχει έναν δείκτη προς τον πρόγονο του και έναν ή περισσότερους δείκτες προς τους απογόνους του ή το κενό. Παρόλο, που αυτός ο αλγόριθµος δεν είναι τόσο δηµοφιλής στον σχεδιασµό διαδροµής, είναι απαραίτητο να τον αναλύσουµε έτσι ώστε ο αναγνώστης να µπορεί να τον συγκρίνει µε τους επόµενους και να εξοικειωθεί µε τη σχετική ορολογία. Οι αλγόριθµοι, που θα αναλυθούν στη συνέχεια, αποτελούν περαιτέρω βελτιώσεις αυτού. Να σηµειωθεί πως γενικά υπάρχει µια πληθώρα υλοποιήσεων κάθε αλγόριθµου. Στη διπλωµατική αυτή δίνεται έµφαση στην παρουσίαση των βασικών χαρακτηριστικών καθενός και στην κατανόηση του τρόπου, µε τον οποίο µπορεί να χρησιµοποιηθεί για να λύσει το πρόβληµα του σχεδιασµού διαδροµής, και όχι σε κάποια συγκεκριµένη τεχνική υλοποίησης. Το οδικό δίκτυο αναπαριστάται µε µία ψηφιακή βάση των δεδοµένων του χάρτη. Ο αλγόριθµος πραγµατοποιεί αναζήτηση µέσα σε αυτό το οδικό δίκτυο, όπου κάθε κόµβος αντιπροσωπεύει µία διασταύρωση ή ένα αδιέξοδο. Υποθέτουµε ότι κατά την εκτέλεση του αλγόριθµου µετατρέπουµε κάθε κόµβο της βάσης δεδοµένων σε µία δοµή δεδοµένων, που περιέχει τουλάχιστον τις συντεταγµένες x, y, κάποιες ιδιότητες του δρόµου, µια ένδειξη της προοπτικής του ως ένα ενδιάµεσο σηµείο δροµολόγησης, έναν σύνδεσµο, που δείχνει πίσω στον κόµβο από τον οποίο προέκυψε και έναν σύνδεσµο, που δείχνει στον επόµενο κόµβο σε µία από τις δύο συνδεδεµένες λίστες, OPEN και CLOSED: OPEN: λίστα κόµβων, που έχουν παραχθεί αλλά δεν έχουν ακόµα επεκταθεί. CLOSED: λίστα κόµβων, που έχουν επεκταθεί. Ο όρος παραχθεί σηµαίνει να δηµιουργηθεί η δοµή δεδοµένων, που αφορά έναν συγκεκριµένο κόµβο και ο όρος επεκταθεί σηµαίνει να παραχθούν όλοι οι απόγονοί του. Αυτή η δοµή δεδοµένων πρέπει να περιέχει όλη την απαραίτητη πληροφορία για τον σχεδιασµό της διαδροµής, όπως περιγράφηκε σύντοµα στην προηγούµενη παράγραφο. Στο σχήµα 2.2 παρουσιάζεται ένα παράδειγµα παραγµένων και 20

επεκταµένων κόµβων στις αντίστοιχες λίστες, όπου ο b και c είναι διάδοχοι του a. Μία µαύρη κουκκίδα υποδεικνύει την κορυφή της κάθε λίστας, ενώ η ηλεκτρική γείωση το τέλος της. Στην πραγµατική υλοποίηση χρησιµοποιείται ένας δείκτης προς το κενό. Για να απλοποιηθεί το σχήµα, οι κόµβοι αναπαρίστανται µε µικρούς κύκλους, ενώ έχουν αγνοηθεί οι δείκτες και η δοµή δεδοµένων, που σχετίζονται µε τον εκάστοτε κόµβο. Τα γράµµατα µέσα σε κάθε κύκλο υποδεικνύουν το όνοµα της κάθε λίστας, OPEN ή CLOSED. a a O b O a C b c O Έναρξη από τον κόµβο a Παραγµένος κόµβος a Επεκταµένος κόµβος a Σχήµα 2.2: Συνδεδεµένες λίστες Μία συνάρτηση αξιολόγησης (συνάρτηση κόστους) χρησιµοποιείται για να υπολογίσει την αξία κάθε κόµβου, που δηµιουργείται. Αυτή η συνάρτηση κατευθύνει τον αλγόριθµο, ώστε να αναζητήσει πρώτα τους πιο «ελπιδοφόρους» κόµβους. Η συνάρτηση αξιολόγησης ορίζεται για τον κόµβο n ως g n, όπου g n είναι ένα µέτρο του πραγµατικού κόστους της µετάβασης από τον τρέχοντα κόµβο στον κόµβο n. Ο καθορισµός της συνάρτησης αξιολόγησης, που θα χρησιµοποιηθεί, είναι στη διακριτική ευχέρεια του σχεδιαστή ή του χρήστη του συστήµατος, όπως αναφέρθηκε προηγουµένως. Ακολουθεί ο ψευδοκώδικας για τον τροποποιηµένο αλγόριθµο Dijkstra: 1. Έστω µία λίστα OPEN, που περιέχει µόνο τον κόµβο αφετηρίας µε µηδενικό κόστος (τιµή της g) και µία λίστα CLOSED, που είναι άδεια. Έστω ότι τα κόστη όλων των υπόλοιπων κόµβων είναι ίσα µε το άπειρο. 2. Εάν δεν υπάρχει κανένας κόµβος στη λίστα OPEN, ανέφερε αποτυχία. Διαφορετικά επέλεξε τον κόµβο από τη λίστα OPEN µε το 21

µικρότερο κόστος (τιµή της g) και ονόµασε τον ως BEST. Αφαίρεσε τον από τη λίστα OPEN και τοποθέτησε τον στη λίστα CLOSED. Έλεγξε αν ο BEST είναι ο κόµβος προορισµού. Εάν είναι, πήγαινε στο βήµα 3, διαφορετικά παρήγαγε τους διαδόχους του BEST. Για κάθε διάδοχο κόµβο n, ακολούθησε τα παρακάτω βήµατα: 2α. Υπολόγισε το κόστους του n: g(n) = κόστος του BEST + κόστος από τον BEST στον n. 2b. Εάν ο n ταυτίζεται µε κάποιον κόµβο, που βρίσκεται ήδη στη λίστα OPEN, έλεγξε αν ο κόµβος n έχει µικρότερο κόστος (τιµή g). Εάν ισχύει, αντικατέστησε το κόστος του ταυτιζόµενου κόµβου µε το κόστους του κόµβου n και όρισε τον δείκτη του να δείχνει στον BEST. 2c. Εάν ο n ταυτίζεται µε κάποιον κόµβο, που βρίσκεται ήδη στη λίστα CLOSED, έλεγξε αν ο κόµβος n έχει µικρότερο κόστος (τιµή g). Εάν ισχύει, αντικατέστησε το κόστος του ταυτιζόµενου κόµβου µε το κόστους του κόµβου n, όρισε τον δείκτη του να δείχνει στον BEST και µετέφερε τον στη λίστα OPEN. 2d. Εάν ο n δεν είναι ήδη ούτε στη λίστα OPEN ούτε στη λίστα CLOSED, όρισε τον δείκτη του να δείχνει στον BEST και τοποθέτησε τον στη λίστα OPEN. Επανέλαβε το βήµα 2. 3. Από τον BEST διέσχισε τους δείκτες προς τα πίσω µέχρι τον κόµβο αφετηρίας και ανέφερε τη λύση της διαδροµής. Ο παραπάνω αλγόριθµος θα βρει τη βέλτιστη διαδροµή από µία δοσµένη αφετηρία προς έναν δοσµένο προορισµό. Οι τεχνικές, που χρησιµοποιήθηκαν στον αρχικό αλγόριθµο Dijkstra, µπορούν να χρησιµοποιηθούν και εδώ για να µειωθεί η πολυπλοκότητά του. Μια ενδιαφέρουσα διαπίστωση είναι ότι αν όλοι οι σύνδεσµοι έχουν ίσα κόστη, ο αλγόριθµος µετατρέπεται σε µία απλή αναζήτηση κατά πλάτος. Σε αυτόν τον αλγόριθµο ελέγχεται κάθε απόγονος αν βρίσκεται ήδη στη λίστα OPEN ή CLOSED, για να αποφευχθεί η περίπτωση ένας κόµβος να εµφανίζεται παραπάνω από µία φορά. Είναι πιθανό περισσότερες από µία διαδροµές να φτάνουν στον προορισµό διερχόµενες από τον ίδιο κόµβο ή διασταύρωση. Το γεγονός ότι ένας κόµβος απαντήθηκε περισσότερες από µία φορές κατά τη διάρκεια της αναζήτησης, 22

π.χ. ένας πρόσφατος διάδοχος είναι ήδη στη λίστα OPEN ή CLOSED, αντικατοπτρίζει στην πραγµατικότητα ότι πολλαπλές διαδροµές διέρχονται από αυτόν. Μία από αυτές πρέπει να έχει το ελάχιστο κόστος. Ο έλεγχος αυτός εγγυάται ότι η βέλτιστη διαδροµή είναι πάντα αποθηκευµένη στη µνήµη [3]. Μία άλλη τεχνική, συχνά χρησιµοποιούµενη στον σχεδιασµό διαδροµής, είναι να περιλαµβάνονται απαγορευµένες καταστάσεις στη δο µή δεδοµένων κάθε κόµβου. Γενικά, ένα οδικό δίκτυο περιέχει έναν σηµαντικό αριθµό από αδιέξοδα, κλειστούς δρόµους και µονόδροµους, που δε µπορούν να χρησιµοποιηθούν στον σχεδιασµό της διαδροµής. Το ίδιο ισχύει και για τη διάσχιση ενός µονόδροµου προς λάθος κατεύθυνση. Ένας απλός τρόπος αντιµετώπισης αυτού του προβλήµατος είναι η δυναµική ενσωµάτωση της πληροφορίας αυτής σε απαγορευµένες καταστάσεις στη δοµή δεδοµένων του αντίστοιχου κόµβου. Οι απαγορευµένοι κόµβοι δε µπορούν να χρησιµοποιηθούν για την κατασκευή του δέντρου αναζήτησης. Συνεπώς το σύστηµα αυτοµάτως τους αποφεύγει. Μια εναλλακτική είναι η αποφυγή δηµιουργίας απογόνου ενός υπάρχοντος κόµβου της λίστας OPEN, εάν αυτός είναι συνδεδεµένος µε ένα απαγορευµένο τµήµα. Η ιδέα αυτή µπορεί να επεκταθεί γ ια τη βελτίωση του σχεδιασµού της διαδροµής. Για παράδειγµα, ένας χρήστης επιθυµεί να αποφύγει τους αυτοκινητόδροµους σε ένα συγκεκριµένο ταξίδι. Εάν ο σχεδιασµός του συστήµατος επιτρέπει στον χρήστη να πραγµατοποιήσει την παραπάνω επιλογή πριν την εκτέλεση του αλγόριθµου δροµολόγησης, τότε όλοι οι αυτοκινητόδροµοι θα επισηµανθούν ως απαγορευµένοι ούτως ώστε να ικανοποιηθεί η απαίτηση του χρήστη [4]. Στις εφαρµογές πλοήγησης οχηµάτων υπάρχει µία διαφορά µεταξύ της χρήσης του αλγόριθµου Dijkstra και της χρήσης της τροποποιηµένης έκδοσης αυτού, που περιγράφηκε παραπάνω. Ο αλγόριθµος Dijkstra χρησιµοποιείται για να βρει λύση σε έναν δοσµένο γράφο ή για να υπολογίσει εκ των προτέρων διαδροµές off-line, οι οποίες και αποθηκεύονται στη µνήµη. Εν αντιθέσει, η τροποποιηµένη έκδοση χρησιµοποιείται όταν είναι απαραίτητη η πλοήγηση πραγµατικού χρόνου. Όταν ένα σύστηµα πλοήγησης είναι σε λειτουργία ο χρήστης αναµένει την άµεση αναπαράσταση της βέλτιστης λύσης. Παρόλο, που µπορούµε να απεικονίσουµε ένα µεγάλο, λεπτοµερές οδικό δίκτυο σαν έναν γράφο, από την οπτική γωνία της πλοήγησης οχηµάτων, δεν είναι πρακτικό, µε βάση την παρούσα τεχνολογία, να φορτώσουµε ολόκληρο το δίκτυο στη µνήµη για τον σχεδιασµό της διαδροµής. Η συνήθης πρακτική είναι να φορτώσουµε, κατ απαίτηση, στη µνήµη το τµήµα του 23

δικτύου, που είναι πιο πιθανό να χρησιµοποιηθεί κατά τον σχεδιασµό της διαδροµής. Δεν χρειαζόµαστε ολόκληρο τον γράφο για να εργαστούµε, ειδικά στον υπολογισµό πραγµατικού χρόνου. Συνεπώς, µπορούµε να φανταστούµε ότι η αναζήτηση πραγµατοποιείται σε ένα δέντρο, το οποίο έχει ρίζα τον κόµβο εκκίνησης και φύλλα τους υπόλοιπους παραγµένους κόµβους. Αυτό έχει σαν αποτέλεσµα να είναι απαραίτητο ένα διαφορετικό µέτρο για την αξιολόγηση της πολυπλοκότητας του αλγόριθµου. Έστω ότι d είναι το βάθος της αναζήτησης της συντοµότερης λύσης από τον κόµβο εκκίνησης προς τον κόµβο προορισµού. Ως βάθος αναζήτησης ορίζεται ο αριθµός των επιπέδων ενός δέντρου, που η διαδικασία αναζήτησης χρειάζεται να διασχίσει για να βρει µία λύση. Για παράδειγµα, αν θεωρήσουµε τη ρίζα ως επίπεδο 0, όλοι οι απόγονοι της θα βρίσκονται στο επίπεδο 1. Με αυτήν την υπόθεση, η πολυπλοκότητα του τροποποιηµένου αλγόριθµου Dijkstra γίνεται O(b! ). Κατά την ολοκλήρωση του σχεδιασµού της διαδροµής, ο συνολικός αριθµός των κόµβων του δέντρου πρέπει να είναι περίπου ίσος µε b!. Ο τροποποιηµένος αλγόριθµος Dijkstra απαιτεί περισσότερο χρόνο και χώρο για να εκτελεστεί σε σχέση µε τους αλγόριθµους ευριστικής αναζήτησης, που θα αναλυθούν παρακάτω. 2.3 Ευριστική αναζήτηση Η ευριστική αναζήτηση είναι µια πληροφορηµένη στρατηγική αναζήτησης, γεγονός το οποίο σηµαίνει ότι έχει πληροφορίες σχετικά µε τον αριθµό των βηµάτων ή το κόστος από την αρχική και την παρούσα κατάσταση µέχρι την τελική. Οι πληροφορίες αυτές χρησιµοποιούνται για τη βελτίωση της αποδοτικότητας της διαδικασίας αναζήτησης, θυσιάζοντας ενδεχοµένως αξιώσεις πληρότητας. Παραδείγµατα ενηµερωµένων µεθόδων αναζήτησης αποτελούν η best-first αναζήτηση, η memory bounded αναζήτηση και οι αλγόριθµοι επαναληπτικής βελτίωσης, όπως ο hill-climbing search και o simulated annealing. Ο λόγος, που πρέπει να πραγµατοποιήσουµε µια αναζήτηση, είναι το ότι δεν ξέρουµε προς ποια κατεύθυνση ακριβώς να κινηθούµε. Αν το γνωρίζαµε εξ αρχής, το πρόβληµα θα ήταν πολύ πιο απλό. Η ευριστική πληροφορία βοηθάει στον καθορισµό 24

του περισσότερο «υποσχόµενου» κόµβου, ποιοι διάδοχοι θα παραχθούν και ποια άσχετα κλαδιά αναζήτησης θα περικοπούν µε αποτέλεσµα η αναζήτηση να είναι πιο αποδοτική. Ο σκοπός της ευριστικής πληροφορίας είναι η παροχή µιας εκτίµησης της απόστασης του κόµβου προορισµού από τον τρέχοντα κόµβο, έτσι ώστε το σύστηµα να µπορεί να καθορίσει πόσο πιθανό είναι ο συγκεκριµένος κόµβος να περιλαµβάνεται σ τη βέλτιστη λύση. Οι ευριστικές πληροφορίες είναι αποτελεσµατικές στον βαθµό, που δείχνουν προς τη σωστή κατεύθυνση, αλλά µπορούν προσωρινά ή περιστασιακά να µας οδηγήσουν σε αναζήτηση ενός ακατάλληλου κόµβου, όπως ένα αδιέξοδο, για µια συγκεκριµένη διαδροµή. Παρά το προσωρινό αυτό πρόβληµα, η διαδικασία θα οδηγήσει στον κόµβο προορισµού, αν αυτός υπάρχει. Η χρήση καλών ευριστικών προσφέρει τη δυνατότητα εύρεσης καλής, αν όχι βέλτιστης, λύσης σε λιγότερο χρόνο και µε λιγότερη κατανάλωση µνήµης σε σχέση µε τον απλό ή τροποποιηµένο αλγόριθµο Dijkstra. 2.3.1 Αλγόριθµος A* Η πιο δηµοφιλής ευριστική αναζήτηση, που εφαρµόζεται ευρέως στον σχεδιασµό διαδροµής, είναι ο αλγόριθµος A* [5], ο οποίος χρησιµοποιεί την best-first µέθοδο. Ο αλγόριθµος Α* έχει χρησιµοποιηθεί και σε άλλα πεδία εκτός της πλοήγησης οχηµάτων, όπως στη ρο µποτική και σε περιοχές ενδιαφέροντος όπου απαιτούνται λύσεις ελάχιστου κόστους. Ο αλγόριθµος Α* είναι µια εξαιρετικά επιτυχηµένη εφαρµογή της best-first αναζήτησης σε οδικά δίκτυα. Εάν η επιλεγµένη συνάρτηση εκτίµησης ικανοποιεί µια συγκεκριµένη συνθήκη, που θα αναλυθεί παρακάτω, ο αλγόριθµος Α* εγγυάται ότι θα βρει µία βέλτιστη διαδροµή, εάν αυτή υπάρχει, ενώ η αναζήτηση θα πραγµατοποιηθεί σε λιγότερο χώρο τόσο από τον αρχικό όσο και από τον τροποποιηµένο αλγόριθµο Dijkstra. Για να γίνει κ ατανοητή η εξοικονόµηση αυτή χρησιµοποιούµε έναν κύκλο για να παραστήσουµε τον χώρο στον οποίο γίνεται η αναζήτηση στον απλό και τροποποιηµένο αλγόριθµο Dijkstra και µία έλλειψη για τον αντίστοιχο χώρο στον αλγόριθµο Α*, όπως φαίνεται στο σχήµα 2.3. 25

Σχήµα 2.3: Οι χώροι αναζήτησης στον αλγόριθµο Α* και τον αλγόριθµο Dijkstra Ένας καλός τρόπος για τη χρήση ευριστικής πληροφόρησης είναι ο υπολογισµός µιας ευριστικής συνάρτησης, η οποία αξιολογεί κάθε κόµβο, που δηµιουργείται, για να προσδιορίσει αν είναι καλός ή κακός. Με τον τρόπο αυτό, έχοντας τ ην ευριστική συνάρτηση να προτείνει ποια διαδροµή να ακολουθηθεί πρώτα, όταν περισσότερες από µία είναι διαθέσιµες, γίνεται η αναζήτηση όσο το δυνατόν πιο αποτελεσµατική. Στον αλγόριθµο Α* αυτή η ευριστική συνάρτηση αξιολόγησης επιτρέπει στον αλγόριθµο να αναζητήσει πρώτα τους πιο «ελπιδοφόρους» κόµβους. Η συνάρτηση αξιολόγησης f! (n) για τον κόµβο n ορίζεται ως εξής: f! n = g n + h! n (2.3) όπου g(n) είναι το πραγµατικό κόστος µετάβασης από τον κόµβο προέλευσης στον τρέχοντα κόµβο n και h! (n) είναι µία εκτίµηση του ελάχιστου κόστους µετάβασης από τον τρέχοντα κόµβο n στον κόµβο προορισµού. Συγκρίνοντας τις δύο εξισώσεις αξιολόγησης, που συζητήθηκαν µέχρι τώρα, παρατηρούµε ότι όταν h! (n) = 0 η εξίσωση (2.3) ταυτίζεται µε αυτήν, που χρησιµοποιήθηκε στον τροποποιηµένο αλγόριθµο Dijkstra. Ο καθορισµός του κόστους, που θα υπολογίζεται από τη συνάρτηση αξιολόγησης εξαρτάται από τον σχεδιαστή του συστήµατος ή τον χρήστη. Για παράδειγµα, εάν ο συντοµότερος χρόνος ταξιδιού είναι προτιµότερος, µια λύση είναι η υιοθέτηση της παρακάτω εξίσωσης για την ευριστική συνάρτηση αξιολόγησης : f! n = t! n = g n + h! n =!!!! d! n v! n + d! n v! 2.4 26

όπου t! (n) είναι ο χρόνος ταξιδιού, d! (n) είναι η πραγµατική απόσταση για το τµήµα i και v! (n) είναι η µέγιστη ταχύτητα (όριο ταχύτητας) για αυτό το τµήµα. Ως g n ορίζεται ο χρόνος µετάβασης από τον κόµβο εκκίνησης στον τρέχον κόµβο και υπολογίζεται για κάθε τµήµα ως ο λόγος της απόστασης του εκάστοτε τµήµατος προς τη µέγιστη ταχύτητα. Η εκτίµηση h! n είναι ο λόγος της ευκλείδειας απόστασης d! (n) µεταξύ του τρέχοντα κόµβου n και ενός δοσµένου κόµβου προορισµού προς την εκτιµώµενη µέγιστη ταχύτητα v. Να σηµειωθεί πως χρησιµοποιήθηκε η ευκλείδεια απόσταση στην εκτίµηση h! (n), που είναι και η µικρότερη απόσταση µεταξύ του τρέχοντα κόµβου και του κόµβου προορισµού. Εάν η εκτιµώµενη µέγιστη ταχύτητα είναι µεγαλύτερη ή ίση της πραγµατικής ταχύτητας σε κάθε τµήµα, ο χρόνος ταξιδίου πάντα θα υποτιµάται. Εν συντοµία, ο σκοπός του αλγόριθµου είναι να ελαχιστοποιήσει το f! (n) και εν προκειµένω το t! n, δηλαδή τον χρόνο ταξιδίου. Η λειτουργία του αλγόριθµου προχωράει σταδιακά, επεκτείνοντας έναν κόµβο (µε αρχή έναν δοσµένο κόµβο εκκίνησης) σε κάθε βήµα, µέχρι να προκύψει ο κόµβος, που αντιστοιχεί στον δοσµένο προορισµό. Σε κάθε βήµα µόνο ο πιο «ελπιδοφόρος» κόµβος, δηλαδή ο κόµβος µε το µικρότερο f! (n), παράγει απογόνους. Κατά τη διάρκεια της διαδικασίας αυτής οι κόµβοι, που σχετίζονται µε περιορισµούς (π.χ. το τµήµα έχει λάθος κατεύθυνση ή καταλήγει σε αδιέξοδο), εξαιρούνται έτσι ώστε οι κόµβοι, οι οποίοι οδηγούν σε παράνοµες στροφές ή σε αδιέξοδα να µην λαµβάνονται υπόψη κατά την αναζήτηση και να µην περιέχονται στην τελική διαδροµή. Η ευριστική συνάρτηση εφαρµόζεται για να αξιολογήσει πόσο «ελπιδοφόρος» είναι κάθε κόµβος, αφού πρώτα ελέγξει αν ο κόµβος αυτός έχει παραχθεί ξανά. Ο έλεγχος αυτός εγγυάται ότι κάθε κόµβος βρίσκεται µόνο σε µία από τις δύο συνδεδεµένες λίστες. Η παραπάνω διαδικασία επαναλαµβάνεται, µέχρις ότου παραχθεί ο κόµβος προορισµού. Η προκύπτουσα λίστα των κόµβων και των συναφών τµηµάτων συχνά αναφέρεται και ως λίστα ελιγµών, επειδή το όχηµα αργότερα θα χρειαστεί να ακολουθήσει αυτή τη λίστα, προκειµένου να ελιχθεί µέσα από το οδικό δίκτυο και να φτάσει στον επιθυµητό προορισµό. Εάν η ευριστική συνάρτηση h! (n) δεν υπερεκτιµά το πραγµατικό κόστος για την επίτευξη του κόµβου προορισµού, ο αλγόριθµος Α* θα καταλήξει στη βέλτιστη λύση, εάν αυτή υπάρχει. Αυτό ονοµάζεται ως ιδιότητα της παραδεκτότητας (admissibility property). Όπως είναι προφανές από τη συνάρτηση αξιολόγησης, που παρατέθηκε προηγουµένως, η υπερεκτίµηση του κόστους αποφεύγεται γιατί η συνάρτηση h! n 27

το υποτιµά για κάθε κόµβο n. Συνεπώς, δεδοµένου ότι η ευριστική συνάρτηση έχει επιλεχθεί προσεκτικά, ισχύει η ιδιότητα της παραδεκτότητας. Παρακάτω παρουσιάζεται ο ψευδοκώδικας για τον αλγόριθµο Α*: 1. Έστω µία λίστα OPEN, που περιέχει µόνο τον κόµβο αφετηρίας µε µηδενικό κόστος (τιµή της g) και µία λίστα CLOSED, που είναι άδεια. Έστω ότι τα κόστη όλων των υπόλοιπων κόµβων είναι ίσα µε το άπειρο. 2. Εάν δεν υπάρχει κανένας κόµβος στη λίστα OPEN, ανέφερε αποτυχία. Διαφορετικά επέλεξε τον κόµβο από τη λίστα OPEN µε το µικρότερο κόστος (τιµή της f ) και ονόµασε τον ως BEST. Αφαίρεσε τον από τη λίστα OPEN και τοποθέτησε τον στη λίστα CLOSED. Έλεγξε αν ο BEST είναι ο κόµβος προορισµού. Εάν είναι, πήγαινε στο βήµα 3, διαφορετικά παρήγαγε τους διαδόχους του BEST. Για κάθε διάδοχο κόµβο n, ακολούθησε τα παρακάτω βήµατα: 2α. Υπολόγισε το κόστους του n: g(n) = κόστος του BEST + κόστος από τον BEST στον n. 2b. Εάν ο n ταυτίζεται µε κάποιον κόµβο, που βρίσκεται ήδη στη λίστα OPEN, έλεγξε αν ο κόµβος n έχει µικρότερο κόστος (τιµή g). Εάν ισχύει, αντικατέστησε το κόστος του ταυτιζόµενου κόµβου µε το κόστους του κόµβου n και όρισε τον δείκτη του να δείχνει στον BEST. 2c. Εάν ο n ταυτίζεται µε κάποιον κόµβο, που βρίσκεται ήδη στη λίστα CLOSED, έλεγξε αν ο κόµβος n έχει µικρότερο κόστος (τιµή g). Εάν ισχύει, αντικατέστησε το κόστος του ταυτιζόµενου κόµβου µε το κόστους του κόµβου n, όρισε τον δείκτη του να δείχνει στον BEST και µετέφερε τον στη λίστα OPEN. 2d. Εάν ο n δεν είναι ήδη ούτε στη λίστα OPEN ούτε στη λίστα CLOSED, όρισε τον δείκτη του να δείχνει στον BEST, τοποθέτησε τον στη λίστα OPEN και υπολόγισε την ευριστική συνάρτηση αξιολόγησης για τον κόµβο n : f (n) = g(n) + h (n) Επανέλαβε το βήµα 2. 3. Από τον BEST διέσχισε τους δείκτες προς τα πίσω µέχρι τον κόµβο αφετηρίας και ανέφερε τη λύση της διαδροµής. 28

Εξετάζοντας προσεκτικά τον αλγόριθµο Α*, γίνεται προφανές ότι η µόνη διαφορά µεταξύ αυτού και των αλγόριθµων υπολογισµού της συντοµότερης διαδροµής είναι ότι η συνάρτηση αξιολόγησης είναι ευριστική. Ο τροποποιηµένος αλγόριθµος Dijkstra είναι ουσιαστικά µια ειδική περίπτωση του αλγόριθµου Α* µε h! n = 0. Για την καλύτερη κατανόησή του ακολουθεί ένα παράδειγµα µε το πώς ο αλγόριθµος Α* δηµιουργεί ένα δέντρο αναζήτησης για το απλό οδικό δίκτυο του σχήµατος 2.4, όπου κάθε γράµµα αντιστοιχεί σε µία διασταύρωση, µε τον κόµβο αφετηρίας να είναι στο m και ο προορισµός στο g. a b c d e f g h i j k l m n o p q r s Σχήµα 2.4: Ένα απλό οδικό δίκτυο Με την ολοκλήρωση του σχεδιασµού της διαδροµής το τελικό δέντρο αναζήτησης, που προκύπτει, φαίνεται στο σχήµα 2.5. Όπως και πριν, χρησιµοποιούµε ένα µικρό κύκλο για να παραστήσουµε κάθε κόµβο και µια ευθεία γραµµή για να παραστήσουµε τους δείκτες από έναν κόµβο προς τον πρόγονο του και τους απογόνους του. Τα γράµµατα µέσα στους κύκλους δείχνουν ότι ένας κόµβος του δέντρου αναζήτησης ανήκει στη λίστα OPEN ή στη λίστα CLOSED. Παρόλο, που κάθε κόµβος στο δέντρο µπορεί να εµφανίζεται περισσότερες από µία φορά ως απόγονος, δύναται να απαντάται µόνο µία φορά και σε µία µόνο λίστα, αφού ο έλεγχος στα βήµατα 2b και 2c εξαλείφει τους περιττούς κόµβους. Η πολλαπλή εµφάνιση κάποιων κόµβων στο δέντρο δεν είναι δύσκολο να γίνει κατανοητή, εφόσον ενδέχεται να υπάρχουν περισσότερες από µία διαδροµές προς τον προορισµό, που να περνούν από την ίδια διασταύρωση. Να σηµειωθεί πως αυτό δε συνέβη στο συγκεκριµένο παράδειγµα, επειδή α πλά ο αλγόριθµος δεν έλεγξε ποτέ τον τελικό απόγονο i, γιατί είχε βρει ήδη τον προορισµό g και ως καλύτερη διαδροµή προέκυψε η m-n-j-g. 29

m C n C i O l O q O o O j C r O O C k g i Σχήµα 2.5: Δέντρο αναζήτησης Οι τελικές λίστες OPEN και CLOSED για το συγκεκριµένο παράδειγµα απεικονίζονται στο σχήµα 2.6. Η µαύρη κουκκίδα υποδεικνύει την αρχή της λίστας, ενώ η ηλεκτρική γείωση το τέλος της. Η λίστα OPEN είναι διατεταγµένη µε τέτοιο τρόπο, ώστε ο κόµβος µε το µικρότερο κόστος να είναι πάντα στην κορυφή. k O g C i O j C q O n C o O m C i O r O Σχήµα 2.6: Οι λίστες OPEN και CLOSED 30

Θεωρώντας πάλι τον παράγοντα διακλάδωσης b, ο οποίος ορίζεται ως ο µέσος αριθµός των συνδέσµων, που ξεκινούν από κάθε κόµβο, και το βάθος αναζήτησης d της συντοµότερης διαδροµής από τον κόµβο αφετηρίας στον κόµβο προορισµού, προκύπτει ότι η πολυπλοκότητα του αλγόριθµου Α* είναι Ο(b! ). Με µία αρχική µατιά παρατηρούµε ότι ο χρόνος εκτέλεσης του αλγόριθµου Α* είναι ίδιος µε αυτόν του τροποποιηµένου αλγόριθµου Dijkstra. Στην πραγµατικότητα ό µως η ευριστική πληροφορία, που χρησιµοποιεί ο αλγόριθµος Α*, τείνει να ελαττώσει τον χρόνο αυτό, γιατί η τιµή του b είναι µικρότερη από ότι στον τροποποιηµένο αλγόριθµο Dijkstra. Γι αυτό τον λόγο άλλωστε χρησιµοποιείται η ευριστική προσέγγιση. Όπως, έχει ήδη αναφερθεί προηγουµένως, η πολυπλοκότητα του αλγόριθµου Α* µπορεί να µειωθεί περαιτέρω µε τη χρήση καλύτερων δοµών δεδοµένων [3]. Εξαιτίας της αυξανόµενης τάσης για έρευνα και ανάπτυξη στον τοµέα της πλοήγησης οχηµάτων, έχουν πραγµατοποιηθεί πολλές µελέτες για διάφορους αλγόριθµους σχεδιασµού της διαδροµής. Δεν υπάρχει αµφιβολία πως αυτές οι µελέτες θα συνεχιστούν, γιατί ο σχεδιασµός της διαδροµής είναι ένα από τα στοιχεία κλειδιά των συστηµάτων πλοήγησης. 2.4 Αµφίδροµη αναζήτηση Η κατανόηση των αλγορίθµων συντοµότερης διαδροµής και ευριστικής αναζήτησης οδήγησε στη γενίκευση αυτών και στη δηµιουργία αλγόριθµων αµφίδροµης αναζήτησης [6]. Στη µελέτη των προηγούµενων αλγορίθµων η αναζήτηση της βέλτιστης διαδροµής πραγµατοποιήθηκε από τον δοσµένο κόµβο αφετηρίας προς τον κόµβο προορισµού. Αυτή η αναζήτηση ονοµάζεται αναζήτηση προς τα εµπρός (forward search). Μία αναζήτηση προς τα πίσω (backward search) στην πραγµατικότητα θα έχει το ίδιο αποτέλεσµα, εφόσον το κόστος κάθε συνδέσµου είναι ίδιο. Αυτό οδηγεί στην ιδέα µιας αµφίδροµης αναζήτησης. Η βασική διαδικασία της αµφίδροµης αναζήτησης έγκειται στον ταυτόχρονο υπολογισµό της καλύτερης διαδροµής από τον κόµβο αφετηρίας προς τον κόµβο προορισµού (forward search) και από τον κόµβο προορισµού προς τον κόµβο αφετηρίας (backward search). Εάν ο αλγόριθµος αναζήτησης εκτελείται σε έναν µόνο επεξεργαστή, ο αλγόριθµος πρέπει να εναλλάσσεται γρήγορα µεταξύ των forward και 31

backward αναζητήσεων. Ο αµφίδροµος αλγόριθµος αναζήτησης ενδέχεται να µειώσει τον χώρο αναζήτησης κατά τουλάχιστον 50%, έτσι ώστε ο χρόνος εκτέλεσης του αλγόριθµου αυτού να είναι α ρκετά µικρότερος σε σχέση µε τη µονόδροµη αναζήτηση. Μια γενική αναπαράσταση του χώρου, που εξετάζεται, στον απλό και τροποποιηµένο αλγόριθµο Dijkstra και στον αλγόριθµο αµφίδροµης αναζήτησης απεικονίζεται στο σχήµα 2.7. Αλγόριθµος Dijkstra Forward Αφετηρία Backward Προορισµός Σχήµα 2.7: Οι χώροι αναζήτησης στον αλγόριθµο Dijkstra και στον αλγόριθµο αµφίδροµης αναζήτησης Η επιτυχής εφαρµογή του αλγόριθµου αµφίδροµης αναζήτησης απαιτεί δύο επιπλέον συνθήκες (υποθέτοντας ότι χρησιµοποιείται ένας µόνο επεξεργαστής) : Ένα κριτήριο για τον τερµατισµό της αναζήτησης και ένα κριτήριο για την εναλλαγή µεταξύ των forward και backward αναζητήσεων. Για παράδειγµα, µπορούµε να καθορίσουµε ένα κριτήριο τερµατισµού όταν ένας κόµβος προσεγγισθεί και από τις δύο κατευθύνσεις αναζήτησης και ένα στατικό κριτήριο εναλλαγής όταν πραγµατοποιηθούν δέκα επαναλήψεις σε κάθε κατεύθυνση. Εάν τα παραπάνω κριτήρια έχουν επιλεχθεί κατάλληλα, η αµφίδροµη αναζήτηση συνήθως θα εξετάσει λιγότερους κόµβους και θα καταλήξει σε µία λύση σε λιγότερο χρόνο συγκριτικά µε τη µονόδροµη αναζήτηση. Ακολουθεί ο ψευδοκώδικας για τον αλγόριθµο αµφίδροµης αναζήτησης: 1. Δηµιούργησε µία λίστα forward OPEN, που περιέχει µόνο τον κόµβο αφετηρίας µε µηδενικό κόστος (τιµή της g) και µία λίστα forward CLOSED, που είναι άδεια. Τα κόστη όλων των υπόλοιπων κόµβων όρισε τα ίσα µε το άπειρο. 32

2. Δηµιούργησε µία λίστα backward OPEN, που περιέχει µόνο τον κόµβο προορισµού µε µηδενικό κόστος (τιµή της g) και µία λίστα backward CLOSED, που είναι άδεια. Τα κόστη όλων των υπόλοιπων κόµβων όρισε τα ίσα µε το άπειρο. 3. Ενάλλασσε τη forward και backward αναζήτηση µε βάση ένα στατικό ή δυναµικό κριτήριο. Εάν δεν υπάρχει κανένας κόµβος στη λίστα OPEN της επιλεγµένης κατεύθυνσης αναζήτησης δοκίµασε τη λίστα της αντίθετης κατεύθυνσης. Εάν δεν υπάρχει κανένας κόµβος και στις δύο λίστες OPEN, ανέφερε αποτυχία. Διαφορετικά επέλεξε τον κόµβο από τη λίστα OPEN µε το µικρότερο κόστος (τιµή της g) και ονόµασε τον ως BEST. Αφαίρεσε τον από τη λίστα OPEN και τοποθέτησε τον στη λίστα CLOSED. Έλεγξε αν ο BEST ικανοποιεί κάποιο κριτήριο τερµατισµού. Εάν ναι, πήγαινε στο βήµα 4, διαφορετικά παρήγαγε τους διαδόχους του BEST. Για κάθε διάδοχο κόµβο n, ακολούθησε τα παρακάτω βήµατα: 3α. Υπολόγισε το κόστους του n: g(n) = κόστος του BEST + κόστος από τον BEST στον n. 3b. Εάν ο n ταυτίζεται µε κάποιον κόµβο, που βρίσκεται ήδη στη λίστα OPEN, έλεγξε αν ο κόµβος n έχει µικρότερο κόστος (τιµή g). Εάν ισχύει, αντικατέστησε το κόστος του ταυτιζόµενου κόµβου µε το κόστους του κόµβου n και όρισε τον δείκτη του να δείχνει στον BEST. 3c. Εάν ο n ταυτίζεται µε κάποιον κόµβο, που βρίσκεται ήδη στη λίστα CLOSED, έλεγξε αν ο κόµβος n έχει µικρότερο κόστος (τιµή g). Εάν ισχύει, αντικατέστησε το κόστος του ταυτιζόµενου κόµβου µε το κόστους του κόµβου n, όρισε τον δείκτη του να δείχνει στον BEST και µετέφερε τον στη λίστα OPEN. 3d. Εάν ο n δεν είναι ήδη ούτε στη λίστα OPEN ούτε στη λίστα CLOSED, όρισε τον δ είκτη του να δείχνει στον BEST και τοποθέτησε τον στη λίστα OPEN. Επανέλαβε το βήµα 3. 4. Από τον BEST διέσχισε τους δείκτες προς τα πίσω µέχρι τον κόµβο αφετηρίας και προς τα εµπρός µέχρι τον κόµβο προορισµού, ένωσε τις δύο λίστες και ανέφερε τη λύση της διαδροµής. 33

Όπως αναφέρθηκε νωρίτερα η πολυπλοκότητα της µονόδροµης αναζήτησης (τροποποιηµένος αλγόριθµος Dijkstra) είναι O(b! ). Η αµφίδροµη αναζήτηση έχει πολυπλοκότητα O 2b!! = O(b!!). Από αυτόν τον υπολογισµό παρατηρούµε ότι η αµφίδροµη αναζήτηση θα εξετάσει λιγότερους κόµβους από τη µονόδροµη αναζήτηση, όπως φαίνεται και στο σχήµα 2.7, κάτι, που οδηγεί σε γρηγορότερο υπολογισµό της λύσης. Οµοίως, µία ευριστική αµφίδροµη αναζήτηση µπορεί να χρησιµοποιηθεί για την εύρεση της καλύτερης διαδροµής. Στο σχήµα 2.8 φαίνονται οι χώροι αναζήτησης για τη µονόδροµη και αµφίδροµη ευριστική αναζήτηση. Σχήµα 2.8: Χώροι αναζήτησης στη µονόδροµη και αµφίδροµη ευριστική αναζήτηση. Παρακάτω παρατίθεται ο ψευδοκώδικας για την αµφίδροµη ευριστική αναζήτηση: 1. Δηµιούργησε µία λίστα forward OPEN, που περιέχει µόνο τον κόµβο αφετηρίας µε µηδενικό κόστος (τιµή της g) και µία λίστα forward CLOSED, που είναι άδεια. Τα κόστη όλων των υπόλοιπων κόµβων όρισε τα ίσα µε το άπειρο. 2. Δηµιούργησε µία λίστα backward OPEN, που περιέχει µόνο τον κόµβο προορισµού µε µηδενικό κόστος (τιµή της g) και µία λίστα backward CLOSED, που είναι άδεια. Τα κόστη όλων των υπόλοιπων κόµβων όρισε τα ίσα µε το άπειρο. 3. Ενάλλασσε τη forward και backward αναζήτηση µε βάση ένα στατικό ή δυναµικό κριτήριο. Εάν δεν υπάρχει κανένας κόµβος στη λίστα OPEN της επιλεγµένης κατεύθυνσης αναζήτησης δοκίµασε τη λίστα της αντίθετης κατεύθυνσης. Εάν δεν υπάρχει κανένας κόµβος και στις δύο λίστες OPEN, ανέφερε αποτυχία. Διαφορετικά επέλεξε τον κόµβο από τη λίστα OPEN µε το µικρότερο κόστος (τιµή της 34

f ) και ονόµασε τον ως BEST. Αφαίρεσε τον από τη λίστα OPEN και τοποθέτησε τον στη λίστα CLOSED. Έλεγξε αν ο BEST ικανοποιεί κάποιο κριτήριο τερµατισµού. Εάν ναι πήγαινε στο βήµα 4, διαφορετικά παρήγαγε τους διαδόχους του BEST. Για κάθε διάδοχο κόµβο n, ακολούθησε τα παρακάτω βήµατα: 3α. Υπολόγισε το κόστους του n: g(n) = κόστος του BEST + κόστος από τον BEST στον n. 3b. Εάν ο n ταυτίζεται µε κάποιον κόµβο, που βρίσκεται ήδη στη λίστα OPEN, έλεγξε αν ο κόµβος n έχει µικρότερο κόστος (τιµή g). Εάν ισχύει, αντικατέστησε το κόστος του ταυτιζόµενου κόµβου µε το κόστους του κόµβου n και όρισε τον δείκτη του να δείχνει στον BEST. 3c. Εάν ο n ταυτίζεται µε κάποιον κόµβο, που βρίσκεται ήδη στη λίστα CLOSED, έλεγξε αν ο κόµβος n έχει µικρότερο κόστος (τιµή g). Εάν ισχύει, αντικατέστησε το κόστος του ταυτιζόµενου κόµβου µε το κόστους του κόµβου n, όρισε τον δείκτη του να δε ίχνει στον BEST και µετέφερε τον στη λίστα OPEN. 3d. Εάν ο n δεν είναι ήδη ούτε στη λίστα OPEN ούτε στη λίστα CLOSED, όρισε τον δείκτη του να δείχνει στον BEST, τοποθέτησε τον στη λίστα OPEN και υπολόγισε την ευριστική συνάρτηση αξιολόγησης για τον κόµβο n : f (n) = g(n) + h (n) Επανέλαβε το βήµα 3. 4. Από τον BEST διέσχισε τους δείκτες προς τα πίσω µέχρι τον κόµβο αφετηρίας και προς τα εµπρός µέχρι τον κόµβο προορισµού, ένωσε τις δύο λίστες και ανέφερε τη λύση της διαδροµής. Στην ιδανική περίπτωση οι αναζητήσεις προς τις δύο κατευθύνσεις π ρέπει να συναντηθούν στη µέση (σχήµατα 2.7 και 2.8). Εάν υπάρχουν πολλαπλές διαφορετικές διαδροµές από τον κόµβο αφετηρίας προς τον κόµβο προορισµού, οι αναζητήσεις µπορεί να µη συναντηθούν στη µέση, όπως φαίνεται στο σχήµα 2.9. Καθεµία από τις δύο αναζητήσεις µπορούν να βρουν σχεδόν ολοκληρωµένες διαδροµές ή η µία να βρει ολοκληρωµένη λύση πριν να διασταυρωθούν. Στη χειρότερη περίπτωση (π.χ. όταν το κριτήριο τερµατισµού της ευριστικής συνάρτησης αξιολόγησης λαµβάνει 35

υπόψη µόνο το εκτιµώµενο κόστος διαδροµής) η αµφίδροµη ευριστική αναζήτηση µπορεί να κάνει διπλάσια δουλειά σε σχέση µε τη µονόδροµη ευριστική αναζήτηση. Συνεπώς, η επιλογή των κριτήριων τερµατισµού και της κατάλληλης ευριστικής συνάρτησης αξιολόγησης είναι πολύ σηµαντική για τη σωστή εφαρµογή της αµφίδροµης ευριστικής αναζήτησης. Σχήµα 2.9: Οι χώροι αναζήτησης αλγορίθµων αµφίδροµης ευριστικής αναζήτησης µε α) ακατάλληλο κριτήριο τερµατισµού και β) ακατάλληλη ευριστική συνάρτηση αξιολόγησης. Όπως αναφέρθηκε στην παράγραφο 2.3 αναφορικά µε την ευριστική αναζήτηση, ο αλγόριθµος Α* καταλήγει στη βέλτιστη διαδροµή εάν ικανοποιείται η ιδιότητα της παραδεκτότητας. Μία αµφίδροµη ευριστική αναζήτηση πρέπει να ελέγξει σχεδόν τους διπλάσιους κόµβους σε σχέση µε µία µονόδροµη ευριστική α ναζήτηση για να προσδιορίσει τη βέλτιστη διαδροµή. Αυτό συµβαίνει επειδή η αµφίδροµη αναζήτηση πρέπει να συγκρίνει όλες τις ενωµένες διαδροµές κατά την αναζήτηση για να εξασφαλίσει πως η διαδροµή είναι βέλτιστη. Στην πραγµατικότητα, οι άνθρωποι σπάνια χρειάζονται να αναζητήσουν τη βέλτιστη λύση για τις καθηµερινές τους δραστηριότητες. Μία σχεδόν βέλτιστη λύση είναι συχνά ικανοποιητική για πολλά προβλήµατα. Εάν δεν είναι απαραίτητη µία βέλτιστη λύση, η αµφίδροµη αναζήτηση είναι ένας καλός υποψήφιος για τον σχεδιασµό διαδροµής. Με άλλα λόγια, όταν χρησιµοποιείται ένας αµφίδροµος αλγόριθµος αναζήτησης, οι περιορισµοί, που θέτει η βελτιστοποίηση, πρέπει να χαλαρώσουν. Στην περίπτωση αυτή η αµφίδροµη αναζήτηση θα βρει µια σχεδόν βέλτιστη διαδροµή πριν βρεθεί η συνολικά βέλτιστη λύση [3]. Υπάρχουν πολλές διαφορετικές παραλλαγές του αµφίδροµου αλγόριθµου αναζήτησης, που µπορούν να χρησιµοποιηθούν για να επιταχύνουν τη διαδικασία αναζήτησης. Στους αλγόριθµους, που παρουσιάστηκαν προηγουµένως, χρησιµοποιείται το κόστος της διαδροµής από τον κόµβο αφετηρίας ή προορισµού 36