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

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Τ.Ε.Ι. Πελοπόννησου. Σχολή Τεχνολογικών Εφαρμογών Τμήμα Μηχανικών Πληροφορικής Τ.Ε. ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Δίκτυα και Δρομολόγηση Πακέτων"

Transcript

1 Τ.Ε.Ι. Πελοπόννησου Σχολή Τεχνολογικών Εφαρμογών Τμήμα Μηχανικών Πληροφορικής Τ.Ε. ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Δίκτυα και Δρομολόγηση Πακέτων Νικολέττα Δελλατόλα (Α.Μ.: ) Επιβλέπων καθηγητής: Γρηγόριος Καραγιώργος ΣΠΑΡΤΗ 2014

2 Περίληψη Η παρούσα πτυχιακή εργασία έχει θέμα της την παρουσίαση όλων των αλγορίθμων που αφορούν στη δρομολόγηση πακέτων σε δίκτυα υπολογιστών. Αρχικά, γίνεται η εισαγωγή στο πρόβλημα της δρομολόγησης σε δίκτυα υπολογιστών όπου αναλύονται ξεχωριστά όλες οι κατηγορίες προβλημάτων δρομολόγησης που υπάρχουν και δίνονται οι απαραίτητες βασικές έννοιες για την κατανόησή των αλγορίθμων επίλυσής τους. Στη συνέχεια, παρουσιάζονται όλοι οι αλγόριθμοι που προσφέρουν λύση σε κάθε κατηγορία προβλημάτων και η πολυπλοκότητά τους. Τέλος, αναφέρονται τα συμπεράσματα που προέκυψαν από αυτή τη βιβλιογραφική εργασία. 2

3 ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ Περίληψη... 2 Πίνακας περιεχομένων... 3 ΚΕΦΑΛΑΙΟ 1 Εισαγωγή 1.1 Το πρόβλημα της δρομολόγησης Το πρόβλημα του συντομότερου μονοπατιού Το πρόβλημα του συντομότερου μονοπατιού μοναδικής αφετηρίας Το πρόβλημα του συντομότερου μονοπατιού όλων των ζευγών κορυφών Το πρόβλημα της μεγίστης ροής Το πρόβλημα της ροής ελάχιστου κόστους Το πρόβλημα του ελάχιστου συνδετικού δέντρου...11 ΚΕΦΑΛΑΙΟ 2 Αλγόριθμοι επίλυσης προβλημάτων δρομολόγησης 2.1 Αλγόριθμοι συντομότερου μονοπατιού μοναδικής αφετηρίας Ο αλγόριθμος Dijkstra Ο αλγόριθμος Bellman-Ford Αλγόριθμοι συντομότερου μονοπατιού όλων των ζευγών κορυφών Ο αλγόριθμος Floyd-Warshall Ο αλγόριθμος Johnson Αλγόριθμοι μέγιστης ροής Ο αλγόριθμος Ford-Fulkerson Οι αλγόριθμοι Edmonds-Karp και Dinic Αλγόριθμοι Preflow-push Αλγόριθμοι ροής ελάχιστου κόστους Ο αλγόριθμος Cycle Canceling Άλλοι αλγόριθμοι ελάχιστου κόστους ψευδο-πολυωνυμικού χρόνου Ο αλγόριθμος Minimum Mean Cycle Canceling Ο αλγόριθμος Capacity scaling και άλλοι αλγόριθμοι ελάχιστου κόστους πολυωνυμικού χρόνου Αλγόριθμοι εύρεσης ελάχιστου συνδετικού δέντρου Ο αλγόριθμος Prim Ο αλγόριθμος Kruskal ΚΕΦΑΛΑΙΟ 3 Συμπεράσματα...40 Πηγές

4 1 Εισαγωγή Σκοπός αυτής της εργασίας είναι η παρουσίαση των αλγορίθμων δρομολόγησης πακέτων σε δίκτυα υπολογιστών. Στο πρώτο μέρος της εργασίας αναλύεται το πρόβλημα της δρομολόγησης σε δίκτυα και οι διάφορες μορφές που μπορεί αυτό να πάρει. 1.1 Το πρόβλημα της δρομολόγησης Το πρόβλημα της δρομολόγησης είναι ένα από τα πιο σημαντικά και ενδιαφέροντα προβλήματα στη θεωρία δικτύων. Προκύπτει σε πολλές περιπτώσεις, κυρίως στις μεταφορές και τις τηλεπικοινωνίες, όπου πρέπει να δρομολογηθεί αποτελεσματικά κάποιο υλικό, φορτίο ή πληροφορίες διαμέσου ενός δικτύου ροής. Είναι το κυρίαρχο πρόβλημα στα δίκτυα και το Διαδίκτυο. Το πρόβλημα της δρομολόγησης σε δίκτυα υπολογιστών είναι η εύρεση του καταλληλότερου μονοπατιού για τη μεταφορά πακέτων πληροφοριών από ένα συγκεκριμένο σημείο του δικτύου προς ένα άλλο με τον πιο αποτελεσματικό τρόπο δηλαδή όσο πιο γρήγορα, όσο πιο φθηνά ή όσο το δυνατόν πιο αξιόπιστα γίνεται. Ανήκει στα προβλήματα βελτιστοποίησης ροής δικτύου και έχει μελετηθεί εκτενώς. Για την λύση του προβλήματος αυτού αναπτύχθηκαν αλγόριθμοι δρομολόγησης που βασίζονται στη θεωρία των γράφων. Ο γράφος αναπαριστά το δίκτυο, οι κορυφές του γραφήματος τους κόμβους (δρομολογητές και άλλες συσκευές) και οι ακμές τους συνδέσμους επικοινωνίας μεταξύ των κόμβων. Διαφορετικοί αλγόριθμοι που ικανοποιούν διαφορετικές απαιτήσεις και διαφορετικούς περιορισμούς χρησιμοποιούνται ανάλογα την περίπτωση. Βασικές έννοιες: Ένας γράφος (δίκτυο) είναι ένα πεπερασμένο σύνολο κορυφών (κόμβων) και ακμών (συνδέσμων). Οι ακμές ενώνουν διακεκριμένους κόμβους. Μια ακμή που συνδέει τον κόμβο υ με τον κόμβο ν συμβολίζεται (υ,ν). Κατευθυνόμενο δίκτυο ονομάζεται το δίκτυο στο οποίο κάθε ακμή είναι προσανατολισμένη προς μια κατεύθυνση. Σε διαφορετική περίπτωση το δίκτυο ονομάζεται μη κατευθυνόμενο. Ένα μονοπάτι είναι μια αλληλουχία κόμβων ή ακμών. Ένας κύκλος είναι ένα μονοπάτι που αρχίζει και τελειώνει στον ίδιο κόμβο. Ένας γράφος ονομάζεται συνδεδεμένος (συνεκτικός) αν υπάρχει μονοπάτι μεταξύ κάθε ζεύγους κόμβων. 4 I I

5 1.2 Το πρόβλημα του συντομότερου μονοπατιού (shortest path problem) Το πρόβλημα του συντομότερου μονοπατιού είναι η εύρεση ενός συντομότερου μονοπατιού μεταξύ δύο κόμβων σε ένα συνεκτικό δίκτυο με βάση τις αποστάσεις μεταξύ των κόμβων. Διατυπώνεται όπως παρακάτω: Δίνεται κατευθυνόμενο γράφημα το οποίο αναπαριστά δίκτυο G=(V,E) με συνάρτηση βάρους w(u,v) για κάθε ακμή (u,v) 6 Ε. Δίνεται διακεκριμένος κόμβος (κορυφή) s ως κόμβος-αφετηρία (πηγή). Ορίζουμε ως το μήκος (βάρος) ενός κατευθυνόμενου μονοπατιού το σύνολο του μήκους των ακμών που περιέχονται στο μονοπάτι. Ζητείται να βρεθεί το μονοπάτι με το συντομότερο μήκος μεταξύ του κόμβου-αφετηρία s και ενός κόμβου-προορισμού V-{s} στο δίκτυο G. Για να υπάρχει λύση στο πρόβλημα πρέπει να ισχύουν οι εξής προϋποθέσεις: Το δίκτυο να είναι κατευθυνόμενο (αλλιώς ακμή με αρνητικό βάρος προσβάσιμη από το s δημιουργεί αρνητικό κύκλο). Να υπάρχει ένα κατευθυνόμενο μονοπάτι από τον κόμβο-αφετηρία s προς κάθε άλλο κόμβο στο δίκτυο. Το δίκτυο να μην περιέχει κύκλο αρνητικού βάρους. Όλα τα βάρη ακμών να είναι ακέραιοι αριθμοί (ισχύει μόνο για αλγορίθμους που η πολυπλοκότητά τους επηρεάζεται από το μέγιστο βάρος ακμής, πρακτικά δεν είναι περιοριστικό). Ιδιότητες του συντομότερου μονοπατιού: Κάθε μονοπάτι που περιέχεται σε ένα συντομότερο μονοπάτι είναι από μόνο του ένα συντομότερο μονοπάτι (ισχύει η αρχή βελτιστότητας). Παράγεται δέντρο συντομότερων μονοπατιών με ρίζα τον κόμβο-αφετηρία s. Ένα δέντρο συντομότερων μονοπατιών (shortest path tree) είναι ένα συνδετικό δέντρο Τ του κατευθυνόμενου γραφήματος G που κατασκευάζεται με βάση το μήκος των συντομότερων μονοπατιών και έχει ρίζα την κορυφή s. Ένα συνδετικό δέντρο συνδέει όλες τις κορυφές του γραφήματος με όσο το δυνατόν λιγότερες ακμές. Όταν ολοκληρωθεί η κατασκευή του, μετά από την εκτέλεση κάποιου αλγόριθμου συντομότερου μονοπατιού, το δέντρο Τ περιέχει όλα τα συντομότερα μονοπάτια από την κορυφή s σε κάθε άλλη κορυφή του γραφήματος G. Αν υπάρχει αρνητικός κύκλος στο γράφημα δεν σχηματίζεται απαραίτητα ένα τέτοιο δέντρο. Ακόμη, όταν όλες οι ακμές στο γράφημα έχουν βάρος ίσο με τη μονάδα το δέντρο συντομότερων μονοπατιών ταυτίζεται με το δέντρο της αναζήτησης κατά πλάτος. Οι αλγόριθμοι επίλυσης που έχουν αναπτυχθεί για τη λύση του προβλήματος στηρίζονται στην τεχνική της χαλάρωσης ακμών (edge relaxation). Η χαλάρωση μιας ακμής (u,v) είναι ένας έλεγχος που γίνεται μέσω μιας συνθήκης βελτιστότητας και εξετάζει αν ο καλύτερος τρόπος να πάμε από το s στο ν είναι να πάμε από το s στο u και μετά από το u στο ν ( d[v] > d[u] + w(u,v) ) και αν η συνθήκη ισχύει τότε προχωράει σε ανανέωση των τιμών στις δομές δεδομένων του αλγορίθμου. 5

6 Υπάρχουν δύο κύρια προβλήματα συντομότερου μονοπατιού: το πρόβλημα του συντομότερου μονοπατιού μοναδικής αφετηρίας και το πρόβλημα του συντομότερου μονοπατιού μεταξύ όλων των ζευγών κορυφών. Θα τα δούμε αναλυτικά παρακάτω. Άλλες παραλλαγές του προβλήματος είναι: το πρόβλημα του συντομότερου μονοπατιού μεταξύ μοναδικής αφετηρίας-μοναδικού προορισμού (single-pair shortest path) και το πρόβλημα του συντομότερου μονοπατιού μοναδικού προορισμού (single-destination shortest path) που ζητά την εύρεση των συντομότερων μονοπατιών από όλες τις άλλες κορυφές προς την κορυφή-προορισμό Το πρόβλημα συντομότερου μονοπατιού μοναδικής αφετηρίας (singlesource shortest path problem) To πρόβλημα του συντομότερου μονοπατιού μοναδικής αφετηρίας είναι η εύρεση ενός συντομότερου μονοπατιού από μια μοναδική κορυφή-αφετηρία προς κάθε άλλη κορυφή σε ένα γράφημα. Διατυπώνεται ως εξής: Δίνεται κατευθυνόμενο γράφημα G=(V,E) με συνάρτηση βάρους w(u,v) για κάθε ακμή (u,v)e Ε. Ζητείται να βρεθεί το συντομότερο μονοπάτι (αυτό με το ελάχιστο βάρος) από τον κόμβο s προς κάθε άλλο κόμβο στο δίκτυο. Για την εύρεση συντομότερων μονοπατιών από έναν κόμβο προς όλους τους άλλους όταν τα βάρη των ακμών είναι μη αρνητικά χρησιμοποιείται ο άπληστος αλγόριθμος Dijkstra (σε κατευθυνόμενα ή μη κατευθυνόμενα δίκτυα). Όταν ένα κατευθυνόμενο γράφημα περιέχει ακμές αρνητικού βάρους, χωρίς όμως αυτές να σχηματίζουν αρνητικούς κύκλους, χρησιμοποιείται ο αλγόριθμος δυναμικού προγραμματισμού Bellman-Ford ο οποίος έχει ειδική απλούστερη υλοποίηση για την περίπτωση κατευθυνόμενου ακυκλικού γραφήματος Το πρόβλημα συντομότερου μονοπατιού μεταξύ όλων των ζευγών κορυφών (all-pairs shortest path problem) To πρόβλημα συντομότερου μονοπατιού μεταξύ όλων των ζευγών κορυφών είναι η εύρεση ενός συντομότερου μονοπατιού για κάθε ζεύγος κορυφών ξεχωριστά σε ένα γράφημα. Διατυπώνεται ως εξής: Δίνεται κατευθυνόμενο γράφημα G=(V,E) με συνάρτηση βάρους w(u,v) για κάθε ακμή (u,v)e Ε. Ζητείται να βρεθεί το συντομότερο μονοπάτι για κάθε ζεύγος κόμβων στο δίκτυο. Για την επίλυση αυτού του προβλήματος μπορούν να εφαρμοστούν οι αλγόριθμοι Dijkstra και Bellman-Ford με τη διαφορά του ότι κάθε αλγόριθμος θα πρέπει να εκτελεστεί V φορές, μια φορά για κάθε κορυφή ν, όμως ο Dijkstra δεν είναι κατάλληλος για χρήση σε γραφήματα με αρνητικά βάρη. Άλλωστε υπάρχουν διαθέσιμοι πιο αποδοτικοί αλγόριθμοι. Για γραφήματα με αρνητικά βάρη αλλά χωρίς αρνητικούς κύκλους ένας κατάλληλος αλγόριθμος είναι ο Floyd-Warshall. Ένας ακόμη 6

7 πιο αποδοτικός είναι ο αλγόριθμος Johnson ο οποίος ενσωματώνει τους Dijkstra και Bellman-Ford σε έναν αλγόριθμο. 1.3 Το πρόβλημα της μέγιστης ροής (maximum flow problem) Το πρόβλημα της μέγιστης ροής αφορά την εύρεση μιας μέγιστης εφικτής ροής διαμέσου μιας μοναδικής κορυφής πηγής και ενός μοναδικού προορισμού σε ένα δίκτυο ροής. Το πρόβλημα αυτό απασχόλησε πολλούς ερευνητές και έτσι υπάρχουν πολλοί αλγόριθμοι για την επίλυσή του ενώ ακόμη και σήμερα συνεχίζουν να εμφανίζονται νέοι βελτιωμένοι αλγόριθμοι. Προβλήματα μεγιστοποίησης ροής προκύπτουν σε περιπτώσεις όπως η διακίνηση πληροφοριών ή πακέτων σε δίκτυα τηλεπικοινωνιών (τοπικά δίκτυα, Διαδίκτυο, ταχυδρομικό δίκτυο), η ρύθμιση της κυκλοφορίας στους δρόμους μιας πόλης, το πλήθος των τμημάτων υλικού σε γραμμές συναρμολόγησης σε εργοστάσιο, ρεύμα σε ηλεκτρονικά κυκλώματα, υγρά σε σωλήνες δικτύου αποχέτευσης και πολλές άλλες περιπτώσεις όπου γίνεται μεταφορά υλικού διαμέσου ενός δικτύου. Για την κατανόηση του προβλήματος και των μεθόδων επίλυσης απαιτείται η γνώση των παρακάτω ορισμών: Ένα δίκτυο ροής είναι ένα κατευθυνόμενο συνδεδεμένο γράφημα G=(V,E) με χωρητικότητα στις ακμές ώστε σε κάθε ακμή (u,v)g Ε να αντιστοιχεί μη αρνητική χωρητικότητα c(u,v) > 0 και ροή f(u,v). Σε ένα τέτοιο δίκτυο υπάρχουν δύο διακεκριμένοι κόμβοι, ένας κόμβος s που αποτελεί την πηγή της ροής και ένας κόμβος t που αποτελεί τον προορισμό της. Μια ροή είναι μια συνάρτηση f: V χ V -> I που μπορεί να είναι θετική ή αρνητική ποσότητα και είναι νόμιμη (εφικτή) αν σε κάθε βήμα ισχύουν τα εξής: Περιορισμοί χωρητικότητας Η ροή σε μια ακμή δεν μπορεί να υπερβαίνει τη χωρητικότητα αυτής της ακμής: Για κάθε (u,v)g Ε ισχύει /( «, v)< c( m, ν) Αντισυμμετρία Η ροή δικτύου από το u στο ν πρέπει να είναι αντίθετη από τη ροή δικτύου από το ν στο u: Για κάθε (u,v) G Ε ισχύει /(w,v )= -/(v,w ) Διατήρηση ροής Η ροή δικτύου προς έναν κόμβο είναι μηδενική με εξαίρεση τον κόμβο-αφετηρία η οποία παράγει ροή και τον κόμβο-προορισμό ο οποίος καταναλώνει ροή: Για κάθε u G V-{s,t} ισχύει Σ / ( «, ν ) = 0. vev Η τιμή της ορίζεται ως / = Σ / ( *, ν ) συνολική ροή από την πηγή. 7

8 ροής: Μπορούμε πλέον να διατυπώσουμε τον ορισμό του προβλήματος μέγιστης Δίνεται δίκτυο ροής G=(V,E) το οποίο είναι ένας κατευθυνόμενος γράφος στον οποίο κάθε ακμή (u,v) e Ε έχει χωρητικότητα c(u,v) 0 και ροή f(u,v). Ζητείται να βρεθεί η μέγιστη εφικτή ροή από τον κόμβο-πηγή s στον κόμβο-προορισμό t που ικανοποιεί τους περιορισμούς χωρητικότητας ακμής στο γράφημα G ώστε 0 < f(u,v) ^ c(u,v) για κάθε (u,v) e Ε και επιπλέον διατηρεί την ισότητα Σ / ( «. ν ) - Σ / ( «. ν ) = 0. ν V vek Το πρόβλημα μέγιστης ροής προκύπτει και σε δίκτυα ροής πολλαπλών πηγών και πολλαπλών προορισμών. Σε αυτή την περίπτωση μορφοποιούμε το δίκτυο ώστε να περιέχει μια υπερ-πηγή (super-source) που στέλνει ροή σε όλες τις πηγές και έναν υπερ-προορισμό (super-sink) που δέχεται ροή από όλους τους προορισμούς. Έτσι, έχουμε μετατρέψει το πρόβλημα μέγιστης ροής πολλαπλών-πηγών πολλαπλώνπροορισμών σε απλό πρόβλημα μέγιστης ροής. Παρακάτω δίνονται επιπρόσθετοι ορισμοί των οποίων η γνώση είναι απαραίτητη για την ανάλυση των μεθόδων επίλυσης του προβλήματος: Δεδομένης ροής f σε δίκτυο G=(V,E), η υπολειπόμενη χωρητικότητα cf μιας ακμής (u,v)e Ε αποτελεί την ποσότητα της πρόσθετης ροής που μπορεί να σταλεί διαμέσου της ακμής χωρίς να υπερβούμε την χωρητικότητα c(u,v). Η συνάρτηση υπολειπόμενης χωρητικότητας cf: Ε R ορίζεται ως cf(u,v) = c(u,v) - f(u,v). Ορίζουμε ως υπολειπόμενο δίκτυο Gf το δίκτυο που αποτελείται από τις ακμές με θετική χωρητικότητα και είναι γράφημα Gf =(V, Ef), όπου Ef = {(u, v)e E cf(u,v)>0}. Σε ένα υπολειπόμενο γράφημα ένα οποιοδήποτε μονοπάτι από την πηγή στον προορισμό ονομάζεται μονοπάτι επαύξησης (augmenting path). Η υπολειπόμενη χωρητικότητα ενός μονοπατιού επαύξησης ορίζεται ως η ελάχιστη υπολειπόμενη χωρητικότητα οποιοσδήποτε ακμής στο μονοπάτι και είναι εξ ορισμού πάντα θετική. Έτσι, η ύπαρξη μονοπατιού επαύξησης σε ένα υπολειπόμενο δίκτυο δίνει την δυνατότητα να προσθέσουμε επιπλέον ροή στο δίκτυο. Η διαδικασία εύρεσης αυτών των μονοπατιών και πρόσθεσης ροής σε αυτά επαναλαμβάνεται από την μέθοδο μονοπατιού επαύξησης μέχρις ότου το δίκτυο να μην περιέχει άλλο τέτοιο μονοπάτι. Σύμφωνα με το θεώρημα των Ford και Fulkerson, οι οποίοι πρώτοι χρησιμοποίησαν τη μέθοδο μονοπατιού επαύξησης, μια ροή είναι βέλτιστη (η μέγιστη εφικτή ροή) αν και μόνο αν το υπολειπόμενο γράφημα δεν περιέχει μονοπάτι επαύξησης. Μια τομή s-t (s-t cut) είναι ένας διαχωρισμός του συνόλου V σε δύο υποσύνολα, το S και το T=V-S, τέτοια ώστε ses και tet. Αν αφαιρέσουμε το σύνολο των ακμών που αποτελούν την τομή θα διακοπούν όλα τα μονοπάτια από την πηγή s στον προορισμό t. Μια ακμή (u,v) με ues και tet λέγεται ακμή-προς-τα-εμπρός (forward edge) της τομής και μια ακμή (u,v) με uet και ves ακμή-προς-τα-πίσω (backward edge) 8

9 της τομής. To (S,T) είναι το σύνολο των ακμών-ττρος-τα-εμττρός της τομής και (T,S) το σύνολο των ακμών-προς-τα-πίσω. Η χωρητικότητα μιας τομής είναι το άθροισμα των χωρητικοτήτων των ακμώνττρος-τα-εμττρός στην τομή: c{s,t)= X c(w,v). Η χωρητικότητα c(s,t) μιας (n.v )e (S.r) τομής είναι ένα άνω όριο για την τιμή της ροής f(u,v), δηλαδή / (»v)<c(s\τ) Μια τομή s-t της οποίας η χωρητικότητα είναι η ελάχιστη μεταξύ όλων των τομών s-t λέγεται ελάχιστη τομή. Η συνολική χωρητικότητα των ακμών στην ελάχιστη τομή είναι ίση με την τιμή της μέγιστης ροής, δηλαδή ισχύει το θεώρημα Μέγιστης Ροής - Ελάχιστης Τομής (Max-Flow Min-Cut theorem) που αναφέρει ότι η μέγιστη ροή s-t ισούται με την ελάχιστη χωρητικότητα s-t. Η κλασική μέθοδος επίλυσης του προβλήματος μέγιστης ροής είναι η ονομαζόμενη μέθοδος μονοπατιού επαύξησης (augmenting path method) που αναπτύχθηκε από τους Ford και Fulkerson (1956). Άλλες λύσεις εύρεσης μέγιστης ροής περιλαμβάνουν την μέθοδο blocking flow (ροής εμποδισμού) που επινόησε ο Dinic (1970) και την μέθοδο preflow-push. Η μέθοδος μονοπατιού επαύξησης χρησιμοποιείται από τους αλγορίθμους Ford-Fulkerson και Edmonds-Karp(1969), οι οποίοι εργάζονται βρίσκοντας επανειλημμένα μονοπάτια θετικής χωρητικότητας από την πηγή στον προορισμό και προσθέτοντάς τα στη ροή μέχρι να βρεθεί η τελική μέγιστη ροή. Η διαφορά μεταξύ των δύο αλγορίθμων βρίσκεται στον τρόπο που επιλέγουν το μονοπάτι επαύξησης. Ο αλγόριθμος Ford-Fulkerson χρησιμοποιεί την αναζήτηση κατά βάθος (depth-first search) ενώ ο Edmonds-Karp χρησιμοποιεί την αναζήτηση κατά πλάτος (breadth-first search). Ο αλγόριθμος του Dinic, όπως και ο Edmonds-Karp, χρησιμοποιεί την αναζήτηση κατά πλάτος με τη διαφορά ότι εργάζεται για την εύρεση μονοπατιών επαύξησης εισάγοντας την έννοια της ροής εμποδισμού (ροή σε κάποιο μονοπάτι s-t που έχει κάποια ακμή κορεσμένη, blocking flow). Η μέθοδος preflow-push ανήκει στους ταχύτερους και πιο αποδοτικούς αλγορίθμους για το πρόβλημα της μέγιστης ροής λόγω του ότι πολλαπλά μονοπάτια μπορούν να επαυξηθούν ταυτόχρονα. Χαρακτηριστικό της συγκεκριμένης μεθόδου είναι ότι αρχικά αγνοεί τον περιορισμό διατήρησης της ροής. Η έννοια preflow αναφέρθηκε για πρώτη φορά από τον Karzanof (1974). Υπάρχουν διαφορετικές υλοποιήσεις της μεθόδου όπως η FIFO Preflow-Push και η Highest-Label Preflow- Push που αποτελούν τις μεθόδους επιλογής στους καλύτερους κώδικες. [2][1][7] 1.4 Το πρόβλημα της ροής ελάχιστου κόστους (minimum-cost flow problem) Το πρόβλημα της ροής ελάχιστου κόστους συνίσταται στον προσδιορισμό του πιο οικονομικού τρόπου μεταφοράς μιας ορισμένης ποσότητας ροής διαμέσου ενός δικτύου ροής. Αποτελεί θεμελιώδες πρόβλημα στη θεωρία δικτύων ροής και έχει ποικίλες εφαρμογές σε δίκτυα ροών που αντιμετωπίζουν περιορισμούς χωρητικότητας των επικοινωνιακών γραμμών και ταυτόχρονα απαιτούν την εύρεση ελάχιστου κόστους διαδρομών διαμέσου των οποίων θα γίνει η μεταφορά της ροής. 9

10 Ορισμός προβλήματος ροής ελάχιστου κόστους: Δίνεται δίκτυο ροής G που είναι ένα κατευθυνόμενο γράφημα G=(V,E). Σε κάθε ακμή (u,v)e Ε αντιστοιχεί μεγίστη χωρητικότητα ροής c(u,v) > 0, ποσότητα ροής f(u,v) > 0 και κόστος ανά μονάδα ροής w(u,v) > 0. Σε κάθε κόμβο (κορυφή) vev αντιστοιχεί τιμή bu που είναι η καθαρή ροή που δημιουργείται στη κορυφή u και προσδιορίζει αν ο κόμβος είναι κόμβος προσφοράς (supply node) ή κόμβος ζήτησης (demand node) ή ενδιάμεσος κόμβος (transhipment node) ως εξής: Αν bu > 0 ο κόμβος u είναι κόμβος προσφοράς Αν bu < 0 ο κόμβος u είναι κόμβος ζήτησης Αν bu = 0 ο κόμβος u είναι ενδιάμεσος Το κόστος αποστολής ροής είναι το γινόμενο του πολλαπλασιασμού f(u,v) w(u,v). Ζητείται το ελάχιστο συνολικό κόστος ροής με το οποίο μπορούμε να στείλουμε ροή ποσότητας b από την πηγή s στον προορισμό t: min Σ / ( μ. ν) νν(μ, ν) (μ, v)e/t ' I όπου Σ f ( u >ν ) Σ / ( ν>ιι) = bu για κάθε vgv V6K vek και 0 ^ /(w,v ) ^ c{u,v) για κάθε (u,v)gv Επιπλέον, για την ροή b ισχύει: Σ ^ «= 0 uev Θεωρούμε ότι οι τιμές όλων των δεδομένων είναι ακέραιοι αριθμοί (πρακτικά δεν είναι περιοριστικό). Το πρόβλημα ροής ελάχιστου κόστους προκύπτει και για δίκτυα ροής πολλαπλών πηγών και πολλαπλών προορισμών. Μια σημαντική παραλλαγή του προβλήματος ροής ελάχιστου κόστους είναι το πρόβλημα μέγιστης ροής-ελάχιστου κόστους, όπου απαιτείται η εύρεση της μέγιστης ροής που έχει το χαμηλότερο κόστος μεταξύ των μέγιστων ροών. Ένα άλλο πρόβλημα, παρόμοιο με αυτό της ροής ελάχιστου κόστους είναι και το πρόβλημα κυκλοφορίας ελάχιστου κόστους (minimum-cost circulation problem). Το πρόβλημα αυτό αναζητά την κυκλοφορία με το ελάχιστο κόστος σε ένα δίκτυο με ακμές που φέρουν χωρητικότητες και κόστη ανά μονάδα ροής. Κυκλοφορία ονομάζεται μια ροή σε ένα δίκτυο όπου δεν υπάρχει πηγή και προορισμός. Οι Edmonds και Karp ήταν οι πρώτοι που έδωσαν λύση σε αυτό το πρόβλημα με έναν αλγόριθμο που χρησιμοποιεί την τεχνική κλιμάκωσης χωρητικότητας (capacity scaling). Το πρόβλημα συντομότερου μονοπατιού και το πρόβλημα της μέγιστης ροής που παρουσιάστηκαν στα προηγούμενα κεφάλαια αποτελούν ειδικά προβλήματα ροής ελάχιστου κόστους. Η διαφορά τους έγκειται στο ότι τα προβλήματα συντομότερου μονοπατιού λαμβάνουν υπόψιν το κόστος ακμής αλλά όχι την χωρητικότητα ακμής ενώ τα προβλήματα μέγιστης ροής το ακριβώς αντίθετο. Κατά 10

11 συνέπεια, αν σε ένα πρόβλημα ροής ελάχιστου κόστους αφαιρεθεί ο περιορισμός χωρητικότητας το πρόβλημα μετασχηματίζεται σε πρόβλημα συντομότερου μονοπατιού ενώ αν μηδενιστούν όλα τα κόστη των ακμών το πρόβλημα μετασχηματίζεται σε πρόβλημα μέγιστης ροής. Τα προβλήματα ελάχιστου κόστους ροής συνδυάζουν στοιχεία και από τα δύο αυτά προβλήματα και ενσωματώνουν κοινούς υπολογισμούς. [1] Οι βασικοί ψευδο-πολυωνυμικοί αλγόριθμοι εύρεσης ροής ελάχιστου κόστους είναι οι Cycle-canceling (Klein ), Successive shortest path (Jewell ), Primal-dual (Dantzig, Ford, Fulkerson ) και Out-of-kilter (Minty, Fulkerson ). Και οι τέσσερις αυτοί αλγόριθμοι υπολογίζουν συντομότερα μονοπάτια ως μέρος λύσης του προβλήματος. Ένας ακόμη αλγόριθμος είναι ο Relaxation (Bertsekas, Tseng -1988). Άλλοι αλγόριθμοι πολυωνυμικού χρόνου είναι ο αλγόριθμος Capacity scaling και οι τροποποιήσεις του Repeated capacity scaling και Enhanced capacity scaling, o Double scaling, o Cost scaling και o Minimum mean cycle-canceling (Goldberg, Tarjan -1988). 1.5 To πρόβλημα του ελάχιστου συνδετικού δέντρου, Ε.Σ.Δ. (minimum spanning tree problem, MST) Ένα ακόμη θεμελιώδες πρόβλημα με ποικίλες εφαρμογές σε όλες τις κατηγορίες δικτύων όπως τα τηλεφωνικά δίκτυα, τα δίκτυα δρόμων, τα ηλεκτρικά δίκτυα και στην περίπτωση που μας ενδιαφέρει τα δίκτυα υπολογιστών, είναι το πρόβλημα της εύρεσης ελάχιστου συνδετικού δέντρου, δηλαδή ενός συνδετικού δέντρου με το ελάχιστο συνολικό μήκος ακμών. Για την κατανόηση του προβλήματος δίνονται οι παρακάτω ορισμοί: Ένας γράφος G=(V,E) ονομάζεται δέντρο εάν είναι συνεκτικός και δεν περιέχει κύκλους. Συνεκτικός γράφος είναι αυτός στον οποίο υπάρχει διαδρομή από κάθε κόμβο σε κάθε άλλο κόμβο. Συνδετικό δέντρο (spanning tree) του G' ονομάζεται ένας υπογράφος G'=(V',E'), όπου V 'ç V και Ε' ç Ε, ο οποίος είναι δέντρο και περιλαμβάνει όλες τις κορυφές του G. Ορισμός του προβλήματος ελάχιστου συνδετικού δέντρου: Δεδομένου συνδεδεμένου γραφήματος ΰ βεβαρημένου στις ακμές με θετικά βάρη, ζητείται να βρεθεί ένα σύνολο ακμών με το ελάχιστο συνολικό βάρος(μήκος) που συνδέει όλες τις κορυφές. Δύο σημαντικές ιδιότητες των ελάχιστων συνδετικών δέντρων είναι η ιδιότητα της τομής και η ιδιότητα του κύκλου: 11

12 Ιδιότητα τομής Μια τομή C είναι ένας διαχωρισμός των κορυφών σε δύο σύνολα, S και V-S. Η τομή έχει μια ιδιότητα που δείχνει πότε μία ακμή είναι η κατάλληλη επόμενη ακμή προς πρόσθεση κατά την κατασκευή ενός ελάχιστου συνδετικού δέντρου. Ονομάζουμε X το σύνολο των ακμών σε ένα ελάχιστο συνδετικό δέντρο στο G= (V,E). Επιλέγουμε επανειλημμένα ένα οποιοδήποτε σύνολο S c V όπου το X δεν περιέχει ακμές στην τομή C (μεταξύ των συνόλων S και V-S), και έστω η ακμή eee η ακμή με το ελάχιστο βάρος στην τομή. Τότε X = X U {e}. Η επανάληψη σταματάει όταν έχουν περιέλθει στο X όλες οι V -1 ακμές του G. Με απλά λόγια, αν το βάρος μιας ακμής e στην τομή C είναι το ελάχιστο μεταξύ όλων των άλλων ακμών της C, τότε η ακμή ανήκει στο ελάχιστο συνδετικό δέντρο. [3] Ιδιότητα κύκλου Σε έναν οποιονδήποτε κύκλο C στο γράφημα, αν το βάρος μιας ακμής e στην τομή C είναι το μέγιστο μεταξύ όλων των ακμών της C, τότε η ακμή δεν μπορεί να ανήκει σε ένα ελάχιστο συνδετικό δέντρο. Οι πιο σημαντικοί αλγόριθμοι επίλυσης του προβλήματος αυτού είναι οι αλγόριθμοι άπληστης τεχνικής Prim και Kruskal. Ο αλγόριθμος του Prim εργάζεται για την εύρεση δέντρου ελάχιστου κόστους συνδέοντας σε ένα δημιουργημένο υποδέντρο την κορυφή που είναι πλησιέστερη στις ήδη υπάρχουσες κορυφές στο δέντρο ενώ ο αλγόριθμος του Kruskal εργάζεται επιλέγοντας ακμές που η ένταξη τους στο δέντρο δεν δημιουργεί κύκλο και είναι πιο αποτελεσματικός στην ανίχνευση κύκλων με τη χρήση δομών δεδομένων με εντολές union-find. 12

13 2. Αλγόριθμοι επίλυσης προβλημάτων δρομολόγησης 2.1 Αλγόριθμοι συντομότερου μονοπατιού μοναδικής αφετηρίας (single-source shortest path) Σε αυτό το κεφάλαιο παρουσιάζονται οι αλγόριθμοι που λύνουν το πρόβλημα του συντομότερου μονοπατιού μοναδικής αφετηρίας σε γραφήματα βεβαρημένα στις ακμές με διαφορετικά βάρη. Σημειώνεται ότι το ίδιο πρόβλημα σε γραφήματα που φέρουν ίσα βάρη στις ακμές (θεωρούνται όλα μονάδα) λύνεται με τον αλγόριθμο της αναζήτησης κατά πλάτος (breadth-first search, BFS) Ο αλγόριθμος Dijkstra Ο αλγόριθμος του Dijkstra (E.W.Dijkstra, 1959) προσφέρει λύση στο πρόβλημα εύρεσης των συντομότερων μονοπατιών από έναν συγκεκριμένο κόμβοαφετηρία προς όλους τους άλλους κόμβους-προορισμούς σε ένα δίκτυο υπολογιστών, εξετάζοντας το κόστος της διαδρομής, ξεκινώντας από τον πλησιέστερο στην αφετηρία κόμβο και συνεχίζοντας κατά σειρά απόστασης μέχρις ότου να εξεταστούν όλοι οι κόμβοι. Για να βρει τη λύση του προβλήματος ο αλγόριθμος χρησιμοποιεί την μέθοδο της άπληστης προσέγγισης, όπου σε κάθε βήμα επιλέγει την τοπικά βέλτιστη λύση(το συντομότερο μονοπάτι για κάθε κόμβο με εξέταση των γειτονικών κόμβων) ώσπου στο τελευταίο βήμα συνθέτει μια συνολικά βέλτιστη λύση (το συνολικό συντομότερο μονοπάτι μέχρι τον προορισμό). Ο Dijkstra ανήκει στους αλγορίθμους που χρησιμοποιούν τη μέθοδο της ανάθεσης ετικετών (labeling algorithm) και συγκεκριμένα είναι αλγόριθμος τοποθέτησης ετικετών (label-setting algorithm) που σημαίνει ότι εργάζεται ως εξής: Σε κάθε κόμβο αντιστοιχεί μια ετικέτα η οποία περιέχει την απόστασή του από την αφετηρία με βάση το συντομότερο μέχρι στιγμής μονοπάτι. Όταν ξεκινάει ο αλγόριθμος ορίζεται ως αρχική τιμή της ετικέτας για κάθε κόμβο το άπειρο ( ), (εκτός του κόμβου αφετηρίας που η τιμή του είναι μηδέν και είναι μόνιμη) εφόσον δεν έχουν βρεθεί ακόμη μονοπάτια. Οι ετικέτες είναι αρχικά προσωρινές. Καθώς όμως προχωράει ο αλγόριθμος ενδέχεται να αλλάξουν ώστε να δείχνουν τα νέα συντομότερα μονοπάτια μέχρις ότου να βρεθεί ότι η τιμή της ετικέτας πλέον δείχνει το συντομότερο δυνατό μονοπάτι από την αφετηρία σε αυτόν τον κόμβο οπότε και η ετικέτα γίνεται μόνιμη αποκτώντας την τελική της τιμή. Με την ιδιότητα του ως αλγόριθμος δρομολόγησης κατάστασης-συνδέσμων (link-state), ο Dijkstra, στηρίζεται στις πληροφορίες τοπολογίας και στα κόστη που γίνονται γνωστά σε όλους τους κόμβους καθώς και στους δικούς του υπολογισμούς συντομότερου μονοπατιού προς κάθε κόμβο, για να φτιάξει έναν πίνακα προώθησης για τον κόμβο που αποτέλεσε την αφετηρία. Θεωρούμε το δίκτυο ως ένα θετικά βεβαρημένο γράφο (ή διγράφο) G=(V,E), όπου V το σύνολο των κόμβων (ή κορυφών) και Ε το σύνολο των ακμών. Κάθε ακμή (v,u) φέρει βάρος w(v,u) το οποίο λέγεται μήκος ή κόστος της ακμής. Σκοπός του αλγορίθμου είναι να βρεθούν όλα τα συντομότερα μονοπάτια από ένα διακεκριμένο κόμβο-αφετηρία(8ουγθβ) s προς κάθε άλλο κόμβο ν στο γράφημα. Το αποτέλεσμα 13

14 που επιστρέφει στην έξοδό του ο αλγόριθμος είναι το κόστος του ελάχιστου μονοπατιού. Το κόστος αυτό προκύπτει από το άθροισμα των βαρών των ακμών που περιέχονται στο μονοπάτι. Σε περίπτωση που οι ακμές έχουν αρνητικά βάρη χρησιμοποιούνται ο αλγόριθμος των Bellman και Ford ή ο αλγόριθμος των Floyd- Warshall, καθώς ο αλγόριθμος δίνει σωστό αποτέλεσμα μόνο για μη αρνητικά βάρη ακμών. Ο αλγόριθμος διατηρεί ετικέτα απόστασης με ένα διάνυσμα d[] μεγέθους V =n, όπου αποθηκεύεται η μέχρι στιγμής υπολογισμένη ελάχιστη απόσταση από την αφετηρία για κάθε κόμβο. Κατά την αρχικοποίηση, η απόσταση που δίνεται για τον κόμβο-αφετηρία source είναι μηδέν και η απόσταση για όλους τους άλλους κόμβους ν παίρνει την τιμή άπειρο ( ). Ένα ακόμη διάνυσμα, το prev[], μεγέθους η είναι ένας δείκτης, όπου για κάθε κόμβο αποθηκεύεται ο αμέσως προηγούμενος από αυτόν κόμβος στο συντομότερο μονοπάτι από τον κόμβο-αφετηρία μέχρι τον κόμβο αυτό. Προσθέτοντας στον αλγόριθμο κώδικα για την τοποθέτηση των δεικτών αυτών από τον τελευταίο προς τον πρώτο, μπορούμε να βρούμε τη σειρά των κόμβων στο συντομότερο μονοπάτι που έχει βρεθεί. Ο αλγόριθμος δεν βρίσκει μόνο το συντομότερο μονοπάτι από την αφετηρία μέχρι τον προορισμό, αλλά βρίσκει και τα συντομότερα μονοπάτια για όλους τους ενδιάμεσους κόμβους αφού πρέπει να τα υπολογίσει ξεχωριστά για κάθε έναν κόμβο προκειμένου να βρει το συνολικό ελάχιστο μονοπάτι. Έτσι, μετά την αρχικοποίηση, ξεκινάει μια σειρά επαναλήψεων όπου σε κάθε επανάληψη προσδιορίζεται το συντομότερο μονοπάτι από κάποιον κόμβο σε κάποιον άλλο νέο κόμβο ως ακολούθως: Σε κάθε επανάληψη ο αλγόριθμος χωρίζει τους κόμβους σε δύο σύνολα: Το σύνολο S, αρχικά κενό, είναι το σύνολο στο οποίο αποθηκεύεται το σύνολο των κόμβων που έχουν εξεταστεί και για τους οποίους έχει βρεθεί το ελάχιστο μονοπάτι (οι ετικέτες των κόμβων αυτών είναι πλέον μόνιμες), Το σύνολο Q, το οποίο αρχικά περιέχει όλους τους κόμβους του γραφήματος, είναι το σύνολο το οποίο περιέχει τους εναπομείναντες κόμβους προς εξέταση (κόμβοι με προσωρινές ετικέτες). Μέχρι να εξεταστούν όλοι οι κόμβοι στο σύνολο Q, ο αλγόριθμος επιλέγει σε κάθε επανάληψη έναν κόμβο ν, ο οποίος δεν έχει ακόμη προστεθεί στο S, τέτοιον ώστε το μονοπάτι να διατηρείται ελάχιστο, και στη συνέχεια για κάθε γειτονικό του κόμβο u, έτσι ώστε (v,u) G Ε,ο οποίος δεν υπάρχει στο S, αν βρεθεί ότι ο κόμβος u αποτελεί ένα συντομότερο μονοπάτι τότε ανανεώνει την ετικέτα απόστασης dß με την νέα τιμή της ελάχιστης απόστασης. Η διαδικασία ανανέωσης των ελάχιστων αποστάσεων ονομάζεται χαλάρωση (relaxation, approximation, προσέγγιση) των ακμών και ανανεώνει την ετικέτα απόστασης d[u] ως εξής: d[u] < min{d[v],d[u] +w(v,u)}. Ο αλγόριθμος σταματάει όταν όλοι οι κόμβοι έχουν προστεθεί στο σύνολο S (οι ετικέτες όλων των κόμβων έχουν γίνει μόνιμες). Κατά την διάρκεια της εκτέλεσης του αλγορίθμου, σχηματίζεται δέντρο ελάχιστων αποστάσεων Τ στο οποίο προστίθεται κάθε κόμβος για τον οποίο έχει προσδιοριστεί η ελάχιστη απόσταση του από την αφετηρία (έχει αποκτήσει μόνιμη 14

15 ετικέτα). Στο τέλος της εκτέλεσης, όταν οι ετικέτες απόστασης περιέχουν τις συντομότερες αποστάσεις, το συνολικό ελάχιστο μονοπάτι που προκύπτει με την αναδιάταξη των δεικτών προς τα πίσω, αποτελεί ένα δέντρο συντομότερου μονοπατιού με ρίζα τον κόμβο-αφετηρία. [1] Ο αλγόριθμος του Dijkstra για το συντομότερο μονοπάτι σε ψευδογλώσσα shortest path-dijkstra (G. w, si 1. d[s] < 0 ; 2. for all v G V - {s} do 3. d[v] «; 4. prev[v] < null ; 5. S <- 0 ; 6. Q V ; 7. while Q Φ 0 do 8. choose a vertex v e Q such that d[v]=min ; 9. S ^ S U { v } ; 10. Q < Q - {v }; 11. for all u G V - S such that (v,u) G E do 12. if d[u] > d[v] + w(v,u) then // διαδικασία χαλάρωσης, relaxation(v,u,w) 13. d[u] < d[v] + w(v,u) ; 14. prev[u] < v ; 15. return d ; Απόδειξη ορθότητας του αλγορίθμου: Λήμμα 1: Ο αλγόριθμος τερματίζει. Απόδειξη: Είναι προφανές ότι ο αλγόριθμος τερματίζει όταν το σύνολο Q που περιέχει τους προς εξέταση κόμβους αδειάσει (γραμμή 7 του ψευδοκώδικα). Λήμμα 2: Εάν στο τέλος της εκτέλεσης υπάρχει κάποιος κόμβος d[v] με ετικέτα k, τότε υπάρχει μονοπάτι από το κόμβο-αφετηρία s στον κόμβο ν του οποίου το κόστος είναι k. Απόδειξη: Ο κόμβος d[v] ανανεώνει την ετικέτα απόστασής του στη γραμμή 13 του ψευδοκώδικα, την οποία ετικέτα πήρε από κάποιον κόμβο ν ο οποίος πήρε τη δική του ετικέτα d[u] από κάποιον κόμβο w κ.ο.κ., μέχρι που φτάνει πίσω στον αρχικό κόμβο s [6], Λήμμα 3: Η ετικέτα κάθε κόμβου που έχει αφαιρεθεί από την ουρά προτεραιότητας και προστεθεί στο S περιέχει το μήκος του ελάχιστου μονοπατιού από τον κόμβοαφετηρία ως τον συγκεκριμένο κόμβο ( d[v] = ö(s,v)). 15

16 Απόδειξη: Απόδειξη με επαγωγή στον αριθμό επανάληψης κατά το οποίο ο κόμβος ν μετακινείται στο S. > Βασική περίπτωση: Βήμα 0, d[s] = 0 που είναι όντως το ελάχιστο κόστος. > Επαγωγική υπόθεση: Έστω ότι το λήμμα ισχύει για όλους τους κόμβους που προστέθηκαν πριν τον κόμβο ν, δηλαδή για κάθε ves, d[v]= ô(s,v). > Στο τρέχον βήμα (βήμα η): Ο κόμβος ν προστίθεται στο S φέροντας ετικέτα απόστασης d[v]. Σύμφωνα με το λήμμα 2 υπάρχει μονοπάτι μεταξύ του κόμβου-αφετηρία s και του κόμβου ν με κόστος d[v], Όλοι οι κόμβοι του μονοπατιού αυτού βρίσκονται στο S με εξαίρεση τον κόμβο ν. Ας υποθέσουμε ότι το μονοπάτι αυτό δεν είναι το ελάχιστο και ότι υπάρχει κάποιο άλλο μονοπάτι Ρ με μικρότερο κόστος. Εφόσον ο κόμβος ν δεν ανήκει στο σύνολο S, το μονοπάτι Ρ πρέπει να έχει μια ακμή με το ένα άκρο της εκτός του S. Έστω ότι η κορυφή w είναι σε αυτό το άκρο και (u,w) η ακμή. Σύμφωνα με την επαγωγική υπόθεση, το κόστος d[u] είναι το ελάχιστο κόστος από τον κόμβοαφετηρία s στον κόμβο u. Όμως στο βήμα αυτό ισχύει d[w] < d[u] + w(u,w) και επομένως, d[w] < d[v]. Αλλά τότε ο κόμβος που πρέπει να προστεθεί στο S είναι ο w και όχι ο ν. Είναι άτοπο άρα το λήμμα αποδείχθηκε [6], Η αναπαράσταση του συνόλου Ο στον αλγόριθμο του Dijkstra, μπορεί να γίνει με διάφορες δομές δεδομένων. Μια από αυτές είναι η ουρά προτεραιότητας ελάχιστου (min-priority queue). Η ουρά προτεραιότητας ελάχιστου είναι μια ουρά με την πρόσθετη λειτουργία της απόδοσης προτεραιότητας στους κόμβους με βάση το βάρος των ακμών. Ο αλγόριθμος όπως διατυπώθηκε από τον Dijkstra, δεν περιλαμβάνει ουρά προτεραιότητας ελάχιστου. Η χρήση της ουράς προτεραιότητας ελάχιστου, όμως, στον αλγόριθμο αυτό, υλοποιημένης με σωρό ελάχιστου (min-heap) είναι ευρέως διαδεδομένη και προτιμάται λόγω του ότι βελτιώνει το χρόνο εκτέλεσης του αλγορίθμου με τον σωρό Fibonacci (Fredman-Tarjan,1984) να παρουσιάζει τον καλύτερο ασυμπτωτικό χρόνο εκτέλεσης. Ένας σωρός ελάχιστου είναι μια δομή δεδομένων η οποία μπορεί να εκτελέσει, σε μία συλλογή στοιχείων Η, τις ακόλουθες λειτουργίες: δημιουργία άδειου σωρού, εισαγωγή στοιχείου με προκαθορισμένο κλειδί, αναζήτηση και επιστροφή του στοιχείου ί με την ελάχιστη τιμή, μείωση του κλειδιού στοιχείου ί, διαγραφή στοιχείου ί με την ελάχιστη τιμή κλειδιού. Ένας τέτοιος σωρός πρέπει να ικανοποιεί την εξής ιδιότητα: τα κλειδιά των κόμβων-γονέων είναι μικρότερα ή ίσα από αυτά των κόμβωνπαιδιών και το ελάχιστο κλειδί βρίσκεται στη ρίζα του δέντρου (κόμβο-αφετηρία). Ο αλγόριθμος του Dijkstra για το συντομότερο μονοπάτι με ουρά προτεραιότητας υλοποιημένη με min-heap σε ψευδογλώσσα shortest path-dijkstra (G. w. s) 1. create-heap(h) ; // δημιουργία ουράς με τα στοιχεία σε σειρά προτεραιότητας 2. d [ s ] 0 ; 3. for all u e V - {s} do 16

17 4. d[u] < 00 ; 5. prev[u] < n u ll; 6. insert(u, H ); // εισαγωγή στοιχείων 7. while Η Φ 0 do 8. find-min(u, H ); // εύρεση στοιχείου με την ελάχιστη τιμή κλειδιού 9. delete-min(u, Η ); // αφαίρεση στοιχείου από την ουρά 10. for all u such that (v,u) E E do 11. if d[u] > d[v] + w(v,u) then 12. d[u] < d[v] + w(v,u) ; 13. prev[u] < v ; 14. decrease-key(d[u], u, H ); // μείωση τιμής κλειδιού του u 15. return d ; Η χρονική πολυπλοκότητα του αλγορίθμου εξαρτάται από τις δομές δεδομένων που χρησιμοποιήθηκαν και τον τρόπο υλοποίησης της ουράς προτεραιότητας. Στην πιο απλή του υλοποίηση, στην πρωτότυπη υλοποίηση του Dijkstra, όπου οι κόμβοι του συνόλου Q αποθηκεύονται σε έναν πίνακα ή μια συνδεδεμένη λίστα και η αναζήτηση του στοιχείου με το ελάχιστο κλειδί είναι γραμμική, ο αλγόριθμος εκτελείται σε χρόνο 0( V 2). Όπως μπορούμε να δούμε, οι γραμμές 11 ως 14 στον ψευδοκώδικα απαιτούν 0( V ) χρόνο, το ίδιο και το βήμα στη γραμμή 8 το οποίο επαναλαμβάνεται V φορές. Έτσι, η συνολική πολυπλοκότητα είναι 0( V 2). Αυτός είναι και ο καλύτερος χρόνος για πυκνά δίκτυα. Η υλοποίηση του Dijkstra με σωρό ελάχιστου (δομή δεδομένων δυαδικού σωρού), απαιτεί 0(log V ) χρόνο για να εκτελέσει εισαγωγή, μείωση κλειδιού ή διαγραφή ελάχιστου και 0(1) χρόνο για άλλες λειτουργίες σωρού. Αυτή η υλοποίηση εκτελείται σε χρόνο 0( E log V ) και είναι πιο αργή για πυκνά δίκτυα από την πρωτότυπη υλοποίηση. Η χρήση σωρού Fibonacci για την υλοποίηση της ουράς προτεραιότητας στον αλγόριθμο Dijkstra δίνει τον ασυμπτωτικά γρηγορότερο γνωστό χρόνο εκτέλεσης αλγορίθμου εύρεσης συντομότερων μονοπατιών. Ο σωρός Fibonacci εκτελεί την λειτουργία delete-min (διαγραφή ελάχιστου) σε χρόνο 0(log V ) και κάθε άλλη λειτουργία σε χρόνο 0(1). Ο συνολικός χρόνος εκτέλεσης είναι 0( V log V + Ε ). [1 Ρ ] Παράδειγμα: 17

18 Αριθμός επανάληψης [Β], ργθν[β] prev[c] ό[ϋ], ργθνρ] ό[ε], ργθν[ε] όιέ], ργβν[ρ] 0 {Α} 5, Α Ο 1, Α 00 Ο 1 {Α,ϋ} 4, ϋ Ο 2 {Α,ϋ,Β} 6, Β 7, Β 00 3 {Α,ϋ,Β,Ο} 7, Β 10, {Α,ϋ,Β,Ο,Ε } {Α,ϋ,Β,Ο,Ε,Ρ } 10, 0 Στο παραπάνω γράφημα βλέπουμε τα συντομότερα μονοπάτια προς κάθε κόμβο (δείχνονται με τα έντονα βέλη). Πίνακας δρομολόγησης του κόμβου Α ΑΠΟ Α ΕΠΟΜΕΝΟ Σ ΚΟΜΒΟΣ ΚΟΣΤΟΣ ΠΡΟΣ Β Ό 4 ΠΡΟΣ 0 Β 6 ΠΡΟΣ 0 Α 1 ΠΡΟΣ Ε Β 7 ΠΡΟΣ Ρ

19 2.1.2 Ο αλγόριθμος Bellman-Ford Ο αλγόριθμος Bellman-Ford (Richard Bellman , Lester Ford Jr , Edward F. Moore -1957) ανήκει στους αλγορίθμους που δίνουν λύση στο πρόβλημα της εύρεσης συντομότερων μονοπατιών από μοναδική αφετηρία προς όλους τους άλλους προορισμούς, όπως ο αλγόριθμος του Dijkstra, με τη διαφορά ότι μπορεί να χρησιμοποιηθεί στην περίπτωση που υπάρχουν ακμές με αρνητικό βάρος αρκεί να μην υπάρχουν αρνητικοί κύκλοι. Αν υπάρχουν αρνητικοί κύκλοι, ο αλγόριθμος είναι ικανός να τους εντοπίσει και ο υπολογισμός του συντομότερου μονοπατιού είναι άκυρος. Ο Bellman-Ford είναι ένας αλγόριθμος δυναμικού προγραμματισμού που βρίσκει εφαρμογή στη δρομολόγηση δικτύων υπολογιστών με την προσέγγιση διανυσμάτων απόστασης. Στη προσέγγιση αυτή, για να προσδιορίσει το καλύτερο μονοπάτι ένας κόμβος διατηρεί διάνυσμα απόστασης με τα ελάχιστα κόστη προς τους άλλους κόμβους. Κάθε κόμβος στο δίκτυο στέλνει περιοδικά πληροφορίες διανύσματος απόστασης στο γείτονά του, ο κόμβος που τις παραλαμβάνει ανανεώνει το δικό του διάνυσμα απόστασης με τη χρήση του αλγορίθμου Bellman-Ford και αν υπάρχουν αλλαγές ενημερώνει τους γειτονικούς κόμβους στέλνοντας με τη σειρά του τις πληροφορίες [4]. Ο Bellman-Ford χρησιμοποιεί ετικέτες (είναι labeling algorithm) και συγκεκριμένα είναι αλγόριθμος διόρθωσης ετικετών (label-correcting algorithm) που σημαίνει ότι διατηρεί ετικέτα απόστασης για κάθε κόμβο την οποία ενημερώνει επαναλαμβανόμενα σε κάθε βήμα μέχρις ότου να ικανοποιεί την συνθήκη βελτιστότητας συντομότερου μονοπατιού. Οι ετικέτες αρχικοποιούνται να έχουν άπειρο μήκος ( ) και στη συνέχεια κάθε φορά που βρίσκεται ένα μονοπάτι μικρότερου μήκους η τιμή ανανεώνεται ώστε να περιέχει την τιμή του νέου συντομότερου μονοπατιού. [1] Δίδεται κατευθυνόμενος γράφος G=(V,E), όπου V το σύνολο των κόμβων (ή κορυφών) και Ε το σύνολο των ακμών. Κάθε ακμή (u,v), φέρει βάρος w(u,v) το οποίο μπορεί να είναι αρνητικό. Ο αλγόριθμος Bellman-Ford βρίσκει το κόστος των συντομότερων μονοπατιών από έναν κόμβο-αφετηρία s προς κάθε άλλο κόμβο v e V ή αναφέρει την ύπαρξη αρνητικού κύκλου στο γράφημα. Ένας αρνητικός κύκλος είναι ένας κύκλος του οποίου το άθροισμα των βαρών των ακμών είναι αρνητικό. Η βασική διαδικασία στον Bellman-Ford, όπως και στον Dijkstra, είναι η διαδικασία της χαλάρωσης ακμών την οποία ο αλγόριθμος εκτελεί για όλους τους V - 1 κόμβους. Σε κάθε επανάληψη, ο αλγόριθμος ανανεώνει την ελάχιστη απόσταση d[v], η τιμή της οποίας έχει αρχικοποιηθεί σε άπειρο, προσεγγίζοντας σταδιακά τη βέλτιστη λύση και γεμίζοντας έναν πίνακα prevq με δείκτες στους προηγούμενους κόμβους ώστε στο τέλος της εκτέλεσης, στον πίνακα αυτό να περιέχονται οι κόμβοι που έχουν αποκτήσει μόνιμες ετικέτες και να έχει καταγραφεί η σειρά των κόμβων στο συντομότερο μονοπάτι. Ο πίνακας prev[j δημιουργεί γράφο προκατόχων ο οποίος ορίζει δέντρο συντομότερων μονοπατιών εκτός από την περίπτωση που ο διγράφος περιέχει αρνητικό κύκλο οπότε δεν ορίζεται δέντρο. Μετά την διαδικασία της χαλάρωσης έχει προστεθεί ο έλεγχος εντοπισμού αρνητικών κύκλων. Ο αλγόριθμος εκτελεί ξανά ένα πέρασμα από όλες τις ακμές Ε. Αν βρεθεί ακμή για την οποία ισχύει d[v] > d[u] + w(u,v) που σημαίνει ότι η προηγούμενη τιμή δεν είναι η βέλτιστη, τότε ο G περιέχει αρνητικό κύκλο. Αν ανιχνευτεί αρνητικός 19

20 κύκλος ο αλγόριθμος σταματά και τα αποτελέσματα των προηγούμενων διαδικασιών είναι άκυρα. Ένα πρόβλημα που εμφανίζεται σε αλγορίθμους δρομολόγησης διανύσματος απόστασης και που μπορεί να προκύψει κατά την χρήση αυτού του αλγορίθμου είναι το πρόβλημα της μέτρησης στο άπειρο (count to infinity problem). Αιτία εμφάνισης του προβλήματος αυτού κατά την δρομολόγηση είναι είτε η αποτυχία σύνδεσης προς κάποιο κόμβο στο δίκτυο ο οποίος αφαιρέθηκε είτε η αύξηση της τιμής της απόστασης ενός κόμβου για την οποία δεν υπάρχει ακόμη ενημέρωση. Σε τέτοιες καταστάσεις ο αλγόριθμος προσαρμόζει αργά την τιμή της απόστασης προς τα πάνω. Το πρόβλημα μέτρησης στο άπειρο υπάρχει μόνο στο πρωτόκολλο RIP, το οποίο χρησιμοποιείται σπάνια πλέον, και υπάρχουν τεχνικές αποφυγής του (οι split horizon και poison reverse). Πιο πρόσφατα πρωτόκολλα όπως το EIGRP δεν αντιμετωπίζουν αυτό το πρόβλημα. Ο αλγόριθμος Bellman-Ford για το συντομότερο μονοπάτι σε ψευδογλώσσα shortest path-bellman-ford (G. w. st 1. d[s] < 0 ; 2. for all v e V - {s} do 3. d[v] < 00 ; 4. prev[v] < null ; for k 1 to V -1 do 7. for all edges (u,v) e E do 8. if d[v] > d[u] + w(u,v) then // διαδικασία χαλάρωσης, relaxation^,u,w) 9. d[v] < d[u] + w(u,v) ; 10. prev[v] < u ; for all (u,v) e E do // έλεγχος για αρνητικούς κύκλους 13. if d[v] > d[u] + w(u,v) then 14. return "NEGATIVE CYCLE"; Απόδειξη ορθότητας του αλγορίθμου: Λήμμα 1: Ο αλγόριθμος τερματίζει. Απόδειξη: Το κύριο μέρος του αλγορίθμου (γραμμή 6 έως 12) εκτελείται σε O(V-E) βήματα και ο έλεγχος για αρνητικούς κύκλους σε το πολύ Ε βήματα. Επομένως, ο αλγόριθμος έχει πεπερασμένο αριθμό βημάτων. Λήμμα 2: Εάν δεν βρεθεί αρνητικός κύκλος, στο τέλος της εκτέλεσης οι ετικέτες d[v] για κάθε κόμβο ν περιέχουν το μονοπάτι ελάχιστου κόστους από τον κόμβο-αφετηρία s στον κόμβο ν. Απόδειξη: Απόδειξη με επαγωγή στον αριθμό επανάληψης κατά το οποίο ο κόμβος ν 20

21 παίρνει την ετικέτα απόστασης d[v], > Βασική περίπτωση: Για k=1. Αν στο συντομότερο μονοπάτι από τον κόμβοαφετηρία s στον κόμβο ν υπάρχει μόνο μια ακμή, αυτή είναι η ακμή με τους δύο αυτούς κόμβους στα άκρα της, δηλαδή η (s,v). Κατά την k-ή επανάληψη, ο εσωτερικός βρόγχος (γραμμή 7 του ψευδοκώδικα) κατά την σάρωση των ακμών θα περάσει και από αυτή την ακμή και θα ανανεώσει την απόσταση d[v] σωστά. > Επαγωγική υπόθεση: Αν το μονοπάτι από τον κόμβο-αφετηρία s σε έναν κόμβο ν περιέχει k ακμές, τότε μετά από k επαναλήψεις του εξωτερικού βρόγχου (γραμμή 6), η τιμή του d[vj είναι σωστή. > Τρέχον επαναληπτικό βήμα: Για k. Ας υποθέσουμε, με βάση την επαγωγική υπόθεση, ότι μετά από k-1 επαναλήψεις οι κόμβοι των οποίων το συντομότερο μονοπάτι αποτελείται από το πολύ k-1 ακμές έχουν τις σωστές τιμές αποστάσεων. Έστω κόμβος ν του οποίου το συντομότερο μονοπάτι αποτελείται από ακριβώς k ακμές και έστω s ui * U2 *... Uk-1 >Uk = v το συντομότερο μονοπάτι από τον κόμβο-αφετηρία s στον κόμβο ν. Σύμφωνα με την επαγωγική υπόθεση, η τιμή της απόστασης d[uk-i] είναι σωστή. Όταν κατά την k-η επανάληψη, σαρωθεί η ακμή (uk-ι,ν), ανανεώνεται η απόσταση d[v] ως εξής: d[v] < d[uk-i] + w(uk-i,v). Επομένως, το d[v] είναι σωστό μετά από k επαναλήψεις [12]. Η πολυπλοκότητα του Bellman-Ford προκύπτει από την ακόλουθη ανάλυση: για το βρόγχο που ξεκινάει στην γραμμή 2 ο αλγόριθμος απαιτεί χρόνο 0( V ), για τον βρόγχο που ξεκινάει στην γραμμή 7 απαιτεί χρόνο 0( Ε ) για να εξετάσει όλες τις ακμές και μαζί με τον βρόγχο που τον περιέχει που ξεκινάει στην γραμμή 6 και επαναλαμβάνεται V -1 φορές απαιτεί συνολικό χρόνο ( V -1)0( E ) = 0( V E ), ενώ ο βρόχος που εκτελεί έλεγχο για αρνητικούς κύκλους στην γραμμή 12 απαιτεί 0( Ε ) χρόνο. Συνεπώς, ο συνολικός χρόνος εκτέλεσης του αλγορίθμου είναι 0( V + V E + Ε ) = 0( V E ). Παράδειγμα: ΟΟ 00 Αρχικό γράφημα k=1 21

22 k=2 k=3 Δεν υπάρχουν άλλες ακμές προς χαλάρωση. Αν ο γράφος είναι κατευθυνόμενος ακυκλικός γράφος (ΚΑΓ), χρησιμοποιείται μια πιο απλή εκδοχή του αλγορίθμου Bellman-Ford που απαιτεί πρώτα να γίνει τοπολογική ταξινόμηση των κορυφών η οποία εκτελείται σε χρόνο 0( V + E ) με τη χρήση αναζήτησης κατά βάθος (depth-first search, DFS). Έπειτα, ο αλγόριθμος περνάει μια φορά από όλες τις κορυφές στη σειρά που ταξινομήθηκαν και εκτελεί τη διαδικασία της χαλάρωσης για τις ακμές κάθε κορυφής. Η εκδοχή του αλνοοίθμου Bellman-Ford για το συντομότερο μονοπάτι σε κατευθυνόμενο ακυκλικό γράφο (ΚΑΓ) σε ψευδογλώσσα DAG-Bellman-Ford(G.w.s^ 1. d[s] < 0 ; 2. for all v e V - {s} do 3. d[v] <- «; 22

23 4. for all u e V in topological order do // σειρά ώστε u < v για κάθε (u,v) e E 5. for all edges (u,v) e E do 7. if d[v] > d[u] + w(u,v) then 8. d [v]«d[u] + w (u,v); Ο χρόνος εκτέλεσης του αλγορίθμου είναι 0( V + E ). 2.2 Αλγόριθμοι συντομότερου μονοπατιού όλων των ζευγών κορυφών (allpairs shortest path) Σε αυτό το κεφάλαιο παρουσιάζονται οι αλγόριθμοι που λύνουν το πρόβλημα του συντομότερου μονοπατιού μεταξύ όλων των ζευγών κορυφών. Οι αλγόριθμοι που παρουσιάστηκαν στο υποκεφάλαιο 2.1 θα μπορούσαν να χρησιμοποιηθούν για να λύσουν αυτό το πρόβλημα αλλά θα έπρεπε να επαναλαμβάνουμε κάθε αλγόριθμο V φορές, κάθε φορά με έναν διαφορετικό κόμβο ως αφετηρία που θα άλλαζε την πολυπλοκότητα του Dijkstra σε 0( V 3) (ή με την χρήση σωρού Fibonacci σε 0( V 2 log V + V E ) ) και του Bellman-Ford σε 0( V 2 Ε ) (σε πυκνά γραφήματα 0(V4) ). Επιπλέον, η χρήση του Dijkstra θα απαιτούσε μη αρνητικά βάρη στις ακμές. Οι παρακάτω αλγόριθμοι λύνουν πιο αποδοτικά το συγκεκριμένο πρόβλημα Ο αλγόριθμος Floyd-Warshall Ο αλγόριθμος Floyd-Warshall (R. Floyd, S. Warshall ) είναι ένας αλγόριθμος δυναμικού προγραμματισμού που δίνει λύση στο πρόβλημα της εύρεσης συντομότερου μονοπατιού μεταξύ όλων των ζευγών κόμβων σε ένα δίκτυο. Αποτελεί μια καλύτερη υλοποίηση του γενικού αλγορίθμου διόρθωσης ετικέτας που επιλύει το συγκεκριμένο πρόβλημα. Είναι πιο αποδοτικός για πυκνά γραφήματα. Δίδεται γράφος ή διγράφος G=(V,E), όπου V το σύνολο των κόμβων (ή κορυφών) και Ε το σύνολο των ακμών, ο οποίος δεν περιέχει αρνητικούς κύκλους. Κάθε ακμή (u, ν) φέρει βάρος w(v,u) πιθανόν αρνητικό. Ο αλγόριθμος Floyd-Warshall βρίσκει τα συντομότερα μονοπάτια από κάθε κόμβο u προς κάθε κόμβο ν. Αριθμούμε τους κόμβους από 1 έως n: V = {1,2... η} και ορίζουμε dk[i,j] το μήκος του συντομότερου μονοπατιού από τον κόμβο i στον κόμβο j στο οποίο μόνο οι κόμβοι 1...k μπορούν να χρησιμοποιηθούν ως ενδιάμεσοι κόμβοι (δεν περνάει από k+1, k+2, κ.ο.κ). Αρχικά, όταν k=0, το μήκος d [i,j] απευθείας μεταξύ του i και j (δεν υπάρχουν ενδιάμεσοι κόμβοι) είναι το βάρος w(i,j) αν υπάρχει (i,j) e Ε αλλιώς παίρνει τιμή άπειρο («). Ο αλγόριθμος εκτελεί η επαναλήψεις, προσθέτωντας σε κάθε επανάληψη έναν νέο κόμβο ως πιθανό ενδιάμεσο και επανεξετάζοντας όλα τα ζεύγη, j για να βρει αν υπάρχει νέο συντομότερο μονοπάτι μεταξύ τους, όπου μέχρι την k -στη επανάληψη επιτρέπει μόνο τις πρώτες k κορυφές ως πιθανούς ενδιάμεσους κόμβους στο μονοπάτι μεταξύ κάθε ζεύγους ί και j. Ο υπολογισμός του συντομότερου μονοπατιού από το i στο j γίνεται προσθέτοντας και συγκρίνοντας το μήκος από το i στο k και από το k στο j. Ένα συντομότερο μονοπάτι που περιέχει το k, περνάει από το k μόνο μία φορά με την προϋπόθεση ότι δεν υπάρχουν αρνητικοί 23

24 κύκλοι. Η χρήση της k -στης κορυφής (κόμβου) ως τερματισμός δίνει ένα συντομότερο μονοπάτι από το i στο j αν και μόνο αν ισχύει η συνθήκη dk'1[i,k] + dk'1[k,j] < dk[i,j] και κατά συνέπεια η τιμή του dk[i,j] ανανεώνεται. Ο αλγόριθμος αποθηκεύει δείκτες προκατόχων σε πίνακα prev[i,j], η τιμή του οποίου είναι ο τελευταίος κόμβος πριν τον j στο συντομότερο μονοπάτι που έχει ανακαλυφθεί μέχρι στιγμής από τον κόμβο ί στον κόμβο j. Αν το συντομότερο μονοπάτι από το ί στο j περνάει από κάποιο κόμβο k, τότε prev[i,j] = k αλλιώς prev[i,j]= null που σημαίνει ότι το συντομότερο μονοπάτι είναι η ακμή (i,j). Εμφανίζουμε τη σειρά τον κόμβων στο συντομότερο μονοπάτι τυπώνοντας το μονοπάτι από το ί στο prev[i,j] και το μονοπάτι από το prev[i,j] ως το j. Αρνητικοί κύκλοι εντοπίζονται όταν μετά την ανανέωση του το μήκος d[i,i] για κάποιο κόμβο ί αποκτήσει αρνητική τιμή. Επίσης, μια ακμή με αρνητικό βάρος σε ένα μη κατευθυνόμενο γράφο θα σήμαινε την παρουσία αρνητικού κύκλου γι' αυτό και ο αλγόριθμος δεν μπορεί να χρησιμοποιηθεί σε μη κατευθυνόμενο γράφο. Ο αλγόριθμος του Floyd-Warshall για το συντομότερο μονοπάτι μεταξύ όλων των ζευγών κόμβων σε ψευδογλώσσα all_pairs-flovd-warshall(w[[1..n.1..η]) 1. for ί < 1 to n do // αρχικοποίηση δισδιάστατων πινάκων 2. for j < 1 to n do 3. d[i,j] <- w [i,j]; 4. prev[i,j] < n u ll; for k < 1 to n do // χρησιμοποίησε ενδιάμεσους 1... k 7. for i -«1 to n do // από το ί for j < 1 to n do //ω ς ro j 9. if d[i,k] + d[k,j] < d[i,j] then 10. d[i,j] < d[i,k] + d[k,j] ; // το νέο μήκος του συντομ. μονοπατιού 11. prev[i,j] < k ; //το νέο μονοπάτι περνάει από το k return d[1...n, 1...n]; // πίνακας τελικών αποστάσεων Ο χρόνος εκτέλεσης του αλγορίθμου είναι προφανώς, 0( V 3) λόγω των εμφωλευμένων βρόγχων n = V επαναλήψεων στις γραμμές 6, 7 και 8 με εσωτερικό υπολογισμό χρόνου 0(1) για κάθε ζεύγος κόμβων. Επίσης, η ορθότητα του αλγορίθμου είναι προφανής (είναι σωστός όσο διατηρείται η συνθήκη που αναφέρθηκε παραπάνω). Ο αλγόριθμος Floyd-Warshall χρησιμοποιείται επίσης στην κατασκευή του πίνακα προσβασιμότητας (transitive closure) κόμβων ενός δικτύου με σκοπό να διαπιστωθεί αν υπάρχουν μονοπάτια μεταξύ όλων των κορυφών αλλά και να γίνει χρήση του πίνακα για εμφάνιση συγκεκριμένων πληροφοριών που αφορούν το δίκτυο. Στη συγκεκριμένη εφαρμογή ο αλγόριθμος γίνεται λίγο πιο αποδοτικός (καλύτερος χρόνος αλλά η πολυπλοκότητα μένει ίδια) με την χρήση λογικών 24

25 τελεστών. Παράδειγμα: 4 ( α \ s "6 1 d = άχ j 1 / ( > - r DΛ _ ί / 3 = 4 d Ο αλγόριθμος Johnson Ο αλγόριθμος του Johnson (Donald Β. Johnson, 1977) είναι ένας αλγόριθμος που δίνει λύση στο πρόβλημα της εύρεσης συντομότερων μονοπατιών μεταξύ όλων των ζευγών κόμβων και είναι ο πιο κατάλληλος για χρήση σε αραιά γραφήματα. Χρησιμοποιεί τον αλγόριθμο Bellman-Ford και τον αλγόριθμο Dijkstra ως εσωτερικές διαδικασίες. Η λειτουργία του αλγορίθμου βασίζεται στην τεχνική της επαναστάθμισης. Σε ένα γράφημα που περιέχει ακμές αρνητικού βάρους αλλά δεν περιέχει αρνητικούς κύκλους, ο αλγόριθμος επανασταθμίζει τα βάρη των ακμών ώστε να είναι εφικτή η εκτέλεση του Dijkstra, ο οποίος απαιτεί θετικά βεβαρημένες ακμές για να επιστρέφει τα σωστά αποτελέσματα. Δεδομένου κατευθυνόμενου βεβαρημένου γραφήματος G=(V,E) όπου V το σύνολο των κορυφών και Ε το σύνολο των ακμών οι οποίες είναι πιθανό να φέρουν και αρνητικά βάρη, ζητείται να βρεθούν τα συντομότερα μονοπάτια για κάθε ζεύγος κορυφών. Ο αλγόριθμος εργάζεται ως εξής: Αρχικά, προσθέτει στο γράφημα G μια νέα κορυφή q από την οποία εξέρχονται ακμές μηδενικού βάρους που την συνδέουν σε κάθε άλλη κορυφή του γραφήματος. Ονομάζουμε το γράφημα που προκύπτει G'. Στη συνέχεια, καλείται ο αλγόριθμος Bellman-Ford με κορυφή-αφετηρία την κορυφή q, για την εύρεση των αποστάσεων h των συντομότερων μονοπατιών προς όλες τις άλλες κορυφές στον G'. Οι αποστάσεις αυτές είναι τιμές από h[0] έως h[v-1]. Αν εντοπιστεί αρνητικός κύκλος κατά τον έλεγχο του Bellman-Ford, ο αλγόριθμος σταματά. Αν όχι, ο αλγόριθμος προχωράει στην επαναστάθμιση των ακμών του αρχικού γραφήματος χρησιμοποιώντας τα αποτελέσματα της εκτέλεσης του Bellman-Ford. Έτσι, για κάθε ακμή (u,v) που είχε αρχικό βάρος w(u,v) υπολογίζεται το νέο βάρος w(u,v) = w(u,v) + h[u] - h[v] που μετατρέπει όλα τα αρνητικά βάρη ακμών σε μη αρνητικά. Στο 25

26 τελευταίο βήμα, ο αλγόριθμος αφαιρεί την κορυφή q και εκτελεί τον αλγόριθμο Dijkstra για την εύρεση των συντομότερων μονοπατιών για κάθε κορυφή του γραφήματος ξεχωριστά ως αφετηρία. Κατά τον τερματισμό του ο αλγόριθμος επιστρέφει έναν V x V πίνακα με τα βάρη των συντομότερων μονοπατιών όλων των ζευγών κορυφών ή ενημερώνει για την ύπαρξη αρνητικού κύκλου, περίπτωση στην οποία έχει σταματήσει κατά την εκτέλεση του Bellman-Ford. Ο αλγόριθμος του Johnson για τα συντομότερα μονοπάτια μεταξύ όλων των ζευγών κορυφών σε ωευδογλώσσα all-pairsjohnson(g.w) 1. create new vertex q ; 2. for all v G V do 3. w(q,v) <- 0 ; 4. w(v,q) +- ; 5. d[q, ] < BELLMAN-FORD(G,w,q) ; 6. if BELLMAN-FORD found negative cycle print 'negative cycle found' and abort. 7. forjill (u,v) G E do 8. w(u,v) < d[q,u] + w(u,v) d[q,v]; 9. for all u G V do 10. d[u, ] ^ DIJSKTRA(G,w,u); 11. for all v G V do 12. d[u,v] < d[u,v] - d[q,u] + d[q,v]; Η συνολική χρονική πολυπλοκότητα του αλγορίθμου Johnson στη περίπτωση υλοποίησης του Dijkstra με χρήση σωρού Fibonacci είναι 0(V 2logV+VE). Τα κύρια βήματα του αλγορίθμου είναι η εκτέλεση των Bellman-Ford και Dijkstra. Ο αλγόριθμος Bellman-Ford εκτελείται μια φορά σε χρόνο 0( V E ). Ο Dijkstra εκτελείται V φορές, μια φορά για κάθε κορυφή, και ο χρόνος εκτέλεσης του εξαρτάται από την υλοποίηση. Η εκτέλεση υλοποίησης Dijkstra με δυαδικό σωρό V φορές απαιτεί χρόνο 0( V E log V ) ενώ η εκτέλεση του με τη χρήση σωρού Fibonacci V φορές ολοκληρώνεται σε χρόνο 0( V 2 log V ). Ο χρόνος εκτέλεσης του Johnson είναι ίδιος με αυτόν του Floyd-Warshall για ένα πλήρες γράφημα (όπου E=0(V2)), αλλά για ένα αραιό γράφημα ο Johnson είναι πιο αποδοτικός. Θα δείξουμε ότι η επαναστάθμιση δεν αλλάζει τα συντομότερα μονοπάτια: Έστω ρ = νο» νι...» νκ ένα οποιοδήποτε μονοπάτι στο γράφημα από την κορυφή νο στην κορυφή νκ. Τότε το ρ είναι ένα συντομότερο μονοπάτι από το νο στο νκ πριν την επαναστάθμιση με συνάρτηση βάρους w αν και μόνο αν είναι ένα συντομότερο μονοπάτι με συνάρτηση βάρους w μετά την επαναστάθμιση. Άρα, w(p)=δ( νο, νκ) αν και μόνο αν w(p)=δ(vo, νκ), όπου το δ συμβολίζει συντομότερο μονοπάτι. 26

27 Θα δείξουμε πρώτα ότι τα μονοπάτια επανασταθμίζονται κατά το ίδιο ποσό, δηλαδή ότι w(p) = w(p) + h[v0] - h[vk], k w ( p ) = X W (V/-1, V( )) /= 1 k = Σ (>^( V,_1, v (/))+^( v /-i) ^ ( v/)) ( = 1 k = Σ w(v(_jf v,) + A(v0) - ä (v*) 1= 1 (λόγω αλληλοεξουδετέρωσης) = w(p)+h(v0)-h{vk) Επομένως, ένα μονοπάτι ρ από το νο στο vk έχει συνάρτηση βάρους w(p) = w(p) + h[vo] - h[vk], Επειδή τα h[vo] και h[vk] δεν βασίζονται στο μονοπάτι, αν ένα μονοπάτι από το νο στο vk είναι συντομότερο από ένα άλλο που χρησιμοποιεί την συνάρτηση βάρους w, τότε είναι επίσης συντομότερο με τη χρήση της συνάρτησης w. Έτσι, νν(ρ)=δ( νο, vk) αν και μόνο αν w(p)=ö(vo, vk). Επιπλέον, θα αποδείξουμε ότι η ύπαρξη κύκλου c με συνάρτηση αρνητικού βάρους w συνεπάγεται την ύπαρξη κύκλου c με συνάρτηση αρνητικού βάρους w. Έστω ο κύκλος c = νο * νι >... > vk, όπου νο = vk. Αποδείξαμε προηγουμένως ότι ισχύει w(p) = w(p) + h[vo] - h[vk]. Έτσι, έχουμε: w(c) = w(c) + h[vo] - h[vk] = w(c). Άρα, ο κύκλος c έχει αρνητικό βάρος w αν και μόνο αν έχει αρνητικό βάρος w. [9] 2.3 Αλγόριθμοι μέγιστης ροής Ο πρώτος αλγόριθμος επίλυσης του προβλήματος μέγιστης ροής αναπτύχθηκε το Από τότε πολλοί ερευνητές δημοσίευσαν τις δικές τους λύσεις για το πρόβλημα. Παρακάτω παρουσιάζονται μερικές από τις πιο σημαντικές Ο αλγόριθμος Ford-Fulkerson Ο αλγόριθμος Ford-Fulkerson (L. R. Ford Jr, D. R. Fulkerson -1956), λύνει το πρόβλημα της μέγιστης ροής σε δίκτυα ροών. Αναφέρεται και ως μέθοδος Ford- Fulkerson ή μέθοδος μονοπατιού επαύξησης λόγω χρήσης του σε πολλές διαφορετικές υλοποιήσεις. Ανήκει στους αλγορίθμους γραμμικού προγραμματισμού και αποτελεί μια πιο αποδοτική λύση από τη λύση με τη μέθοδο simplex (G. B. Dantzig -1947) που είναι ο βασικός αλγόριθμος που χρησιμοποιείται στον γραμμικό προγραμματισμό. Είναι αλγόριθμος της κατηγορίας διανυσμάτων απόστασης. Ο Ford-Fulkerson χρησιμοποιεί την τεχνική της επαναληπτικής βελτίωσης. Βρίσκει μια πρώτη εφικτή λύση που να ικανοποιεί όλους τους περιορισμούς του προβλήματος και στη συνέχεια εργάζεται βελτιώνοντας την επαναλαμβάνοντας 27

28 κάποιο απλό βήμα. Αυτό το βήμα προκαλεί μια μικρή τοπική αλλαγή που δίνει μια νέα βελτιωμένη εφικτή λύση. Αν σε κάποια επανάληψη δεν υπάρξει αλλαγή που να παρέχει μια βελτιωμένη λύση, ο αλγόριθμος τερματίζει και επιστρέφει την τελευταία λύση ως βέλτιστη. Η μέθοδος Ford-Fulkerson βασίζεται στο μονοπάτι επαύξησης, ένα μονοπάτι από την πηγή s στον προορισμό t στο υπολειπόμενο δίκτυο στο οποίο μπορούμε να ωθήσουμε πρόσθετη ροή και να αυξήσουμε τη ροή διαμέσου του μονοπατιού. Η ροή αυξάνεται τουλάχιστον κατά μία μονάδα σε κάθε επανάληψη μέχρις ότου να μην υπάρχει άλλο μονοπάτι επαύξησης. Τότε η ροή είναι η βέλτιστη (μέγιστη εφικτή ροή). Αυτή η διαπίστωση των Ford και Fulkerson ονομάζεται θεώρημα μονοπατιού επαύξησης (augmenting path theorem). Δίνεται κατευθυνόμενος γράφος G=(V, Ε) με χωρητικότητα ακμής από τον κόμβο u στον κόμβο ν ορισμένη ως c(u,v) και ροή δικτύου f(u,v). Ο αλγόριθμος υπολογίζει τη ροή από τον κόμβο-αφετηρία s μέχρι τον κόμβο-προορισμό t με τη μέγιστη τιμή. Για να είναι νόμιμη (εφικτή) η ροή σε κάθε βήμα πρέπει να ισχύουν: / ( μ, v)<:c(u, ν), \/(u,v)ee [περιορισμοί χωρητικότητας) / (u,ν)= / (ν,u), \/(u,v)e E (αντισυμμετρία) Σ/(«,ν)=0, VuEV [s,t) [διατήρησηροής) vev Αρχικά, η ροή είναι μηδενική δηλαδή, f(u,v)=0 για κάθε (u,v) Ε V. Σε κάθε επανάληψη, ο αλγόριθμος των Ford και Fulkerson χρησιμοποιεί την αναζήτηση κατά πλάτος (depth first search, DFS) για την εύρεση μονοπατιού επαύξησης ρ στο υπολειπόμενο δίκτυο G f. Όσο υπάρχει ένα τέτοιο μονοπάτι αυξάνει τη ροή f κατά μήκος αυτού του μονοπατιού με τον εξής τρόπο: Αφού πρώτα βρει την ελάχιστη υπολειπόμενη χωρητικότητα Cf(p) μεταξύ των ακμών που ανήκουν στο μονοπάτι επαύξησης ρ, στη συνέχεια για κάθε ακμή (u,v) ε ρ αυξάνει την τρέχουσα ροή κατά την τιμή της Cf(p) σε κάθε ακμή-προς-τα-εμπρός (forward edge, u,v) και την μειώνει κατά το ίδιο ποσό σε κάθε ακμή-προς-τα-πίσω (backwards edge, v,u). Ο αλγόριθμος τερματίζει όταν δεν υπάρχει άλλο μονοπάτι επαύξησης και επιστρέφει την τιμή της μέγιστης ροής f. Εφόσον η τιμή Cf(p) ικανοποιεί τους περιορισμούς χωρητικότητας ως η ελάχιστη μεταξύ των υπολειπόμενων χωρητικοτήτων όλων των ακμών στο μονοπάτι επαύξησης, οι νέες τιμές μετά την διαδικασία ανανέωσης της ροής θα ικανοποιούν και αυτές τους ίδιους περιορισμούς και η νέα ροή θα παραμένει νόμιμη. Ακόμη, ο κανόνας διατήρησης της ροής εξακολουθεί να ισχύει για οποιονδήποτε πιθανό συνδυασμό εμπρός και πίσω ακμών. Υποθέτουμε ότι οι χωρητικότητες είναι ακέραιες τιμές καθώς ο αλγόριθμος ενδέχεται να μην τερματίσει ποτέ για άρρητες χωρητικότητες. Έτσι, η τιμή της ροής αυξάνει τουλάχιστον κατά μια μονάδα σε κάθε επανάληψη. Δεδομένου ότι η μέθοδος τερματίζει όταν δεν υπάρχει άλλο διαθέσιμο μονοπάτι επαύξησης, γνωρίζουμε ότι θα τερματίσει μετά από πεπερασμένο αριθμό επαναλήψεων. Η τελική ροή θα είναι η μέγιστη με βάση το θεώρημα Μέγιστης Ροής - Ελάχιστης Τομής (Max-Flow Min-cut) των Ford και Fulkerson. Η απόδειξη του θεωρήματος αυτού μας δείχνει ότι μετά τον τερματισμό της, η μέθοδος Ford- Fulkerson έχει βρει την μέγιστη ροή αλλά και την ελάχιστη τομή [8], 28

29 Απόδειξη θεωρήματος Μέγιστης Ροής - Ελάγιστης Τουής: Ας υποθέσουμε ότι ί είναι η τελική ροή μετά την εκτέλεση του αλγορίθμου. Στο υπολειπόμενο δίκτυο Θί κάθε μονοπάτι από τον κόμβο-αφετηρία ε στον κόμβοπροορισμό ί έχει διακοπεί. Έστω β οι προσβάσιμοι κόμβοι από το ε στο Θί, και έστω Τ = V - β όλοι οι υπόλοιποι κόμβοι. Τότε το (β,τ) είναι μια τομή στο γράφημα Θ. Πρέπει να δείξουμε ότι: είζθ(ί) = 03ρ30ίίγ(Ι_,Ρ). Παρατηρούμε ότι οποιαδήποτε ακμή που διασχίζει την τομή (β,τ) (ακμή-προς-τα-εμπρός) πρέπει να είναι σε πλήρη χωρητικότητα κατά την τρέχουσα ροή ί (η χωρητικότητα είναι το άνω όριο για την τιμή μιας ροής ί) και οποιαδήποτε ακμή από το Τ στο β (ακμή-προς-ταπίσω) πρέπει να έχει μηδενική ροή. Επομένως, η καθαρή ροή μεταξύ της (β,τ) είναι ακριβώς η χωρητικότητα της τομής. [3] Η μέθοδος Ford-Fulkerson σε ψευδογλώσσα Max-Flow_Ford-Fulker8on(G. c. ε. t) 1. for all edge8 (u,v)g E do // αρχικοποίηση ροής σε μηδέν 2. f(u,v) < 0 ; 3. f(v,u) <- 0 ; 4. while 5 path p from ε to t in re8idual network Gf do //όσο υπάρχει μονοπ. επαύξ. ρ 5. Cf(p) < min{ Cf(u,v) (u,v) ίε in p } ; // βρες ελάχιστη υπολειπ. χωρητικότητα 6. for all edge8 (u,v) G p do // διαδικασία αλλαγής ροής 7. f(u,v) f(u,v) + Cf(p) ; 8. f(v,u) < f(v,u) Cf(p) ; 9. return f ; Όταν οι χωρητικότητες είναι ακέραιες τιμές, ο συνολικός χρόνος εκτέλεσης του Ford-Fulker8on είναι 0( E max f ). Κάθε μονοπάτι επαύξησης μπορεί να βρεθεί σε χρόνο 0( Ε ). Το πλήθος των επαναλήψεων είναι 0(max f ). Για μεγάλες χωρητικότητες ο χρόνος μπορεί να γίνει εκθετικός. Για άρρητες τιμές χωρητικότητας ακμών πιθανόν ο αλγόριθμος να μην συγκλίνει. Παράδειγμα: ΠΡΟΟΡΙΣΜΟΣ α). Το αρχικό δίκτυο. Οι ροές δείχνονται με έντονο χρώμα. β). Ένα ε-ί μονοπάτι στο υπολειπόμενο δίκτυο. Η ελάχιστη χωρητικότητα είναι

30 γ). Η τιμή της ροής στο μονοπάτι γίνεται 10 για κάθε ακμή στο μονοπάτι β-ι δ). Ένα ακόμη μονοπάτι s-t στο Gf. ε). Οι νέες τιμές ροών μετά την επαύξηση στο δεύτερο μονοπάτι ε- Ι στ). Δεν υπάρχει άλλο β-ί μονοπάτι στο ΰ ε Ο αλγόριθμος τερματίζει Οι αλγόριθμοι Edmonds-Karp και Dinic Ο αλγόριθμος Ford-Fulkerson δεν προσφέρει κριτήρια επιλογής του πιο αποτελεσματικού μονοπατιού επαύξησης συνεπώς η αποδοτικότητά του μπορεί να υποβαθμιστεί από κακές επιλογές μονοπατιών. Οι Edmonds και Karp (J. Edmonds - R. Μ. Karp ) και Dinic ( Yefim Dinits ) βελτίωσαν τη μέθοδο Ford- Fulkerson προτείνοντας δύο διαφορετικές στρατηγικές για την επιλογή μονοπατιού επαύξησης με όρια πολυωνυμικού χρόνου: την fat pipes (Edmonds-Karp) και την short pipes (Dinic / Edmonds-Karp). Η στρατηγική Edmonds-Karp fat pipes είναι η επιλογή, σε κάθε επανάληψη, ενός μονοπατιού, όπου το πάχος του μονοπατιού είναι η τιμή της ελάχιστης υπολειπόμενης χωρητικότητας των ακμών στο μονοπάτι (maximum bottleneck augmenting path). Η εύρεση γίνεται με τη χρήση του αλγορίθμου του Dijkstra ή με τη δημιουργία ελάχιστου συνδετικού δέντρου με μια παραλλαγή του αλγορίθμου Prim- Jarnik. Ο χρόνος εύρεσης του μονοπατιού είναι 0( E log V ). Για γραφήματα με ακέραιες τιμές χωρητικοτήτων, ο αλγόριθμος εκτελείται σε χρόνο 0(Ε 2 loge log(max f ) ) 30

31 Η στρατηγική Edmonds-Karp short pipes είναι η επιλογή, σε κάθε επανάληψη, του μονοπατιού επαύξησης με το λιγότερο πλήθος ακμών (shortest augmenting path) με τη χρήση της αναζήτησης κατά πλάτος (breadth first search, BFS) στο υπολειπόμενο γράφημα σε χρόνο Ο(Ε). Η BFS δίνει βάρος σε κάθε ακμή ίσο με τη μονάδα και επομένως το συντομότερο μονοπάτι εξαρτάται από το πλήθος των ακμών. Ο χρόνος εκτέλεσης των επαυξήσεων είναι O(VE). Σε αυτή την περίπτωση, ο αλγόριθμος τερματίζει σε πολυωνυμικό χρόνο, ανεξάρτητα από την τιμή της μέγιστης ροής. Ο συνολικός χρόνος εκτέλεσης είναι 0( V E 2). Μια διαφορετική προσέγγιση της short pipes, η ονομαζόμενη μέθοδος ροής εμποδισμού (blocking flow method), δημοσιεύτηκε ανεξάρτητα από τον Dinic (Yefim Dinits ) και παρουσιάζει για πρώτη φορά τις έννοιες της ροής εμποδισμού(όίοοκ^ flow) και του γραφήματος επιπέδων (level graph). Στη μέθοδο αυτή, o Dinic πρότεινε την εύρεση μονοπατιών επαύξησης σε φάσεις, με τη διαχείριση όλων των μονοπατιών επαύξησης ενός δεδομένου συντομότερου μήκους να γίνεται σε μια φάση με την εύρεση μιας ροής εμποδισμού σε ένα δίκτυο με επίπεδα. Το μήκος του συντομότερου μονοπατιού επαύξησης αυξάνει από φάση σε φάση μέχρι τον τερματισμό της μεθόδου σε V-1 φάσεις. Η αναζήτηση κατά πλάτος (BFS) εκτελείται σε χρόνο O(V) και η εύρεση της ροής εμποδισμού ολοκληρώνεται σε χρόνο O(VE). Η συνολική χρονική πολυπλοκότητα της μεθόδου είναι 0(V 2E). Η υλοποίηση της μεθόδου ροής εμποδισμού με τη χρήση της δομής δεδομένων δυναμικών δέντρων (D. D. Sleator, R. Ε. Tarjan ) βελτιώνει το συνολικό χρόνο εκτέλεσης σε 0(VE logv) καθώς μειώνει τον απαιτούμενο χρόνο εύρεσης της ροής εμποδισμού σε 0(Ε logv). Η δομή δεδομένων δυναμικών δέντρων αποτελεί ένα δάσος από δέντρα στα οποία μπορεί να χρησιμοποιηθεί ένα σύνολο από συγκεκριμένες διαδικασίες (όπως δημιουργία δέντρου, διαγραφή δέντρου κ.α.) που η κάθε μια εκτελείται σε χρόνο O(logV). [7] Αλγόριθμοι Preflow-push Οι αλγόριθμοι preflow-push είναι μια ξεχωριστή κατηγορία αλγορίθμων που περιέχει τους ταχύτερους και πιο ευέλικτους αλγορίθμους για την επίλυση του προβλήματος της μέγιστης ροής. Ένας αλγόριθμος preflow-push, σε αντίθεση με τους αλγορίθμους που στέλνουν ροή σε μονοπάτια επαύξησης, ωθεί ροές σε μεμονωμένες ακμές. Ένας αλγόριθμος preflow-push βασίζεται στην χρήση μιας ροής που ονομάζεται preflow. Μια preflow είναι μια ροή που ικανοποιεί τους περιορισμούς χωρητικότητας αλλά δεν ικανοποιεί τον κανόνα διατήρησης ροής. Επιτρέπεται σε οποιοδήποτε κόμβο η εισερχόμενη ροή να ξεπεράσει σε ποσότητα την εξερχόμενη ροή. Για έναν οποιαδήποτε κόμβο ν, εκτός από τον κόμβο-πηγή και τον κόμβοπροορισμό, αν η ροή υπερχείλισης (excess flow) είναι μη αρνητική, τότε ο κόμβος ν λέγεται ενεργός κόμβος (active node). Η διαδικασία του αλγορίθμου είναι η επιλογή ενός ενεργού κόμβου και η αφαίρεση της ροής υπερχείλισης από αυτόν με την προώθηση της στους γείτονες κόμβους που βρίσκονται πλησιέστερα στον κόμβο-προορισμό. Αν η ροή υπερχείλισης δεν μπορεί να σταλεί στον κόμβο-προορισμό, γίνεται ώθηση πίσω στον κόμβο-πηγή. Ο αλγόριθμος τερματίζει όταν δεν υπάρχουν πλέον ενεργοί κόμβοι στο δίκτυο (οι κόμβοι έχουν μηδενική υπερχείλιση) και η preflow είναι πλέον κανονική ροή 31

32 και η μεγίστη ροή. Ο αλγόριθμος ξεκινά με την υττορουτίνα preprocess κατά την οποία χρησιμοποιεί την τεχνική εφαρμογής ετικετών (labeling) ώστε κάθε κόμβος να αποκτήσει ετικέτα απόστασης (με θετική ακέραια τιμή) στην οποία θα στηρίζεται η επιλογή κατεύθυνσης των ωθήσεων. Μια ώθηση σε μια ακμή που καταλήγει στον κορεσμό της ακμής (μέγιστη ροή) λέγεται ώθηση κορεσμού. Όσο το δίκτυο περιέχει ενεργούς κόμβους η υπορουτίνα push/relabel αναλαμβάνει να στείλει ροή ή να ανανεώσει κατάλληλα την ετικέτα απόστασης του τρέχοντος κόμβου προς εξέταση όταν δεν είναι έγκυρη ώστε να υπάρχει τουλάχιστον μια κατάλληλη ακμή για αποστολή ροής. Ο γενικός αλγόριθμος preflow-push σε ψευδογλώσσα preflow-push_max-flow(g.): 1. preprocess; / / υπολογισμός ετικετών απόστασης 2. while the network contains active node do // όσο υπάρχουν ενεργοί κόμβοι 3. select an active node i; // επιλογή ενεργού κόμβου 4. push/relabel(i); // ώθηση ροής ή αλλαγή ετικέτας Η πολυπλοκότητα του αλγορίθμου εξαρτάται από τον αριθμό ωθήσεων κορεσμού και τον αριθμό ωθήσεων χωρίς κορεσμό. Οι ωθήσεις χωρίς κορεσμό μπορούν να φθάσουν στον αριθμό τις 4n2m, ενώ οι ωθήσεις κορεσμού τις 2nm. Οι αλλαγές ετικέτας μπορούν να είναι το πολύ 2η2. Συνεπώς, η συνολική πολυπλοκότητα είναι 0(n2m). Ειδικές υλοποιήσεις της μεθόδου preflow-push που επιλέγουν τους ενεργούς κόμβους σε συγκεκριμένη σειρά είναι η FIFO preflow-push και η Highest-Label preflow-push με συνολικό χρόνο εκτέλεσης 0(η3) και 0(n2Vm) αντίστοιχα. Η FIFO preflow-push εξετάζει τους ενεργούς κόμβους κατά την first in first out (πρώτο μέσα πρώτο έξω) σειρά ενώ η Highest-Label preflow-push ωθεί ροή από τον κόμβο με την μεγαλύτερη απόσταση ετικέτας. Η υλοποίηση της μεθόδου με χρήση δυναμικών δέντρων έχει χρόνο εκτέλεσης 0(nmlog(n2/m)). 2.4 Αλγόριθμοι ροής ελάχιστου κόστους (minimum-cost flow algorithms) Οι αλγόριθμοι ροής ελάχιστου κόστους είναι αλγόριθμοι γραμμικού προγραμματισμού που συνδυάζουν στοιχεία αλγορίθμων συντομότερου μονοπατιού και αλγορίθμων μέγιστης ροής. Ικανοποιούν τις συνθήκες βελτιστότητας για συντομότερα μονοπάτια (στοιχείο αλγορίθμων συντομότερων μονοπατιών) και τις συνθήκες βελτιστότητας προβλημάτων ελάχιστου κόστους τα οποία περιέχουν ακμές που φέρουν χωρητικότητες αλλά και κόστη (όπως στους αλγορίθμους μέγιστης ροής). Οι αλγόριθμοι αυτοί χωρίζονται σε ψευδο-πολυωνυμικούς και πολυωνυμικούς. Στην αναφορά της πολυπλοκότητας τους χρησιμοποιούνται οι όροι η (αριθμός κορυφών), m (αριθμός ακμών) και επιπλέον οι όροι C και U, ως η μέγιστη απόλυτη τιμή κόστους ακμής και η μέγιστη απόλυτη τιμή χωρητικότητας ακμής αντίστοιχα. 32

33 2.4.1 Ο αλγόριθμος Cycle Canceling Ο αλγόριθμος Cycle Canceling (Morton Klein, 1967) είναι ένας από τους πρώτους και πιο απλούς αλγορίθμους που προσφέρουν λύση στο πρόβλημα κυκλοφορίας ελάχιστου κόστους. Ο αλγόριθμος διατηρεί εφικτή ροή στο δίκτυο G και εργάζεται ως εξής: Σε κάθε επανάληψη λύνει ένα πρόβλημα συντομότερου μονοπατιού για την εύρεση κατευθυνόμενου αρνητικού κύκλου στο υπολειπόμενο δίκτυο Gf και έπειτα αυξάνει την ροή όσο το δυνατόν περισσότερο κατά μήκος του κύκλου (μέχρι να υπάρξει κορεσμένη ακμή) ακυρώνοντάς τον. Ο αλγόριθμος τερματίζει όταν δεν υπάρχουν άλλοι κατευθυνόμενοι κύκλοι αρνητικού κόστους στο υπολειπόμενο δίκτυο (η λύση είναι η βέλτιστη σύμφωνα με την συνθήκη βελτιστότητας αρνητικών κύκλων). Η εκτέλεση ολοκληρώνεται σε ψευδο-πολυωνυμικό χρόνο O(mCU) για δίκτυα με ακέραιες τιμές δεδομένων στα οποία ο αριθμός των επαναλήψεων μπορεί να είναι εκθετικός. Ο αλγόριθμος ενδέχεται να μην τερματίσει για άρρητες χωρητικότητες. Υλοποιήσεις με κανόνες για την επιλογή αρνητικών κύκλων δίνουν πολυωνυμικό χρόνο εκτέλεσης. Μια τέτοια υλοποίηση του αλγορίθμου Cycle Canceling είναι ο αλγόριθμος Minimum Mean Cycle Canceling των Goldberg και Tarjan (1988) Άλλοι αλγόριθμοι ελάχιστου κόστους ψευδο-πολυωνυμικού χρόνου Στους βασικούς αλγορίθμους ψευδο-πολυωνυμικού χρόνου για την επίλυση του προβλήματος ελάχιστους κόστους, εκτός από τον αλγόριθμο Cycle Canceling, ανήκουν και οι αλγόριθμοι που παρουσιάζονται συνοπτικά παρακάτω. Ο αλγόριθμος Successive Shortest Path (Jewell ) διατηρεί ψευδοροή f στο δίκτυο G. Σε κάθε επανάληψη λύνει ένα πρόβλημα συντομότερου μονοπατιού. Αφού επιλέξει κάθε φορά ένα κατάλληλο συντομότερο μονοπάτι με μη αρνητικά μήκη στις ακμές, σταδιακά φορτώνει ροή στο δίκτυο από κάποιο κόμβο-πηγή σε κάποιο κόμβο-προορισμό. Εκτελείται σε χρόνο O(nU). Με χρήση τεχνικών scaling προκύπτουν αλγόριθμοι πολυωνυμικού χρόνου. Ο αλγόριθμος Primal-dual διατηρεί ψευδοροή f. Σε κάθε επανάληψη λύνει ένα πρόβλημα συντομότερου μονοπατιού με μη αρνητικά μήκη στις ακμές καθώς και ένα πρόβλημα μέγιστης ροής. Εκτελεί υπολογισμούς μέγιστης ροής τους οποίους χρησιμοποιεί για να αυξήσει τη ροή κατά μήκος πολλών συντομότερων μονοπατιών ταυτόχρονα. Ο χρόνος εκτέλεσής του είναι 0( min{nu,nc}). Ο αλγόριθμος Out-of-kilter διατηρεί εφικτή ροή f. Σε κάθε επανάληψη αυξάνει τις ροές κατά μήκος συντομότερων μονοπατιών. Επιτρέπει στις ροές να παραβιάσουν τα όρια τους. Τερματίζει σε χρόνο O(nll). Τέλος, ο αλγόριθμος Relaxation εργάζεται για την επίλυση του προβλήματος ελάχιστου κόστους με βάση μια συνάρτηση Lagrange Ο αλγόριθμος Minimum Mean Cycle Canceling Ο αλγόριθμος Minimum mean cycle canceling (A.V.Goldberg, R.E.Tarjan -1988) είναι ένας αλγόριθμος πολυωνυμικού χρόνου εκτέλεσης για το πρόβλημα του ελάχιστου κόστους. Αποτελεί διαφορετική υλοποίηση του αλγορίθμου Cycle 33

34 Canceling του Klein στην οποία υπάρχει ένας κανόνας για την επιλογή αρνητικού κύκλου προς ακύρωση. Ο κανόνας αυτός ονομάζεται κανόνας ελάχιστου μέσου και επιλέγει προς ακύρωση τον κατευθυνόμενο κύκλο στο υπολειπόμενο δίκτυο του οποίου το μέσο κόστος ακμής είναι το ελάχιστο. Ένας τέτοιος κύκλος ονομάζεται κύκλος ελάχιστου μέσου (κόστους). Ο αλγόριθμος διατηρεί εφικτή ροή f στο δίκτυο G. Σε κάθε επανάληψη βρίσκει έναν κύκλο ελάχιστου μέσου του οποίου το μέσο κόστος είναι αρνητικό και αυξάνει τη ροή όσο το δυνατόν περισσότερο στον κύκλο αυτό και στη συνέχεια ανανεώνει το υπολειπόμενο δίκτυο. Ο αλγόριθμος τερματίζει όταν δεν υπάρχει πλέον κύκλος με αρνητικό κόστος στο υπολειπόμενο δίκτυο. Ο χρόνος εκτέλεσης του αλγορίθμου εξαρτάται από τον αλγόριθμο που χρησιμοποιείται για την εύρεση κύκλων ελάχιστου μέσου. Στην περίπτωση υλοποίησης με χρήση του αλγορίθμου Minimum Mean Cycle του Karp (R.Μ.Karp, 1978) για την εύρεση κύκλων ελάχιστου μέσου σε χρόνο O(nm), ο αλγόριθμος έχει ισχυρά πολυωνυμικό χρόνο εκτέλεσης 0(n2 m3 logn) (ο χρόνος εκτέλεσης είναι ισχυρά πολυωνυμικός επειδή εξαρτάται μόνο από το η και το m). Στην περίπτωση χρήσης του αλγορίθμου Minimum Mean Cycle των J. Β. Orlin και R. Κ. Ahuja (1988) ο οποίος εκτελείται σε χρόνο 0(Vn m log(nc) ), ο αλγόριθμος τερματίζει μετά από την ακύρωση 0(nm min{log(nc),mlogn}) κύκλων. [10] Ο αλγόριθμος Capacity scaling και άλλοι αλγόριθμοι ελάχιστου κόστους πολυωνυμικού χρόνου Μερικοί ακόμη προχωρημένοι αλγόριθμοι πολυωνυμικού χρόνου για την επίλυση του προβλήματος ελάχιστους κόστους παρουσιάζονται παρακάτω. Ο αλγόριθμος Capacity scaling (αλγόριθμος κλιμάκωσης χωρητικότητας) είναι μια παραλλαγή του Successive Shortesh Path (SSP) που αναπτύχθηκε από τους Edmonds και Karp η οποία βελτιώνει την επίδοσή του χρησιμοποιώντας την τεχνική scaling. Η τεχνική αυτή εξασφαλίζει ότι κάθε αύξηση ροής μεταφέρει αρκετά μεγάλο ποσό ροής μειώνοντας τον αριθμό των επαυξήσεων που απαιτούνται σε σχέση με τον SSP. Η αύξηση αυτή μειώνει τις επαναλήψεις από O(nU) σε 0(m logu) και δίνει τον συνολικό πολυωνυμικό χρόνο εκτέλεσης 0(m 2logU). Υπάρχουν δύο σημαντικές τροποποιήσεις αυτού του αλγορίθμου, οι Repeated capacity scaling και Enhanced capacity scaling, με τον δεύτερο αλγόριθμο του Orlin να είναι ένας από τους πιο γρήγορους με ισχυρά πολυωνυμικό χρόνο εκτέλεσης 0 ( mlog(n)(m+n log (n) ). Ο αλγόριθμος Cost scaling (A.V.Goldberg, R.E.Tarjan ) χρησιμοποιεί τεχνική scaling στα κόστη των ακμών και οι υπολογισμοί του είναι παρόμοιοι με αυτούς του αλγορίθμου preflow-push για το πρόβλημα της μέγιστης ροής. Η χρονική πολυπλοκότητά του είναι 0(n 3log(nC)). Ένας ακόμη αλγόριθμος ελάχιστου κόστους, ο αλγόριθμος Double scaling (Goldberg, Tarjan ), συνδυάζει τις δύο παραπάνω τεχνικές scaling με συνολικό χρόνο εκτέλεσης 0(n m logu log(nc)). Επιπλέον, η τεχνική scaling χρησιμοποιείται στον αλγόριθμο scaling cycle canceling (Sokkalingam, Ahuja, Orlin ) [11], Τέλος, σαν πρόβλημα γραμμικού προγραμματισμού το πρόβλημα του ελάχιστου κόστους μπορεί να λυθεί με τη μέθοδο simplex αλλά για να είναι αποδοτικός ο αλγόριθμος πρέπει να έχει ειδική υλοποίηση, την network simplex 34

35 (George B. Dantzig) η οποία διατηρεί εφικτή δομή συνδετικώ ν δέντρων. 2.5 Αλγόριθμοι εύρεσης ελάχιστου συνδετικού δέντρου (minimum spanning tree) Ο αλγόριθμος Prim Ο αλγόριθμος Prim (Vojtech Jarnik -1930, Robert C. Prim -1957, Edsger W. Dijkstra ) βρίσκει το ελάχιστο συνδετικό δέντρο σε έναν συνδεδεμένο βεβαρημένο μη κατευθυνόμενο γράφο. Ανήκει στους άπληστους αλγορίθμους. Ο αλγόριθμος Prim ξεκινά να κατασκευάζει ένα ελάχιστο συνδετικό δέντρο (Ε.Σ.Δ) επιλέγοντας αυθαίρετα μια κορυφή από το σύνολο των κορυφών του γραφήματος G ως ρίζα του αρχικού δέντρου. Έπειτα, προσθέτει επανειλημμένα στο τρέχον δέντρο την ακμή με το ελάχιστο βάρος, η οποία συνδέεται με το ένα άκρο της σε κορυφή που ανήκει ήδη στο δέντρο και το άλλο σε κορυφή εκτός του δέντρου, επεκτείνοντας ένα δέντρο κατά ακριβώς μια ακμή κάθε φορά κάνοντας V -1 επαναλήψεις μέχρι να ολοκληρώσει την κατασκευή του Ε.Σ.Δ. Οι ακμές προς εξέταση (αρχικά το σύνολο των ακμών του γραφήματος) αποθηκεύονται σε ουρά προτεραιότητας υλοποιημένη με σωρό ελάχιστου, από την οποία ο αλγόριθμος επιλέγει την επόμενη προς εξέταση ακμή. Η επιλογή μεταξύ των ακμών με την ίδια ελάχιστη τιμή γίνεται αυθαίρετα (σε μια τέτοια περίπτωση ενδέχεται να υπάρχουν περισσότερες από μια βέλτιστες λύσεις). Κάθε ακμή που ικανοποιεί την συνθήκη στη γραμμή 12, προσθέτει μία κορυφή στον πίνακα prev[ ], ο οποίος στο τέλος της εκτέλεσης του αλγορίθμου περιέχει όλες τις κορυφές του γραφήματος, και αφαιρεί την ίδια κορυφή από την ουρά προτεραιότητας εφόσον πλέον ανήκει στο σύνολο των κορυφών στο δέντρο. Ο αλγόριθμος τερματίζει όταν έχουν αφαιρεθεί όλες οι κορυφές από την ουρά προτεραιότητας Η. Ο αλγόριθμος του Prim σε ψευδογλώσσα MST-Prim(G.w1 1. create-heap(h) ; // δημιουργία ουράς με τα στοιχεία σε σειρά προτεραιότητας 2. for all u e V do 3. cost[u] < 00 ; 4. prev[u] < n u ll; 5. pick any initial node uo; 6. cost[s] < 0 ; insert(u,h); // εισαγωγή στοιχείων στην ουρά 9. while Η t 0 do 10. v < delete-min(u,h); // αφαίρεση στοιχείου από την ουρά 11. for all (ν,ζ) e Ε do 12. if cost[z] > w(v,z) do 13. cost[z]«- w(v,z); 14. p re v[z]«-z; 15. decrease-key(cost[z], z, H) ; // μείωση τιμής κλειδιού του ζ 35

36 Λ ή μμ α: Ο α λγόριθμος του Prim υπολογίζει ένα ελάχιστο συνδετικό δέντρο. Απόδειξη: Έστω S το υποσύνολο των κορυφών στο τρέχον δέντρο Τ. Ο αλγόριθμος προσθέτει την ακμή με το ελάχιστο βάρος η οποία έχει ακριβώς ένα άκρο στο S. Επομένως, σύμφωνα με την ιδιότητα της τομής, η ακμή ανήκει στο ελάχιστο συνδετικό δέντρο. Ο αλγόριθμος του Prim είναι παρόμοιος με τον αλγόριθμο του Dijkstra. Και οι δύο κατασκευάζουν δέντρο και χρησιμοποιούν ουρά προτεραιότητας. Η μόνη τους διαφορά έγκειται στον τρόπο που υπολογίζουν τις τιμές των κλειδιών. Ο Prim δίνει το βάρος της ελαφρύτερης ακμής ενώ ο Dijkstra το μήκος ενός μονοπατιού μέχρι τον συγκεκριμένο κόμβο προσθέτοντας και το βάρος των ακμών. Οι δύο αλγόριθμοι εμφανίζουν τον ίδιο χρόνο εκτέλεσης, που εξαρτάται από τον τρόπο υλοποίησης. Στην απλούστερη εκδοχή του με ένα μη ταξινομημένο πίνακα κορυφών ως ουρά προτεραιότητας, ο Prim έχει χρόνο εκτέλεσης 0(V2). Ουρά προτεραιότητας υλοποιημένη με σωρό ελάχιστου βελτιώνει την χρονική πολυπλοκότητα του Prim σε 0( E log V ). Η υλοποίηση της ουράς προτεραιότητας με σωρό Fibonacci δίνει τον καλύτερο χρόνο εκτέλεσης που είναι 0( V log V + Ε ) (πιο αποδοτικός για πυκνά γραφήματα). Παράδειγμα: 36

37 2.5.2 Ο αλγόριθμος Kruskal Ο αλγόριθμος του Kruskal (Joseph Kruskal ), όπως και αυτός του Prim, βρίσκει το ελάχιστο συνδετικό δέντρο ενός συνδεδεμένου βεβαρημένου γραφήματος με τη χρήση της άπληστης τεχνικής. Ο αλγόριθμος Kruskal ξεκινάει δημιουργώντας ένα δάσος (σύνολο) από δέντρα στο οποίο υπάρχουν όλες οι κορυφές του γραφήματος και κάθε κορυφή σχηματίζει ξεχωριστό υποδέντρο. Αρχικά, στο δάσος δεν υπάρχουν ακμές. Στη συνέχεια, προσθέτει σε αυτό επαναλαμβανόμενα τις ακμές με το ελάχιστο βάρος αφού προσδιορίσει ότι η πρόσθεσή τους σε ένα δέντρο δεν δημιουργεί κύκλο. Σε κάθε επανάληψη, ο αλγόριθμος επιλέγει τις ακμές προς εξέταση από μια ταξινομημένη λίστα στην οποία έχει τοποθετήσει τις ακμές κατά αύξουσα σειρά με βάση το βάρος τους και στη συνέχεια συγκρίνει τα υποδέντρα στα οποία βρίσκονται οι κορυφές της ακμής. Αν είναι διαφορετικά τότε η ακμή δεν σχηματίζει κύκλο οπότε και προστίθεται στις ήδη υπάρχουσες ακμές του δάσους και ενώνει τα δύο υποδέντρα σε ένα μεγαλύτερο. Ο αλγόριθμος τερματίζει όταν εξετάσει όλες τις ακμές του γραφήματος, οι οποίες πλέον περιέχονται στο σύνολο ακμών ελάχιστου βάρους X στο οποίο ενώνονται οι ακμές που προστέθηκαν στο δάσος. Στο τέλος του αλγορίθμου το δάσος αποτελείται από ένα δέντρο το οποίο είναι το ελάχιστο συνδετικό δέντρο. Ο αλγόριθμος του Kruskal σε ψευδογλώσσα MST-Kruskal(G.w1 1. for all u Ε V do 2. makeset(u) ; // δημιουργία συνόλου με στοιχείο το u Χ ^ 0 ; 5. sort edges Ε by weight; 6. for all (u,v) Ε E in increasing order of weight do 37

38 7. ίί ίιηϋ(υ) ΦΓιηοΙ(ν) άο // η ίϊηά() βρίσκει το σύνολο στο οποίο ανήκει το στοιχείο 8. X < X υ {(σ,ν)}; 9. υηίοη(υ,ν) ; // η ιιηίοη() εκτελεί τη συγχώνευση δέντρων προσθέτοντας // την ακμή Η ορθότητα του Kruskal προκύπτει από την ιδιότητα του κύκλου. Ο αλγόριθμος υλοποιήθηκε παραπάνω ως αλγόριθμος με δομές union-find οι οποίες βελτιώνουν τον χρόνο 0( V E ), που θα έδινε μια απλούστερη υλοποίηση, σε χρόνο 0( Ε log E ). Η ανάλυση της πολυπλοκότητας του αλγορίθμου έχει ως εξής: Η διαδικασία makeset() εκτελείται σε χρόνο 0( V ). Η ταξινόμηση των ακμών γίνεται σε χρόνο 0( Ε log E ). Ο έλεγχος που γίνεται στην γραμμή 7 του ψευδοκώδικα και χρησιμοποιεί δύο ψορές την διαδικασία find() απαιτεί χρόνο 0( Ε ). Η διαδικασία union() εκτελείται σε χρόνο 0( V -1). Επομένως, ο συνολικός χρόνος εκτέλεσης είναι: 0( V ) + 0( Ε log E )+2 0( E ) = 0( Ε log E ). Παράδειγμα: Ακμές Ταξινομημένη λίστα ακμών Σχήμα ab cf bf af be ef ae df cd de ab ab cf bf af be ef ae df cd de o cf ab cf bf af be ef ae df cd de Q O af ab cf bf af be ef ae df cd de be ab cf bf af be ef ae df cd de ef ab cf bf af be ef ae df cd de Ae ab cf bf af be ef ae df cd de A Df ab cf bf af be ef ae df cd de Cd ab cf bf af be ef ae df cd de Ό de ab cf bf af be ef ae df cd de

39 Σχήμα 1 Σχήμα 2 Σχήμα 3 39

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

Συντομότερες Διαδρομές Συντομότερες Διαδρομές Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Συντομότερη Διαδρομή Κατευθυνόμενο G(V, E, w) με μήκη Μήκος διαδρομής

Διαβάστε περισσότερα

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

Αλγόριθμοι και Πολυπλοκότητα 7ο εξάμηνο Σ.Η.Μ.Μ.Υ. & Σ.Ε.Μ.Φ.Ε. http://www.corelab.ece.ntua.gr/courses/ 4η εβδομάδα: Εύρεση k-οστού Μικρότερου Στοιχείου, Master Theorem, Τεχνική Greedy: Knapsack, Minimum Spanning Tree, Shortest Paths

Διαβάστε περισσότερα

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

Συντομότερες ιαδρομές Συντομότερες ιαδρομές ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Συντομότερη ιαδρομή Κατευθυνόμενο G(V, E, w) με μήκη Μήκος διαδρομής Απόσταση d(u,

Διαβάστε περισσότερα

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

Αλγόριθμοι και Πολυπλοκότητα Αλγόριθμοι και Πολυπλοκότητα Ροή Δικτύου Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Μοντελοποίηση Δικτύων Μεταφοράς Τα γραφήματα χρησιμοποιούνται συχνά για την μοντελοποίηση

Διαβάστε περισσότερα

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

Συντομότερες ιαδρομές Συντομότερες ιαδρομές ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Άδεια Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

Μέγιστη ροή. Κατευθυνόμενο γράφημα. Συνάρτηση χωρητικότητας. αφετηρίακός κόμβος. τερματικός κόμβος. Ροή δικτύου. με τις ακόλουθες ιδιότητες Κατευθυνόμενο γράφημα Συνάρτηση χωρητικότητας 2 6 20 Ροή δικτύου Συνάρτηση αφετηρίακός κόμβος 0 με τις ακόλουθες ιδιότητες 9 7 τερματικός κόμβος Περιορισμός χωρητικότητας: Αντισυμμετρία: Διατήρηση ροής:

Διαβάστε περισσότερα

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

Αλγόριθμοι Γραφημάτων Αλγόριθμοι Γραφημάτων 1. Συντομότατα μονοπάτια 2. Αλγόριθμος Bellman-Ford 3. Αλγόριθμος Dijkstra 4. Floyd-Warshall Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Single-Source Shortest Path Πρόβλημα:

Διαβάστε περισσότερα

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

Συντομότερες Διαδρομές Συντομότερη Διαδρομή Συντομότερες Διαδρομές Διδάσκοντες: Σ Ζάχος, Δ Φωτάκης Επιμέλεια διαφανειών: Δ Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Κατευθυνόμενο G(V, E, w) με μήκη Μήκος

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 6 Μαΐου 2015 1 / 42 Εύρεση Ελάχιστου Μονοπατιού

Διαβάστε περισσότερα

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

Αλγόριθμοι και Πολυπλοκότητα Αλγόριθμοι και Πολυπλοκότητα Άπληστοι Αλγόριθμοι Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Άπληστοι Αλγόριθμοι Είναι δύσκολο να ορίσουμε ακριβώς την έννοια του άπληστου

Διαβάστε περισσότερα

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 18 Dijkstra s Shortest Path Algorithm 1 / 12 Ο αλγόριθμος εύρεσης της συντομότερης διαδρομής του Dijkstra

Διαβάστε περισσότερα

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

3η Σειρά Γραπτών Ασκήσεων 1/48 3η Σειρά Γραπτών Ασκήσεων Αλγόριθμοι και Πολυπλοκότητα ΣΗΜΜΥ, Εθνικό Μετσόβιο Πολυτεχνείο 2/48 1 Άσκηση 1: Πομποί και Δέκτες 2 Άσκηση 2: Διακοπές στην Ικαρία 3 Άσκηση 3: Επιστροφή στη Γη 4 Άσκηση

Διαβάστε περισσότερα

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ Φροντιστήριο #: Εύρεση Ελαχίστων Μονοπατιών σε Γραφήματα που Περιλαμβάνουν και Αρνητικά Βάρη: Αλγόριθμος

Διαβάστε περισσότερα

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

Σχεδιαση Αλγοριθμων -Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο Σχεδίαση Αλγορίθμων Άπληστοι Αλγόριθμοι http://delab.csd.auth.gr/~gounaris/courses/ad 1 Άπληστοι αλγόριθμοι Προβλήματα βελτιστοποίησης ηςλύνονται με μια σειρά επιλογών που είναι: εφικτές τοπικά βέλτιστες

Διαβάστε περισσότερα

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

Συντομότερες ιαδρομές Συντομότερες ιαδρομές ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Άδεια Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

Σχεδίαση & Ανάλυση Αλγορίθμων Σχεδίαση & Ανάλυση Αλγορίθμων Ενότητα 4.2 Διαδρομές σε Γραφήματα Σταύρος Δ. Νικολόπουλος Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Ιωαννίνων Webpage: www.cs.uoi.gr/~stavros Πρόβλημα Οδικό Δίκτυο

Διαβάστε περισσότερα

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

Μέγιστη ροή. Κατευθυνόμενο γράφημα. Συνάρτηση χωρητικότητας. αφετηρίακός κόμβος. τερματικός κόμβος. Ροή δικτύου. με τις ακόλουθες ιδιότητες Κατευθυνόμενο γράφημα Συνάρτηση χωρητικότητας 12 16 2 Ροή δικτύου Συνάρτηση αφετηρίακός κόμβος 13 1 με τις ακόλουθες ιδιότητες 4 14 9 7 4 τερματικός κόμβος Περιορισμός χωρητικότητας: Αντισυμμετρία: Διατήρηση

Διαβάστε περισσότερα

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 30 Απριλίου 2015 1 / 48 Εύρεση Ελάχιστου

Διαβάστε περισσότερα

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

Αλγόριθμοι Γραφημάτων Αλγόριθμοι Γραφημάτων 1. Minimum Spanning Trees 2. Αλγόριθμος Prim 3. Αλγόριθμος Kruskal Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Minimum Spanning Tree Πρόβλημα: Για δοσμένο συνεκτικό, μη προσανατολισμένο,

Διαβάστε περισσότερα

Αλγόριθμοι και πολυπλοκότητα: 4 η σειρά ασκήσεων ΣΗΜΜΥ - Ε.Μ.Π.

Αλγόριθμοι και πολυπλοκότητα: 4 η σειρά ασκήσεων ΣΗΜΜΥ - Ε.Μ.Π. Αλγόριθμοι και πολυπλοκότητα: 4 η σειρά ασκήσεων CO.RE.LAB. ΣΗΜΜΥ - Ε.Μ.Π. Άσκηση 1 η : Παιχνίδι επιλογής ακμών Έχουμε ένα ακυκλικό κατευθυνόμενο γράφο, μια αρχική κορυφή και δυο παίκτες. Οι παίκτες διαδοχικά

Διαβάστε περισσότερα

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

Γράφοι: κατευθυνόμενοι και μη Γράφοι: κατευθυνόμενοι και μη (V,E ) (V,E ) Γράφος (ή γράφημα): ζεύγος (V,E), V ένα μη κενό σύνολο, Ε διμελής σχέση πάνω στο V Μη κατευθυνόμενος γράφος: σχέση Ε συμμετρική V: κορυφές (vertices), κόμβοι

Διαβάστε περισσότερα

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

Κατανεμημένα Συστήματα Ι Κατανεμημένα Συστήματα Ι Παναγιώτα Παναγοπούλου Χριστίνα Σπυροπούλου 8η Διάλεξη 8 Δεκεμβρίου 2016 1 Ασύγχρονη κατασκευή BFS δέντρου Στα σύγχρονα συστήματα ο αλγόριθμος της πλημμύρας είναι ένας απλός αλλά

Διαβάστε περισσότερα

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

Εισαγωγή στην Επιστήμη των Υπολογιστών Εισαγωγή στην Επιστήμη των Υπολογιστών 4 ο εξάμηνο ΣΗΜΜΥ 4 η ενότητα: Γράφοι: προβλήματα και αλγόριθμοι Επιμέλεια διαφανειών: Στάθης Ζάχος, Άρης Παγουρτζής, Δημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών

Διαβάστε περισσότερα

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

ΣΥΝΕΚΤΙΚΟΤΗΤΑ ΓΡΑΦΗΜΑΤΩΝ Συνεκτικότητα Γραφημάτων 123 ΚΕΦΑΛΑΙΟ 4 ΣΥΝΕΚΤΙΚΟΤΗΤΑ ΓΡΑΦΗΜΑΤΩΝ 4.1 Τοπική και Ολική Συνεκτικότητα Γραφημάτων 4.2 Συνεκτικότητα Μη-κατευθυνόμενων Γραφημάτων 4.3 Συνεκτικότητα Κατευθυνόμενων Γραφημάτων

Διαβάστε περισσότερα

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

4η Γραπτή Ασκηση Αλγόριθμοι και Πολυπλοκότητα CoReLab ΣΗΜΜΥ 7 Φεβρουαρίου 2017 CoReLab (ΣΗΜΜΥ) 4η Γραπτή Ασκηση 7 Φεβρουαρίου / 38 4η Γραπτή Άσκηση Αλγόριθμοι και Πολυπλοκότητα CoReLab ΣΗΜΜΥ 7 Φεβρουαρίου 2017 CoReLab (ΣΗΜΜΥ) 4η Γραπτή Άσκηση 7 Φεβρουαρίου 2017 1 / 38 Άσκηση 1 Πρέπει να βρούμε όλες τις καλές προτάσεις φίλων για τον

Διαβάστε περισσότερα

έντρα ιδάσκοντες:. Φωτάκης,. Σούλιου Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ενότητα 3 Αλγόριθµοι Γραφηµάτων Dijkstra Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Dijkstra

Διαβάστε περισσότερα

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

u v 4 w G 2 G 1 u v w x y z 4 Διάλεξη :.0.06 Θεωρία Γραφημάτων Γραφέας: Σ. Κ. Διδάσκων: Σταύρος Κολλιόπουλος. Εισαγωγικοί ορισμοί Ορισμός. Γράφημα G καλείται ένα ζεύγος G = (V, E) όπου V είναι το σύνολο των κορυφών (ή κόμβων) και E

Διαβάστε περισσότερα

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

4η Γραπτή Ασκηση Αλγόριθμοι και Πολυπλοκότητα CoReLab ΣΗΜΜΥ 3/2/2019 CoReLab (ΣΗΜΜΥ) 4η Γραπτή Ασκηση 3/2/ / 37 4η Γραπτή Άσκηση Αλγόριθμοι και Πολυπλοκότητα CoReLab ΣΗΜΜΥ 3/2/2019 CoReLab (ΣΗΜΜΥ) 4η Γραπτή Άσκηση 3/2/2019 1 / 37 Άσκηση 1 Πρέπει να βρούμε όλες τις καλές προτάσεις φίλων για τον i ανάμεσα σε όλους

Διαβάστε περισσότερα

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

Ελάχιστο Γεννητικό Δένδρο. Παράδειγμα - Αλγόριθμος Prim. Γιατί δουλεύουν αυτοί οι αλγόριθμοι; Άπληστοι Αλγόριθμοι ΙΙI Αλγόριθμοι γραφημάτων Ελάχιστο Γεννητικό Δένδρο Παράδειγμα Κατασκευή δικτύων Οδικά, επικοινωνίας Έχουμε ένα συνεκτικό γράφημα (V,E) και ένας βάρος we σε κάθε ακμή e. Να βρεθεί υποσύνολο

Διαβάστε περισσότερα

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

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Γραφήματα. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Δομές Δεδομένων Γραφήματα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Γραφήματα Κατευθυνόμενο Γράφημα Ένα κατευθυνόμενο γράφημα G είναι ένα ζευγάρι (V, E) όπου V είναι ένα

Διαβάστε περισσότερα

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

Αλγόριθμοι Γραφημάτων Αλγόριθμοι Γραφημάτων. Γραφήματα. Αναπαράσταση Γραφημάτων 3. Διερεύνηση σε Πρώτα σε Πλάτος (BFS) Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη Γράφημα Ορισμός: Ένα γράφημα G είναι το διατεταγμένο ζεύγος

Διαβάστε περισσότερα

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

Εισαγωγή στην Επιστήμη των Υπολογιστών Εισαγωγή στην Επιστήμη των Υπολογιστών 4 ο εξάμηνο ΣΗΜΜΥ 5 η ενότητα: Γράφοι: προβλήματα και αλγόριθμοι Επιμέλεια διαφανειών: Στάθης Ζάχος, Άρης Παγουρτζής, Δημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 10β: Αλγόριθμοι Γραφημάτων-Γραφήματα- Αναπαράσταση Γραφημάτων- Διερεύνηση Πρώτα σε Πλάτος (BFS) Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το

Διαβάστε περισσότερα

Γ. Κορίλη Αλγόριθµοι ροµολόγησης

Γ. Κορίλη Αλγόριθµοι ροµολόγησης - Γ. Κορίλη Αλγόριθµοι ροµολόγησης http://www.seas.upenn.edu/~tcom50/lectures/lecture.pdf ροµολόγηση σε ίκτυα εδοµένων Αναπαράσταση ικτύου µε Γράφο Μη Κατευθυνόµενοι Γράφοι Εκτεταµένα έντρα Κατευθυνόµενοι

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Outline 1 Άσκηση 1 2 Άσκηση 2 3 Άσκηση 3 4 Άσκηση 4 5 Άσκηση 5 6 Προγραμματιστική Άσκηση 1 7 Προγραμματιστική Άσκηση 2 (CoReLab - NTUA) Αλγόριθμοι - 3 Αλγόριθμοι και Πολυπλοκότητα 3η Σειρά Γραπτών και Προγραμματιστικών Ασκήσεων CoReLab ΣΗΜΜΥ - Ε.Μ.Π. Ιανουάριος 2019 (CoReLab - NTUA) Αλγόριθμοι - 3η σειρά ασκήσεων Ιανουάριος 2019 1 / 54 Outline 1 Άσκηση

Διαβάστε περισσότερα

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα Μαΐου 201 1 / Απληστοι (Greedy) Αλγόριθµοι

Διαβάστε περισσότερα

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

Επιχειρησιακή Έρευνα I Επιχειρησιακή Έρευνα I Operations/Operational Research (OR) Κωστής Μαμάσης Παρασκευή 9: : Σημειώσεις των Α. Platis, K. Mamasis Περιεχόμενα EE & Εισαγωγή Μαθηματικός Προγραμματισμός - Γραμμικός Προγραμματισμός

Διαβάστε περισσότερα

Θεωρία και Αλγόριθμοι Γράφων

Θεωρία και Αλγόριθμοι Γράφων ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα # 13: Προβλήματα Ροών σε Δίκτυα Ιωάννης Μανωλόπουλος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creaive

Διαβάστε περισσότερα

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

Αλγόριθµοι Ροής σε Γράφους (CLR, κεφάλαιο 27) Αλγόριθµοι Ροής σε Γράφους (CLR, κεφάλαιο 27) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: ίκτυα ροής και το πρόβληµα της µέγιστης ροής Η µεθοδολογία Ford-Fulkerson Ο αλγόριθµος Edmonds-Karps ΕΠΛ 232

Διαβάστε περισσότερα

Αλγόριθμοι Δρομολόγησης. Γ. Κορμέντζας

Αλγόριθμοι Δρομολόγησης. Γ. Κορμέντζας Αλγόριθμοι Δρομολόγησης Γ. Κορμέντζας Δρομολόγηση Περιεχόμενα Διαδικασίες δρομολόγησης Ροές Δικτύων - Αλγόριθμος Ford-Fulkerson Βασικοί Αλγόριθμοι Γράφων Σχεδιασμός γραμμών πολλαπλών σημείων Ελάχιστα δέντρα

Διαβάστε περισσότερα

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

3η Σειρά Γραπτών Ασκήσεων 1/55 3η Σειρά Γραπτών Ασκήσεων Αλγόριθμοι και Πολυπλοκότητα ΣΗΜΜΥ, Εθνικό Μετσόβιο Πολυτεχνείο 2/55 1 Άσκηση 1: Πομποί και Δέκτες 2 Άσκηση 2: Διακοπές στην Ικαρία 3 Άσκηση 3: Επιστροφή στη Γη 4 Άσκηση

Διαβάστε περισσότερα

Στοιχεία Θεωρίας Γράφων (Graph Theory)

Στοιχεία Θεωρίας Γράφων (Graph Theory) Στοιχεία Θεωρίας Γράφων (Graph Theory) Ε Εξάμηνο, Τμήμα Πληροφορικής & Τεχνολογίας Υπολογιστών ΤΕΙ Λαμίας plam@inf.teilam.gr, Οι διαφάνειες βασίζονται στα βιβλία:. Αλγόριθμοι, Σχεδιασμός & Ανάλυση, η έκδοση,

Διαβάστε περισσότερα

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

Διάλεξη 21: Γράφοι IV - Βραχύτερα Μονοπάτια σε Γράφους Διάλεξη 2: Γράφοι IV - Βραχύτερα Μονοπάτια σε Γράφους Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Βραχύτερα Μονοπάτια σε γράφους - Ο αλγόριθμος Dijkstra για εύρεση της βραχύτερης απόστασης

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 11: Minimum Spanning Trees Αλγόριθμος Prim Αλγόριθμος Kruskal Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Πανεπιστήµιο Αθηνών Καθηγητής: Ν. Μ. Μισυρλής () Αλγόριθµοι και Πολυπλοκότητα 26 Ιουνίου 201 1 / Απληστοι (Greedy) Αλγόριθµοι

Διαβάστε περισσότερα

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

Βραχύτερα Μονοπάτια σε Γράφους (CLR, κεφάλαιο 25) Βραχύτερα Μονοπάτια σε Γράφους (CLR, κεφάλαιο 25) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Ο αλγόριθµος των BellmanFord Ο αλγόριθµος του Dijkstra ΕΠΛ 232 Αλγόριθµοι και Πολυπλοκότητα 61

Διαβάστε περισσότερα

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

Επίλυση Προβληµάτων µε Greedy Αλγόριθµους Επίλυση Προβληµάτων µε Greedy Αλγόριθµους Περίληψη Επίλυση προβληµάτων χρησιµοποιώντας Greedy Αλγόριθµους Ελάχιστα Δέντρα Επικάλυψης Αλγόριθµος του Prim Αλγόριθµος του Kruskal Πρόβληµα Ελάχιστης Απόστασης

Διαβάστε περισσότερα

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

Ελαφρύτατες διαδρομές Ελαφρύτατες διαδρομές Ελαφρύτατες διαδρομές Κατευθυνόμενο γράφημα Συνάρτηση βάρους Ελαφρύτατη διαδρομή από το u στο v : διαδρομή με και ελάχιστο βάρος s 3 t 7 x 5 3 y z Βάρος ελαφρύτατης διαδρομής εάν

Διαβάστε περισσότερα

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

Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες

Διαβάστε περισσότερα

Αλγόριθμοι Δρομολόγησης. Γ. Κορμέντζας

Αλγόριθμοι Δρομολόγησης. Γ. Κορμέντζας Αλγόριθμοι Δρομολόγησης Γ. Κορμέντζας Δρομολόγηση Περιεχόμενα Διαδικασίες δρομολόγησης Ροές Δικτύων - Αλγόριθμος Ford-Fulkerson Βασικοί Αλγόριθμοι Γράφων Σχεδιασμός γραμμών πολλαπλών σημείων Ελάχιστα δέντρα

Διαβάστε περισσότερα

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

Αλγόριθµοι και Πολυπλοκότητα Αλγόριθµοι και Πολυπλοκότητα Ενότητα 3 Αλγόριθµοι Γραφηµάτων Bellman Ford Ν. Μ. Μισυρλής Τµήµα Πληροφορικής και Τηλεπικοινωνιών, Καθηγητής: Ν. Μ. Μισυρλής Αλγόριθµοι και Πολυπλοκότητα - Ενότητα 3 Bellman

Διαβάστε περισσότερα

ΘΕΜΑ 1: Αλγόριθμος Ford-Fulkerson

ΘΕΜΑ 1: Αλγόριθμος Ford-Fulkerson ΘΕΜΑ : Αλγόριθμος Ford-Fulkerson Α Να εξετάσετε αν ισχύει η συνθήκη συντήρησης της αρχικής ροής στο δίκτυο. Β Με χρήση του αλγορίθμου Ford-Fulkerson να βρεθεί η μέγιστη ροή που μπορεί να σταλεί από τον

Διαβάστε περισσότερα

Κεφάλαιο 4ο: Δικτυωτή Ανάλυση

Κεφάλαιο 4ο: Δικτυωτή Ανάλυση Κεφάλαιο ο: Δικτυωτή Ανάλυση. Εισαγωγή Η δικτυωτή ανάλυση έχει παίξει σημαντικό ρόλο στην Ηλεκτρολογία. Όμως, ορισμένες έννοιες και τεχνικές της δικτυωτής ανάλυσης είναι πολύ χρήσιμες και σε άλλες επιστήμες.

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΔΙΑΣΧΙΣΗ ΓΡΑΦΗΜΑΤΩΝ 1 ΔΙΑΣΧΙΣΗ ΓΡΑΦΗΜΑΤΩΝ 1 Θέματα μελέτης Πρόβλημα αναζήτησης σε γραφήματα Αναζήτηση κατά βάθος (Depth-first search DFS) Αναζήτηση κατά πλάτος (Breadth-first search BFS) 2 Γράφημα (graph) Αναπαράσταση συνόλου

Διαβάστε περισσότερα

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

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Εισαγωγή στους Αλγορίθμους Ενότητα 9η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Ελάχιστα Γεννητικά Δένδρα Ελάχιστο Γεννητικό

Διαβάστε περισσότερα

ΕΝΑΣ ΔΙΚΡΙΤΗΡΙΟΣ ΑΛΓΟΡΙΘΜΟΣ SIMPLEX

ΕΝΑΣ ΔΙΚΡΙΤΗΡΙΟΣ ΑΛΓΟΡΙΘΜΟΣ SIMPLEX ΚΕΦΑΛΑΙΟ 3 ΕΝΑΣ ΔΙΚΡΙΤΗΡΙΟΣ ΑΛΓΟΡΙΘΜΟΣ SIMPLEX 3.1 Εισαγωγή Ο αλγόριθμος Simplex θεωρείται πλέον ως ένας κλασικός αλγόριθμος για την επίλυση γραμμικών προβλημάτων. Η πρακτική αποτελεσματικότητά του έχει

Διαβάστε περισσότερα

Ελάχιστο Συνδετικό Δέντρο

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

m 1 min f = x ij 0 (8.4) b j (8.5) a i = 1 KΕΦΑΛΑΙΟ 8 Προβλήµατα Μεταφοράς και Ανάθεσης 8. ΕΙΣΑΓΩΓΗ Μια ειδική κατηγορία προβληµάτων γραµµικού προγραµµατισµού είναι τα προβλήµατα µεταφοράς (Π.Μ.), στα οποία επιζητείται η ελαχιστοποίηση του κόστους

Διαβάστε περισσότερα

Ελάχιστο Συνδετικό Δέντρο

Ελάχιστο Συνδετικό Δέντρο Ελάχιστο Συνδετικό Δέντρο Δημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Ελάχιστο Συνδετικό Δέντρο (MST) Συνεκτικό μη-κατευθ. G(V, E, w) με βάρη Βάρος

Διαβάστε περισσότερα

Ελάχιστο Συνδετικό Δέντρο

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

Διαβάστε περισσότερα

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

Δομές Δεδομένων & Αλγόριθμοι Θέματα Απόδοσης Αλγορίθμων 1 Η Ανάγκη για Δομές Δεδομένων Οι δομές δεδομένων οργανώνουν τα δεδομένα πιο αποδοτικά προγράμματα Πιο ισχυροί υπολογιστές πιο σύνθετες εφαρμογές Οι πιο σύνθετες εφαρμογές απαιτούν

Διαβάστε περισσότερα

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

Εισαγωγή στους Αλγορίθμους Εισαγωγή στους Αλγορίθμους Ενότητα 7η Διδάσκων Χρήστος Ζαρολιάγκης Καθηγητής Τμήμα Μηχανικών Η/Υ & Πληροφορικής Πανεπιστήμιο Πατρών Email: zaro@ceid.upatras.gr Αλγόριθμοι Γραφημάτων Τοπολογική Διάταξη

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 12: Αλγόριθμοι Γραφημάτων/Συντομότατα μονοπάτια/αλγόριθμος Bellman-Ford/Αλγόριθμος Dijkstra/Floyd-Warshall Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής Άδειες

Διαβάστε περισσότερα

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

Θεωρία Γραφημάτων 6η Διάλεξη Θεωρία Γραφημάτων 6η Διάλεξη Α. Συμβώνης Εθνικο Μετσοβειο Πολυτεχνειο Σχολη Εφαρμοσμενων Μαθηματικων και Φυσικων Επιστημων Τομεασ Μαθηματικων Φεβρουάριος 2016 Α. Συμβώνης (ΕΜΠ) Θεωρία Γραφημάτων 6η Διάλεξη

Διαβάστε περισσότερα

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 10 ο. Γράφοι. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗ111. Ανοιξη 2005. Μάθηµα 10 ο. Γράφοι. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 10 ο Γράφοι Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Γράφοι Ορισµός Αφηρηµένος τύπος δεδοµένων Υλοποίηση Αναζήτηση έντρο

Διαβάστε περισσότερα

Μέθοδοι Βελτιστοποίησης

Μέθοδοι Βελτιστοποίησης ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Μέθοδοι Βελτιστοποίησης Ενότητα # : Επιχειρησιακή έρευνα Αθανάσιος Σπυριδάκος Καθηγητής Τμήμα Διοίκησης Επιχειρήσεων Άδειες Χρήσης

Διαβάστε περισσότερα

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

Graph Algorithms. Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι Αλγόριθμοι» Καούρη Γεωργία Μήτσου Βάλια Graph Algorithms Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι Αλγόριθμοι» Καούρη Γεωργία Μήτσου Βάλια Περιεχόμενα Μεταβατικό Κλείσιμο Συνεκτικές συνιστώσες Συντομότερα μονοπάτια Breadth First Spanning

Διαβάστε περισσότερα

Δίκτυα Υπολογιστών ΙΙ (Ασκήσεις Πράξης)

Δίκτυα Υπολογιστών ΙΙ (Ασκήσεις Πράξης) TEI Σερρών Τμήμα Πληροφορικής και Επικοινωνιών Δίκτυα Υπολογιστών ΙΙ (Ασκήσεις Πράξης) Least Cost Algorithms Τομέας Τηλεπικοινωνιών και Δικτύων Δρ. Αναστάσιος Πολίτης Καθηγητής Εφαρμογών anpol@teiser.gr

Διαβάστε περισσότερα

Προβλήματα Μεταφορών (Transportation)

Προβλήματα Μεταφορών (Transportation) Προβλήματα Μεταφορών (Transportation) Παραδείγματα Διατύπωση Γραμμικού Προγραμματισμού Δικτυακή Διατύπωση Λύση Γενική Μέθοδος Simplex Μέθοδος Simplex για Προβλήματα Μεταφοράς Παράδειγμα: P&T Co ΗεταιρείαP&T

Διαβάστε περισσότερα

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

Κατανεμημένα Συστήματα Ι Κατανεμημένα Συστήματα Ι Εκλογή αρχηγού και κατασκευή BFS δένδρου σε σύγχρονο γενικό δίκτυο Παναγιώτα Παναγοπούλου Περίληψη Εκλογή αρχηγού σε γενικά δίκτυα Ορισμός του προβλήματος Ο αλγόριθμος FloodMax

Διαβάστε περισσότερα

Διαίρει και Βασίλευε. πρόβλημα μεγέθους Ν. διάσπαση. πρόβλημα μεγέθους k. πρόβλημα μεγέθους Ν-k

Διαίρει και Βασίλευε. πρόβλημα μεγέθους Ν. διάσπαση. πρόβλημα μεγέθους k. πρόβλημα μεγέθους Ν-k Διαίρει και Βασίλευε πρόβλημα μεγέθους Ν διάσπαση πρόβλημα μεγέθους k πρόβλημα μεγέθους Ν-k Διαίρει και Βασίλευε πρόβλημα μεγέθους Ν διάσπαση επιλύουμε αναδρομικά τα υποπροβλήματα πρόβλημα μεγέθους k πρόβλημα

Διαβάστε περισσότερα

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

Θεωρία Υπολογισμού και Πολυπλοκότητα Μαθηματικό Υπόβαθρο Θεωρία Υπολογισμού και Πολυπλοκότητα Μαθηματικό Υπόβαθρο Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Σύνολα Συναρτήσεις και Σχέσεις Γραφήματα Λέξεις και Γλώσσες Αποδείξεις ΕΠΛ 211 Θεωρία

Διαβάστε περισσότερα

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 9: Εισαγωγή στους Γράφους Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Γράφοι - ορισμοί και υλοποίηση Διάσχιση Γράφων Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διαβάστε περισσότερα

Μέγιστη Ροή Ελάχιστη Τομή

Μέγιστη Ροή Ελάχιστη Τομή Μέγιστη Ροή Ελάχιστη Τομή Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Δίκτυα και Ροές Δίκτυο : κατευθυνόμενο γράφημα G(V, E). Πηγή, προορισμός, χωρητικότητα ακμής b e. ροή μεγέθους

Διαβάστε περισσότερα

Δροµολόγηση (Routing)

Δροµολόγηση (Routing) Δροµολόγηση (Routing) Περίληψη Flooding Η Αρχή του Βέλτιστου και Δυναµικός Προγραµµατισµός Dijkstra s Algorithm Αλγόριθµοi Δροµολόγησης Link State Distance Vector Δροµολόγηση σε Κινητά Δίκτυα Δροµολόγηση

Διαβάστε περισσότερα

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

Διάλεξη 21: Γράφοι II - Τοπολογική Ταξινόμηση ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 21: Γράφοι II - Τοπολογική Ταξινόμηση Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Τοπολογική Ταξινόμηση - Εφαρμογές, Παραδείγματα, Αλγόριθμοι

Διαβάστε περισσότερα

Ελάχιστο Συνδετικό έντρο

Ελάχιστο Συνδετικό έντρο Ελάχιστο Συνδετικό έντρο ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Ελάχιστο Συνδετικό έντρο (MST) Συνεκτικό μη-κατευθ. G(V, E, w) με βάρη Βάρος

Διαβάστε περισσότερα

4.4 Το πρόβλημα του ελάχιστου ζευγνύοντος δένδρου

4.4 Το πρόβλημα του ελάχιστου ζευγνύοντος δένδρου . Το πρόβλημα του ελάχιστου ζευγνύοντος δένδρου Σ αυτή την παράγραφο θα εξεταστεί μια παραλλαγή του προβλήματος της συντομότερης διαδρομής, το πρόβλημα του ελάχιστου ζευγνύοντος δένδρου. Σ αυτό το πρόβλημα

Διαβάστε περισσότερα

Ταιριάσματα. Γράφημα. Ταίριασμα (matching) τέτοιο ώστε κάθε κορυφή να εμφανίζεται σε το πολύ μια ακμή του

Ταιριάσματα. Γράφημα. Ταίριασμα (matching) τέτοιο ώστε κάθε κορυφή να εμφανίζεται σε το πολύ μια ακμή του Ταιριάσματα Γράφημα Ταίριασμα (matching) Σύνολο ακμών τέτοιο ώστε κάθε κορυφή να εμφανίζεται σε το πολύ μια ακμή του Θέλουμε να βρούμε ένα μέγιστο ταίριασμα (δηλαδή με μέγιστο αριθμό ακμών) Ταιριάσματα

Διαβάστε περισσότερα

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

1 Το πρόβλημα της συντομότερης διαδρομής ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΜΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 00 Ιστοσελίδα μαθήματος: http://eclass.teilam.gr/di88 6ο ΕΡΓΑΣΤΗΡΙΟ

Διαβάστε περισσότερα

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

Αλγόριθμοι και πολυπλοκότητα Περιήγηση Πανεπιστημίων ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Αλγόριθμοι και πολυπλοκότητα Περιήγηση Πανεπιστημίων Ιωάννης Τόλλης Τμήμα Επιστήμης Υπολογιστών Περιήγηση Πανεπιστημίων 5/8/008 :46 AM Campus Tour Περίληψη και ανάγνωση

Διαβάστε περισσότερα

ΑΙΚΑΤΕΡΙΝΗ-ΠΑΝΑΓΙΩΤΑ ΣΤΟΥΚΑ ΝΙΚΟΛΑΟΣ ΛΑΜΠΡΟΥ. μπλ 2014

ΑΙΚΑΤΕΡΙΝΗ-ΠΑΝΑΓΙΩΤΑ ΣΤΟΥΚΑ ΝΙΚΟΛΑΟΣ ΛΑΜΠΡΟΥ. μπλ 2014 ΑΙΚΑΤΕΡΙΝΗ-ΠΑΝΑΓΙΩΤΑ ΣΤΟΥΚΑ ΝΙΚΟΛΑΟΣ ΛΑΜΠΡΟΥ μπλ 2014 Έχουμε G = (V,E) μη κατευθυνόμενο γράφο με μη αρνητικές χωρητικότητες c e για κάθε e E. {(s 1, t 1 ),..., (s k, t k )} διακριτά διατεταγμένη ζεύγη

Διαβάστε περισσότερα

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της; 1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες (μορφές) της; Η δομή επανάληψης χρησιμοποιείται όταν μια σειρά εντολών πρέπει να εκτελεστεί σε ένα σύνολο περιπτώσεων, που έχουν κάτι

Διαβάστε περισσότερα

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ιάλεξη : λάχιστα εννητορικά ένδρα Αλγόριθμος Prim Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: λάχιστα εννητορικά ένδρα () Minimum Spanning Trees Ο αλγόριθμος του Prim για εύρεση σε γράφους

Διαβάστε περισσότερα

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

Άσκηση 1. Ψευδοκώδικας Kruskal. Παρακάτω βλέπουμε την εφαρμογή του στο παρακάτω συνδεδεμένο γράφημα. Άσκηση 1 Ψευδοκώδικας Kruskal Παρακάτω βλέπουμε την εφαρμογή του στο παρακάτω συνδεδεμένο γράφημα. Αντιστοιχίζω τους κόμβους με αριθμούς από το 0 έως το 4. 2Η ΕΡΓΑΣΙΑ ΑΛΓΟΡΙΘΜΟΙ & ΠΟΛΥΠΛΟΚΟΤΗΤΑ - MAY 2018

Διαβάστε περισσότερα

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ Φροντιστήριο #7: Ελάχιστα Επικαλυπτικά Δένδρα, Αλγόριθμος Kruskal, Δομές Union-Find Άσκηση # 0 5 0 0 0

Διαβάστε περισσότερα

Τμήμα Μηχανικών Πληροφορικής ΤΕ Πρόβλημα Μεταφοράς. Γεωργία Φουτσιτζή ΤΕΙ Ηπείρου Επιχειρησιακή Έρευνα

Τμήμα Μηχανικών Πληροφορικής ΤΕ Πρόβλημα Μεταφοράς. Γεωργία Φουτσιτζή ΤΕΙ Ηπείρου Επιχειρησιακή Έρευνα Τμήμα Μηχανικών Πληροφορικής ΤΕ 2016-2017 Πρόβλημα Μεταφοράς Γεωργία Φουτσιτζή ΤΕΙ Ηπείρου Επιχειρησιακή Έρευνα To Πρόβλημα Μεταφοράς Μαθηματική Διατύπωση Εύρεση Αρχικής Λύσης Προσδιορισμός Βέλτιστης Λύσης

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 23: Βραχύτερα Μονοπάτια σε Γράφους Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Βραχύτερα Μονοπάτια σε γράφους Ο αλγόριθμος Dijkstra για εύρεση της βραχύτερης απόστασης Ο αλγόριθμος

Διαβάστε περισσότερα

Ελάχιστο Συνδετικό έντρο

Ελάχιστο Συνδετικό έντρο Ελάχιστο Συνδετικό έντρο ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Άδεια Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Μέγιστη Ροή Ελάχιστη Τομή

Μέγιστη Ροή Ελάχιστη Τομή Μέγιστη Ροή Ελάχιστη Τομή Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Δίκτυα και Ροές Δίκτυο : κατευθυνόμενο γράφημα G(V, E). Πηγή,

Διαβάστε περισσότερα

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

ΕΥΡΕΣΗ ΕΛΑΧΙΣΤΩΝ ΜΟΝΟΠΑΤΙΩΝ & ΚΑΤΗΓΟΡΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΕΥΡΕΣΗ ΕΛΑΧΙΣΤΩΝ ΜΟΝΟΠΑΤΙΩΝ & ΚΑΤΗΓΟΡΙΕΣ ΑΛΓΟΡΙΘΜΩΝ (ΑΛΓΟΡΙΘΜΟΙ, Sanjoy Dasgupta, Christos Papadimitriou, Umesh Vazirani, Κεφάλαιο 4 ΣΧΕΔΙΑΣΜΟΣ ΑΛΓΟΡΙΘΜΩΝ, Jon Kleinberg, Eva Tardos, Κεφάλαιο 4) 1 Θέματα

Διαβάστε περισσότερα

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

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 1: Δικτυωτή Ανάλυση (Θεωρία Γράφων) Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 1: Δικτυωτή Ανάλυση (Θεωρία Γράφων) Μπεληγιάννης Γρηγόριος Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διοίκησης Επιχειρήσεων Αγροτικών Προϊόντων & Τροφίμων

Διαβάστε περισσότερα