Αλγόριθμοι και πολυπλοκότητα Τα συντομότερα μονοπάτια(shortest Paths)

Σχετικά έγγραφα
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Αλγόριθμοι και πολυπλοκότητα Περιήγηση Πανεπιστημίων

Αλγόριθμοι και πολυπλοκότητα Συγχωνευτική Ταξινόμηση

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 2: Εφαρμογές Δικτυωτής Ανάλυσης (1 ο Μέρος)

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

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

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

Αλγόριθμοι και πολυπλοκότητα Οριζόντια διερεύνηση

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

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

Διοικητική Λογιστική

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

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

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

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Ψηφιακή Επεξεργασία Εικόνων

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

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

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

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

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

Αλγόριθμοι και πολυπλοκότητα Μελανέρυθρα δεντρα

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Μηχανολογικό Σχέδιο Ι

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Αλγόριθμοι και πολυπλοκότητα Ταχυταξινόμηση (Quick-Sort)

Εισαγωγή στην Διοίκηση Επιχειρήσεων

ΗΛΕΚΤΡΟΝΙΚΗ ΙIΙ Ενότητα 6

Βάσεις Περιβαλλοντικών Δεδομένων

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4: ΑΝΑΠΑΡΑΣΤΑΣΗ ΔΕΔΟΜΕΝΩΝ - ΔΕΝΤΡΑ

Διοικητική Λογιστική

Κβαντική Επεξεργασία Πληροφορίας

Βάσεις Περιβαλλοντικών Δεδομένων

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Ιστορία της μετάφρασης

Αλγόριθμοι και πολυπλοκότητα Minimum Spanning Trees

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

Ψηφιακή Επεξεργασία Εικόνων

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Εισαγωγή στους Η/Υ. Ενότητα 2β: Αντίστροφο Πρόβλημα. Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους (1)

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

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Κοινωνία & Υγεία Υγεία Πρόληψη Προαγωγή υγείας: Βαθμίδες πρόληψης

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Κβαντική Επεξεργασία Πληροφορίας

Ψηφιακή Επεξεργασία Εικόνων

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Μυελού των Οστών Ενότητα #1: Ερωτήσεις κατανόησης και αυτόαξιολόγησης

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

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 8: ΧΡΗΣΗ ΔΟΜΩΝ ΔΕΝΤΡΟΥ ΚΑΙ ΣΩΡΟΥ ΓΙΑ ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗΣ ΑΛΓΟΡΙΘΜΟΣ HEAPSORT

Κβαντική Επεξεργασία Πληροφορίας

Βέλτιστος Έλεγχος Συστημάτων

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

Τεχνικό Σχέδιο - CAD

Διδακτική Πληροφορικής

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 3: ΑΝΑΠΑΡΑΣΤΑΣΗ ΔΕΔΟΜΕΝΩΝ - ΓΡΑΦΗΜΑΤΑ

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Άσκηση - Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων

Εισαγωγή στη Δικτύωση Υπολογιστών

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

Διαχείριση Πολιτισμικών Δεδομένων

Τεχνικό Σχέδιο - CAD. Τόξο Κύκλου. Τόξο Κύκλου - Έλλειψη. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Τεχνικό Σχέδιο - CAD

Θέματα Εφαρμοσμένης. Ενότητα 14.2: Η ψήφος στα πρόσωπα. Θεόδωρος Χατζηπαντελής Τμήμα Πολιτικών Επιστημών ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

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

Εισαγωγή στην Διοίκηση Επιχειρήσεων

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

Γενικά Μαθηματικά Ι. Ενότητα 15: Ολοκληρώματα Με Ρητές Και Τριγωνομετρικές Συναρτήσεις Λουκάς Βλάχος Τμήμα Φυσικής

Διδακτική της Πληροφορικής

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Διοίκηση Εξωτερικής Εμπορικής Δραστηριότητας

Διοίκηση Επιχειρήσεων

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

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

ΗΛΕΚΤΡΟΝΙΚΗ IΙ Ενότητα 6

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

ΗΛΕΚΤΡΟΝΙΚΗ IΙ Ενότητα 3

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

Αλγόριθμοι και πολυπλοκότητα Η Άπληστη Μέθοδος

Transcript:

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Αλγόριθμοι και πολυπλοκότητα Τα συντομότερα μονοπάτια(shortest Paths) Ιωάννης Τόλλης Τμήμα Επιστήμης Υπολογιστών

Τα συντομότερα Μονοπάτια(Shortest Paths) A 2 7 2 1 B C D 2 E F 3 Shortest Paths 1

Περίληψη και ανάγνωση Βεβαρημένοι Γράφοι Πρόβλημα συντομότερων μονοπατιών Ιδιότητες συντομότερων μονοπατιών Αλγόριθμος του Dijkstra Αλγόριθμος Χαλάρωση ακμών Ο Αλγόριθμος του Bellman-Ford Συντομότερα μονοπάτια σε dags Συντομότερα μονοπάτια για όλα τα ζευγάρια Shortest Paths 2

Βεβαρημένοι Γράφοι Σε ένα βεβαρημένο γράφο, κάθε ακμή έχει μία αριθμητική τιμή που σχετίζεται με αυτή, λέγεται το βάρος της ακμής Τα βάρη των ακμών μπορεί να αναπαριστούν, αποστάσεις, κόστη, κτλ. Παράδειγμα: Σε ένα γράφο πτήσεων, το βάρος μίας ακμής αναπαριστά την απόσταση σε χιλιόμετρα ανάμεσα σε σημεία τέλους αεροδρομίων HNL 2 SFO 337 LAX 13 173 1233 ORD 2 DFW 137 9 112 LGA 12 199 PVD MIA 12 Shortest Paths 3

Το πρόβλημα του συντομότερου μονοπατιού Δεδομένου ενός βεβαρημένου γράφου και δύο κορυφών u και v, θέλουμε να βρούμε ένα μονοπάτι με ελάχιστο συνολικό βάρος μεταξύ u και v. Μήκος ενός μονοπατιού είναι το άθροισμα των βαρών των ακμών του. Παράδειγμα: Συντομότερο μονοπάτι μεταξύ Providence και Honolulu Εφαρμογές Δρομολόγηση πακέτων διαδικτύου Κράτηση πτήσεων Οδηγίες οδήγησης PVD ORD HNL 2 SFO 337 LAX 13 173 1233 2 DFW 137 9 112 LGA 12 199 MIA Shortest Paths 12

Ιδιότητες συντομότερου μονοπατιού Ιδιότητα 1: Ένα υπομονοπάτι του συντομότερου μονοπατιού είναι από μόνο του ένα συντομότερο μονοπάτι Ιδιότητα 2: Υπάρχει ένα δέντρο συντομότερα μονοπάτια από μία αρχική κορυφή σε όλες τις άλλες κορυφές Παράδειγμα: Δέντρο συντομότερων μονοπατιών από την Πρόνοια( Providence ) HNL 2 SFO 337 LAX 13 173 1233 ORD 2 DFW 137 9 112 LGA 12 199 PVD MIA Shortest Paths 12

Ο Αλγόριθμος του Dijkstra Ηαπόστασημίας κορυφής v από μία κορυφή s είναι το μήκος ενός συντομότερου μονοπατιού μεταξύ s και v Ο αλγόριθμος του Dijkstra υπολογίζει τις αποστάσεις όλων των κορυφών από μία δοθείσα αρχική κορυφή s Υποθέσεις: Ο γράφος είναι συνδεδεμένος Οι ακμές δεν έχουν κατεύθυνση Τα βάρη των ακμών είναι μη αρνητικά Φτιάχνουμε ένα σύννεφο από κορυφές, ξεκινώντας από την s και τελικά καλύπτοντας όλες τις ακμές Κρατάμε για κάθε κορυφή v μία ετικέτα d(v) που αναπαριστά την απόσταση της v από την s στον υπογράφο που αποτελείται από το σύννεφο και τις παρακείμενες κορυφές του Σε κάθε βήμα Προσθέτουμε στο σύννεφο την κορυφή u έξω από το σύννεφο με την μικρότερη ετικέτα απόστασης, d(u) Ανανεώνουμε τις ετικέτες των παρακείμενων κορυφών της u Shortest Paths 6

Χαλάρωση ακμών Σκεφτείτε μία ακμή e = (u,z) όπως Η u είναι η κορυφή που προστέθηκε πιο πρόσφατα στο σύννεφο Η z δεν είναι στο σύννεφο s d(u) = u e 1 d(z) = 7 z Η χαλάρωση της ακμής e ανανεώνει την απόσταση d(z) ως εξής : d(z) min{d(z),d(u) + weight(e)} s d(u) = u e 1 d(z) = 6 z Shortest Paths 7

Παράδειγμα B A 2 7 2 1 C D B A 2 7 2 1 C D 3 2 E F 2 E F B A 2 7 2 1 C D 3 B 7 A 2 7 2 1 C D 3 11 2 E F 2 E F Shortest Paths

Παράδειγμα (συνέχεια) B 7 A 2 7 2 1 C D 3 2 E F B 7 A 2 7 2 1 C D 3 2 E F Shortest Paths 9

Ο Αλγόριθμος του Dijkstra Μία ουρά προτεραιότητας κρατάει τις κορυφές έξω από το σύννεφο Κλειδί: απόσταση Στοιχείο: κορυφή Μέθοδοι βασισμένες στον εντοπισμό insert(k,e) επιστρέφει έναν locator replacekey(l,k) αλλάζει το κλειδί ενός στοιχείου Κρατάμε δύο ετικέτες για κάθε κορυφή: Την απόσταση (ετικέτα d(v)) Τον locator σε ουρά προτεραιότητας Algorithm DijkstraDistances(G, s) Q new heap-based priority queue for all v G.vertices() if v = s setdistance(v, ) else setdistance(v, ) l Q.insert(getDistance(v), v) setlocator(v,l) while Q.isEmpty() u Q.removeMin() for all e G.incidentEdges(u) { relax edge e } z G.opposite(u,e) r getdistance(u) + weight(e) if r < getdistance(z) setdistance(z,r) Q.replaceKey(getLocator(z),r) Shortest Paths 1

Ανάλυση Λειτουργίες γράφου Η μέθοδος incidentedges καλείται μία φορά once για κάθε κορυφή Λειτουργίες ετικετών Θέτουμε/παίρνουμε τις ετικέτες της απόσταση και του locator της κορυφής zo(deg(z)) φορές θέτοντας/παίρνοντας μία ετικέτα κοστίζει O(1) χρόνο Λειτουργίες της ουράς προτεραιότητας Κάθε κορυφή εισάγεται μία φορά και διαγράφεται μία φορά από ουράς προτεραιότητας, όπου κάθε εισαγωγή και εξαγωγή κοστίζει O(log n) χρόνο Το κλειδί της κορυφής στην ουρά προτεραιότητας τροποποιείται το πολύ deg(w) φορές, όπου κάθε αλλαγή κλειδιού παίρνει O(log n)χρόνο Ο αλγόριθμος του Dijkstra τρέχει σε O((n + m) log n) χρόνο υπό τον όρο ότι η γραφική παράσταση αντιπροσωπεύεται από τη δομή καταλόγων γειτνίασης Θυμίζουμε ότι Σ v deg(v) = 2m Ο χρόνος εκτέλεσης μπορεί επίσης να εκφραστεί σαν O(m log n) καθώς ο γράφος είναι συνδεδεμένος Shortest Paths 11

Επέκταση Χρησιμοποιώντας την πρότυπη μέθοδο σχεδίασης, μπορούμε να επεκτείνουμε τον αλγόριθμο του Dijkstra ώστε να επιστρέφει ένα δέντρο συντομότερων μονοπατιών από την αρχική κορυφή σε όλες τιςάλλεςκορυφές Κρατάμε με κάθε κορυφή μια τρίτη ετικέτα: Πατρικήακμήστο δέντρο συντομότερου μονοπατιού Στο βήμα χαλάρωσης ακμών, ανανεώνουμε την πατρική ετικέτα Algorithm DijkstraShortestPathsTree(G, s) for all v G.vertices() setparent(v, ) for all e G.incidentEdges(u) { χαλάρωση ακμής e } z G.opposite(u,e) r getdistance(u) + weight(e) if r < getdistance(z) setdistance(z,r) setparent(z,e) Q.replaceKey(getLocator(z),r) Shortest Paths 12

Γιατί ο αλγόριθμος του Dijkstra δουλεύει Ο αλγόριθμος του Dijkstra βασίζεται στην άπληστη μέθοδο. Προσθέτει κορυφές αυξάνοντας την απόσταση. Υποθέστε ότι δεν βρίσκει όλες τις μικρότερες αποστάσεις. Έστω F η πρώτη λαθεμένη κορυφή που επεξεργάζεται ο αλγόριθμος. Όταν ο προηγούμενος κόμβος, D, στο άληθινό συντομότερο μονοπάτι είχε λειφθεί υπόψη, η απόστασή του ήταν σωστή. Αλλά η ακμή (D,F) ήταν χαλαρωμένη εκείνη τη στιγμή! Έτσι, εφόσον d(f)>d(d), Ηαπόσταση της F δεν μπορεί να είναι λάθος. Αυτό ήταν, δεν υπάρχει λάθος κορυφή. B 7 A 2 7 2 1 C 2 E F D 3 Shortest Paths 13

Γιατί δεν δουλεύει για Αρνητικά βάρη ακμών Ο αλγόριθμος του Dijkstra βασίζεται στην άπληστη μέθοδο. Προσθέτει κορυφές αυξάνοντας την απόσταση. Αν ένας κόμβος με αρνητική συναφή ακμή επρόκειτο να προτεθεί αργά στο σύννεφο, θα μπορούσε να «βρωμίσει» τις αποστάσεις για τις κορυφές ήδη στο σύννεφο. B 7 A 6 7 1 C - 9 2 E F D Η πραγματική απόσταση της C είναι 1, αλλά είναι ήδη στο σύννεφο με d(c)=! Shortest Paths 1

Ο αλγόριθμος του Bellman-Ford Δουλεύει ακόμα και με αρνητικά βάρη ακμών Πρέπει να υποθέσουμε οτι οι ακμές είναι κατευθυνόμενες (ειδάλλως θα έχουμε αρνητικά βεβαρημένους κύκλους) Ηεπανάληψη( το Iteration) i βρίσκει όλα τα συντομότερα μονοπάτια που χρησιμοποιούν i ακμές. Χρόνος εκτέλεσης: O(nm). Μπορούμε να επεκταθούμε για να ανιχνεύσουμε έναν αρνητικά βεβαρημένο κύκλο αν υπάρχει πώς? Algorithm BellmanFord(G, s) for all v G.vertices() if v = s setdistance(v, ) else setdistance(v, ) for i 1 to n-1 do for each e G.edges() { χαλάρωση ακμής e } u G.origin(e) z G.opposite(u,e) r getdistance(u) + weight(e) if r < getdistance(z) setdistance(z,r) Shortest Paths 1

Παράδειγμα Bellman-Ford Οι κόμβοι ονομάζονται με τις d(v) τιμές τους 7 1 7 1 7 1-1 7 1-1 1 6 9 1 9 Shortest Paths 16

Αλγόριθμος DAG-based Δουλεύει ακόμα και με αρνητικά βάρη ακμών Χρησιμοποιεί τοπολογική σειρά Δεν χρησιμοποιεί φανταχτερές δομές δεδομένων Είναι πολύ γρηγορότερος από τον αλγόριθμο του Dijkstra Χρόνος εκτέλεσης: O(n+m). Algorithm DagDistances(G, s) for all v G.vertices() if v = s setdistance(v, ) else setdistance(v, ) Perform a topological sort of the vertices for u 1 to n do {σε τοπολογική σειρά} for each e G.outEdges(u) { χαλάρωση ακμής e } z G.opposite(u,e) r getdistance(u) + weight(e) if r < getdistance(z) setdistance(z,r) Shortest Paths 17

1 Παράδειγμα DAG 3 1 7 1 - Οι κόμβοι ονομάζονται με τις d(v) τιμές τους 2 6 3 1 7 2 1-6 3 1 7 1 2-1 7 6-1 3 7 1-1 7 6 Shortest Paths (two steps) 1 1 2-1

Συντομότερα μονοπάτια για όλα τα ζευγάρια Βρίσκει την απόσταση μεταξύ κάθε ζεγαριού κορυφών σε ένα βεβαρημένο κατευθυνόμενο γράφο G. Μπορούμε να κάνουμε n κλήσεις του αλγόριθμου του Dijkstra(αν δεν υπάρχουν αρνητικές ακμές), το οποίο παίρνει O(nmlog n) χρόνο. Επιπλέον, οι n κλήσεις του Bellman-Ford μπορούν να πάρουν O(n 2 m) χρόνο. Μπορούμε να επιτύχουμε O(n 3 ) χρόνο χρησιμοποιώντας δυναμικό προγραμματισμό (παρόμοιο με τον αλγόριθμο του Floyd- Warshall). Algorithm AllPair(G) {υποθέστε κορυφές 1,,n} for all vertex pairs (i,j) if i = j D [i,i] else if (i,j) is an edge in G D [i,j] weight of edge (i,j) else D [i,j] + for k 1 to n do for i 1 to n do for j 1 to n do D k [i,j] min{d k-1 [i,j], D k-1 [i,k]+d k-1 [k,j]} return D n Χρησιμοποιεί μόνο τις κορυφές που είναι αριθμημένες i 1,,k (υπολογίζει το βάρος αυτής της ακμής) Χρησιμοποιεί μόνο τις κορυφές που είναι αριθμημένες 1,,k-1 k Shortest Paths 19 j Χρησιμοποιεί μόνο τις κορυφές που είναι αριθμημένες 1,,k-1

Τέλος Ενότητας

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Κρήτης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.

Σημειώματα

Σημείωμα αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση, Όχι Παράγωγο Έργο. [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-nd/./ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί.

Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Κρήτης, Ιωάννης Τόλλης 21. «Αλγόριθμοι και πολυπλοκότητα. Τα συντομότερα μονοπάτια(shortest Paths)». Έκδοση: 1.. Ηράκλειο 21. Διαθέσιμο από τη δικτυακή διεύθυνση: https://opencourses.uoc.gr/courses/course/view.php?id=36

Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους.