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

Μέγεθος: 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Περιεχόμενα. 1. Εισαγωγή: Κάποια αντιπροσωπευτικά προβλήματα... 25. 2. Βασικά στοιχεία ανάλυσης αλγορίθμων... 57. 3. Γραφήματα...

Περιεχόμενα. 1. Εισαγωγή: Κάποια αντιπροσωπευτικά προβλήματα... 25. 2. Βασικά στοιχεία ανάλυσης αλγορίθμων... 57. 3. Γραφήματα... Περιεχόμενα Σχετικά με τους συγγραφείς...3 Πρόλογος... 11 Πρόλογος της ελληνικής έκδοσης... 23 1. Εισαγωγή: Κάποια αντιπροσωπευτικά προβλήματα... 25 1.1 Ένα πρώτο πρόβλημα: Ευσταθές Ταίριασμα...25 1.2

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

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

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

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

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

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

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

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

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

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

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

Λυσεις προβλημάτων τελικής φάσης Παγκύπριου Μαθητικού Διαγωνισμού Πληροφορικής 2007 Λυσεις προβλημάτων τελικής φάσης Παγκύπριου Μαθητικού Διαγωνισμού Πληροφορικής 2007 Πρόβλημα 1 Το πρώτο πρόβλημα λύνεται με τη μέθοδο του Δυναμικού Προγραμματισμού. Για να το λύσουμε με Δυναμικό Προγραμματισμό

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

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

ΠΡΟΒΛΗΜΑΤΑ ΜΕΤΑΦΟΡΑΣ (Transportation Problems) Βασίλης Κώστογλου E-mail: vkostogl@it.teithe.gr URL: www.it.teithe.gr/~vkostogl Περιγραφή Ένα πρόβλημα μεταφοράς ασχολείται με το πρόβλημα του προσδιορισμού του καλύτερου δυνατού

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

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

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Διακριτά Μαθηματικά. Ενότητα 2: Γραφήματα Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Διακριτά Μαθηματικά Ενότητα 2: Γραφήματα Αν. Καθηγητής Κ. Στεργίου e-mail: kstergiou@uowm.gr Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Άδειες Χρήσης

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

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

Ελάχιστα Γεννητορικά ένδρα λάχιστα Γεννητορικά ένδρα Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Ο αλγόριθµος του Prim και ο αλγόριθµος του Kruskal για εύρεση λάχιστων Γεννητορικών ένδρων ΠΛ 23 οµές εδοµένων και Αλγόριθµοι

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

Υπολογιστικά & Διακριτά Μαθηματικά

Υπολογιστικά & Διακριτά Μαθηματικά Υπολογιστικά & Διακριτά Μαθηματικά Ενότητα 1: Εισαγωγή- Χαρακτηριστικά Παραδείγματα Αλγορίθμων Στεφανίδης Γεώργιος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ 1) Πότε χρησιμοποιείται η δομή επανάληψης

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

ΠΡΟΛΟΓΟΣ. Θεσσαλονίκη, Μάρτιος 2009. Οι συγγραφείς. Κ. Παπαρρίζος, Ν. Σαμαράς, Α. Σιφαλέρας.

ΠΡΟΛΟΓΟΣ. Θεσσαλονίκη, Μάρτιος 2009. Οι συγγραφείς. Κ. Παπαρρίζος, Ν. Σαμαράς, Α. Σιφαλέρας. ΠΡΟΛΟΓΟΣ Το βιβλίο «Δικτυακή Βελτιστοποίηση» γράφτηκε με κύριο στόχο να καλύψει τις ανάγκες της διδασκαλίας του μαθήματος «Δικτυακός Προγραμματισμός», που διδάσκεται στο Τμήμα Εφαρμοσμένης Πληροφορικής,

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

Τεχνητή Νοημοσύνη. 2η διάλεξη (2015-16) Ίων Ανδρουτσόπουλος. http://www.aueb.gr/users/ion/

Τεχνητή Νοημοσύνη. 2η διάλεξη (2015-16) Ίων Ανδρουτσόπουλος. http://www.aueb.gr/users/ion/ Τεχνητή Νοημοσύνη 2η διάλεξη (2015-16) Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Οι διαφάνειες αυτής της διάλεξης βασίζονται στα βιβλία: Τεχνητή Νοημοσύνη των Βλαχάβα κ.ά., 3η έκδοση, Β. Γκιούρδας

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

Αυτόνομα Συστήματα (ΑΣ)

Αυτόνομα Συστήματα (ΑΣ) Δρομολόγηση ΙI Αυτόνομα Συστήματα (ΑΣ) Αυτόνομο σύστημα ονομάζουμε εκείνο που έχει τα εξής χαρακτηριστικά: Είναι ένα σύνολο δρομολογητών και δικτύων υπό τη διαχείριση ενός και μόνο οργανισμού Αποτελείται

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

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5.1 Εισαγωγή στους αλγορίθμους 5.1.1 Εισαγωγή και ορισμοί Αλγόριθμος (algorithm) είναι ένα πεπερασμένο σύνολο εντολών οι οποίες εκτελούν κάποιο ιδιαίτερο έργο. Κάθε αλγόριθμος

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

Δρομολόγηση Και Πολύχρωματισμός. Γραφημάτων ΚΑΡΑΓΕΩΡΓΟΣ ΤΙΜΟΘΕΟΣ Α.Μ 1026

Δρομολόγηση Και Πολύχρωματισμός. Γραφημάτων ΚΑΡΑΓΕΩΡΓΟΣ ΤΙΜΟΘΕΟΣ Α.Μ 1026 Δρομολόγηση Και Πολύχρωματισμός Μονοπατιών Γραφημάτων ΚΑΡΑΓΕΩΡΓΟΣ ΤΙΜΟΘΕΟΣ Α.Μ 1026 Εισαγωγή. Το πρόβλημα με το οποίο θα ασχοληθούμε εδώ είναι γνωστό σαν: Δρομολόγηση και Πολύ-χρωματισμός Διαδρομών (Routing

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

Γράφοι. Ένας γράφος ή αλλιώς γράφηµα αποτελείται απο. Εφαρµογές: Τηλεπικοινωνιακά και Οδικά ίκτυα, Ηλεκτρονικά Κυκλώµατα, Β.. κ.ά.

Γράφοι. Ένας γράφος ή αλλιώς γράφηµα αποτελείται απο. Εφαρµογές: Τηλεπικοινωνιακά και Οδικά ίκτυα, Ηλεκτρονικά Κυκλώµατα, Β.. κ.ά. Γράφοι Ένας γράφος ή αλλιώς γράφηµα αποτελείται απο πλευρές (ακµές) και κορυφές (κόµβους). Εφαρµογές: Τηλεπικοινωνιακά και Οδικά ίκτυα, Ηλεκτρονικά Κυκλώµατα, Β.. κ.ά. Graph Drawing 4 πιθανές αναπαραστάσεις

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

υναμικός Προγραμματισμός

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

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

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ Δομές Δεδομένων Τι θα δούμε Ουρές προτεραιότητας Πράξεις Διωνυμικές Ουρές Διωνυμικά Δέντρα Διωνυμικοί Σωροί Ουρές Fibonacci Αναπαράσταση Πράξεις Ανάλυση Συγκρίσεις Ουρές προτεραιότητας

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

Είναι η διαδικασία εύρεσης της διαδρομής που πρέπει να ακολουθήσει ένα πακέτο για να φτάσει στον προορισμό του. Η διαδικασία αυτή δεν είναι πάντα

Είναι η διαδικασία εύρεσης της διαδρομής που πρέπει να ακολουθήσει ένα πακέτο για να φτάσει στον προορισμό του. Η διαδικασία αυτή δεν είναι πάντα 1 Είναι η διαδικασία εύρεσης της διαδρομής που πρέπει να ακολουθήσει ένα πακέτο για να φτάσει στον προορισμό του. Η διαδικασία αυτή δεν είναι πάντα εύκολη, τη στιγμή που γνωρίζουμε ότι ένα σύνθετο δίκτυο

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

Αλγόριθμοι Τυφλής Αναζήτησης

Αλγόριθμοι Τυφλής Αναζήτησης Τεχνητή Νοημοσύνη 04 Αλγόριθμοι Τυφλής Αναζήτησης Αλγόριθμοι Τυφλής Αναζήτησης (Blind Search Algorithms) Εφαρμόζονται σε προβλήματα στα οποία δεν υπάρχει πληροφορία που να επιτρέπει αξιολόγηση των καταστάσεων.

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

ΚΕΦΑΛΑΙΟ 18. 18 Μηχανική Μάθηση

ΚΕΦΑΛΑΙΟ 18. 18 Μηχανική Μάθηση ΚΕΦΑΛΑΙΟ 18 18 Μηχανική Μάθηση Ένα φυσικό ή τεχνητό σύστηµα επεξεργασίας πληροφορίας συµπεριλαµβανοµένων εκείνων µε δυνατότητες αντίληψης, µάθησης, συλλογισµού, λήψης απόφασης, επικοινωνίας και δράσης

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 12 η Αναζήτηση/Ταξινόμηση Πίνακα Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην

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

Περιεχόμενα. Περιεχόμενα

Περιεχόμενα. Περιεχόμενα Περιεχόμενα xv Περιεχόμενα 1 Αρχές της Java... 1 1.1 Προκαταρκτικά: Κλάσεις, Τύποι και Αντικείμενα... 2 1.1.1 Βασικοί Τύποι... 5 1.1.2 Αντικείμενα... 7 1.1.3 Τύποι Enum... 14 1.2 Μέθοδοι... 15 1.3 Εκφράσεις...

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

ΗΥ-121: Ηλεκτρονικά Κυκλώματα Γιώργος Δημητρακόπουλος. Βασικές Αρχές Ηλεκτρικών Κυκλωμάτων

ΗΥ-121: Ηλεκτρονικά Κυκλώματα Γιώργος Δημητρακόπουλος. Βασικές Αρχές Ηλεκτρικών Κυκλωμάτων Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών ΗΥ-121: Ηλεκτρονικά Κυκλώματα Γιώργος Δημητρακόπουλος Άνοιξη 2008 Βασικές Αρχές Ηλεκτρικών Κυκλωμάτων Ηλεκτρικό ρεύμα Το ρεύμα είναι αποτέλεσμα της κίνησης

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

Αλγοριθμικές Τεχνικές. Brute Force. Διαίρει και Βασίλευε. Παράδειγμα MergeSort. Παράδειγμα. Τεχνικές Σχεδιασμού Αλγορίθμων

Αλγοριθμικές Τεχνικές. Brute Force. Διαίρει και Βασίλευε. Παράδειγμα MergeSort. Παράδειγμα. Τεχνικές Σχεδιασμού Αλγορίθμων Τεχνικές Σχεδιασμού Αλγορίθμων Αλγοριθμικές Τεχνικές Παύλος Εφραιμίδης, Λέκτορας http://pericles.ee.duth.gr Ορισμένες γενικές αρχές για τον σχεδιασμό αλγορίθμων είναι: Διαίρει και Βασίλευε (Divide and

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

Παράδειγμα 2. Λύση & Επεξηγήσεις. Τέλος_επανάληψης Εμφάνισε "Ναι" Τέλος Α2

Παράδειγμα 2. Λύση & Επεξηγήσεις. Τέλος_επανάληψης Εμφάνισε Ναι Τέλος Α2 Διδακτική πρόταση ΕΝΟΤΗΤΑ 2η, Θέματα Θεωρητικής Επιστήμης των Υπολογιστών Κεφάλαιο 2.2. Παράγραφος 2.2.7.4 Εντολές Όσο επανάλαβε και Μέχρις_ότου Η διαπραγμάτευση των εντολών επανάληψης είναι σημαντικό

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

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

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

βασικές έννοιες (τόμος Β)

βασικές έννοιες (τόμος Β) θεωρία γραφημάτων Παύλος Εφραιμίδης 1 περιεχόμενα βασικές έννοιες (τόμος Α) βασικές έννοιες (τόμος Β) 2 Θεωρία Γραφημάτων Βασική Ορολογία Τόμος Α, Ενότητα 4.1 Βασική Ορολογία Γραφημάτων Γράφημα Γ = (E,V)

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

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Μια δομή δεδομένων στην πληροφορική, συχνά αναπαριστά οντότητες του φυσικού κόσμου στον υπολογιστή. Για την αναπαράσταση αυτή, δημιουργούμε πρώτα ένα αφηρημένο μοντέλο στο οποίο προσδιορίζονται

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

Βασικές Έννοιες Θεωρίας Γραφημάτων

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

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

1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης

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

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

ΔΙΚΤΥΑ (13) Π. Φουληράς

ΔΙΚΤΥΑ (13) Π. Φουληράς ΔΙΚΤΥΑ (13) Π. Φουληράς Τεχνολογίες WAN και Δρομολόγηση LAN Επεκτείνεται μόνον σε ένα κτίριο ή ομάδα κτιρίων WAN (Wide Area Network) Επεκτείνονται σε μεγάλες περιοχές MAN Ενδιάμεσο ως προς το μέγεθος της

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

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

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Δέντρα Αναζήτησης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Δομές Δεδομένων Δέντρα Αναζήτησης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Το πρόβλημα Αναζήτηση Θέλουμε να διατηρήσουμε αντικείμενα με κλειδιά και να μπορούμε εκτός από

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

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

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

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

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

ΠΛΗ 20, 5 η ΟΣΣ: Θεωρία Γραφημάτων ΠΛΗ 20, 5 η ΟΣΣ: Θεωρία Γραφημάτων ημήτρης Φωτάκης ιακριτά Μαθηματικά και Μαθηματική Λογική Πληροφορική Ελληνικό Ανοικτό Πανεπιστήμιο 4 η Εργασία: Γενική Εικόνα Αντίστοιχη βαθμολογικά και ποιοτικά με την

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

Παντελής Μπουμπούλης, M.Sc., Ph.D. σελ. 2 math-gr.blogspot.com, bouboulis.mysch.gr

Παντελής Μπουμπούλης, M.Sc., Ph.D. σελ. 2 math-gr.blogspot.com, bouboulis.mysch.gr VI Ολοκληρώματα Παντελής Μπουμπούλης, MSc, PhD σελ mth-grlogspotcom, ououlismyschgr ΜΕΡΟΣ Αρχική Συνάρτηση Ορισμός Έστω f μια συνάρτηση ορισμένη σε ένα διάστημα Δ Αρχική συνάρτηση ή παράγουσα της στο Δ

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

Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών

Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών Συνήθεις διαφορικές εξισώσεις προβλήματα οριακών τιμών Οι παρούσες σημειώσεις αποτελούν βοήθημα στο μάθημα Αριθμητικές Μέθοδοι του 5 ου εξαμήνου του ΤΜΜ ημήτρης Βαλουγεώργης Καθηγητής Εργαστήριο Φυσικών

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

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

Ενότητα 10 Γράφοι (ή Γραφήµατα) Ενότητα 10 Γράφοι (ή γραφήµατα) ΗΥ240 - Παναγιώτα Φατούρου 1 Γράφοι (ή Γραφήµατα) Ένας γράφος αποτελείται από ένα σύνολο από σηµεία (που λέγονται κόµβοι) και ένα σύνολο από γραµµές (που λέγονται ακµές)

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

Κεφάλαιο 3. Γραφήµατα v1.1 (2012-01-12) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Κεφάλαιο 3. Γραφήµατα v1.1 (2012-01-12) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. Κεφάλαιο 3 Γραφήµατα v1.1 (2012-01-12) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne. 1 3.1 Βασικοί Ορισµοί και Εφαρµογές γραφήµατα γράφηµα G: ένας τρόπος κωδικοποίησης των σχέσεων

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

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής Ενότητα 8: Γραμμική Αναζήτηση και Δυαδική Αναζήτηση-Εισαγωγή στα Δέντρα και Δυαδικά Δέντρα-Δυαδικά Δέντρα Αναζήτησης & Υλοποίηση ΔΔΑ με δείκτες Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

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

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 19 Hashing - Κατακερματισμός 1 / 23 Πίνακες απευθείας πρόσβασης (Direct Access Tables) Οι πίνακες απευθείας

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

12/1/2006 Διακριτά Μαθηματικά. Ορισμός. Υπό γράφημα Τ γραφήματος Γ καλείται συνδετικό (ή επικαλύπτον)

12/1/2006 Διακριτά Μαθηματικά. Ορισμός. Υπό γράφημα Τ γραφήματος Γ καλείται συνδετικό (ή επικαλύπτον) ΣΥΝΔΕΤΙΚΑ ΔΕΝΤΡΑ Ορισμός. Υπό γράφημα Τ γραφήματος Γ καλείται συνδετικό (ή επικαλύπτον) δέντρο (spanning tree) του Γ εάν αυτό είναι δέντρο και περιέχει όλες τις κορυφές του Γ. Παράδειγμα. Στο παρακάτω

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

Δένδρα επικάλ επικ υψης ελάχιστου στους

Δένδρα επικάλ επικ υψης ελάχιστου στους Δένδρα επικάλυψης ελάχιστου κόστους Αλγόριθμος Kruskal Αλγόριθμος Kruskal Ξεκινάμε από ένα δάσος από n δένδρα, κάθε ένα δένδρο εκφυλισμένο σε ένα μεμονωμένο κόμβο. Σε κάθε επανάληψη, προσθέτουμε τη πλευρά

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

Προγραµµατισµός Η/Υ. Μέρος2

Προγραµµατισµός Η/Υ. Μέρος2 Προγραµµατισµός Η/Υ Μέρος2 Περιεχόμενα Επανάληψη Βασικών Σύμβολων Διαγραμμάτων Ροής Αλγόριθμος Ψευδοκώδικας Παραδείγματα Αλγορίθμων Γλώσσες προγραμματισμού 2 Επανάληψη Βασικών Σύμβολων Διαγραμμάτων Ροής

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

Αλγόριθµοι Τύπου Μείωσης Προβλήµατος

Αλγόριθµοι Τύπου Μείωσης Προβλήµατος Αλγόριθµοι Τύπου Μείωσης Προβλήµατος Περίληψη Αλγόριθµοι Τύπου Μείωσης Προβλήµατος ( Decrease and Conquer ) Μείωση κατά µια σταθερά (decrease by a constant) Μείωση κατά ένα ποσοστό (decrease by a constant

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

8 η ιάλεξη: σε δίκτυα δεδομένων

8 η ιάλεξη: σε δίκτυα δεδομένων Εργαστήριο ικτύων Υπολογιστών 8 η ιάλεξη: Βασικές αρχές δρομολόγησης Βασικές αρχές δρομολόγησης σε δίκτυα δεδομένων ρομολόγηση (Routing) Μεταφορά μηνυμάτων μέσω του διαδικτύου από μία πηγή σε ένα προορισμό

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

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

Δομές δεδομένων (2) Αλγόριθμοι Δομές δεδομένων (2) Αλγόριθμοι Παράγωγοι τύποι (struct) σύνοψη προηγουμένων Πίνακες: πολλές μεταβλητές ίδιου τύπου Παράγωγοι τύποι ή Δομές (struct): ομαδοποίηση μεταβλητών διαφορετικού τύπου struct Student

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

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

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Συμβολοσειρές. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Δομές Δεδομένων Συμβολοσειρές Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Συμβολοσειρές Συμβολοσειρές και προβλήματα που αφορούν συμβολοσειρές εμφανίζονται τόσο συχνά που

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

Ασυμπτωτικός Συμβολισμός

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

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

Συνοπτική Μεθοδολογία Ασκήσεων Κεφαλαίου 7. Ασκήσεις στο IP Fragmentation

Συνοπτική Μεθοδολογία Ασκήσεων Κεφαλαίου 7. Ασκήσεις στο IP Fragmentation Συνοπτική Μεθοδολογία Ασκήσεων Κεφαλαίου 7 Οι σημειώσεις που ακολουθούν περιγράφουν τις ασκήσεις που θα συναντήσετε στο κεφάλαιο 7. Η πιο συνηθισμένη και βασική άσκηση αναφέρεται στο IP Fragmentation,

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

ΔΕΟ 40 ΤΟΜΟΣ Β ΘΕΩΡΙΑ ΚΑΙ ΑΣΚΗΣΕΙΣ ΔΙΚΤΥΩΝ ΔΙΟΙΚΗΣΗ ΕΡΓΩΝ

ΔΕΟ 40 ΤΟΜΟΣ Β ΘΕΩΡΙΑ ΚΑΙ ΑΣΚΗΣΕΙΣ ΔΙΚΤΥΩΝ ΔΙΟΙΚΗΣΗ ΕΡΓΩΝ ΔΕΟ 40 ΤΟΜΟΣ Β ΘΕΩΡΙΑ ΚΑΙ ΑΣΚΗΣΕΙΣ ΔΙΚΤΥΩΝ ΔΙΟΙΚΗΣΗ ΕΡΓΩΝ ΟΡΙΣΜΟΣ ΤΟΥ ΕΡΓΟΥ Έργο είναι μια ακολουθία μοναδικών, σύνθετων και αλληλοσυσχετιζόμενων δραστηριοτήτων που αποσκοπούν στην επίτευξη κάποιου συγκεκριμένου

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

Παράδειγμα 1. Δίνεται ο κάτωθι κλειστός βρόχος αρνητικής ανάδρασης με. Σχήμα 1. στο οποίο εφαρμόζουμε αρνητική ανάδραση κέρδους

Παράδειγμα 1. Δίνεται ο κάτωθι κλειστός βρόχος αρνητικής ανάδρασης με. Σχήμα 1. στο οποίο εφαρμόζουμε αρνητική ανάδραση κέρδους Παράδειγμα 1 Δίνεται ο κάτωθι κλειστός βρόχος αρνητικής ανάδρασης με _ + Σχήμα 1 στο οποίο εφαρμόζουμε αρνητική ανάδραση κέρδους Α) Γράψτε το σύστημα ευθέως κλάδου σε κανονική παρατηρήσιμη μορφή στο χώρο

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

ΑΣΚΗΣΗ 1 Για τις ερωτήσεις 1-4 θεωρήσατε τον ακόλουθο γράφο. Ποιές από τις παρακάτω προτάσεις αληθεύουν και ποιές όχι;

ΑΣΚΗΣΗ 1 Για τις ερωτήσεις 1-4 θεωρήσατε τον ακόλουθο γράφο. Ποιές από τις παρακάτω προτάσεις αληθεύουν και ποιές όχι; ΘΕΜΑΤΑ ΔΕΝΔΡΩΝ ΓΙΑ ΤΙΣ ΕΞΕΤΑΣΕΙΣ ΠΛΗ0 ΑΣΚΗΣΗ Για τις ερωτήσεις - θεωρήσατε τον ακόλουθο γράφο. Ποιές από τις παρακάτω προτάσεις αληθεύουν και ποιές όχι; Β Ε Α 6 Δ 5 9 8 0 Γ 7 Ζ Η. Σ/Λ Δυο από τα συνδετικά

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

ΠΡΟΟΡΙΣΜΟΣ ΑΠΟΘΗΚΕΣ Ζ1 Ζ2 Ζ3 Δ1 1,800 2,100 1,600 Δ2 1,100 700 900 Δ3 1,400 800 2,200

ΠΡΟΟΡΙΣΜΟΣ ΑΠΟΘΗΚΕΣ Ζ1 Ζ2 Ζ3 Δ1 1,800 2,100 1,600 Δ2 1,100 700 900 Δ3 1,400 800 2,200 ΑΣΚΗΣΗ Η εταιρεία logistics Orient Express έχει αναλάβει τη διακίνηση των φορητών προσωπικών υπολογιστών γνωστής πολυεθνικής εταιρείας σε πελάτες που βρίσκονται στο Hong Kong, τη Σιγκαπούρη και την Ταϊβάν.

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

ΒΑΣΙΚΕΣ ΥΠΗΡΕΣΙΕΣ Βελώνης Γεώργιος ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ. Μάθημα 2ο. Βελώνης Γεώργιος - 1ο Τ.Ε.Ε. Κατερίνης. Καθηγητής Πληροφορικής ΠΕ20 2-1

ΒΑΣΙΚΕΣ ΥΠΗΡΕΣΙΕΣ Βελώνης Γεώργιος ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ. Μάθημα 2ο. Βελώνης Γεώργιος - 1ο Τ.Ε.Ε. Κατερίνης. Καθηγητής Πληροφορικής ΠΕ20 2-1 ΒΑΣΙΚΕΣ ΥΠΗΡΕΣΙΕΣ Βελών ΤΟΥ ΔΙΑΔΙΚΤΥΟΥ Μάθημα 2ο Βελών - 1ο Τ.Ε.Ε. Κατερίν Καθηγητής Πληροφορικής ΠΕ20 2-1 Τεχνολογίες Μεταγωγής Δεδομένων Δίκτυα Μεταγωγής Βελών Βελών Δίκτυα Μεταγωγής Δίκτυα Μεταγωγής

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

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

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

Αριθμητική εύρεση ριζών μη γραμμικών εξισώσεων

Αριθμητική εύρεση ριζών μη γραμμικών εξισώσεων Αριθμητική εύρεση ριζών μη γραμμικών εξισώσεων Με τον όρο μη γραμμικές εξισώσεις εννοούμε εξισώσεις της μορφής: f( ) 0 που προέρχονται από συναρτήσεις f () που είναι μη γραμμικές ως προς. Περιέχουν δηλαδή

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

Θεώρημα Βolzano. Κατηγορία 1 η. 11.1 Δίνεται η συνάρτηση:

Θεώρημα Βolzano. Κατηγορία 1 η. 11.1 Δίνεται η συνάρτηση: Κατηγορία η Θεώρημα Βolzano Τρόπος αντιμετώπισης:. Όταν μας ζητούν να εξετάσουμε αν ισχύει το θεώρημα Bolzano για μια συνάρτηση f σε ένα διάστημα [, ] τότε: Εξετάζουμε την συνέχεια της f στο [, ] (αν η

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

K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων

K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων Γιάννης Λιαπέρδος TEI Πελοποννήσου Σχολή Τεχνολογικών Εφαρμογών Τμήμα Μηχανικών Πληροφορικής ΤΕ Η έννοια του συνδυαστικού

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

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος. 1. Δώστε τον ορισμό του προβλήματος. 2. Σι εννοούμε με τον όρο επίλυση ενός προβλήματος; 3. Σο πρόβλημα του 2000. 4. Σι εννοούμε με τον όρο κατανόηση προβλήματος; 5. Σι ονομάζουμε χώρο προβλήματος; 6.

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

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΚΥΚΛΩΜΑΤΩΝ

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΚΥΚΛΩΜΑΤΩΝ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΚΥΚΛΩΜΑΤΩΝ Ηλεκτρικό κύκλωμα ονομάζεται μια διάταξη που αποτελείται από ένα σύνολο ηλεκτρικών στοιχείων στα οποία κυκλοφορεί ηλεκτρικό ρεύμα. Τα βασικά ηλεκτρικά στοιχεία είναι οι γεννήτριες,

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

Ανάλυση Ηλεκτρικών Κυκλωμάτων με Αντιστάσεις

Ανάλυση Ηλεκτρικών Κυκλωμάτων με Αντιστάσεις Πανεπιστήμιο Κρήτης Τμήμα Επιστήμης Υπολογιστών ΗΥ-2: Ηλεκτρονικά Κυκλώματα Γιώργος Δημητρακόπουλος Άνοιξη 2008 Ανάλυση Ηλεκτρικών Κυκλωμάτων με Αντιστάσεις H ανάλυση ενός κυκλώματος με αντιστάσεις στη

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

Chapter 9: NP-Complete Problems

Chapter 9: NP-Complete Problems Θεωρητική Πληροφορική Ι: Αλγόριθμοι και Πολυπλοκότητα Chapter 9: NP-Complete Problems 9.3 Graph-Theoretic Problems (Συνέχεια) 9.4 Sets and Numbers Γιώργος Αλεξανδρίδης gealexan@mail.ntua.gr Κεφάλαιο 9:

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

1.3 Συστήματα γραμμικών εξισώσεων με ιδιομορφίες

1.3 Συστήματα γραμμικών εξισώσεων με ιδιομορφίες Κεφάλαιο Συστήματα γραμμικών εξισώσεων Παραδείγματα από εφαρμογές Παράδειγμα : Σε ένα δίκτυο (αγωγών ή σωλήνων ή δρόμων) ισχύει ο κανόνας των κόμβων όπου το άθροισμα των εισερχόμενων ροών θα πρέπει να

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ομή Επανάληψης

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ομή Επανάληψης ΕΠ.1 Να αναπτυχθεί αλγόριθμος που θα εκτυπώνει τους διψήφιους άρτιους ακέραιους. Η άσκηση στην ουσία θα πρέπει να εκτυπώσει του αριθμούς 10, 12, 14,.,96, 98. Μεμιαπρώτηματιάθαμπορούσαμενατηνλύσουμεμετοναπροσπελάσουμετιςτιμές

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

7.5 Πρωτόκολλο IP. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

7.5 Πρωτόκολλο IP. Τεχνολογία ικτύων Επικοινωνιών ΙΙ Τεχνολογία ικτύων Επικοινωνιών ΙΙ 7.5 Πρωτόκολλο IP 38. Τι είναι το πρωτόκολλο ιαδικτύου (Internet Protocol, IP); Είναι το βασικό πρωτόκολλο του επιπέδου δικτύου της τεχνολογίας TCP/IP. Βασίζεται στα αυτοδύναµα

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

ΑΡΙΘΜΗΤΙΚΗ ΠΡΟΟΔΟΣ. Σύμφωνα με τα παραπάνω, για μια αριθμητική πρόοδο που έχει πρώτο όρο τον ...

ΑΡΙΘΜΗΤΙΚΗ ΠΡΟΟΔΟΣ. Σύμφωνα με τα παραπάνω, για μια αριθμητική πρόοδο που έχει πρώτο όρο τον ... ΑΡΙΘΜΗΤΙΚΗ ΠΡΟΟΔΟΣ Ορισμός : Μία ακολουθία ονομάζεται αριθμητική πρόοδος, όταν ο κάθε όρος της, δημιουργείται από τον προηγούμενο με πρόσθεση του ίδιου πάντοτε αριθμού. Ο σταθερός αριθμός που προστίθεται

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

Μεταθέσεις και πίνακες μεταθέσεων

Μεταθέσεις και πίνακες μεταθέσεων Παράρτημα Α Μεταθέσεις και πίνακες μεταθέσεων Το παρόν παράρτημα βασίζεται στις σελίδες 671 8 του βιβλίου: Γ. Χ. Ψαλτάκης, Κβαντικά Συστήματα Πολλών Σωματιδίων (Πανεπιστημιακές Εκδόσεις Κρήτης, Ηράκλειο,

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 11: ΠΡΟΒΛΗΜΑ ΔΙΑΤΡΕΞΗΣ ΓΡΑΦΗΜΑΤΟΣ

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

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

Πελάτες φθάνουν στο ταμείο μιας τράπεζας Eνα μόνο ταμείο είναι ανοικτό Κάθε πελάτης παρουσιάζεται με ένα νούμερο - αριθμός προτεραιότητας Όσο ο

Πελάτες φθάνουν στο ταμείο μιας τράπεζας Eνα μόνο ταμείο είναι ανοικτό Κάθε πελάτης παρουσιάζεται με ένα νούμερο - αριθμός προτεραιότητας Όσο ο Ουρές προτεραιότητας Πελάτες φθάνουν στο ταμείο μιας τράπεζας Eνα μόνο ταμείο είναι ανοικτό Κάθε πελάτης παρουσιάζεται με ένα νούμερο - αριθμός προτεραιότητας Όσο ο αριθμός είναι μεγάλος, τόσο οι πελάτες

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

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

Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17) Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Σχεδιασµός αλγορίθµων µε Άπληστους Αλγόριθµους Στοιχεία άπληστων αλγορίθµων Το πρόβληµα επιλογής εργασιών ΕΠΛ 232

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

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

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 12: Δέντρα ΙΙ -Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης(ΔΔΑ) - Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου - Εισαγωγή

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

Προσεγγιστικοί Αλγόριθμοι για NP- ύσκολα Προβλήματα

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

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

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι Εισαγωγή στην επιστήμη των υπολογιστών Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι 1 Έννοια Ανεπίσημα, ένας αλγόριθμος είναι μια βήμα προς βήμα μέθοδος για την επίλυση ενός προβλήματος ή την διεκπεραίωση

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

Γράφηµα (Graph) Εργαστήριο 10. Εισαγωγή

Γράφηµα (Graph) Εργαστήριο 10. Εισαγωγή Εργαστήριο 10 Γράφηµα (Graph) Εισαγωγή Στην πληροφορική γράφηµα ονοµάζεται µια δοµή δεδοµένων, που αποτελείται από ένα σύνολο κορυφών ( vertices) (ή κόµβων ( nodes» και ένα σύνολο ακµών ( edges). Ενας

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

Κεφάλαιο 3. Αλγόριθµοι Τυφλής Αναζήτησης. Τεχνητή Νοηµοσύνη - Β' Έκδοση. Ι. Βλαχάβας, Π. Κεφαλάς, Ν. Βασιλειάδης, Φ. Κόκκορας, Η.

Κεφάλαιο 3. Αλγόριθµοι Τυφλής Αναζήτησης. Τεχνητή Νοηµοσύνη - Β' Έκδοση. Ι. Βλαχάβας, Π. Κεφαλάς, Ν. Βασιλειάδης, Φ. Κόκκορας, Η. Κεφάλαιο 3 Αλγόριθµοι Τυφλής Αναζήτησης Τεχνητή Νοηµοσύνη - Β' Έκδοση Ι. Βλαχάβας, Π. Κεφαλάς, Ν. Βασιλειάδης, Φ. Κόκκορας, Η. Σακελλαρίου Αλγόριθµοι Τυφλής Αναζήτησης Οι αλγόριθµοι τυφλής αναζήτησης (blind

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

Το Πρόβλημα Μεταφοράς

Το Πρόβλημα Μεταφοράς Το Πρόβλημα Μεταφοράς Αφορά τη μεταφορά ενός προϊόντος από διάφορους σταθμούς παραγωγής σε διάφορες θέσεις κατανάλωσης με το ελάχιστο δυνατό κόστος. Πρόκειται για το πιο σπουδαίο πρότυπο προβλήματος γραμμικού

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

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ και ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ 2.1 Να δοθεί ο ορισμός

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

Σημείωση: Δες ορισμό απλού γραφήματος στον Τόμο Α, σελ. 97 και τόμο Β, σελ 12.

Σημείωση: Δες ορισμό απλού γραφήματος στον Τόμο Α, σελ. 97 και τόμο Β, σελ 12. ΑΣΚΗΣΗ 1: Είναι το ακόλουθο γράφημα απλό; Σημείωση: Δες ορισμό απλού γραφήματος στον Τόμο Α, σελ. 97 και τόμο Β, σελ 12. v 2 ΑΠΑΝΤΗΣΗ 1: Το παραπάνω γράφημα δεν είναι απλό, αφού υπάρχουν δύο ακμές που

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

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος Εισαγωγή στους Αλγόριθµους Αλγόριθµοι Τι είναι αλγόριθµος; Τι µπορεί να υπολογίσει ένας αλγόριθµος; Πως αξιολογείται ένας αλγόριθµος; Παύλος Εφραιµίδης pefraimi@ee.duth.gr Αλγόριθµοι Εισαγωγικές Έννοιες

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

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ 1ΗΣ ΣΕΛΙΔΑΣ ΘΕΜΑ Α ΑΝΑΚΕΦΑΛΑΙΩΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ Γ' ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΠΕΜΠΤΗ 26 ΑΠΡΙΛΙΟΥ 2012 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΥ

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

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

Προβλήµατα Μεταφορών (Transportation) Προβλήµατα Μεταφορών (Transportation) Προβλήµατα Μεταφορών (Transportation) Μέθοδος Simplex για Προβλήµατα Μεταφοράς Προβλήµατα Εκχώρησης (assignment) Παράδειγµα: Κατανοµή Νερού Η υδατοπροµήθεια µιας περιφέρεια

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

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

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

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

Κεφάλαιο 5ο: Εντολές Επανάληψης

Κεφάλαιο 5ο: Εντολές Επανάληψης Χρήστος Τσαγγάρης ΕΕ ΙΠ Τµήµατος Μαθηµατικών, Πανεπιστηµίου Αιγαίου Κεφάλαιο 5ο: Εντολές Επανάληψης Η διαδικασία της επανάληψης είναι ιδιαίτερη συχνή, αφού πλήθος προβληµάτων µπορούν να επιλυθούν µε κατάλληλες

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

Αλγόριθµοι δροµολόγησης µε µέσα µαζικής µεταφοράς στο µεταφορικό δίκτυο των Αθηνών

Αλγόριθµοι δροµολόγησης µε µέσα µαζικής µεταφοράς στο µεταφορικό δίκτυο των Αθηνών 1 Αλγόριθµοι δροµολόγησης µε µέσα µαζικής µεταφοράς στο µεταφορικό δίκτυο των Αθηνών ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ της Κωτσογιάννη Μαριάννας Περίληψη 1. Αντικείµενο- Σκοπός Αντικείµενο της διπλωµατικής αυτής εργασίας

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

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

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

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