Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων

Σχετικά έγγραφα
Τεχνολογίες Υλοποίησης Αλγορίθµων

Τεχνολογίες Υλοποίησης Αλγορίθµων

Τεχνολογίες Υλοποίησης Αλγορίθµων

Τεχνολογίες Υλοποίησης Αλγορίθµων

Τεχνολογίες Υλοποίησης Αλγορίθµων

Ασκηση 1 [ ] Παράδοση : Τετάρτη , 13:00

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

Τεχνολογίες Υλοποίησης Αλγορίθµων

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

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

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

Αλγόριθμοι Eλάχιστα μονοπάτια

Τεχνολογίες Υλοποίησης Αλγορίθµων

Τεχνολογίες Υλοποίησης Αλγορίθµων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to

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

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

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

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

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

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

Ενότητα 7 Ουρές Προτεραιότητας

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

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

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

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

Βασικές Έννοιες Δοµών Δεδοµένων

Ενότητα 10 Γράφοι (ή Γραφήµατα)

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

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

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

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

Τεχνολογίες Υλοποίησης Αλγορίθµων

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

Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων

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

Τεχνολογίες Υλοποίησης Αλγορίθµων

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

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

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

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

Outline 1 Άσκηση 1: Εφαρμογές BFS DFS 2 Άσκηση 2: Μια Συνάρτηση Κόστους σε Κατευθυνόμενα Γραφήματα 3 Άσκηση 3: Ανάλυση Ασφάλειας 4 Άσκηση 4: Το Σύνολο

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

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

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

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

ΠΛΗ 20, 5 η ΟΣΣ: Θεωρία Γραφημάτων

Τεχνολογίες Υλοποίησης Αλγορίθµων

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

Δοµές Δεδοµένων. 2η Διάλεξη Αλγόριθµοι Ένωσης-Εύρεσης (Union-Find) Ε. Μαρκάκης. Βασίζεται στις διαφάνειες των R. Sedgewick K.

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

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

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

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

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

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

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

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

Ενότητα 7 Ουρές Προτεραιότητας

Ενότητα 5: Αλγόριθμοι γράφων και δικτύων

m 1 min f = x ij 0 (8.4) b j (8.5) a i = 1

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

Τεχνολογίες Υλοποίησης Αλγορίθµων

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

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

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

ιαφάνειες παρουσίασης #11

Γέφυρες σε Δίκτυα. Μας δίνεται ένα δίκτυο (κατευθυνόμενο γράφημα) αφετηριακός κόμβος. Γέφυρα του (με αφετηρία τον ) :

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

Βασική Εφικτή Λύση. Βασική Εφικτή Λύση

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

4η Γραπτή Ασκηση Αλγόριθμοι και Πολυπλοκότητα CoReLab ΣΗΜΜΥ 7 Φεβρουαρίου 2017 CoReLab (ΣΗΜΜΥ) 4η Γραπτή Ασκηση 7 Φεβρουαρίου / 38

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές

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

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

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

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

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

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

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

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου

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

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής

ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης

ΠΡΟΒΛΗΜΑΤΑ ΜΕΤΑΦΟΡΑΣ

Transcript:

Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Ενότητα 6 1 / 35

Ενότητα 6 - Συντοµότερες ιαδροµές Ι Συντοµότερες ιαδροµές Γενικά Αλγόριθµοι Συντοµότερων ιαδροµών και Υλοποιήσεις Κατευθυνόµενα Ακυκλικά Γραφήµατα Μη αρνητικά κόστη ακµών Αλγόριθµος Dijkstra: υλοποίηση & αξιολόγηση 2 / 35

Πρόβληµα Συντοµότερης ιαδροµής 3 / 35

Πρόβληµα Συντοµότερης ιαδροµής Κατευθυνόµενο γράφηµα G = (V, E) µε συνάρτηση κόστους c : E IR 3 / 35

Πρόβληµα Συντοµότερης ιαδροµής Κατευθυνόµενο γράφηµα G = (V, E) µε συνάρτηση κόστους c : E IR Κόστος c(p) διαδροµής p = [v 1, v 2,..., v k ] k 1 c(p) = c(v i, v i+1 ) i=1 3 / 35

Πρόβληµα Συντοµότερης ιαδροµής Κατευθυνόµενο γράφηµα G = (V, E) µε συνάρτηση κόστους c : E IR Κόστος c(p) διαδροµής p = [v 1, v 2,..., v k ] k 1 c(p) = c(v i, v i+1 ) i=1 εδοµένων δύο κορυφών v και w, να ϐρεθεί η διαδροµή από την v στην w µε το ελάχιστο κόστος ή απόσταση, που συµβολίζεται ως δ(v, w) 3 / 35

Πρόβληµα Συντοµότερης ιαδροµής 4 / 35

Πρόβληµα Συντοµότερης ιαδροµής { inf{c(p); p είναι µια v-w διαδροµή} δ(v, w) = +, αν v-w διαδροµή 4 / 35

Πρόβληµα Συντοµότερης ιαδροµής { inf{c(p); p είναι µια v-w διαδροµή} δ(v, w) = +, αν v-w διαδροµή s 0 1 2 3 s 0 1 1 2 1 1 0 1 + 0 4 / 35

Πρόβληµα Συντοµότερης ιαδροµής { inf{c(p); p είναι µια v-w διαδροµή} δ(v, w) = +, αν v-w διαδροµή s 0 1 2 3 s 0 1 1 2 1 1 0 1 + 0 Αρνητικός κύκλος C: c(c) < 0 4 / 35

Ιδιότητες Συντοµότερων ιαδροµών 5 / 35

Ιδιότητες Συντοµότερων ιαδροµών 1 µια v-w διαδροµή που περιέχει αρνητικό κύκλο ανν δ(v, w) = 5 / 35

Ιδιότητες Συντοµότερων ιαδροµών 1 µια v-w διαδροµή που περιέχει αρνητικό κύκλο ανν δ(v, w) = 2 Αν v-w διαδροµή και v-w διαδροµή που να περιέχει αρνητικό κύκλο, τότε < δ(v, w) < +, και δ(v, w) είναι το κόστος µιας απλής v-w διαδροµής 5 / 35

Εύρεση Σ από µια Αρχική Κορυφή (ΕΣ ΑΚ) 6 / 35

Εύρεση Σ από µια Αρχική Κορυφή (ΕΣ ΑΚ) Πρόβληµα ΕΣ ΑΚ: δεδοµένου ενός κατευθυνόµενου γραφήµατος G = (V, E) και µιας αρχικής κορυφής s V, να υπολογισθούν τα δ(s, v), v V, καθώς και οι συντοµότερες s-v διαδοµές 6 / 35

Εύρεση Σ από µια Αρχική Κορυφή (ΕΣ ΑΚ) Πρόβληµα ΕΣ ΑΚ: δεδοµένου ενός κατευθυνόµενου γραφήµατος G = (V, E) και µιας αρχικής κορυφής s V, να υπολογισθούν τα δ(s, v), v V, καθώς και οι συντοµότερες s-v διαδοµές Απλοποίηση συµβολισµού: δ(s, v) δ(v), v V 6 / 35

Εύρεση Σ από µια Αρχική Κορυφή (ΕΣ ΑΚ) Πρόβληµα ΕΣ ΑΚ: δεδοµένου ενός κατευθυνόµενου γραφήµατος G = (V, E) και µιας αρχικής κορυφής s V, να υπολογισθούν τα δ(s, v), v V, καθώς και οι συντοµότερες s-v διαδοµές Απλοποίηση συµβολισµού: δ(s, v) δ(v), v V Πόσος χώρος χρειάζεται για την αποθήκευση του αποτελέσµατος (εξόδου) ενός αλγορίθµου ΕΣ ΑΚ ; 6 / 35

Ιδιότητες Συντοµότερων ιαδροµών ΕΣ ΑΚ 3 δ(s) = min{0, min{δ(u) + c(e); e = (u, s) E}} και δ(v) = min{δ(u) + c(e); e = (u, v) E} για v s 7 / 35

Ιδιότητες Συντοµότερων ιαδροµών ΕΣ ΑΚ 3 δ(s) = min{0, min{δ(u) + c(e); e = (u, s) E}} και δ(v) = min{δ(u) + c(e); e = (u, v) E} για v s 4 Εστω d µια συνάρτηση V : IR {, + } µε d(v) δ(v), v V, d(s) 0, και d(v) d(u) + c(u, v), e = (u, v) E ( ) Τότε, d(v) = δ(v), v V 7 / 35

Ιδιότητες Συντοµότερων ιαδροµών ΕΣ ΑΚ 3 δ(s) = min{0, min{δ(u) + c(e); e = (u, s) E}} και δ(v) = min{δ(u) + c(e); e = (u, v) E} για v s 4 Εστω d µια συνάρτηση V : IR {, + } µε d(v) δ(v), v V, d(s) 0, και d(v) d(u) + c(u, v), e = (u, v) E ( ) Τότε, d(v) = δ(v), v V Παρατήρηση 1: Αν αρνητικός κύκλος, τότε d( ) που να ικανοποιεί τις παραπάνω συνθήκες 7 / 35

Ιδιότητες Συντοµότερων ιαδροµών ΕΣ ΑΚ 3 δ(s) = min{0, min{δ(u) + c(e); e = (u, s) E}} και δ(v) = min{δ(u) + c(e); e = (u, v) E} για v s 4 Εστω d µια συνάρτηση V : IR {, + } µε d(v) δ(v), v V, d(s) 0, και d(v) d(u) + c(u, v), e = (u, v) E ( ) Τότε, d(v) = δ(v), v V Παρατήρηση 1: Αν αρνητικός κύκλος, τότε d( ) που να ικανοποιεί τις παραπάνω συνθήκες Παρατήρηση 2: n 1 ανισότητες στην ( ) πρέπει να ισχύουν µε ισότητα 7 / 35

ΕΣ ΑΚ 8 / 35

ΕΣ ΑΚ ιαχωρισµός του V σε V = {v V; δ(v) = } V f = {v V; < δ(v) < + } V + = {v V; δ(v) = + } 8 / 35

ΕΣ ΑΚ ιαχωρισµός του V σε V = {v V; δ(v) = } V f = {v V; < δ(v) < + } V + = {v V; δ(v) = + } ένδρο Συντοµότερων ιαδροµών: δένδρο οριζόµενο στο V f, µε ϱίζα s, τέτοιο ώστε v V f η δενδρική s-v διαδροµή είναι µια συντοµότερη s-v διαδροµή στο G 8 / 35

ΕΣ ΑΚ ιαχωρισµός του V σε V = {v V; δ(v) = } V f = {v V; < δ(v) < + } V + = {v V; δ(v) = + } ένδρο Συντοµότερων ιαδροµών: δένδρο οριζόµενο στο V f, µε ϱίζα s, τέτοιο ώστε v V f η δενδρική s-v διαδροµή είναι µια συντοµότερη s-v διαδροµή στο G Απαιτήσεις χώρου για το αποτέλεσµα ΕΣ ΑΚ (έξοδος αλγορίθµου): O(n) 8 / 35

ΕΣ ΑΚ Εξοδος Αλγορίθµου 9 / 35

ΕΣ ΑΚ Εξοδος Αλγορίθµου δ(v), v V 9 / 35

ΕΣ ΑΚ Εξοδος Αλγορίθµου δ(v), v V ένδρο συντοµότερων διαδροµών ( Σ ) στο V f 9 / 35

ΕΣ ΑΚ Εξοδος Αλγορίθµου δ(v), v V ένδρο συντοµότερων διαδροµών ( Σ ) στο V f Συλλογή αρνητικών κύκλων και δένδρα που απολήγουν από αυτούς στο V 9 / 35

ΕΣ ΑΚ Εξοδος Αλγορίθµου δ(v), v V ένδρο συντοµότερων διαδροµών ( Σ ) στο V f Συλλογή αρνητικών κύκλων και δένδρα που απολήγουν από αυτούς στο V f + V V s V αρνητικος κυκλος 9 / 35

Επίλυση Προβλήµατος ΕΣ ΑΚ (G, s, c) 10 / 35

Επίλυση Προβλήµατος ΕΣ ΑΚ (G, s, c) node_array<nt> dist node_array<edge> pred dist[v] αποθηκεύει την απόσταση της κορυφής v από την s pred[v] αποθηκεύει την τελευταία ακµή µιας s-v Σ αν, αλλιώς nil 10 / 35

Επίλυση Προβλήµατος ΕΣ ΑΚ (G, s, c) node_array<nt> dist node_array<edge> pred dist[v] αποθηκεύει την απόσταση της κορυφής v από την s pred[v] αποθηκεύει την τελευταία ακµή µιας s-v Σ αν, αλλιώς nil Ο πίνακας pred ορίζει το «γράφηµα προκατόχων» (predecessor graph) P = {pred[v]; v V και pred[v] nil} 10 / 35

Επίλυση Προβλήµατος ΕΣ ΑΚ (G, s, c) Ιδιότητες του ζεύγους (dist, pred) 11 / 35

Επίλυση Προβλήµατος ΕΣ ΑΚ (G, s, c) Ιδιότητες του ζεύγους (dist, pred) s V f ανν pred[s] = nil, και s V ανν pred[s] nil 11 / 35

Επίλυση Προβλήµατος ΕΣ ΑΚ (G, s, c) Ιδιότητες του ζεύγους (dist, pred) s V f ανν pred[s] = nil, και s V ανν pred[s] nil Για v s: v V + ανν pred[v] = nil και v V f V ανν pred[v] nil 11 / 35

Επίλυση Προβλήµατος ΕΣ ΑΚ (G, s, c) Ιδιότητες του ζεύγους (dist, pred) s V f ανν pred[s] = nil, και s V ανν pred[s] nil Για v s: v V + ανν pred[v] = nil και v V f V ανν pred[v] nil v V f αν µία s-v διαδροµή στο P και s V f. Το επαγώµενο, από τις κορυφές του V f, υπογράφηµα του P είναι ένα Σ και dist[v] = δ(v), v V f 11 / 35

Επίλυση Προβλήµατος ΕΣ ΑΚ (G, s, c) Ιδιότητες του ζεύγους (dist, pred) s V f ανν pred[s] = nil, και s V ανν pred[s] nil Για v s: v V + ανν pred[v] = nil και v V f V ανν pred[v] nil v V f αν µία s-v διαδροµή στο P και s V f. Το επαγώµενο, από τις κορυφές του V f, υπογράφηµα του P είναι ένα Σ και dist[v] = δ(v), v V f Ολοι οι κύκλοι στο P έχουν αρνητικό κόστος και v V ανν η v ϐρίσκεται σε κύκλο στο P ή είναι προσπελάσιµη από έναν κύκλο στο P 11 / 35

Επίλυση Προβλήµατος ΕΣ ΑΚ (G, s, c) s 3 5 3 2 0 3 3 4 + 2 2 1 3 2 2 1 + 7 + 1 Οι διακεκοµµένες ακµές δεν ανήκουν στο P 12 / 35

Πρόβληµα ΕΣ ΑΚ Αλγόριθµοι & Υλοποιήσεις 13 / 35

Πρόβληµα ΕΣ ΑΚ Αλγόριθµοι & Υλοποιήσεις Κατευθυνόµενα ακυκλικά γραφήµατα 13 / 35

Πρόβληµα ΕΣ ΑΚ Αλγόριθµοι & Υλοποιήσεις Κατευθυνόµενα ακυκλικά γραφήµατα Μη αρνητικά κόστη ακµών 13 / 35

Πρόβληµα ΕΣ ΑΚ Κατευθυνόµενα ακυκλικά γραφήµατα 14 / 35

Πρόβληµα ΕΣ ΑΚ Κατευθυνόµενα ακυκλικά γραφήµατα void ACYCLIC_SHORTEST_PATH_T(const graph& G, node s, const edge_array<nt>& c, node_array<nt>& dist, node_array<edge>& pred) 14 / 35

Πρόβληµα ΕΣ ΑΚ Κατευθυνόµενα ακυκλικά γραφήµατα void ACYCLIC_SHORTEST_PATH_T(const graph& G, node s, const edge_array<nt>& c, node_array<nt>& dist, node_array<edge>& pred) Χρόνος: O(n + m) 14 / 35

Πρόβληµα ΕΣ ΑΚ Κατευθυνόµενα ακυκλικά γραφήµατα Ιδέα Αλγορίθµου 15 / 35

Πρόβληµα ΕΣ ΑΚ Κατευθυνόµενα ακυκλικά γραφήµατα Ιδέα Αλγορίθµου Εστω G ένα κατευθυνόµενο ακυκλικό γράφηµα, έστω v 1, v 2,..., v n η τοπολογική του διάταξη, δηλ. (v i, v j ) E i < j, και έστω s = v k 15 / 35

Πρόβληµα ΕΣ ΑΚ Κατευθυνόµενα ακυκλικά γραφήµατα Ιδέα Αλγορίθµου Εστω G ένα κατευθυνόµενο ακυκλικό γράφηµα, έστω v 1, v 2,..., v n η τοπολογική του διάταξη, δηλ. (v i, v j ) E i < j, και έστω s = v k Κορυφές v l µε l < k δεν είναι προσπελάσιµες από την s 15 / 35

Πρόβληµα ΕΣ ΑΚ Κατευθυνόµενα ακυκλικά γραφήµατα Ιδέα Αλγορίθµου Εστω G ένα κατευθυνόµενο ακυκλικό γράφηµα, έστω v 1, v 2,..., v n η τοπολογική του διάταξη, δηλ. (v i, v j ) E i < j, και έστω s = v k Κορυφές v l µε l < k δεν είναι προσπελάσιµες από την s Για τις υπολοιπες κορυφές v j και τις r εισερχόµενες ακµές τους (v i, v j ), ισχύει ότι (i, j k): δ(v j ) = min 1 i r {δ(v i) + c(v i, v j )} 15 / 35

Πρόβληµα ΕΣ ΑΚ Κατευθυνόµενα ακυκλικά γραφήµατα Ιδέα Αλγορίθµου Εστω G ένα κατευθυνόµενο ακυκλικό γράφηµα, έστω v 1, v 2,..., v n η τοπολογική του διάταξη, δηλ. (v i, v j ) E i < j, και έστω s = v k Κορυφές v l µε l < k δεν είναι προσπελάσιµες από την s Για τις υπολοιπες κορυφές v j και τις r εισερχόµενες ακµές τους (v i, v j ), ισχύει ότι (i, j k): δ(v j ) = min 1 i r {δ(v i) + c(v i, v j )} Ενας άλλος τρόπος υπολογισµού του παραπάνω ελάχιστου: δ(v j ) = + for i = 1 to r if δ(v j ) > δ(v i ) + c(v i, v j ) then δ(v j ) = δ(v i ) + c(v i, v j ) 15 / 35

Πρόβληµα ΕΣ ΑΚ Κατευθυνόµενα ακυκλικά γραφήµατα // initialization - computing topological order node_array<int> top_ord(g); TOPSORT(G,top_ord); // top_ord is now a topological ordering of G int n = G.number_of_nodes(); array<node> v(1,n); node w; forall_nodes(w,g) v[top_ord[w]] = w; // top_ord[v[i]] == i for all i 16 / 35

Πρόβληµα ΕΣ ΑΚ Κατευθυνόµενα ακυκλικά γραφήµατα template <class NT> void ACYCLIC_SHORTEST_PATH_T(const graph& G, node s, const edge_array<nt>& c, node_array<nt>& dist, node_array<edge>& pred) { // initialization - computing topological order forall_nodes(w,g) pred[w] = nil; dist[s] = 0; for(int i = top_ord[s]; i <= n; i++) { node u = v[i]; if ( pred[u] == nil && u!= s ) continue; edge e; NT du = dist[u]; forall_adj_edges(e,u) { node w = G.target(e); if ( pred[w] == nil du + c[e] < dist[w]) { pred[w] = e; dist[w] = du + c[e]; } } } } 17 / 35

Πρόβληµα ΕΣ ΑΚ Μη αρνητικά κόστη ακµών 18 / 35

Πρόβληµα ΕΣ ΑΚ Μη αρνητικά κόστη ακµών void DIJKSTRA(graph& G, node s, const edge_array<int>& cost, node_array<int>& dist, p_queue<int,node>& PQ) 18 / 35

Πρόβληµα ΕΣ ΑΚ Αλγόριθµος Dijkstra 19 / 35

Πρόβληµα ΕΣ ΑΚ Αλγόριθµος Dijkstra Επαναληπτικός αλγόριθµος (έως ότου όλες οι κορυφές γίνουν ανενεργές) 19 / 35

Πρόβληµα ΕΣ ΑΚ Αλγόριθµος Dijkstra Επαναληπτικός αλγόριθµος (έως ότου όλες οι κορυφές γίνουν ανενεργές) Σε κάθε επανάληψη, διατηρεί µια προσωρινή απόσταση dist[v], v V, και ένα σύνολο ενεργών κορυφών 19 / 35

Πρόβληµα ΕΣ ΑΚ Αλγόριθµος Dijkstra Επαναληπτικός αλγόριθµος (έως ότου όλες οι κορυφές γίνουν ανενεργές) Σε κάθε επανάληψη, διατηρεί µια προσωρινή απόσταση dist[v], v V, και ένα σύνολο ενεργών κορυφών Αρχικά, µόνο η s είναι ενεργή, dist[s] = 0, και για κάθε άλλη κορυφή v, dist[v] = + 19 / 35

Πρόβληµα ΕΣ ΑΚ Αλγόριθµος Dijkstra Επαναληπτικός αλγόριθµος (έως ότου όλες οι κορυφές γίνουν ανενεργές) Σε κάθε επανάληψη, διατηρεί µια προσωρινή απόσταση dist[v], v V, και ένα σύνολο ενεργών κορυφών Αρχικά, µόνο η s είναι ενεργή, dist[s] = 0, και για κάθε άλλη κορυφή v, dist[v] = + Σε κάθε επανάληψη: επιλογή ενεργής κορυφής u µε ελάχιστη dist[u] Η u γίνεται ανενεργή και η dist[u] είναι η τελική απόσταση της u «Χαλάρωση» εξερχόµενων ακµών της (u, v): if dist[v] > dist[u] + c(u, v) then dist[v] = dist[u] + c(u, v) 19 / 35

Πρόβληµα ΕΣ ΑΚ Αλγόριθµος Dijkstra Λεπτοµέρειες Υλοποίησης 20 / 35

Πρόβληµα ΕΣ ΑΚ Αλγόριθµος Dijkstra Λεπτοµέρειες Υλοποίησης dist[v]: αποθηκεύει τελική και προσωρινή απόσταση µιας κορυφής v 20 / 35

Πρόβληµα ΕΣ ΑΚ Αλγόριθµος Dijkstra Λεπτοµέρειες Υλοποίησης dist[v]: αποθηκεύει τελική και προσωρινή απόσταση µιας κορυφής v PQ: ουρά προτεραιότητας που αποθηκεύει τα Ϲεύγη (dist[v], v), όπου v είναι ενεργή 20 / 35

Πρόβληµα ΕΣ ΑΚ Αλγόριθµος Dijkstra Λεπτοµέρειες Υλοποίησης dist[v]: αποθηκεύει τελική και προσωρινή απόσταση µιας κορυφής v PQ: ουρά προτεραιότητας που αποθηκεύει τα Ϲεύγη (dist[v], v), όπου v είναι ενεργή Κάθε ενεργή κορυφή v πρέπει να γνωρίζει το στοιχείο (pq_item) της PQ, το οποίο περιέχει το Ϲεύγος (dist[v], v) Το στοιχείο αυτό αποθηκεύεται στη ϑέση I[v] ενός node_array<pq_item> I 20 / 35

Πρόβληµα ΕΣ ΑΚ Αλγόριθµος Dijkstra { node_array<pq_item> I(G); node v; forall_nodes(v,g) dist[v] = MAXINT; dist[s] = 0; I[s] = PQ.insert(0,s); while (! PQ.empty()) { pq_item it = PQ.find_min(); node u = PQ.inf(it); int du = dist[u]; edge e; forall_adj_edges(e,u) { v = G.target(e); int c = du + cost[e]; if (c < dist[v]) { if (dist[v] == MAXINT) I[v] = PQ.insert(c,v); else PQ.decrease_p(I[v],c); dist[v] = c; } } PQ.del_item(it); } } 21 / 35

Πρόβληµα ΕΣ ΑΚ Αλγόριθµος Dijkstra: χρονική πολυπλοκότητα 22 / 35

Πρόβληµα ΕΣ ΑΚ Αλγόριθµος Dijkstra: χρονική πολυπλοκότητα n λειτουργίες insert, empty, find_min, delete_min 22 / 35

Πρόβληµα ΕΣ ΑΚ Αλγόριθµος Dijkstra: χρονική πολυπλοκότητα n λειτουργίες insert, empty, find_min, delete_min m λειτουργίες decrease_p 22 / 35

Πρόβληµα ΕΣ ΑΚ Αλγόριθµος Dijkstra: χρονική πολυπλοκότητα n λειτουργίες insert, empty, find_min, delete_min m λειτουργίες decrease_p Υπόλοιπος χρόνος, εκτός των κλήσεων στην PQ, O(n + m) 22 / 35

Πρόβληµα ΕΣ ΑΚ Αλγόριθµος Dijkstra: χρονική πολυπλοκότητα n λειτουργίες insert, empty, find_min, delete_min m λειτουργίες decrease_p Υπόλοιπος χρόνος, εκτός των κλήσεων στην PQ, O(n + m) T total = O(n + m + n (T insert + T empty + T find_min + T delete_min ) + m T decrease_p + T create + T destruct ) 22 / 35

Πρόβληµα ΕΣ ΑΚ Αλγόριθµος Dijkstra: ασυµπτωτική ΠΧΠ Πολυπλοκότητα Χειρότερης Περίπτωσης f_heap O(m + n log n) p_heap O(m + n log n) k_heap O(m log k n + nk log k n) bin_heap O(m log n + n log n) list_pq O(m + n 2 ) b_heap O((m + n)nm) r_heap O(m + n log M) m_heap O(m + max_dist + Μ) M = 1 + µέγιστο ακέραιο κόστος ακµής max_dist = µέγιστη απόσταση κορυφής από την s (n 1)M 23 / 35

Πρόβληµα ΕΣ ΑΚ Μια διαφορετική υλοποίηση της DIJKSTRA 24 / 35

Πρόβληµα ΕΣ ΑΚ Μια διαφορετική υλοποίηση της DIJKSTRA Αλγόριθµοι Σ : πολύ ϐολική η αρχικοποίηση αποστάσεων µε 24 / 35

Πρόβληµα ΕΣ ΑΚ Μια διαφορετική υλοποίηση της DIJKSTRA Αλγόριθµοι Σ : πολύ ϐολική η αρχικοποίηση αποστάσεων µε Π.χ. ακέραια κόστη ακµών: ϕαίνεται λογικό να υλοποιήσουµε το µε MAXINT void DIJKSTRA(const graph& G, node s, const edge_array<int>& cost, node_array<int>& dist) { node_pq PQ(G); node v; edge e; } forall_nodes(v,g) dist[v] = MAXINT; dist[s] = 0; forall_nodes(v,g) PQ.insert(v,dist[v]); while (! PQ.empty()) { node v = PQ.delete_min(); forall_adj_edges(e,v) { node w = G.target(e); if ( dist[v] + cost[e] < dist[w] ) { dist[w] = dist[v] + cost[e]; PQ.decrease_p(w,dist[w]);} } } 24 / 35

Πρόβληµα ΕΣ ΑΚ Μια διαφορετική υλοποίηση της DIJKSTRA Προσοχή µε τους αριθµητικούς τύπους! 25 / 35

Πρόβληµα ΕΣ ΑΚ Μια διαφορετική υλοποίηση της DIJKSTRA Προσοχή µε τους αριθµητικούς τύπους! εν πρέπει να ξεχνάτε ότι «MAXINT + 1 = MININT» «+ 1 =» 25 / 35

Πρόβληµα ΕΣ ΑΚ Μια διαφορετική υλοποίηση της DIJKSTRA Προσοχή µε τους αριθµητικούς τύπους! εν πρέπει να ξεχνάτε ότι «MAXINT + 1 = MININT» «+ 1 =» Αντιπαράδειγµα 1 s v w 25 / 35

Πρόβληµα ΕΣ ΑΚ Μια διαφορετική υλοποίηση της DIJKSTRA Προσοχή µε τους αριθµητικούς τύπους! εν πρέπει να ξεχνάτε ότι «MAXINT + 1 = MININT» «+ 1 =» Αντιπαράδειγµα 1 s v w Η προηγούµενη υλοποίηση δουλεύει σωστά όταν όλες οι κορυφές είναι προσπελάσιµες από την s και όταν όλα τα κόστη των πλευρών είναι στο διάστηµα [0..MAXINT/n] 25 / 35

Πρόβληµα ΕΣ ΑΚ Μια διαφορετική υλοποίηση της DIJKSTRA 26 / 35

Πρόβληµα ΕΣ ΑΚ Μια διαφορετική υλοποίηση της DIJKSTRA Πρώτη προσπάθεια σωστής υλοποίησης: εισάγει µόνο την s στην PQ και αλλάζει το µπλόκ της εντολής if void DIJKSTRA(const graph& G, node s, const edge_array<int>& cost, node_array<int>& dist) { node_pq PQ(G); node v; edge e; } forall_nodes(v,g) dist[v] = MAXINT; dist[s] = 0; PQ.insert(s,0); while (! PQ.empty()) { node v = PQ.delete_min(); forall_adj_edges(e,v) { node w = G.target(e); if ( dist[v] + cost[e] < dist[w] ) { int c = dist[v] + cost[e]; if (dist[w] == MAXINT) PQ.insert(w,c); else PQ.decrease_p(w,c); dist[w] = c; } } } 26 / 35

Πρόβληµα ΕΣ ΑΚ Μια διαφορετική υλοποίηση της DIJKSTRA 27 / 35

Πρόβληµα ΕΣ ΑΚ Μια διαφορετική υλοποίηση της DIJKSTRA Μια ακόµη καλύτερη υλοποίηση, ανεξάρτητη αριθµητικών τύπων template <class NT> void DIJKSTRA_T(const graph& G, node s, const edge_array<nt>& cost, node_array<nt>& dist, node_array<edge>& pred) { node_pq<nt> PQ(G); node v; edge e; dist[s] = 0; PQ.insert(s,0); forall_nodes(v,g) pred[v] = nil; } while (!PQ.empty()) { node u = PQ.del_min(); NT du = dist[u]; forall_adj_edges(e,u) { v = G.opposite(u,e); // makes it work for ugraphs NT c = du + cost[e]; if (pred[v] == nil && v!= s ) PQ.insert(v,c); // v is reached for the first time else if (c < dist[v]) PQ.decrease_p(v,c); else continue; dist[v] = c; pred[v] = e; } } 27 / 35

Πρόβληµα ΕΣ ΑΚ Πειραµατική Αξιολόγηση της DIJKSTRA 28 / 35

Πρόβληµα ΕΣ ΑΚ Πειραµατική Αξιολόγηση της DIJKSTRA Μεγέθη εισόδου: m = 500000, n {2000, 20000, 200000}, M {100, 100000} 28 / 35

Πρόβληµα ΕΣ ΑΚ Πειραµατική Αξιολόγηση της DIJKSTRA Μεγέθη εισόδου: m = 500000, n {2000, 20000, 200000}, M {100, 100000} Τυχαία γραφήµατα r_heap < p_heap < f_heap 28 / 35

Πρόβληµα ΕΣ ΑΚ Πειραµατική Αξιολόγηση της DIJKSTRA Μεγέθη εισόδου: m = 500000, n {2000, 20000, 200000}, M {100, 100000} Τυχαία γραφήµατα r_heap < p_heap < f_heap Συνθετικά Γραφήµατα: εξαναγκάζουν τον αλγόριθµο να εκτελέσει m n + 1 λειτουργίες decrease_p r_heap < p_heap < f_heap m/n πολύ µικρό και M πολύ µεγάλο p_heap < r_heap < f_heap 28 / 35

Πρόβληµα ΕΣ ΑΚ Συνθετικό γράφηµα για την DIJKSTRA Συνθετικό γράφηµµα n κορυφών και m n(n 1)/2 ακµών 29 / 35

Πρόβληµα ΕΣ ΑΚ Συνθετικό γράφηµα για την DIJKSTRA Συνθετικό γράφηµµα n κορυφών και m n(n 1)/2 ακµών Κορυφές 0, 1,..., n 1 29 / 35

Πρόβληµα ΕΣ ΑΚ Συνθετικό γράφηµα για την DIJKSTRA Συνθετικό γράφηµµα n κορυφών και m n(n 1)/2 ακµών Κορυφές 0, 1,..., n 1 n 1 ακµές (i, i + 1), 0 i < n 1, κάθε µία µε κόστος M 0 29 / 35

Πρόβληµα ΕΣ ΑΚ Συνθετικό γράφηµα για την DIJKSTRA Συνθετικό γράφηµµα n κορυφών και m n(n 1)/2 ακµών Κορυφές 0, 1,..., n 1 n 1 ακµές (i, i + 1), 0 i < n 1, κάθε µία µε κόστος M 0 Οι πρώτες m = m (n 1) ακµές της ακολουθίας (0, 2), (0, 3),..., (0, n 1), (1, 3), (1, 4),..., (1, n 1), (2, 4),.... Το κόστος c i,j της ακµής (i, j) πρέπει να είναι τέτοιο ώστε να εκτελούνται m λειτουργίες decrease_p 0 1 2 i 1 i i+1 i+2 n 1 29 / 35

Πρόβληµα ΕΣ ΑΚ Συνθετικό γράφηµα για την DIJKSTRA Προσδιορισµός κόστους c i,j για εύρεση ΕΣ ΑΚ από την κορυφή 0 30 / 35

Πρόβληµα ΕΣ ΑΚ Συνθετικό γράφηµα για την DIJKSTRA Προσδιορισµός κόστους c i,j για εύρεση ΕΣ ΑΚ από την κορυφή 0 i 0 1 2 i 1 i+1 n 1 i+3 i+2 30 / 35

Πρόβληµα ΕΣ ΑΚ Συνθετικό γράφηµα για την DIJKSTRA Προσδιορισµός κόστους c i,j για εύρεση ΕΣ ΑΚ από την κορυφή 0 i 0 1 2 i 1 i+1 n 1 i+3 i+2 Μπλέ ακµές = Σ µε ϱίζα την κορυφή 0 µετά τη διαγραφή της i από την ουρά προτεραιότητας Q, δηλ. d(i) = δ(0, i) = im, και c[0, 1,..., i 1, i, j] = im + c i,j 30 / 35

Πρόβληµα ΕΣ ΑΚ Συνθετικό γράφηµα για την DIJKSTRA Προσδιορισµός κόστους c i,j για εύρεση ΕΣ ΑΚ από την κορυφή 0 i 0 1 2 i 1 i+1 n 1 i+3 i+2 Μπλέ ακµές = Σ µε ϱίζα την κορυφή 0 µετά τη διαγραφή της i από την ουρά προτεραιότητας Q, δηλ. d(i) = δ(0, i) = im, και c[0, 1,..., i 1, i, j] = im + c i,j Οι κορυφές διαγράφονται από την ουρά προτεραιότητας Q σύµφωνα µε την αρίθµησή τους, προκαλώντας τη µέγιστη δυνατή αλλαγή στην Q 30 / 35

Πρόβληµα ΕΣ ΑΚ Συνθετικό γράφηµα για την DIJKSTRA Προσδιορισµός κόστους c i,j για εύρεση ΕΣ ΑΚ από την κορυφή 0 31 / 35

Πρόβληµα ΕΣ ΑΚ Συνθετικό γράφηµα για την DIJKSTRA Προσδιορισµός κόστους c i,j για εύρεση ΕΣ ΑΚ από την κορυφή 0 i 0 1 2 i 1 i+1 n 1 i+3 i+2 31 / 35

Πρόβληµα ΕΣ ΑΚ Συνθετικό γράφηµα για την DIJKSTRA Προσδιορισµός κόστους c i,j για εύρεση ΕΣ ΑΚ από την κορυφή 0 i 0 1 2 i 1 i+1 n 1 i+3 i+2 Πριν τη διαγραφή της i από την Q {i, i + 1,..., n} Q d(i) = im, και d(j) = (i 1)M + c i 1,j, j > i 31 / 35

Πρόβληµα ΕΣ ΑΚ Συνθετικό γράφηµα για την DIJKSTRA Προσδιορισµός κόστους c i,j για εύρεση ΕΣ ΑΚ από την κορυφή 0 i 0 1 2 i 1 i+1 n 1 i+3 i+2 Πριν τη διαγραφή της i από την Q {i, i + 1,..., n} Q d(i) = im, και d(j) = (i 1)M + c i 1,j, Μετά τη διαγραφή της i από την Q j > i Χαλάρωση εξερχόµενων ακµών σύµφωνα µε τη σειρά (i, i + 2), (i, i + 3),..., (i, n 1), (i, i + 1) Κάτω από ποιές συνθήκες η χαλάρωση της (i, j) ϑα προκαλέσει την εκτέλεση µιας decrease_p και τη µέγιστη δυνατή αλλαγή στην Q; 31 / 35

Πρόβληµα ΕΣ ΑΚ Συνθετικό γράφηµα για την DIJKSTRA Προσδιορισµός κόστους c i,j για εύρεση ΕΣ ΑΚ από την κορυφή 0 32 / 35

Πρόβληµα ΕΣ ΑΚ Συνθετικό γράφηµα για την DIJKSTRA Προσδιορισµός κόστους c i,j για εύρεση ΕΣ ΑΚ από την κορυφή 0 i 0 1 2 i 1 i+1 n 1 i+3 i+2 32 / 35

Πρόβληµα ΕΣ ΑΚ Συνθετικό γράφηµα για την DIJKSTRA Προσδιορισµός κόστους c i,j για εύρεση ΕΣ ΑΚ από την κορυφή 0 i 0 1 2 i 1 i+1 n 1 i+3 i+2 Χαλάρωση (i, j) decrease_p, αν im + c i,j < (i 1)M + c i 1,j, j > i 32 / 35

Πρόβληµα ΕΣ ΑΚ Συνθετικό γράφηµα για την DIJKSTRA Προσδιορισµός κόστους c i,j για εύρεση ΕΣ ΑΚ από την κορυφή 0 i 0 1 2 i 1 i+1 n 1 i+3 i+2 Χαλάρωση (i, j) decrease_p, αν im + c i,j < (i 1)M + c i 1,j, j > i Μέγιστη αλλαγή στην Q αν πριν τη χαλάρωση d(j 1) <... < d(i + 2) < d(n 1) <... < d(j) <... < d(i + 1) µετά τη χαλάρωση d(j) < d(j 1) <... < d(i + 2) < d(n 1) <... < d(j + 1) <... < d(i + 1) 32 / 35

Πρόβληµα ΕΣ ΑΚ Συνθετικό γράφηµα για την DIJKSTRA Προσδιορισµός κόστους c i,j για εύρεση ΕΣ ΑΚ από την κορυφή 0 33 / 35

Πρόβληµα ΕΣ ΑΚ Συνθετικό γράφηµα για την DIJKSTRA Προσδιορισµός κόστους c i,j για εύρεση ΕΣ ΑΚ από την κορυφή 0 i 0 1 2 i 1 i+1 n 1 i+3 i+2 33 / 35

Πρόβληµα ΕΣ ΑΚ Συνθετικό γράφηµα για την DIJKSTRA Προσδιορισµός κόστους c i,j για εύρεση ΕΣ ΑΚ από την κορυφή 0 i 0 1 2 i 1 i+1 n 1 i+3 i+2 Τα κόστη c i,j πρέπει να επιλεγούν έτσι ώστε im + c i,i+2 < (i 1)M + c i 1,n 1 decrease_p (i, i + 2) προξενεί την κλήση µιας c i,j < c i,j 1, i + 2 < j n 1 (i, j) προξενεί την κλήση µιας decrease_p, δηλ., οι ακµές (i, i + 3), (i, i + 4),..., (i, n 2), (i, n 1) χαλαρώνονται µε αυτή τη σειρά M = c i,i+1 < c i,n 1 (i, i + 1) προξενεί την κλήση µιας decrease_p 33 / 35

Πρόβληµα ΕΣ ΑΚ Συνθετικό γράφηµα για την DIJKSTRA Προσδιορισµός κόστους c i,j για εύρεση ΕΣ ΑΚ από την κορυφή 0 M + c i,i+2 < c i 1,n 1 M = c i,i+1 < c i,n 1 < c i,n 2 < c i,n 3 < < c i,i+3 < c i,i+2 Επιλογή των c i,j έτσι ώστε να ικανοποιούνται οι ανισότητες 34 / 35

Πρόβληµα ΕΣ ΑΚ Συνθετικό γράφηµα για την DIJKSTRA Προσδιορισµός κόστους c i,j για εύρεση ΕΣ ΑΚ από την κορυφή 0 M + c i,i+2 < c i 1,n 1 M = c i,i+1 < c i,n 1 < c i,n 2 < c i,n 3 < < c i,i+3 < c i,i+2 Επιλογή των c i,j έτσι ώστε να ικανοποιούνται οι ανισότητες Προσδιορισµός των m επιπρόσθετων ακµών 34 / 35

Πρόβληµα ΕΣ ΑΚ Συνθετικό γράφηµα για την DIJKSTRA Προσδιορισµός κόστους c i,j για εύρεση ΕΣ ΑΚ από την κορυφή 0 M + c i,i+2 < c i 1,n 1 M = c i,i+1 < c i,n 1 < c i,n 2 < c i,n 3 < < c i,i+3 < c i,i+2 Επιλογή των c i,j έτσι ώστε να ικανοποιούνται οι ανισότητες Προσδιορισµός των m επιπρόσθετων ακµών Ανάθεση κόστους αυτών των m επιπρόσθετων ακµών σε αντίστροφη σειρά 34 / 35

Πρόβληµα ΕΣ ΑΚ Συνθετικό γράφηµα για την DIJKSTRA Προσδιορισµός κόστους c i,j για εύρεση ΕΣ ΑΚ από την κορυφή 0 M + c i,i+2 < c i 1,n 1 M = c i,i+1 < c i,n 1 < c i,n 2 < c i,n 3 < < c i,i+3 < c i,i+2 Επιλογή των c i,j έτσι ώστε να ικανοποιούνται οι ανισότητες Προσδιορισµός των m επιπρόσθετων ακµών Ανάθεση κόστους αυτών των m επιπρόσθετων ακµών σε αντίστροφη σειρά Ανάθεση κόστους τελευταίας ακµής ίσο µε M + 1 34 / 35

Πρόβληµα ΕΣ ΑΚ Συνθετικό γράφηµα για την DIJKSTRA Προσδιορισµός κόστους c i,j για εύρεση ΕΣ ΑΚ από την κορυφή 0 M + c i,i+2 < c i 1,n 1 M = c i,i+1 < c i,n 1 < c i,n 2 < c i,n 3 < < c i,i+3 < c i,i+2 Επιλογή των c i,j έτσι ώστε να ικανοποιούνται οι ανισότητες Προσδιορισµός των m επιπρόσθετων ακµών Ανάθεση κόστους αυτών των m επιπρόσθετων ακµών σε αντίστροφη σειρά Ανάθεση κόστους τελευταίας ακµής ίσο µε M + 1 { ci,j+1 + 1 αν j < n 1 c i,j = c i+1,i+3 + M + 1 αν j = n 1 34 / 35

Ερωτήσεις ; 35 / 35