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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ231: Δομές Δεδομένων και Αλγόριθμοι. Εαρινό Εξάμηνο Φροντιστήριο 10 ΛΥΣΕΙΣ

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ.

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

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

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

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

Διάλεξη 18: B-Δένδρα

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

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

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

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

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

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

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

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

Ελαφρύτατες διαδρομές

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

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

Διδάσκων: Κωνσταντίνος Κώστα

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

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

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

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

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

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

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

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

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

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

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

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

Μάθημα 21: Ουρές (Queues)

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

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

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

Εργαστήριο 2: Πίνακες

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

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 9: Άπληστοι Αλγόριθμοι. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

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

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

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

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

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

Θεωρία Γράφων Αλγόριθμοι BFS, Prim, Dijkstra, Bellman-Ford

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ.

HY335Α Δίκτυα Υπολογιστών Xειμερινό Εξάμηνο Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών. Routing Algorithms. Network Layer.

Συνδετικότητα γραφήματος (graph connectivity)

1 Το πρόβλημα της συντομότερης διαδρομής

Διδάσκων: Κωνσταντίνος Κώστα

4. ΔΙΚΤΥΑ

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

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

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

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

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

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

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

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

Διάλεξη 9: Αφηρημένοι Τύποι Δεδομένων. Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

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

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

Δομές Δεδομένων Ενότητα 6

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

4η Γραπτή Ασκηση Αλγόριθμοι και Πολυπλοκότητα CoReLab ΣΗΜΜΥ 3/2/2019 CoReLab (ΣΗΜΜΥ) 4η Γραπτή Ασκηση 3/2/ / 37

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 4 Σωροί, Γράφοι

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

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

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

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

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

Λυσεις προβλημάτων τελικής φάσης Παγκύπριου Μαθητικού Διαγωνισμού Πληροφορικής 2007

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

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

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

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

Transcript:

Διάλεξη 23: Βραχύτερα Μονοπάτια σε Γράφους Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Βραχύτερα Μονοπάτια σε γράφους Ο αλγόριθμος Dijkstra για εύρεση της βραχύτερης απόστασης Ο αλγόριθμος Dijkstra για εύρεση του βραχύτερου μονοπατιού & απόστασης Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. 22-

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

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

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

Παράδειγμα Εκτέλεσης Αλγορίθμου Dijkstra Κορυφή Εκκίνησης: A dist(a,e) + dist(e,b) A 9 6 8 5 B Ε Γ Πίνακας ο οποίος σημειώνει για κάθε κορυφή την πιο κοντινή (συνολική) απόσταση από τον Α Δ 4 Ζ 2 3 4 5 6 7 S d(a) d(b) d(γ) d(δ) d(ε) d(ζ) S= 0 S={A 0 8 9 6 S={A,E 0 7 7 6 0 S={A,E,B 0 7 2 7 6 8 S={A,E,B,Δ 0 7 2 7 6 8 S={A,E,B,Δ,Ζ 0 7 9 7 6 8 S={A,E,B,Δ,Ζ, Γ 0 7 9 7 6 8 Αυτό το χρώμα δηλώνει ποιες κορυφές χρησιμοποιήθηκαν στο παρόν στάδιο. μείωση 22-6

Ανασκόπηση του Αλγόριθμου Dijkstra Δηλώνουμε τον πίνακα visited[ V ], o οποίος αποθηκεύει τις κορυφές του G, για τις οποίες το μήκος του βραχύτερου μονοπατιού έχει υπολογισθεί (δηλαδή από τις οποίες περάσαμε ήδη). Επίσης διατηρεί τον πίνακα distance[ V ], o οποίος φυλάει την ανά πάσα στιγμή, την μικρότερη απόσταση οποιουδήποτε κόμβου Χ, από τον κόμβο Α (από την οποία ξεκινήσαμε). Αρχικά visited[ V ]= και distance[ V ] =. Ο αλγόριθμος διαλέγει άπληστα την κοντινότερη κορυφή B (ως προς την κορυφή Α), που δεν έχει μέχρι στιγμής τύχει επεξεργασίας. Μετά ελέγχει αν για οποιοδήποτε γείτονα Γ της Β, αν η χρήση της ακμής (Β,Γ) μπορεί να δημιουργήσει βραχύτερο μονοπάτι Α-Γ. Γ A...... B 22-7

Υλοποίηση του Αλγόριθμου 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); v distance[v] count++; w(u,v) A...... u Συνολικός Χρόνος Εκτέλεσης: O( V 2 ) distance[u] ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. 22-8 Νέο μονοπάτι

Η βοηθητική συνάρτηση minvertex H βοηθητική διαδικασία minvertex επιστρέφει την κορυφή j η οποία είναι η πιο κοντινή (μεταξύ των κορυφών που δεν ανήκουν ακόμα στο μονοπάτι). Δηλαδή όμοια με την minvertex του αλγορίθμου Prim: // visited[ V ] : Σημειώνει από ποιες κορυφές περάσαμε // distance[ V ] : // Απόσταση κορυφής i από κορυφή Α vertex minvertex(int visited[], int distance[]){ min = ; for (i=0; i< V ; i++) { if (visited[i] == ) continue; if (distance[i] < distance[min]) min = i; S d(a) d(b) d(γ) d(δ) d(ε) d(ζ) S= 0 S={A 0 8 9 6 S={A,E 0 7 7 6 0 S={A,E,B 0 7 2 7 6 8 S={A,E,B,Δ 0 7 2 7 6 8 S={A,E,B,Δ,Ζ 0 7 9 7 6 8 S={A,E,B,Δ,Ζ, Γ 0 7 9 7 6 8 return min; H minvertex επιστρέφει το Β (θα μπορούσε να επέστρεφε και το Δ) Με τη χρήση σωρού μπορούσε να υλοποιηθεί σε Ο()-χρόνο η ανάκτηση ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. 22-9

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

Παράδειγμα Κτισίματος του Μονοπατιού A 9 6 Δ 8 5 B Ε 4 Γ Ζ S d,p(a) d,p(b) d,p(γ) d,p(δ) d,p(ε) d,p(ζ) S= 0, -, -, -, -, -, - S={A 0, - 8, Α, - 9, Α 6, Α, - S={A,E 0, - 7, Ε, - 7, Ε 6, Α 0, Ε S={A,E,B 0, - 7, E 2, B 7, E 6, A 8, B S={A,E,B,Δ 0, - 7, E 2, B 7, E 6, A 8, B S={A,E,B,Δ,Ζ 0, - 7, E 9, Z 7, E 6, A 8, B S={A,E,B,Δ,Ζ, Γ 0, - 7, E 9, Z 7, E 6, A 8, B Πως μπορούμε τώρα να βρούμε το μικρότερο μονοπάτι από το Α προς Ζ; ΕΠΛ 035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. 22-

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