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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΠΛ 232: Αλγόριθµοι και Πολυπλοκότητα. Κατ οίκον Εργασία 2A Σκελετοί Λύσεων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4. ΔΙΚΤΥΑ

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

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

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

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

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

Δυναµικός Προγραµµατισµός (ΔΠ)

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 19: Αλγόριθμοι ΤαξινόμησηςII. Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

Γράφοι. Ορολογία. Ορισµός: G = (V, E) όπου. Ορολογία (συνέχεια) γράφος ή γράφηµα (graph) V:ένα σύνολο E:µια διµελής σχέση στο V

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

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

Κεφάλαιο 1. Πέντε Αντιπροσωπευτικά Προβλήματα. Έκδοση 1.4, 30/10/2014. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

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

Τομές Γραφήματος. Γράφημα (μη κατευθυνόμενο) Συνάρτηση βάρους ακμών. Τομή : Διαμέριση του συνόλου των κόμβων σε δύο μη κενά σύνολα

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

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

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

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

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

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

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

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

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

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

HY118- ιακριτά Μαθηµατικά

u v 4 w G 2 G 1 u v w x y z 4

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

6η Διάλεξη Διάσχιση Γράφων και Δέντρων

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

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

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

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

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

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

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

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

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

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

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

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

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

Στοιχεία Θεωρίας Γραφηµάτων (3)

Απαρίθµηση Μονοπατιών. Στοιχεία Θεωρίας Γραφηµάτων (3) Μονοπάτια και Κυκλώµατα Euler. Ορέστης Τελέλης

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

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

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

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

Transcript:

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

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

Η δομή της βέλτιστης λύσης Λήμμα Έστω κατευθυνόμενος γράφος με βάρη G=(V,) και έστω p u v... v k = το βραχύτερο μονοπάτι μεταξύ των κόμβων u και v. Τότε κάθε υπο-μονοπάτι του p είναι βραχύτερο. v ς δούμε την λογική πίσω από το Λήμμα. 6 ΕΠΛ03 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 3

νασκόπηση του λγόριθμου ijkstra Έστω ότι θέλουμε να βρούμε το/α βραχύτερα μονοπάτια από κάποιο κόμβο Aπρος όλους τους υπόλοιπους κόμβους σε κάποιο γράφο G(V,) 6. Ποιο είναι το κόστος του βραχύτερου μονοπατιού από προς ; 2. Ποιο είναι το ακριβές μονοπάτι; Ο αλγόριθμος του ijkstra είναι ένας single source shortest path algorithm(δηλαδή αναφέρεται συγκεκριμένα σε μια κορυφήεκκίνησης) για γράφους με μη-αρνητικά βάρη. ΕΠΛ03 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

ρνητικά Βάρη στον λγόριθμο του ijkstra Σημειώστε ότι όταν υπάρχουν αρνητικά βάρη, τότε είναι δυνατό αυτά να μας θέσουν την μικρότερη απόσταση, αναδρομικά, ίση με -. Παράδειγμα: 6-20 Ποια είναι η βραχύτερη απόσταση μεταξύ (,Γ); Πρώτη Εκτέλεση : => Δεύτερη Εκτέλεση -: =>=>=>=> Τρίτη Εκτέλεση -: =>=>=>=>=>=>Β=>.. ΕΠΛ03 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

Παράδειγμα Εκτέλεσης λγορίθμου ijkstra / Πάρε σαν παράμετρο κάποια κορυφή, έστω η κορυφή ρχικοποίησε ένα πίνακα distanceκαι θέσε την απόσταση όλων των κορυφών από την κορυφή είναι ίση με -. Εκτέλεση S d(a) d() d() d() d() d() S= 0 ρχικοποίησε ένα πίνακα visited όπου θα σημειώνει από ποιες κορυφές έχουμε περάσει ήδη 6 Εκτέλεση S v(a) v() v() v() v() v() S= 0 0 0 0 0 ΕΠΛ03 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 6

Παράδειγμα Εκτέλεσης λγορίθμου ijkstra 2/ ρχικοποίησε τον πίνακα distance με τις ακμές της κορυφής εισόδου. 6 Εκτέλεση S d(a) d() d() d() d() d() S= 0 2 S={A} 0 6 Σε κάθε βήμα του αλγόριθμου, επίλεξε«άπληστα» την κορυφή με την ελάχιστη απόστασηπου δεν έχεις επισκεφθεί Κορυφές που έχουµε επισκεφθεί (visited=) ΕΠΛ03 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 7

Παράδειγμα Εκτέλεσης λγορίθμου ijkstra 3/ 6 Εκτέλεση S d(a) d() d() d() d() d() S= 0 2 S={A} 0 6 3 S={A,} 0 7 7 6 0 Χ Κορυφές που έχουµε επισκεφθεί (visited=) Επιλογή της ελάχιστης απόστασης Μείωση από την προηγούµενη απόσταση Η Ε (απόσταση=6) έχει ακμές με Β,(6+=7) και (6+=0) φού οι αποστάσεις αυτές είναι μικρότερες από τις υπάρχουσες τότε ενημερώνεται ο πίνακας ανάλογα. ΕΠΛ03 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

Παράδειγμα Εκτέλεσης λγορίθμου ijkstra / 6 Εκτέλεση S d(a) d() d() d() d() d() S= 0 2 S={A} 0 6 3 S={A,} 0 7 7 6 0 S={A,,} 0 7 2 7 6 S={A,,,} 0 7 2 7 6 6 S={A,,,,} 0 7 7 6 7 S={A,,,,, } 0 7 7 6 Χ Κορυφές που έχουµε επισκεφθεί (visited=) Επιλογή της ελάχιστης απόστασης Μείωση από την προηγούµενη απόσταση ΕΠΛ03 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

Υλοποίηση του λγόριθμου ijkstra // A: Σημείο Εκκίνησης. G(V,): Ο Γράφος dijkstra( G(V,), 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 ) ΕΠΛ03 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 0

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

λγόριθμος ijkstra για εύρεση Βραχ. Μονοπατιού 6 Εκτέλεση S d(a) d() d() d() d() d() S= 0,-,-,-,-,-,- 2 S={A} 0,-,, 6, 3 S={A,} 0,- 7,Ε 7,Ε 6, 0,Ε S={A,,} 0,- 7,Ε 2,Β 7,Ε 6,,Β S={A,,,} 0,- 7,Ε 2,Β 7,Ε 6,,Β 6 S={A,,,,} 0,- 7,Ε, 7,Ε 6,,Β 7 S={A,,,,, } 0,- 7,Ε, 7,Ε 6,,Β Χ Κορυφές που έχουµε επισκεφθεί (visited=) Επιλογή της ελάχιστης απόστασης Μείωση από την προηγούµενη απόσταση ΕΠΛ03 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 2

Υλοποίηση του λγόριθμου ijkstra // A: Σημείο Εκκίνησης. G(V,): Ο Γράφος dijkstra( G(V,), 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++; } ΕΠΛ03 Δομές Δεδομένων και λγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 3