Διάλεξη 21: Γράφοι IV - Βραχύτερα Μονοπάτια σε Γράφους

Σχετικά έγγραφα
Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Γράφοι (συνέχεια) Ο αλγόριθµος Dijkstra για εύρεση βραχυτέρων µονοπατιών Ta µονοπάτια Euler

Διάλεξη 23: Γράφοι IV - Βραχύτερα Μονοπάτια σε Γράφους

Βραχύτερα Μονοπάτια σε Γράφους (CLR, κεφάλαιο 25)

Άσκηση 1. Ψευδοκώδικας Kruskal. Παρακάτω βλέπουμε την εφαρμογή του στο παρακάτω συνδεδεμένο γράφημα.

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

Κατ οίκον Εργασία 2 Σκελετοί Λύσεων

ιδάζκων: ηµήηπηρ Εεϊναλιπούπ

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Ελάχιστο Γεννητικό Δένδρο. Παράδειγμα - Αλγόριθμος Prim. Γιατί δουλεύουν αυτοί οι αλγόριθμοι;

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

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

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (3)

Διάλεξη 21: Γράφοι II - Τοπολογική Ταξινόμηση

Εισαγωγή στους Αλγορίθμους

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

Κατ οίκον Εργασία 5 Σκελετοί Λύσεων

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

Ελάχιστα Γεννητορικά ένδρα

Σχεδίαση & Ανάλυση Αλγορίθμων

3η Σειρά Γραπτών Ασκήσεων

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Παναγιώτης Ανδρέου

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

Αλγόριθμοι Γραφημάτων

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

Αναζήτηση Κατά Βάθος. Επιμέλεια διαφανειών: Δ. Φωτάκης Συμπληρώσεις: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

Θεωρία Γραφημάτων 6η Διάλεξη

Κατ οίκον Εργασία 5 Σκελετοί Λύσεων

Αλγόριθµοι Ροής σε Γράφους (CLR, κεφάλαιο 27)

Μέγιστη ροή. Κατευθυνόμενο γράφημα. Συνάρτηση χωρητικότητας. αφετηρίακός κόμβος. τερματικός κόμβος. Ροή δικτύου. με τις ακόλουθες ιδιότητες

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

Διάλεξη 11: Αιτιότητα Διάταξη Γεγονότων. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Εισαγωγή στους Αλγορίθμους Ενότητα 7η

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

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

Αναζήτηση Κατά Βάθος. Επιµέλεια διαφανειών:. Φωτάκης διαφάνειες για SCC: A. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Εισαγωγή στους Αλγόριθμους

3η Σειρά Γραπτών Ασκήσεων

ΔΙΑΣΧΙΣΗ ΓΡΑΦΗΜΑΤΩΝ 1

Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17)

ΕΠΛ 231 Δοµές Δεδοµένων και Αλγόριθµοι 11-1

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Διακριτά Μαθηματικά. Ενότητα 2: Γραφήματα

Αλγόριθµοι Οπισθοδρόµησης

Θεωρία Υπολογισμού και Πολυπλοκότητα Μαθηματικό Υπόβαθρο

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 29: Γράφοι. Διδάσκων: Παναγιώτης Ανδρέου

Αναζήτηση Κατά Βάθος. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Θεωρία Γραφημάτων 5η Διάλεξη

Σημειωματάριο Δευτέρας 4 Δεκ. 2017

Κατ οίκον Εργασία 4 Σκελετοί Λύσεων

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 3

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 2: Μαθηματικό Υπόβαθρο

Προσεγγιστικοί Αλγόριθμοι

Graph Algorithms. Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι Αλγόριθμοι» Καούρη Γεωργία Μήτσου Βάλια

(elementary graph algorithms)

Σειρά Προβλημάτων 5 Λύσεις

Θεωρία Γραφημάτων 5η Διάλεξη

Βραχύτερα Μονοπάτια σε Γράφους (CLR, κεφάλαιο 25)

Δρομολόγηση μιας οντότητας ανάμεσα σε δύο σημεία ενός δικτύου έτσι ώστε να ελαχιστοποιήσουμε ένα κόστος, μια διάρκεια, κτλ.

Δρομολόγηση μιας οντότητας ανάμεσα σε δύο σημεία ενός δικτύου έτσι ώστε να ελαχιστοποιήσουμε ένα κόστος, μια διάρκεια, κτλ.

Κατανεμημένα Συστήματα Ι

Εισαγωγή στους Αλγορίθμους

Κατανεμημένα Συστήματα Ι

Αλγόριθμοι εύρεσης ελάχιστων γεννητικών δέντρων (MST)

Διάλεξη 04: Παραδείγματα Ανάλυσης

Θέματα Εφαρμογών Βάσεων Δεδομένων: Ιδιωτικότητα Δεδομένων

Γράφοι: κατευθυνόμενοι και μη

Αναζήτηση Κατά Βάθος. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

ροµολόγηση πακέτων σε δίκτυα υπολογιστών

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 11: Μη Ασυμφραστικές Γλώσσες

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

Μέγιστη ροή. Κατευθυνόμενο γράφημα. Συνάρτηση χωρητικότητας. αφετηρίακός κόμβος. τερματικός κόμβος. Ροή δικτύου. με τις ακόλουθες ιδιότητες

Γράφοι. Ένας γράφος ή αλλιώς γράφηµα αποτελείται απο. Εφαρµογές: Τηλεπικοινωνιακά και Οδικά ίκτυα, Ηλεκτρονικά Κυκλώµατα, Β.. κ.ά.

Σειρά Προβλημάτων 5 Λύσεις

Εισαγωγή στην Επιστήμη των Υπολογιστών

Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (2)

Αυτοματοποιημένη Επαλήθευση

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems

Κατανεμημένα Συστήματα Ι

HY Λογική Διδάσκων: Δ. Πλεξουσάκης

Εισαγωγή στην Επιστήμη των Υπολογιστών

Έξι βαθμοί διαχωρισμού

Διάλεξη 17: Συμφωνία με Βυζαντινά Σφάλματα. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Αναζήτηση Κατά Πλάτος

Ασκήσεις στους Γράφους. 1 ο Σετ Ασκήσεων Βαθμός Μονοπάτια Κύκλος Euler Κύκλος Hamilton Συνεκτικότητα

Σχεδιαση Αλγοριθμων -Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο

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

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑ Φεβρουάριος 2005 Σύνολο μονάδων: 91

Outline 1 Άσκηση 1 2 Άσκηση 2 3 Άσκηση 3 4 Άσκηση 4 5 Άσκηση 5 6 Προγραμματιστική Άσκηση 1 7 Προγραμματιστική Άσκηση 2 (CoReLab - NTUA) Αλγόριθμοι - 3

Transcript:

Διάλεξη 2: Γράφοι IV - Βραχύτερα Μονοπάτια σε Γράφους Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Βραχύτερα Μονοπάτια σε γράφους - Ο αλγόριθμος Dijkstra για εύρεση της βραχύτερης απόστασης - Ο αλγόριθμος Dijkstra για εύρεση του βραχύτερου μονοπατιού & απόστασης ΕΠΛ23 Δομές Δεδομένων και Αλγόριθμοι

ΕΠΛ23 Δομές Δεδομένων και Αλγόριθμοι 2 Βραχύτερα Μονοπάτια σε Γράφους Με δεδομένο ένα κατευθυνόμενο γράφο με βάρη G=(V,E), θέλουμε να βρούμε τα μονοπάτια με το ελάχιστο δυνατό βάρος από κάποιο κόμβο A προς οποιονδήποτε κόμβο Χ. Ορισμός: Βραχύτερο μονοπάτι μεταξύ ενός συνόλου από μονοπάτια είναι το μονοπάτι με το ελάχιστο βάρος. Υπενθύμιση: Το βάρος w(p) ενός μονοπατιού p δίνεται ως εξής: Aν τότε p = v o... v w( p ) = = w( vi Σε αυτή την διάλεξη θα δούμε ακόμα ένα άπληστο αλγόριθμο (greedy algorithm) του Δανού Edsger Dijkstra (930-2002) για την επίλυση αυτού του προβλήματος. Ένας τέτοιος αλγόριθμος έχει πολλές εφαρμογές (π.χ. εύρεση μικρότερης διαδρομής σε ένα οδικό δίκτυο, σε δίκτυα υπολογιστών κτλ). v k i,v i k )

ΕΠΛ23 Δομές Δεδομένων και Αλγόριθμοι 3 Η δομή της βέλτιστης λύσης Λήμμα Έστω κατευθυνόμενος γράφος με βάρη G=(V,E) και έστω p = u v το βραχύτερο μονοπάτι μεταξύ των κόμβων u και v. Τότε κάθε υπο- μονοπάτι του p είναι βραχύτερο.... v k v Ας δούμε την λογική πίσω από το Λήμμα. 9 Α D 8 6 B E F C 4 4

ΕΠΛ23 Δομές Δεδομένων και Αλγόριθμοι 4 Η δομή της βέλτιστης λύσης (συν.) Συμβολισμός: Θα γράφουμε w(u,v) για το βάρος του βραχύτερου μονοπατιού από την κορυφή u στην κορυφή v. Λήμμα (Tριγωνική ανισότητα) Για κάθε τριάδα κορυφών u, v, x, w(u,v) w(u,x) + w(x,v) u v x Απόδειξη Τo ελάχιστο μονοπάτι από τον u στον v δεν είναι μακρύτερο από οποιοδήποτε άλλο μονοπάτι από τον u στο v εν προκειμένω, το μονοπάτι που παίρνει πρώτα το ελάχιστο μονοπάτι από τον u στον κόμβο x και στη συνέχεια από τον x στον v.

ΕΠΛ23 Δομές Δεδομένων και Αλγόριθμοι Ανασκόπηση του Αλγόριθμου Dijkstra Έστω ότι θέλουμε να βρούμε το/α βραχύτερα μονοπάτια από κάποιο κόμβο A προς όλους τους υπόλοιπους κόμβους σε κάποιο γράφο G(V,E) 9 Α D 8 6 B E. Ποιο είναι το κόστος του βραχύτερου μονοπατιού από D προς C; 2. Ποιο είναι το ακριβές μονοπάτι; Ο αλγόριθμος του Dijkstra είναι ένας single source shortest path algorithm (δηλαδή αναφέρεται συγκεκριμένα σε μια κορυφή εκκίνησης) για γράφους με μη- αρνητικά βάρη. 4 F C 4

ΕΠΛ23 Δομές Δεδομένων και Αλγόριθμοι 6 Αρνητικά Βάρη στον Αλγόριθμο του Dijkstra Σημειώστε ότι όταν υπάρχουν αρνητικά βάρη, τότε είναι δυνατό αυτά να μας θέσουν την μικρότερη απόσταση, αναδρομικά, ίση με -. Α 8 B C Παράδειγμα: Ποια είναι η βραχύτερη απόσταση μεταξύ (B,Γ); Πρώτη Εκτέλεση : B=>C Δεύτερη Εκτέλεση - : B=>C=>F=>B=>C Τρίτη Εκτέλεση - : B=>C=>F=>B=>C=>F=>Β=>C.. 9 D 6 E 4 F -20

ΕΠΛ23 Δομές Δεδομένων και Αλγόριθμοι 7 Παράδειγμα Εκτέλεσης Αλγορίθμου Dijkstra /4 Πάρε σαν παράμετρο κάποια κορυφή, έστω η κορυφή Α 9 Α D 8 6 B E Αρχικοποίησε ένα πίνακα distance και θέσε την απόσταση όλων των κορυφών από την κορυφή Α είναι ίση με. Εκτέλεση S d(a) d(b) d(c) d(d) d(e) d(f) S= 0 Αρχικοποίησε ένα πίνακα visited όπου θα σημειώνει από ποιες κορυφές έχουμε περάσει ήδη Εκτέλεση S v(a) v(b) v(c) v(d) v(e) v(f) S= 0 0 0 0 0 4 F C

ΕΠΛ23 Δομές Δεδομένων και Αλγόριθμοι 8 Παράδειγμα Εκτέλεσης Αλγορίθμου Dijkstra 2/4 Αρχικοποίησε τον πίνακα distance με τις ακμές της κορυφής εισόδου. 9 Α D 8 6 B E 4 F Εκτέλεση S d(a) d(b) d(c) d(d) d(e) d(f) S= 0 2 S={A} 0 8 9 6 Σε κάθε βήμα του αλγόριθμου, επίλεξε «άπληστα» την κορυφή με την ελάχιστη απόσταση που δεν έχεις επισκεφθεί C Κορυφές που έχουµε επισκεφθεί (visited=)

Παράδειγμα Εκτέλεσης Αλγορίθμου Dijkstra 3/4 Α 8 B C Κορυφές που έχουµε επισκεφθεί (visited=) 9 D 6 E 4 F Χ Επιλογή της ελάχιστης απόστασης Μείωση από την προηγούµενη απόσταση Εκτέλεση S d(a) d(b) d(c) d(d) d(e) d(f) S= 0 2 S={A} 0 8 9 6 3 S={A,E} 0 7 7 6 0 Η Ε (απόσταση=6) έχει ακμές με Β,D(6+=7) και F(6+4=0) Αφού οι αποστάσεις αυτές είναι μικρότερες από τις υπάρχουσες τότε ενημερώνεται ο πίνακας ανάλογα. ΕΠΛ23 Δομές Δεδομένων και Αλγόριθμοι 9

Παράδειγμα Εκτέλεσης Αλγορίθμου Dijkstra 4/4 9 Α D 8 6 B E 4 F C Εκτέλεση S d(a) d(b) d(c) d(d) d(e) d(f) S= 0 2 S={A} 0 8 9 6 3 S={A,E} 0 7 7 6 0 4 S={A,E,B} 0 7 2 7 6 8 S={A,E,B,D} 0 7 2 7 6 8 6 S={A,E,B,D,F} 0 7 9 7 6 8 7 S={A,E,B,D,F, C} 0 7 9 7 6 8 Χ Κορυφές που έχουµε επισκεφθεί (visited=) Επιλογή της ελάχιστης απόστασης Μείωση από την προηγούµενη απόσταση ΕΠΛ23 Δομές Δεδομένων και Αλγόριθμοι 0

ΕΠΛ23 Δομές Δεδομένων και Αλγόριθμοι Υλοποίηση του Αλγόριθμου Dijkstra // A: Σημείο Εκκίνησης. G(V,E): Ο Γράφος dijkstra( G(V,E), vertex Α){ distance[ V ]={ }; // Απόσταση κορυφής i από κορυφή Α visited[ V ]={}; // Σημειώνει αν περάσαμε η όχι από κορυφή count = 0; // Μετρητής κορυφών που επισκεφθήκαμε // Αρχικοποίηση σημείου εκκίνησης distance[a]=0; visited[a]=; while (count < V ){ // σε χρόνο O( V ) // Προχωρούμε στον επόμενο κόμβο u=minvertex(v); // Άπληστη επιλογή σε χρόνο O( V ) } // Ενημέρωση αποστάσεων γειτόνων προς Α για κάθε γείτονα v του u { if (distance[v] > distance[u] + w(u,v)) distance[v] = distance[u] + w(u,v); } count++; } Συνολικός Χρόνος Εκτέλεσης: O( V 2 )

ΕΠΛ23 Δομές Δεδομένων και Αλγόριθμοι 2 Dijkstra για εύρεση του Βραχύτερου Μονοπατιού Αν εκτός από το μήκος του μονοπατιού μας ενδιαφέρει και το ακριβές μονοπάτι (οι κόμβοι του) τότε μπορούμε να ακολουθήσουμε την ίδια βασική ιδέα με την εξής προσθήκη Για κάθε κορυφή αποθηκεύουμε σε ένα πίνακα P, τον γείτονα που θα μας δώσει το βραχύτερο μονοπάτι προς τον κόμβο εκκίνησης. Σε αυτή την περίπτωση μπορούμε με τον τερματισμό του αλγόριθμου να κατασκευάσουμε από τον πίνακα P το μέγιστο μονοπάτι από τον κόμβο εκκίνησης προς κάποιον άλλο κόμβο Χ

Αλγόριθμος Dijkstra για εύρεση Βραχ. Μονοπατιού 9 Α D 8 6 B E 4 F C Εκτέλεση S d(a) d(b) d(c) d(d) d(e) d(f) S= 0,-,-,-,-,-,- 2 S={A} 0,- 8,Α 9,Α 6,Α 3 S={A,E} 0,- 7,Ε 7,Ε 6,Α 0,Ε 4 S={A,E,B} 0,- 7,Ε 2,Β 7,Ε 6,Α 8,Β S={A,E,B,D} 0,- 7,Ε 2,Β 7,Ε 6,Α 8,Β 6 S={A,E,B,D,F} 0,- 7,Ε 9,F 7,Ε 6,Α 8,Β 7 S={A,E,B,D,F, C} 0,- 7,Ε 9,F 7,Ε 6,Α 8,Β Χ Κορυφές που έχουµε επισκεφθεί (visited=) Επιλογή της ελάχιστης απόστασης Μείωση από την προηγούµενη απόσταση ΕΠΛ23 Δομές Δεδομένων και Αλγόριθμοι 3

ΕΠΛ23 Δομές Δεδομένων και Αλγόριθμοι 4 Υλοποίηση του Αλγόριθμου Dijkstra // A: Σημείο Εκκίνησης. G(V,E): Ο Γράφος dijkstra( G(V,E), vertex Α){ distance[ V ]={ }; // Απόσταση κορυφής i από κορυφή Α visited[ V ]={}; // Σημειώνει αν περάσαμε η όχι από κορυφή shortest[ V ]={}; // Σημειώνει το βραχύτερο μονοπάτι count = 0; // Μετρητής κορυφών που επισκεφθήκαμε // Αρχικοποίηση σημείου εκκίνησης distance[a]=0; visited[a]=; } while (count < V ){ // σε χρόνο O( V ) // Προχωρούμε στον επόμενο κόμβο u=minvertex(v); // Άπληστη επιλογή σε χρόνο O( V ) // Ενημέρωση αποστάσεων γειτόνων προς Α για κάθε γείτονα v του u { if (distance[v] > distance[u] + w(u,v)) { distance[v] = distance[u] + w(u,v); shortest[v] = u; } } count++; }

ΕΠΛ23 Δομές Δεδομένων και Αλγόριθμοι Απόδειξη ορθότητας Θεώρημα Όταν μια κορυφή u μπαίνει στο S, τότε d[u] = w(s,u). Απόδειξη Υποθέτουμε, για να φτάσουμε σε αντίφαση, ότι η u είναι η πρώτη κορυφή η οποία, κατά την εκτέλεση του αλγόριθμου, μπαίνοντας στο S έχει d[u] μεγαλύτερο (προσέξτε Λήμμα 2) από το βάρος του βραχύτερου μονοπατιού μεταξύ της u και της s, δηλ., d[u] > w(s,u). Έστω y η `πρώτη κορυφή στο V- S που ανήκει στο βραχύτερο μονοπάτι από την s στη u. Aφού η x μπήκε στο S πριν από την u, d[x]=w(s,x). Επίσης, με την εισαγωγή του x στο S, το d[y]=d[x]+w(x,y), το οποίο είναι το κόστος του υπομονοπατιού στο σχήμα.

Απόδειξη ορθότητας Αφού το μονοπάτι από τo s στο u, είναι βραχύτερο, τότε από τη δομή βέλτιστης λύσης συνεπάγεται ότι το υπομονοπάτι s x y από το s στο y είναι επίσης βραχύτερο. Άρα d[y] = w(s,y). Έτσι: d[u] > w(s,u) (αρχική υπόθεση) = w(s,y) + w(y,u) (δομή βέλτιστης λύσης) = d[y] + w(y,u) (d[y] = w(s,y)) d[y] (τα κόστα είναι 0) Αφού d[u]>d[y], ο αλγόριθμος θα διάλεγε και θα εισήγαγε τη y στο S και όχι τη u. Αντίφαση!! ΕΠΛ23 Δομές Δεδομένων και Αλγόριθμοι 6 Λήμμα 2 Καθ όλη τη διάρκεια του αλγόριθμου d[u] w(s,u). Η απόδειξη είναι παρόμοια με αυτή του Λήμματος.

Μονοπάτια Εuler (Παράδειγμα Εφαρμογής κατά βάθους διερεύνησης) Σπαζοκεφαλιά: μπορούμε να δημιουργήσουμε τα πιο κάτω σύνολα γραμμών ζωγραφίζοντας κάθε γραμμή ακριβώς μια φορά χωρίς να σηκώσουμε την πένα από το χαρτί; ΕΠΛ23 Δομές Δεδομένων και Αλγόριθμοι 7 Tο πρόβλημα μπορεί να μετατραπεί σε πρόβλημα γράφων: Κτίζουμε γράφο G του οποίου κόμβοι είναι τα σημεία όπου διασταυρώνονται γραμμές του σχεδίου και ακμή μεταξύ δύο κόμβων υπάρχει αν υπάρχει γραμμή μεταξύ των αντίστοιχων σημείων του σχεδίου.

ΕΠΛ23 Δομές Δεδομένων και Αλγόριθμοι 8 Μονοπάτια Εuler Το πρόβλημα τώρα είναι να διακριβώσουμε την ύπαρξη μονοπατιού που περνά από κάθε ακμή ακριβώς μια φορά. Τέτοια μονοπάτια ονομάζονται μονοπάτια Εuler, από το μαθηματικό Euler o οποίος έλυσε το πρόβλημα το 732. Ένας γράφος με n κόμβους έχει μονοπάτι Euler αν και μόνο αν. είναι συνεκτικός, 2. τουλάχιστον n- 2 από τους κόμβους του έχουν Degree mod 2 = 0 όπου Degree ενός κόμβου v είναι ο αριθμός των ακμών που ξεκινούν απ αυτόν. H δεύτερη ιδιότητα οφείλεται στο ότι για όλους εκτός από τον πρώτο και τον τελευταίο κόμβο κάθε φορά που το μονοπάτι μπαίνει σε ένα κόμβο θα πρέπει και να βγει. Πόσα μονοπάτια Euler έχει ένας γράφος;

Εύρεση Μονοπατιού Εuler Πως μπορούμε να βρούμε μονοπάτια Euler; Υπάρχει αλγόριθμος βασισμένος σε DFS ο οποίος πετυχαίνει το στόχο σε χρόνο γραμμικό. Έστω ότι γνωρίζουμε την ύπαρξη μονοπατιού Euler σε ένα γράφο. Εφαρμόζουμε τα εξής βήματα:. διαλέγουμε μια από τις κορυφές για τις οποίες Degree mod 2 = αν τέτοια κορυφή υπάρχει, διαφορετικά οποιαδήποτε άλλη κορυφή. Ποιες είναι υποψήφιες κορυφές εκκίνησης στον γράφο στα δεξιά; ΕΠΛ23 Δομές Δεδομένων και Αλγόριθμοι 9 2. Εφαρμόζουμε κατά βάθος διερεύνηση μέχρις ότου να μην μπορούμε να προχωρήσουμε. Έστω ότι παίρνουμε το μονοπάτι: s = e...e n e2 e e e3 e4

Εύρεση Μονοπατιού Εuler (συν.) 3. Bρίσκουμε την πρώτη ακμή e =(u,v) στο μονοπάτι s στην οποία ο αρχικός κόμβος, u, έχει παιδιά τα οποία δεν έχουν ήδη εξερευνηθεί και από εκεί ξεκινούμε DFS διερεύνηση στο μέρος του γράφου που παραμένει ανεξερεύνητο. ΕΠΛ23 Δομές Δεδομένων και Αλγόριθμοι 20 e2 e e e3 e4 4. Έστω ότι λαμβάνουμε το μονοπάτι s. Προσθέτουμε το s στο s ως εξής: s = e...e i s' e i... e n s e4. Επαναλαμβάνουμε το βήμα 3 μέχρις ότου να εξερευνηθεί ολόκληρος ο γράφος και επιστρέφουμε το μονοπάτι s.

ΕΠΛ23 Δομές Δεδομένων και Αλγόριθμοι 2 Άσκηση: Εκτελέστε τον αλγόριθμο του Dijkstra A 8 3 E B 6 4 C 2 2 4 F D Κορυφές που έχουµε επισκεφθεί (visited=) Επιλογή της ελάχιστης απόστασης Εκτέλεση S d(a) d(b) d(c) d(d) d(e) d(f) 0,-,-,-,-,-,- Χ Μείωση από την προηγούµενη απόσταση