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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ενότητα 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: ένας τρόπος κωδικοποίησης των σχέσεων

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

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

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

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

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

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

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

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

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

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

Μαθησιακές δυσκολίες ΙΙ. Παλαιγεωργίου Γιώργος Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών Τηλεπικοινωνιών και Δικτύων, Πανεπιστήμιο Θεσσαλίας

Μαθησιακές δυσκολίες ΙΙ. Παλαιγεωργίου Γιώργος Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών Τηλεπικοινωνιών και Δικτύων, Πανεπιστήμιο Θεσσαλίας Μαθησιακές δυσκολίες ΙΙ Παλαιγεωργίου Γιώργος Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών Τηλεπικοινωνιών και Δικτύων, Πανεπιστήμιο Θεσσαλίας Μάρτιος 2010 Προηγούμενη διάλεξη Μαθησιακές δυσκολίες Σε όλες

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

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

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

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

Μια Επισκόπηση της Ύλης & Μερικές Οδηγίες

Μια Επισκόπηση της Ύλης & Μερικές Οδηγίες Μια Επισκόπηση της Ύλης & Μερικές Οδηγίες Βαγγέλης ούρος douros@aueb.gr 1 11/6/2012 Αλγόριθμοι, Εαρινό Εξάμηνο 2012, Φροντιστήριο #14 Γενικά Σχόλια (1) 2 Για το τελικό διαγώνισμα θα χρειαστείτε: Φοιτητική

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΩΤΗΣΕΙΣ 1. Τι καλείται ψευδοκώδικας; 2. Τι καλείται λογικό διάγραμμα; 3. Για ποιο λόγο είναι απαραίτητη η τυποποίηση του αλγόριθμου; 4. Ποιες είναι οι βασικές αλγοριθμικές δομές; 5. Να περιγράψετε τις

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

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

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

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

Κεφάλαιο 4 Διανυσματικοί Χώροι

Κεφάλαιο 4 Διανυσματικοί Χώροι Κεφάλαιο Διανυσματικοί Χώροι Διανυσματικοί χώροι - Βασικοί ορισμοί και ιδιότητες Θεωρούμε τρία διαφορετικά σύνολα: Διανυσματικοί Χώροι α) Το σύνολο διανυσμάτων (πινάκων με μία στήλη) με στοιχεία το οποίο

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

Επίπεδα Γραφήματα (planar graphs)

Επίπεδα Γραφήματα (planar graphs) Επίπεδα Γραφήματα (planar graphs) Μπορούν να σχεδιαστούν στο επίπεδο χωρίς να τέμνονται οι ακμές τους 1 2 1 2 3 4 3 4 Άρα αυτό το γράφημα είναι επίπεδο Επίπεδα Γραφήματα (planar graphs) Μπορούν να σχεδιαστούν

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

B Γυμνασίου. Ενότητα 9

B Γυμνασίου. Ενότητα 9 B Γυμνασίου Ενότητα 9 Γραμμικές εξισώσεις με μία μεταβλητή Διερεύνηση (1) Να λύσετε τις πιο κάτω εξισώσεις και ακολούθως να σχολιάσετε το πλήθος των λύσεων που βρήκατε σε καθεμιά. α) ( ) ( ) ( ) Διερεύνηση

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

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

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

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

P. Chretienne, E. Coffman, J. Lenstra, Z. Liu Scheduling Theory and its Applications John Wiley & Sons, New York, (1995)

P. Chretienne, E. Coffman, J. Lenstra, Z. Liu Scheduling Theory and its Applications John Wiley & Sons, New York, (1995) ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΟΥ 8ο Εξάμηνο ΕΡΓΑΣΙΑ P. Chretienne, E. Coffman, J. Lenstra, Z. Liu Scheduling Theory and its Applications John Wiley & Sons, New York, (995) CHAPTER (μέχρι και..) Scheduling with Communication

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

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

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

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

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

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

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

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ

ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΔΙΔΑΚΤΙΚΗ της ΠΛΗΡΟΦΟΡΙΚΗΣ Μ. Γρηγοριάδου Ρ. Γόγουλου Ενότητα: Η Διδασκαλία του Προγραμματισμού Περιεχόμενα Παρουσίασης

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

ιαδίκτυα & Ενδοδίκτυα Η/Υ

ιαδίκτυα & Ενδοδίκτυα Η/Υ ιαδίκτυα & Ενδοδίκτυα Η/Υ ΙΑ ΙΚΤΥΑΚΗ ΛΕΙΤΟΥΡΓΙΑ (Kεφ. 16) ΠΡΩΤΟΚΟΛΛΑ ΡΟΜΟΛΟΓΗΣΗΣ Αυτόνοµα Συστήµατα Πρωτόκολλο Συνοριακών Πυλών OSPF ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΟΛΟΚΛΗΡΩΜΕΝΩΝ ΥΠΗΡΕΣΙΩΝ (ISA) Κίνηση ιαδικτύου Προσέγγιση

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

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

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

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

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

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

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

Δομές Δεδομένων (Data Structures)

Δομές Δεδομένων (Data Structures) Δομές Δεδομένων (Data Structures) Ανάλυση - Απόδοση Αλγορίθμων Έλεγχος Αλγορίθμων. Απόδοση Προγραμμάτων. Χωρική/Χρονική Πολυπλοκότητα. Ασυμπτωτικός Συμβολισμός. Παραδείγματα. Αλγόριθμοι: Βασικές Έννοιες

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

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

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

Φροντιστήρια Επίγνωση Προτεινόμενα Θέματα Πανελλαδικών ΑΕΠΠ 2015

Φροντιστήρια Επίγνωση Προτεινόμενα Θέματα Πανελλαδικών ΑΕΠΠ 2015 Φροντιστήρια Επίγνωση Προτεινόμενα Θέματα Πανελλαδικών ΑΕΠΠ 2015 Βάλβης Δημήτριος Μηχανικός Πληροφορικής ΘΕΜΑ Α Α1. Να γράψετε στο τετράδιό σας τον αριθμό καθεμιάς από τις παρακάτω προτάσεις 1-5 και δίπλα

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

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

3.12 Το Πρόβλημα της Μεταφοράς 312 Το Πρόβλημα της Μεταφοράς Σ αυτή την παράγραφο και στις επόμενες μέχρι το τέλος του κεφαλαίου θα ασχοληθούμε με μερικά σπουδαία είδη προβλημάτων γραμμικού προγραμματισμού Οι ειδικές αυτές περιπτώσεις

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

Το Πρόβλημα της Πινακοθήκης (The Art Gallery Problem)

Το Πρόβλημα της Πινακοθήκης (The Art Gallery Problem) Το Πρόβλημα της Πινακοθήκης (The Art Gallery Problem) Τι είναι το Πρόβλημα της Πινακοθήκης; Σας ανήκει μια πινακοθήκη και επιθυμείτε να τοποθετήσετε κάμερες ασφαλείας έτσι ώστε όλη η γκαλερί να είναι προστατευμένη

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

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

ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΘΕΜΑ 1 (Α) Σημειώστε δίπλα σε κάθε πρόταση «Σ» ή «Λ» εφόσον είναι σωστή ή λανθασμένη αντίστοιχα. 1. Τα συντακτικά λάθη ενός προγράμματος

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

ΤΕΤΥ Εφαρμοσμένα Μαθηματικά 1. Τελεστές και πίνακες. 1. Τελεστές και πίνακες Γενικά. Τι είναι συνάρτηση? Απεικόνιση ενός αριθμού σε έναν άλλο.

ΤΕΤΥ Εφαρμοσμένα Μαθηματικά 1. Τελεστές και πίνακες. 1. Τελεστές και πίνακες Γενικά. Τι είναι συνάρτηση? Απεικόνιση ενός αριθμού σε έναν άλλο. ΤΕΤΥ Εφαρμοσμένα Μαθηματικά 1 Τελεστές και πίνακες 1. Τελεστές και πίνακες Γενικά Τι είναι συνάρτηση? Απεικόνιση ενός αριθμού σε έναν άλλο. Ανάλογα, τελεστής είναι η απεικόνιση ενός διανύσματος σε ένα

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

ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 1.3-1.4: Εισαγωγή Στον Προγραµµατισµό ( ιάλεξη 2) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Περιεχόµενα Εισαγωγικές Έννοιες - Ορισµοί Ο κύκλος ανάπτυξης προγράµµατος Παραδείγµατα Πότε χρησιµοποιούµε υπολογιστή?

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

Θεωρία Γράφων - Εισαγωγή

Θεωρία Γράφων - Εισαγωγή Θεωρία Γράφων - Εισαγωγή Τοπολογιές απειονίσεις Τοπολογία Κλάδος των μαθηματιών που μελετά ανάμεσα σε άλλα τις ιδιότητες εείνες των γεωμετριών σχημάτων οι οποίες παραμένουν αναλλοίωτες ατά τις τοπολογιές

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

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

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Εισαγωγή. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Δομές Δεδομένων Εισαγωγή Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Βιβλιογραφία Robert Sedgewick, Αλγόριθμοι σε C, Μέρη 1-4 (Θεμελιώδεις Έννοιες, Δομές Δεδομένων, Ταξινόμηση,

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

Chapter 7, 8 : Completeness

Chapter 7, 8 : Completeness CSC 314: Switching Theory Chapter 7, 8 : Completeness 19 December 2008 1 1 Αναγωγές Πολυωνυμικού Χρόνου Ορισμός. f: Σ * Σ * ονομάζεται υπολογίσιμη σε πολυνωνυμικό χρόνο αν υπάρχει μια πολυωνυμικά φραγμένη

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

Αλγόριθµοι Brute-Force και Διεξοδική Αναζήτηση

Αλγόριθµοι Brute-Force και Διεξοδική Αναζήτηση Αλγόριθµοι Brute-Force και Διεξοδική Αναζήτηση Περίληψη Αλγόριθµοι τύπου Brute-Force Παραδείγµατα Αναζήτησης Ταξινόµησης Πλησιέστερα σηµεία Convex hull Βελτιστοποίηση Knapsack problem Προβλήµατα Ανάθεσης

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

Κεφάλαιο 5: Στρατηγική χωροταξικής διάταξης

Κεφάλαιο 5: Στρατηγική χωροταξικής διάταξης K.5.1 Γραμμή Παραγωγής Μια γραμμή παραγωγής θεωρείται μια διάταξη με επίκεντρο το προϊόν, όπου μια σειρά από σταθμούς εργασίας μπαίνουν σε σειρά με στόχο ο κάθε ένας από αυτούς να κάνει μια ή περισσότερες

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

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

Θεωρία Υπολογισμού και Πολυπλοκότητα Θεωρία Υπολογισμού και Πολυπλοκότητα Κεφάλαιο 1. Μαθηματικό Υπόβαθρο 23, 26 Ιανουαρίου 2007 Δρ. Παπαδοπούλου Βίκη 1 1.1. Σύνολα Ορισμός : Σύνολο μια συλλογή από αντικείμενα Στοιχεία: Μέλη συνόλου Τα στοιχεία

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

Υπολογιστικές Μέθοδοι στις Κατασκευές

Υπολογιστικές Μέθοδοι στις Κατασκευές Γενικά Για Τη Βελτιστοποίηση Η βελτιστοποίηση µπορεί να χωριστεί σε δύο µεγάλες κατηγορίες: α) την Βελτιστοποίηση Τοπολογίας (Topological Optimization) και β) την Βελτιστοποίηση Σχεδίασης (Design Optimization).

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

Αναδρομικοί Αλγόριθμοι

Αναδρομικοί Αλγόριθμοι Αναδρομικός αλγόριθμος (recursive algorithm) Επιλύει ένα πρόβλημα λύνοντας ένα ή περισσότερα στιγμιότυπα του ίδιου προβλήματος. Αναδρομικός αλγόριθμος (recursive algorithm) Επιλύει ένα πρόβλημα λύνοντας

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

1. Ποια μεγέθη ονομάζονται μονόμετρα και ποια διανυσματικά;

1. Ποια μεγέθη ονομάζονται μονόμετρα και ποια διανυσματικά; ΚΕΦΑΛΑΙΟ 2 ο ΚΙΝΗΣΗ 2.1 Περιγραφή της Κίνησης 1. Ποια μεγέθη ονομάζονται μονόμετρα και ποια διανυσματικά; Μονόμετρα ονομάζονται τα μεγέθη τα οποία, για να τα προσδιορίσουμε πλήρως, αρκεί να γνωρίζουμε

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

Παράδειγμα δικτύου. Ορολογία (1) Ορολογία (2) Ορολογία (3) Δίκτυο με δεδομένα δυναμικότητας ροής στις ακμές

Παράδειγμα δικτύου. Ορολογία (1) Ορολογία (2) Ορολογία (3) Δίκτυο με δεδομένα δυναμικότητας ροής στις ακμές http://users.uom.gr/~acg Στοιχεία από τη Θεωρία Δικτύων Παράδειγμα δικτύου Τα δίκτυα είναι παντού (όπως και η Επιχειρησιακή Έρευνα) Τα δίκτυα είναι παντού (συνέχεια) Ένα δίκτυο είναι μία συλλογή κόμβων

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

Ευφυείς Τεχνολογίες Πράκτορες

Ευφυείς Τεχνολογίες Πράκτορες Ευφυείς Τεχνολογίες Πράκτορες Ενότητα 2: Αναπαράσταση Γνώσης και Επίλυση Προβλημάτων Δημοσθένης Σταμάτης mos@it.tith.gr www.it.tith.gr/~mos Μαθησιακοί Στόχοι της ενότητας 2 Πως ορίζεται ένα πρόβλημα στα

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

ο ρόλος των αλγορίθμων στις υπολογιστικές διαδικασίες Παύλος Εφραιμίδης Δομές Δεδομένων και Αλγόριθμοι

ο ρόλος των αλγορίθμων στις υπολογιστικές διαδικασίες Παύλος Εφραιμίδης Δομές Δεδομένων και Αλγόριθμοι Παύλος Εφραιμίδης 1 περιεχόμενα αλγόριθμοι τεχνολογία αλγορίθμων 2 αλγόριθμοι αλγόριθμος: οποιαδήποτε καλά ορισμένη υπολογιστική διαδικασία που δέχεται κάποια τιμή ή κάποιο σύνολο τιμών, και δίνεικάποιατιμήήκάποιοσύνολοτιμώνως

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

Αλγόριθμοι Αναζήτησης σε Παίγνια Δύο Αντιπάλων

Αλγόριθμοι Αναζήτησης σε Παίγνια Δύο Αντιπάλων Τεχνητή Νοημοσύνη 06 Αλγόριθμοι Αναζήτησης σε Παίγνια Δύο Αντιπάλων Εισαγωγικά (1/3) Τα προβλήματα όπου η εξέλιξη των καταστάσεων εξαρτάται από δύο διαφορετικά σύνολα τελεστών μετάβασης που εφαρμόζονται

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

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -

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

Δυαδικό Σύστημα Αρίθμησης

Δυαδικό Σύστημα Αρίθμησης Δυαδικό Σύστημα Αρίθμησης Το δυαδικό σύστημα αρίθμησης χρησιμοποιεί δύο ψηφία. Το 0 και το 1. Τα ψηφία ενός αριθμού στο δυαδικό σύστημα αρίθμησης αντιστοιχίζονται σε δυνάμεις του 2. Μονάδες, δυάδες, τετράδες,

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

Διαχείριση Εφοδιαστικής Αλυσίδας

Διαχείριση Εφοδιαστικής Αλυσίδας Διαχείριση Εφοδιαστικής Αλυσίδας 7 η Διάλεξη: Δρομολόγηση & Προγραμματισμός (Routing & Scheduling) 015 Εργαστήριο Συστημάτων Σχεδιασμού, Παραγωγής και Λειτουργιών Ατζέντα Εισαγωγή στις έννοιες Βασικές

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

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης ΚΕΦΑΛΑΙΟ 1ο 3ο 1. Συμπληρώστε τα κενά με τη λέξη που λείπει. α. Ένα πρόβλημα το χωρίζουμε σε άλλα απλούστερα, όταν είναι ή όταν έχει τρόπο επίλυσης. β. Η επίλυση ενός προβλήματος προϋποθέτει την του. γ.

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

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

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

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

Εγγυημένη ποιότητα υπηρεσίας

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

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

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει;

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει; ΜΑΘΗΜΑ 7 Κλήση αλγορίθμου από αλγόριθμο Αναδρομή Σ χ ο λ ι κ ο Β ι β λ ι ο ΥΠΟΚΕΦΑΛΑΙΟ 2.2.7: ΕΝΤΟΛΕΣ ΚΑΙ ΔΟΜΕΣ ΑΛΓΟΡΙΘΜΟΥ ΠΑΡΑΓΡΑΦΟI 2.2.7.5: Κλήση αλγορίθμου από αλγόριθμο 2.2.7.6: Αναδρομή εισαγωγη

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

Περιληπτικά, τα βήματα που ακολουθούμε γενικά είναι τα εξής:

Περιληπτικά, τα βήματα που ακολουθούμε γενικά είναι τα εξής: Αυτό που πρέπει να θυμόμαστε, για να μη στεναχωριόμαστε, είναι πως τόσο στις εξισώσεις, όσο και στις ανισώσεις 1ου βαθμού, που θέλουμε να λύσουμε, ακολουθούμε ακριβώς τα ίδια βήματα! Εκεί που πρεπει να

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

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

ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΕΙΣΑΓΩΓΗ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ. ΤΙ ΕΙΝΑΙ ΤΑ ΜΑΘΗΜΑΤΙΚΑ; Η επιστήμη των αριθμών Βασανιστήριο για τους μαθητές και φοιτητές Τέχνη για τους μαθηματικούς ΜΑΘΗΜΑΤΙΚΑ Α Εξάμηνο ΙΩΑΝΝΗΣ

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

Συναρτήσεις Όρια Συνέχεια

Συναρτήσεις Όρια Συνέχεια Κωνσταντίνος Παπασταματίου Μαθηματικά Γ Λυκείου Κατεύθυνσης Συναρτήσεις Όρια Συνέχεια Συνοπτική Θεωρία Μεθοδολογίες Λυμένα Παραδείγματα Επιμέλεια: Μαθηματικός Φροντιστήριο Μ.Ε. «ΑΙΧΜΗ» Κ. Καρτάλη 8 (με

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

Μιγαδική ανάλυση Μέρος Α Πρόχειρες σημειώσεις 1. Μιγαδικοί αριθμοί. ΤΕΤΥ Εφαρμοσμένα Μαθηματικά Μιγαδική Ανάλυση Α 1

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

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

Διάλεξη 18: Πρόβλημα Βυζαντινών Στρατηγών. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

Διάλεξη 18: Πρόβλημα Βυζαντινών Στρατηγών. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι Διάλεξη 8: Πρόβλημα Βυζαντινών Στρατηγών ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι Ορισμός Προβλήματος Τι θα δούμε σήμερα Συνθήκες Συμφωνίας κάτω από Βυζαντινό Στρατηγό Πιθανοτικοί αλγόριθμοι επίλυσης Βυζαντινής

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

Πεπερασμένες Διαφορές.

Πεπερασμένες Διαφορές. Κεφάλαιο 1 Πεπερασμένες Διαφορές. 1.1 Προσέγγιση παραγώγων. 1.1.1 Πρώτη παράγωγος. Από τον ορισμό της παραγώγου για συναρτήσεις μιας μεταβλητής γνωρίζουμε ότι η παράγωγος μιας συνάρτησης f στο σημείο x

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

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

ΑΛΓΟΡΙΘΜΟΙ & ΣΤΟΙΧΕΙΑ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ ΑΛΓΟΡΙΘΜΟΙ & ΣΤΟΙΧΕΙΑ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ Περίγραµµα Εισαγωγή Στοιχεία Πολυπλοκότητας Ηλίας Κ. Σάββας Επίκουρος Καθηγητής Τμήμα: Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών Email: savvas@teilar teilar.gr Αλγόριθµοι

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

4.6 Critical Path Analysis (Μέθοδος του κρίσιμου μονοπατιού)

4.6 Critical Path Analysis (Μέθοδος του κρίσιμου μονοπατιού) . Critical Path Analysis (Μέθοδος του κρίσιμου μονοπατιού) Η πετυχημένη διοίκηση των μεγάλων έργων χρειάζεται προσεχτικό προγραμματισμό, σχεδιασμό και συντονισμό αλληλοσυνδεόμενων δραστηριοτήτων (εργσιών).

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

PROJECT ΣΤΟ ΜΑΘΗΜΑ "ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΕΥΡΕΤΙΚΕΣ ΜΕΘΟΔΟΥΣ"

PROJECT ΣΤΟ ΜΑΘΗΜΑ ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΕΥΡΕΤΙΚΕΣ ΜΕΘΟΔΟΥΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ PROJECT ΣΤΟ ΜΑΘΗΜΑ "ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΕΥΡΕΤΙΚΕΣ ΜΕΘΟΔΟΥΣ" ΜΕΡΟΣ ΔΕΥΤΕΡΟ Υπεύθυνος Καθηγητής Λυκοθανάσης Σπυρίδων Ακαδημαικό Έτος:

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

Εξεταστέα Ύλη (Syllabus) Έκδοση 5.0

Εξεταστέα Ύλη (Syllabus) Έκδοση 5.0 Εξεταστέα Ύλη (Syllabus) Έκδοση 5.0 Πνευματικά Δικαιώματα 2007 Ίδρυμα ECDL (ECDL Foundation www.ecdl.org) Όλα τα δικαιώματα είναι κατοχυρωμένα. Κανένα μέρος αυτού του εγγράφου δεν μπορεί να αναπαραχθεί

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

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

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

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

ΘΕΩΡΙΑ Α ΓΥΜΝΑΣΙΟΥ. Η διαίρεση καλείται Ευκλείδεια και είναι τέλεια όταν το υπόλοιπο είναι μηδέν.

ΘΕΩΡΙΑ Α ΓΥΜΝΑΣΙΟΥ. Η διαίρεση καλείται Ευκλείδεια και είναι τέλεια όταν το υπόλοιπο είναι μηδέν. ΑΛΓΕΒΡΑ 1 ο ΚΕΦΑΛΑΙΟ ΘΕΩΡΙΑ Α ΓΥΜΝΑΣΙΟΥ 1. Τι είναι αριθμητική παράσταση; Με ποια σειρά εκτελούμε τις πράξεις σε μια αριθμητική παράσταση ώστε να βρούμε την τιμή της; Αριθμητική παράσταση λέγεται κάθε

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

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ 1 ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΛΓΟΡΙΘΜΩΝ ΒΟΗΘΟΣ: ΒΑΓΓΕΛΗΣ ΔΟΥΡΟΣ Φροντιστήριο #10: Αλγόριθμοι Διαίρει & Βασίλευε: Master Theorem, Αλγόριθμοι Ταξινόμησης, Πιθανοτικός

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

Υπερπροσαρμογή (Overfitting) (1)

Υπερπροσαρμογή (Overfitting) (1) Αλγόριθμος C4.5 Αποφυγή υπερπροσαρμογής (overfitting) Reduced error pruning Rule post-pruning Χειρισμός χαρακτηριστικών συνεχών τιμών Επιλογή κατάλληλης μετρικής για την επιλογή των χαρακτηριστικών διάσπασης

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

Κεφάλαιο 7. Τρισδιάστατα Μοντέλα

Κεφάλαιο 7. Τρισδιάστατα Μοντέλα Κεφάλαιο 7. 7.1 ομές εδομένων για Γραφικά Υπολογιστών. Οι δομές δεδομένων αποτελούν αντικείμενο της επιστήμης υπολογιστών. Κατά συνέπεια πρέπει να γνωρίζουμε πώς οργανώνονται τα γεωμετρικά δεδομένα, προκειμένου

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

8. Σύνθεση και ανάλυση δυνάμεων

8. Σύνθεση και ανάλυση δυνάμεων 8. Σύνθεση και ανάλυση δυνάμεων Βασική θεωρία Σύνθεση δυνάμεων Συνισταμένη Σύνθεση δυνάμεων είναι η διαδικασία με την οποία προσπαθούμε να προσδιορίσουμε τη δύναμη εκείνη που προκαλεί τα ίδια αποτελέσματα

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

1.3 ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ ΑΡΙΘΜΟΥ ΜΕ ΔΙΑΝΥΣΜΑ

1.3 ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ ΑΡΙΘΜΟΥ ΜΕ ΔΙΑΝΥΣΜΑ ΚΕΦΑΛΑΙΟ Ο : ΔΙΑΝΥΣΜΑΤΑ - ΕΝΟΤΗΤΑ ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ ΑΡΙΘΜΟΥ ΜΕ ΔΙΑΝΥΣΜΑ ΣΤΟΙΧΕΙΑ ΘΕΩΡΙΑΣ Ορισμός : αν λ πραγματικός αριθμός με 0 και μη μηδενικό διάνυσμα τότε σαν γινόμενο του λ με το ορίζουμε ένα διάνυσμα

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

Σενάριο 17: Παιχνίδι μνήμης με εικόνες

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

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

Γενικά Μαθηματικά (Φυλλάδιο 1 ο )

Γενικά Μαθηματικά (Φυλλάδιο 1 ο ) ΠΑΝΕΠΙΣΤΗΜΙΑΚΑ ΦΡΟΝΤΙΣΤΗΡΙΑ Γενικά Μαθηματικά (Φυλλάδιο 1 ο ) Επιμέλεια Φυλλαδίου : Δρ. Σ. Σκλάβος Περιλαμβάνει: ΚΕΦΑΛΑΙΟ 1: ΣΥΝΑΡΤΗΣΕΙΣ ΜΙΑΣ ΜΕΤΑΒΛΗΤΗΣ ΚΕΦΑΛΑΙΟ : ΠΑΡΑΓΩΓΙΣΗ ΣΥΝΑΡΤΗΣΕΩΝ ΜΙΑΣ ΜΕΤΑΒΛΗΤΗΣ

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

ΗΥ335 - Δίκτυα Υπολογιστών Χειμερινό εξάμηνο 2010-2011 Φροντιστήριο Ασκήσεις στο TCP

ΗΥ335 - Δίκτυα Υπολογιστών Χειμερινό εξάμηνο 2010-2011 Φροντιστήριο Ασκήσεις στο TCP ΗΥ335 - Δίκτυα Υπολογιστών Χειμερινό εξάμηνο 2010-2011 Φροντιστήριο Ασκήσεις στο TCP Άσκηση 1 η : Καθυστερήσεις Θεωρείστε μία σύνδεση μεταξύ δύο κόμβων Χ και Υ. Το εύρος ζώνης του συνδέσμου είναι 10Gbits/sec

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

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βήματα προς τη δημιουργία εκτελέσιμου κώδικα

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βήματα προς τη δημιουργία εκτελέσιμου κώδικα Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Βήματα προς τη δημιουργία εκτελέσιμου κώδικα Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD Βήματα προς τη δημιουργία εκτελέσιμου κώδικα

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

Κεφάλαιο 4: Διαφορικός Λογισμός

Κεφάλαιο 4: Διαφορικός Λογισμός ΣΥΓΧΡΟΝΗ ΠΑΙΔΕΙΑ ΦΡΟΝΤΙΣΤΗΡΙΟ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Κεφάλαιο 4: Διαφορικός Λογισμός Μονοτονία Συνάρτησης Tζουβάλης Αθανάσιος Κεφάλαιο 4: Διαφορικός Λογισμός Περιεχόμενα Μονοτονία συνάρτησης... Λυμένα παραδείγματα...

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

O n+2 = O n+1 + N n+1 = α n+1 N n+2 = O n+1. α n+2 = O n+2 + N n+2 = (O n+1 + N n+1 ) + (O n + N n ) = α n+1 + α n

O n+2 = O n+1 + N n+1 = α n+1 N n+2 = O n+1. α n+2 = O n+2 + N n+2 = (O n+1 + N n+1 ) + (O n + N n ) = α n+1 + α n Η ύλη συνοπτικά... Στοιχειώδης συνδυαστική Γεννήτριες συναρτήσεις Σχέσεις αναδρομής Θεωρία Μέτρησης Polyá Αρχή Εγκλεισμού - Αποκλεισμού Σχέσεις Αναδρομής Γραμμικές Σχέσεις Αναδρομής με σταθερούς συντελεστές

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Βασικές αλγοριθμικές δομές

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Βασικές αλγοριθμικές δομές Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Βασικές αλγοριθμικές δομές Βασικές Αλγοριθμικές Δομές 2 Εισαγωγή Οι αλγοριθμικές δομές εκφράζουν διαφορετικούς τρόπους γραφής ενός αλγορίθμου.

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

Γραφικά Υπολογιστών: Σχεδίαση γραμμών (Bresenham), Σχεδίασης Κύκλων, Γέμισμα Πολυγώνων

Γραφικά Υπολογιστών: Σχεδίαση γραμμών (Bresenham), Σχεδίασης Κύκλων, Γέμισμα Πολυγώνων 1 ΤΕΙ Θεσσαλονίκης Τμήμα Πληροφορικής Γραφικά Υπολογιστών: Σχεδίαση γραμμών (Bresenham), Σχεδίασης Κύκλων, Γέμισμα Πολυγώνων Πασχάλης Ράπτης http://aetos.it.teithe.gr/~praptis praptis@it.teithe.gr 2 Περιγραφή

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

Κατασκευάστε ένα απλό antenna tuner (Μέρος Α )

Κατασκευάστε ένα απλό antenna tuner (Μέρος Α ) Κατασκευάστε ένα απλό antenna tuner (Μέρος Α ) Του Νίκου Παναγιωτίδη (SV6 DBK) φυσικού και ραδιοερασιτέχνη. Ο σκοπός του άρθρου αυτού είναι να κατευθύνει τον αναγνώστη ραδιοερασιτέχνη να κατασκευάσει το

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ 1 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 1 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ 1.1 Να δοθεί ο ορισμός του προβλήματος καθώς και τρία παραδείγματα

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

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εισαγωγή, εύρεση, διαγραφή) Ευθύγραμμες Διπλά Συνδεδεμένες Λίστες

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

Δυναμικά Πολυεπίπεδα Ευρετήρια (Β-δένδρα) Μ.Χατζόπουλος 1

Δυναμικά Πολυεπίπεδα Ευρετήρια (Β-δένδρα) Μ.Χατζόπουλος 1 Δυναμικά Πολυεπίπεδα Ευρετήρια (Β-δένδρα) Μ.Χατζόπουλος 1 Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ.Χατζόπουλος 2 Δένδρο αναζήτησης είναι ένας ειδικός τύπος δένδρου που χρησιμοποιείται για να καθοδηγήσει την αναζήτηση μιας

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

Κωδικοποίηση Πηγής. Δρ. Α. Πολίτης

Κωδικοποίηση Πηγής. Δρ. Α. Πολίτης Κωδικοποίηση Πηγής Coder Decoder Μεταξύ πομπού και καναλιού παρεμβάλλεται ο κωδικοποιητής (coder). Έργο του: η αντικατάσταση των συμβόλων πληροφορίας της πηγής με εναλλακτικά σύμβολα ή λέξεις. Κωδικοποίηση

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

ΜΑΘΗΜΑΤΙΚΑ Γ Γυμνασίου

ΜΑΘΗΜΑΤΙΚΑ Γ Γυμνασίου ΜΑΘΗΜΑΤΙΚΑ Γ Γυμνασίου Κεφάλαιο ο Αλγεβρικές Παραστάσεις ΛΕΜΟΝΙΑ ΜΠΟΥΤΣΚΟΥ Γυμνάσιο Αμυνταίου ΜΑΘΗΜΑ Α. Πράξεις με πραγματικούς αριθμούς ΑΣΚΗΣΕΙΣ ) ) Να συμπληρώσετε τα κενά ώστε στην κατακόρυφη στήλη

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