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

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

Download "Ευχαριστίες Ευχαριστώ θερμά τον επιβλέποντα καθηγήτη κ.χρήστο Ζαρολιάγκη που μου εμπιστεύτηκε την εκπόνηση της συγκεκριμένης διπλωματικής εργασίας καθ"

Transcript

1 ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ Π.Μ.Σ ΕΠΙΣΤΗΜΗ & ΤΕΧΝΟΛΟΓΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Παράλληλοι Αλγόριθμοι Εύρεσης Βέλτιστων Διαδρομών σε χρονο-εξαρτώμενα Δίκτυα ΓΙΩΡΓΟΣ ΜΙΧΑΛΟΠΟΥΛΟΣ Α.Μ 1055 ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ ΧΡΗΣΤΟΣ ΖΑΡΟΛΙΑΓΚΗΣ ΠΑΤΡΑ 2016

2 Ευχαριστίες Ευχαριστώ θερμά τον επιβλέποντα καθηγήτη κ.χρήστο Ζαρολιάγκη που μου εμπιστεύτηκε την εκπόνηση της συγκεκριμένης διπλωματικής εργασίας καθώς και για την υποστήριξη και την καθοδήγηση που μου παρείχε. Επίσης θα ήθελα να ευχαριστήσω την οικογένεια μου που με στήριξε σε όλη αυτή την προσπάθεια. 1

3

4 Περίληψη Η παρούσα διπλωματική εργασία αφορά την υλοποίηση και την πειραματική αξιολόγηση παράλληλων αλγορίθμων για τον υπολογισμό βέλτιστων διαδρομών σε δυναμικά δίκτυα δηλαδή σε δίκτυα που έχουν χρονικά μεταβαλλόμενα χαρακτηριστικά, όπως ο χρόνος διέλευσης ακμής και το κόστος, των οποίων οι τιμές είναι γνωστές για κάθε χρονική στιγμή. Πολλά είδη δικτύων, όπως τα οδικά δίκτυα, επιδεικνύουν τέτοια δυναμική συμπεριφορά με την πάροδο του χρόνου και για το λόγο αυτό ο γρήγορος και ακριβής υπολογισμό της συντομότερης διαδρομής σε χρονο-εξαρτώμενα δίκτυα έχει πολλές πρακτικές εφαρμογές. Σε πρώτο στάδιο μελετήθηκαν διάφοροι αλγόριθμοι εύρεσης βέλτιστων διαδρομών. Ω- στόσο, η εφαρμογή αυτών των αλγορίθμων όπως του αλγόριθμου του Dijksta σε ένα γράφημα που ο αριθμός των κόμβων και των ακμών μπορεί να φτάνει μερικές εκατοντάδες χιλιάδες ή και εκατομμύρια (όπως γίνεται σε γραφήματα που αναπαριστούν ένα οδικό δίκτυο) μπορεί να απαιτήσει χρόνο ο οποίος να μην είναι αποδεχτός για εφαρμογές πραγματικού χρόνου. Ως εκ τούτου προτείναμε αρχικά ένα σειριακό αλγόριθμο που βασίζεται στο - stepping αλγόριθμο και ο οποίος μπορεί να βρίσκει βέλτιστες διαδρομές σε μικρότερο χρόνο από τον αντίστοιχο χρόνο που χρειάζεται ο χρονο-εξαρτώμενος αλγόριθμος του Dijksta. Στην συνέχεια χρησιμοποιώντας διάφορες τεχνικές έγινε η παραλλοποίηση του παραπάνω αλγορίθμου πετυχαίνοντας ακόμα καλύτερους χρόνους. Τέλος η εργασία αυτή περιλαμβάνει μια λεπτομερή πειραματική μελέτη πάνω σε οδικά δίκτυα που περιλαμβάνουν μερικές εκατοντάδες χιλιάδες ακμές και κόμβους όπως τα οδικά δίκτυα της Γερμανίας και της Φλόριντας. Στην συγκεκριμένη υλοποίηση οι παραπάνω αλγόριθμοι επιτυγχάνουν σημαντική βελτίωση όσον αφορά το χρόνο που χρειάζονται για τον υπολογισμό συντομότερων διαδρομών.. 2

5

6 ΠΕΡΙΕΧΟΜΕΝΑ 1 Εισαγωγή Σχετικές εργασίες Στόχοι Διπλωματικής Εργασίας Συνεισφορά Διπλωματικής Εργασίας Δομή Βασικές Εννοιες Θεωρία Γραφημάτων Αναπαράσταση γραφήματος Αναπαράσταση λίστας γειτνίασης Γράφημα Πακεταρισμένης-μνήμης Ιδιότητες χρονο-εξαρτώμενων γραφημάτων FIFO Το πρόβλημα Εύρεσης Συντομότερων Διαδρομών Ιδιότητες συντομότερων διαδρομών Label-setting Αλγόριθμοι Ο Αλγόριθμος του Dijkstra Παράλληλος Αλγόριθμος του Dijkstra ο Αλγόριθμος του Dial Label-correcting Αλγόριθμοι: το παράδειγμα του αλγορίθμου των Bellman Ford Αλγόρθμος των Bellman Ford Ο Αλγόριθμος -stepping Παράλληλος αλγόρθμος -stepping Αλγόριθμοι σε χρονο-εξαρτώμενα γραφήματα Υπολογισμός συναρτήσεων άφιξης για δεδομένο χρόνο αναχώρησης Ο αλγόριθμος του Dijkstra για χρονο-εξαρτώμενα δίκτυα Ο αλγόριθμος του -stepping για χρονο-εξαρτώμενα δίκτυα Ενας Νέος Παράλληλος Αλγόριθμος Εύρεσης Βέλτιστων Διαδρομών σε χρονο-εξαρτώμενα Δίκτυα Λεπτομέρειες της θεωρητικής περιγραφής Παραλληλοποίηση μέσω χρήσης κατωφλίου Βελτιωμένος αλγόριθμος - stepping Λεπτομέρειες της υλοποίησης

7 5 Πειραματική αξιολόγηση Περιβάλλον υλοποίησης Δεδομένα Δοκιμής Πειραματικά αποτελέσματα Χρονο-ανεξάρτητα δίκτυα Χρονο-εξάρτώμενα δίκτυα Συμπεράσματα-Προοπτικές 67 7 Βιβλιογραφία 68 4

8 1 Εισαγωγή Το πεδίο έρευνας και μελέτης της συγκεκριμένης διπλωματικής εργασίας είναι ο αποδοτικός τρόπος υπολογισμού των συντομότερων διαδρομών σε χρονο-εξαρτώμενα δίκτυα μεταφοράς ευρείας κλίμακας. Σε επίπεδο μοντελοποίησης για ένα σταθερό κριτήριο κόστους (όπως: η απόσταση,ο χρόνος ταξιδιού) μια συντομότερη διαδρομή από μία αφετηρία s προς ένα προορισμό t υπολογίζεται ως μια διατεταγμένη ακολουθία σημείων-κόμβων έτσι ώστε μέσω αυτής, το κόστος μετάβασης από το s στο t να είναι το ελάχιστο δυνατό. Το Πρόβλημα Εύρεσης Συντομότερων Διαδρομών συναντάται σε διάφορες παραλλαγές. Συγκεκριμένα, μπορεί να ορίζονται ταυτόχρονα περισσότερες απο μία αφετηρίες ή προορισμοί, καθώς και να υπάρχουν σταθερά και χρονο-εξαρτώμενα κόστη ακμών. Στο πλαίσο της διπλωματικής εργασίας, μελετάται ειδικά το πρόβλημα εύρεσης μιας συντομότερης διαδρομής για ζεύγη κόμβων αφετηρίας-προορισμού για δίκτυα όπου τα κόστη των ακμών αλλάζουν ανά τακτά χρονικά διαστήματα. Μια από τις πιο δημοφιλείς και εμπορικά επιτυχείς εφαρμογές του προβλήματος εύρεσης μιας το πολύ συντομότερης διαδρομής για ζεύγη κόμβων αφετηρίας-προορισμού (ΕΣΔΑΠ για συντομία) είναι τα συστήματα πλοήγησης και καθοδήγησης. Μερικά παραδείγματα αποτελούν οι web υπηρεσίες Google Maps, TomTom, Mapquest, Bing Maps, MapPoint, και οι διάφορες εμπορικές φορητές συσκευές GPS, που πλέον εγκαθίστανται ως βασικός εξοπλισμός στα σύγχρονα οχήματα. Άλλα επίσης σημαντικά παραδείγματα των εφαρμογών του προβλήματος ΕΣΔΑΠ εντοπίζονται στους δρομολογητές (routers) για τη μεταγωγή των πακέτων δεδομένων στα δίκτυα υπολογιστών, στον προγραμματισμό της βιομηχανικής παραγωγής και στη διανομή προϊόντων, σε ηλεκτρονικά παιχνίδια, σε προγράμματα σχεδίασης γραφικών, και ψηφιακών κυκλωμάτων σε ηλεκτρονικές πλακέτες, κ. ά. Η βασική δυσκολία, ανεξάρτητα από την υλοποίηση, εντοπίζεται στο γεγονός ότι το πεδίο εφαρμογής αφορά δίκτυα μεγάλης κλίμακας, όπως τα συγκοινωνιακά δίκτυα μιας χώρας που περιέχουν δεκάδες εκατομμύρια κόμβους και ακμές. Αυτό έχει σημαντική επίδραση στο χρόνο υπολογισμού εφόσον για να βρεθεί μια συντομότερη διαδρομή, χρειάζεται απαραίτητα μια διαδικασία εξερεύνησης και επεξεργασίας του δικτύου. Βέβαια στην γενική περίπτωση μια συνήθης συντομότερη διαδρομή αποτελεί ένα μικρό τμήμα του δικτύου. Δεδομένου αυτού, ένας ευφυής αλγόριθμος θα ήταν δυνατό να οριοθετήσει αυτό το τμήμα του δικτύου και να εστιάσει την επεξεργασία μόνο μέσα σε αυτό και έτσι να επιτευχθεί μια σημαντική ελάττωση στην χρονική πολυπλοκότητα. Εκτός όμως από το χρόνο εκτέλεσης πρέπει να ληφθεί υπόψιν και η ακρίβεια της αναζήτησης του αλγορίθμου. Η ακρίβεια ή ισοδύναμα η απόδοση καθορίζει το αριθμό των κόμβων που ο αλγόριθμος χρειάζεται να επισκεφθεί και να επεξεργαστεί μέχρις ότου υπολογίσει τη συντομότερη διαδρομή. 5

9 1.1 Σχετικές εργασίες Ο υπολογισμός της συντομότερης διαδρομής για χρονο-εξαρτώμενα δίκτυα για μία συγκεκριμένη τριπλέτα (o, d, t 0 ) όπου o ο κόμβος αναχώρησης, d ο προορισμός, t 0 ο χρόνος αναχώρησης έχει μελετηθεί εκτενώς και μέσω της έρευνας έχει αποδειχτεί ότι η μορφή των συναρτήσεων χρόνου ταξιδιού των ακμών και η πολιτική αναμονής των κόμβων επηρεάζουν σε σημαντικό βαθμό την πολυπλοκότητα της λύσης του προβλήματος. Για το λόγο αυτό έχουν δημιουργηθεί διαφορετικοί αλγόριθμοι για να καλύψουν όλες τις δυνατές περιπτώσεις. Επεκτείνοντας το κλασσικό αλγόριθμο του Bellman-Ford δημιουργήθηκαν αλγόριθμοι [18] που μπορούν να δουλέψουν σε γραφήματα που το κόστος των ακμών είναι γραμμικές συναρτήσεις, ενώ αντίστοιχα διαφορετικοί αλγοριθμοι [6] επικεντρώνονται κυρίως σε FIFO δίκτυα με τμηματικά γραμμικές συναρτήσεις χρόνου. Η FIFO ιδιότητα είναι μία από τις σημαντικές ιδιότητες στο πρόβλημα της εύρεσης της συντομότερης διαδρομής, καθώς καθορίζει αν κάθε ακμή του δικτύου θα συμπεριφέρεται σαν FIFO ουρά με την έννοια ότι ο χρόνος άφιξης στον προορισμό ειναι αύξουσα συνάρτηση του χρόνου αναχώρησης. Αυτό το στοιχείο του δικτύου είναι κομβικής σημασίας καθώς έχει αποδειχτεί ότι αν έχει καθιερωθεί μια πολιτική μη-αναμονής στους κόμβους και οι συναναρτήσεις των ακμών δεν έχουν την FIFO ιδιότητα τότε το πρόβλημα γίνεται NP-hard. Η δημιουργία παράλληλων εκδοχών [5] κλασσικών αλγορίθμων εύρεσης συντομότερων διαδρομών όπως του Dijksta, είχε ως αποτέλεσμα την μείωση του χρόνου της εύρεσης συντόμοτερων διαδρομών. Προσπαθώντας να πετύχουν όσο το δυνατόν καλύτερο βαθμό παραλληλοποίησης δημιουργήθηκαν καινούριοι αλγόριθμοι όπως ο -stepping [15] όπου το κύριο πλεονέκτημα του συγκεκριμένου αλγορίθμου είναι η ικανότητα του να παραλληλοποιηθεί, μια ιδιότητα η οποία έχει μελετηθεί και θεωρητικά [16] αλλά και έχει φανεί στις διάφορες προσπάθειες υλοποίησης του [13]. 1.2 Στόχοι Διπλωματικής Εργασίας Στόχος της διπλωματικής εργασίας ήταν η ανάλυση,μοντελοποίηση και υλοποίηση μιας σειράς παράλληλων αλγορίθμων υπολογισμού των συντομότερων διαδρομών για χρονοεξαρτώμενα δίκτυα. Πιο συγκεκριμένα τα ζητούμενα ήταν: Η κριτική επισκόπηση και παρουσίαση των υπαρχόντων αλγορίθμων εύρεσης συντομότερων διαδρομών σε χρονο-εξαρτώμενα δίκτυα Υλοποίηση των αλγορίθμων εύρεσης ερωτημάτων για παράλληλους αλγορίθμους με στόχο την μετέπειτα πειραματική αξιολόγηση τους Η εκτενής πειραματική αξιολόγηση του νέου παράλληλου αλγορίθμου έναντι των κλασσικών αλγορίθμων εύρεσης συντομότερων διαδροών 1.3 Συνεισφορά Διπλωματικής Εργασίας Στην παρούσα διπλωματική εργασία έγινε μία λεπτομερής θεωρητική μελέτη των σημαντικότερων αλγορίθμων εύρεσης συντομότερων διαδρομών, όπως έχουν διαμορφωθεί στην 6

10 βιβλιογραφία εως σημέρα. Η παραπάνω θεωρητική μελέτη γίνεται ενδελεχώς και πολυπλεύρως εξετάζοντας πληθώρα περιπτώσεων. Οι κύριοι αλγόριθμοι που αναλύθηκαν είναι: ο αλγόριθμος του Dijksta [8], Dial [7], Bellman-Ford [2] και -stepping [16]. Πιο συγκεκριμένα, πραγματοποιείται μία σε βάθος ανάλυση τόσο του τρόπου λειτουργίας του εκάστοτε αλγοριθμου, όσο και πλήρης περιγραφή των δυνατών αλλά και των αδύναμων σημείων τους. Ακόμα, εξέχουσας σημασίας συνεισφορά της διπλωματικής αυτής εργασίας είναι η εισαγωγή και η θεωρητική ανάλυση ενός καινούριου παραλληλου βελτιωμένου αλγορίθμου -stepping για την εύρεση συντομότερων διαδρομών σε χρονο-εξαρτώμενα δίκτυα, καθώς και η υλοποίηση του συγκεκριμένου αλγορίθμου. Ο πηγαίος κώδικας για τις υλοποιήσεις α- ναπτύχθηκε σε γλώσσα προγραμματισμου C++ με χρήση σύγχρονων τεχνικών ανάπτυξης λογισμικού. Η χρονική απόδοση του νέου αυτού αλγορίθμου εξετάστηκε πειραματικά δίνοντας εθαρρυντικά αποτελέσματα. Εγινε μια ενδελεχή πειραματική αξιολόγηση του παραπάνω αλγοριθμου με προηγούμενες χρονικά υλοποιήσεις [13], όπου μας επέτρεψε να περιγράψουμε και να αναδείξουμε με ακρίβεια τα σημαντικότερα πλεονεκτήματα της εκάστοτε περίπτωσης, αλλά και τυχόν μειονεκτήματα. Συμπερασματικά, μέσα από την παρούσα μελέτη αποδεικνύεται ότι ο νέος βελτιωμένος παράλληλος αλγόριθμος είναι πολλά υποσχόμενος για την δρομολόγηση δικτύων που εξαρτώνται απο τον χρόνο. Επιτρέπει την γρήγορη εκτέλεση ερωτημάτων, γεγονός που τον καθιστά ιδανικό για τους servers μεγάλων εταιριών συστημάτων πλοήγησης, όπου καθημερινά δέχονται ένα μεγάλο αριθμό ερωτημάτων που πρέπει να απαντήσουν γρήγορα και με ακρίβεια. Μέσω του νέου αυτού αλγορίθμου η αποδοτικότητα και η ταχύτητα αυξάνονται καθιστώντας τον ένα πολύτιμο εργαλείο στα χέρια όσων εργάζονται με δίκτυα αντίστοιχης δυναμικής. 1.4 Δομή Η διάρθρωση της διπλωματικής εργασίας είναι η εξής: Στο κεφάλαιο 2, γίνεται μια σύντομη εισαγωγή στους όρους που θα χρησιμοποιηθούν στην συνέχεια. Παρατίθενται οι θεωρητικές έννοιες που αφορούν τα γραφήματα και δίνονται οι ορισμοί για τις ιδιότητες των δομών που θα χρησιμοποιηθούν. Επίσης περιγράφονται κάποιοι κλασσικοί αλγόριθμοι εύρεσης συντομότερων διαδρομών που θα φανούν χρήσιμοι στην συνέχεια της παρούσας εργασίας Στο κεφάλαιο 3, περιγράφεται το βασικό υπολογιστικό μοντέλο για την εύρεση μιας συντομότερης διαδρομής σε γραφήματα. Αρχικά παρουσιάζονται αλγόριθμοι εύρεσης συντομότερων διαδρομών σε χρονο-εξαρτώμενα δίκτυα και στην συνέχεια γίνεται αναφορά σε μία παραλλαγή του -steppping αλγορίθμου καθώς και στις συνθήκες που πρέπει να ισχύουν ώστε η συγκεκριμένη παραλλαγή να έχει την δυνατότητα να βρίσκει ορθά συντομότερες διαδρομές σε χρονο-εξαρτώμενα δίκτυα. Στο κεφάλαιο 4 παρουσιάζεται ο νέος πάραλληλος αλγόριθμος εύρεσης βέλτιστων διαδρομών σε χρονο-εξαρτώμενα δίκτυα. Περιγράφονται οι λεπτομέρειες της θεωρητικής περιγραφής του αλγόριθμου, και γίνεται εκτενής περιγραφή των παράλληλων αλγορίθμων που χρησιμοποιούν την παράμετρο κατώφλι (threshold). Στην συνέχεια περιγράφεται ο νέος 7

11 βελτιωμένος -stepping αλγόριθμος ενώ στο τέλος αναφέρονται και οι λεπτομέρειες της υλοποίησης του καινούριου αλγορίθμου Στο κεφάλαιο 5, παρουσιάζεται μια πλήρης πειραματική αξιολόγηση του προτεινόμενου παράλληλου αλγορίθμου για την εύρεση συντομότερων διαδρομών σε πραγματικά δίκτυα μεταφορών ευρείας κλίμακας όπως τά οδικά δίκτυα της Γερμανίας και της Φλόριντας. Τέλος το κεφάλαιο 6 περιέχει τα συμπεράσματα και προτάσεις για μελλοντική εργασία. 8

12 2 Βασικές Εννοιες Στο παρόν κεφάλαιο περιγράφονται κάποιοι βασικοί ορισμοί που θα χρησιμοποιηθούν στα επόμενα κεφάλαια. Οι ορισμοί που παρατίθενται παρακάτω βασίζονται ως επί το πλείστον στην έννοια του γραφήματος και περιγράφονται περιληπτικά καθώς ο αναγνώστης μπορεί να ανατρέξει στην βιβλιογραφία στο τέλος της εργασίας για περισσότερες λεπτομέρειες 2.1 Θεωρία Γραφημάτων Στην Θεωρία Γραφημάτων ένα γράφημα (graph) G ορίζεται ως ένα διατεταγμένο ζεύγος G (V, E), όπου V = {v 1, v 2,...v n }, είναι το σύνολο των κόμβων και E = {e 1, e 2,...e m } το σύνολο των ακμών. Ακόμα, με n = V συμβολίζουμε το πλήθος των κόμβων και με m = E το πλήθος των ακμών. Μια ακμή στο E V xv, συνδέει δύο κόμβους του γραφήματος και αποτελεί είτε ένα σύνολο κόμβων e = {u, v} οπότε χαρακτηρίζεται μη-κατευθυνόμενη ή ένα διατεταγμένο ζεύγος κόμβων e = (u, v),οπότε χαρακτηρίζεται κατευθυνόμενη. Αντίστοιχα, ένα γράφημα που αποτελείται μόνο από μη-κατευθυνόμενες ακμές ονομάζεται μη-κατευθυνόμενο, ενώ εκείνο που αποτελείται μόνο από κατευθυνόμενες ακμές ονομάζεται κατευθυνόμενο. Για μία ακμή e = e ij = (u i, u j ) ο κόμβος u i αποτελεί την ουρά ή την αρχή της ακμής και ο κόμβος u j την κεφαλή ή το τέλος της ακμής. Η ακμή e καλείται η προσπίπουσα των κόμβων u i,u j. Οι κόμβοι u i,u j είναι τα άκρα της ακμής. Δύο κόμβοι που συνδέονται με μία κοινή ακμή καλούνται γειτονικοί. Δύο ακμές που έχουν ένα κοινό άκρο καλούνται επισης γειτονικές. Δύο ακμές που έχουν κοινά και τα δύο άκρα καλούνται παράλληλες. Ο βαθμός ενός κόμβου u,deg(u) είναι ο αριθμός των ακμών που προσπίπτουν στον u. Ο βαθμός εισόδου του u είναι ο αριθμός των κατευθυνόμενων ακμών με τέλος το u. Ο βαθμός εξόδου του u είναι ο αριθμός των κατευθυνόμενων ακμών με αρχή τον u. Συμβολίζουμε με Δ τον μέγιστο βαθμό που έχει ένας κόμβος στο γράφημα. Ενας κόμβος στον οποίο δεν προσπίπτει καμία ακμή και οπότε έχει βαθμό 0, ονομάζεται απομονωμένος. Μια διαδρομή (path) είναι μια ακολουθία απο διαδοχικές ακμές p = e 1, e 2,..., e k ώστε για 1 i k 1, η κεφαλή της e i να ταυτίζεται με την ουρά της e i+1. Μια διαδρομή είναι απλή αν κάθε κόμβος (και άρα κάθε ακμή) εμφανίζεται το πολύ μια φορά στην ακολουθία. Μια διαδρομή είναι κύκλος αν ξεκινά και τελειώνει στον ίδιο κόμβο. Ενας κύκλος, του οποίου το συνολικό βάρος είναι αρνητικό ονομάζεται αρνητικός κύκλος Ενα γράφημα ονομάζεται πλήρως συνδεδεμένο όταν για κάθε ζεύγος κόμβων υπάρχει ακμή που να ανήκει στο γράφημα. Ενα γράφημα ονομάζεται συνεκτικό αν για κάθε ζεύγος κόμβων υπάρχει διαδρομή στο γράφημα που τους ενώνει. Στην περίπτωση των κατευθυνόμενων γραφημάτων διακρίνουμε τρείς ειδικές περιπτώσεις συνεκτικότητας. Οταν για οποιοδήποτε ζεύγος κόμβων του γραφήματος v i και v j υπάρχει τουλάχιστον μια διαδρομή 9

13 που να τους συνδέει, κατευθυνόμενη είτε από τον v i προς το v j είτε από τον v j προς τον v i τότε το γράφημα καλείται μονομερώς συνεκτικό. Αν για κάθε ζεύγος κόμβων v i και v j υπάρχει τουλάχιστον μία διαδρομή απο τον v i προς τον v j και ταυτόχρονα τουλάχιστον μια διαδρομή από τον v j προς τον v i τότε το γράφημα καλείτα ιισχυρά συνεκτικό. Τέλος ένα κατευθυνόμενο γράφημα καλείται ασθενώς συνεκτικό αν δεν είναι μονομερώς ή ισχυρά συνεκτικό και επιπλέον το μη κατευθυνόμενο γράφημα που προκύπτει απο αυτό, όταν δεν ληφθούν υπ οψιν οι κατευθύνσεις των ακμών του, είναι συνεκτικό. Παρακάτω αναλύεται μια ειδική κατηγορία γραφήματος που χρησιμοποιείται στην παρούσα εργασία: Τα Χρονο-εξαρτώμενα γραφήματα, είναι τα γραφήματα όπου το κόστος για κάθε ακμή περιγράφεται από μία γνωστή συνάρτηση του χρόνου. Ακόμα, με το όρο Arr[u,v](t 1 ) συμβολίζουμε τον ελάχιστο χρόνο που μπορούμε να φτάσουμε στο κόμβο u απο το κόμβο v αν ξεκινήσουμε την χρονική στιγμή t 1 ενώ με D[u,v](t 1 ) συμβολίζουμε την καθυστέρηση της διαδρομής για να φτάσουμε στο κόμβο u από τον κόμβο v αν ξεκινήσουμε την χρονική στιγμή t 1. Κάνοντας διάφορες υποθέσεις τα παραπάνω γραφήματα μπορούν να χωριστούν στις παρακάτω κατηγορίες: FIFO (first in first out) γραφήματα στα οποία ισχύει η παραδοχή ότι κάθε ακμή στο γράφημα συμπεριφέρεται σαν μια ουρά FIFO, με την έννοια ότι η συνάρτηση του χρόνου άφιξης είναι μία αύξουσα συνάρτηση. Γραφήματα όπου οι συναρτήσεις του χρόνου άφιξης αποτελούνται απο τμηματικά γραμμικές συναρτήσεις. Γραφήματα στα οποία επιτρέπεται να εφαρμοστεί μια πολιτική αναμονής στους κόμβους. Σχήμα 2.1: Παράδειγμα των συναρτήσεων Arr[t] και D[t] για χρονο-εξαρτώμενα δίκτυα 2.2 Αναπαράσταση γραφήματος Υπάρχουν διάφορες δομές που μπορεί να επιλεγούν για την αναπαράσταση των γραφημάτων. Ωστόσο, σε κάθε περίπτωση, η καταλληλότητα της επιλογής μια δομής εξαρτάται σε μεγάλο 10

14 βαθμό από τα χαρακτηριστικά του γραφήματος εισόδου, και επιπλέον από τις απαιτήσεις απόδοσης για τη συγκεκριμένη εφαρμογή που μας ενδιαφέρει. Στην παρούσα εργασία, το ενδιαφέρον μας εστιάζεται κυρίως σε αραιά δίκτυα, όπως είναι τα δίκτυα μεταφορών και πιο συγκεκριμένα τα οδικά δίκτυα. Για τέτοιου είδους δίκτυα μας απασχολούν κυρίως αναπαραστάσεις που απαιτούν γραμμικό χώρο, καθώς τα δίκτυα αυτά δεν είναι μόνο αραιά αλλά και εξαιρετικά μεγάλα σε μέγεθος. Κατά συνέπεια, εξετάζουμε κυρίως αναπαραστάσεις που είναι παραλλαγές της αναπαράστασης της λίστας γειτνίασης που απαιτεί γραμμικό χώρο για την αποθήκευση των στοιχείων ενός γραφήματος Αναπαράσταση λίστας γειτνίασης Η λίστα γειτνίασης A(u) ενός κόμβου u σε ένα γράφημα G=(V,E) ορίζεται ως το σύνολο A(u)={v (u,v) E } Η αναπαράσταση λίστας γειτνίασης αποθηκεύει την λίστα γειτνίασης κάθε κόμβου σαν μια συνδεδεμένη λίστα. Μια συνδεδεμένη λίστα είναι μια συλλογή κελιών που το καθένα παριέχει ένα ή περισσότερα πεδία. Η λίστα γειτνίασης ενός κόμβου u είναι μια συνδεδεμένη λίστα από δείκτες οι οποίοι δείχνουν προς τους γειτονικούς κόμβους. Το κελί που αντιστοιχεί στην ακμή περιέχει τόσα πεδία όση και η πληροφορία που θέλουμε να αποθηκεύσουμε για κάθε ακμή όπως τον κόμβο v και ένα πεδίο με ένα δείκτη προς το επόμενο κελί στην συνδεδεμένη λίστα. Καθώς δημιουργούνται οι συνδεδεμένες λίστες, μία για κάθε κόμβο, πρέπει επίσης να δημιουργηθεί μια συνδεδεμένη λίστα με δείκτες που να δείχνουν στο πρώτο κελί κάθε λίστας γειτνίασης. Σχήμα 2.2: Δικατευθυνόμενο γράφημα με 5 κόμβους και 16 ακμές. 11

15 Σχήμα 2.3: Αναπαράσταση λίστας γειτνίασης Γράφημα Πακεταρισμένης-μνήμης Η δομή του γραφήματος πακεταρισμένης-μνήμης PMG [14] (Packed-Memory Graph) αποτελείται από έναν πίνακα για την αποθήκευση των κόμβων σε αυθαίρετη διάταξη και δύο πίνακες για την αποθήκευση των ακμών, έναν για τις εισερχόμενες και έναν για τις εξερχόμενες ακμές. Η σειρά αποθήκευσης των ακμών ακολουθεί τη σειρά αποθήκευσης των κόμβων. Στον πίνακα των εξερχόμενων (εισερχόμενων) ακμών, οι ακμές αποθηκεύονται σε σειρά ταξινόμησης με βάση τον αρχικό (τελικό) κόμβο. Επομένως, όλες οι εξερχόμενες (εισερχόμενες) ακμές του κόμβου βρίσκονται σε διαδοχικά κελιά του πίνακα εξερχόμενων (εισερχόμενων) ακμών. Κάθε κόμβος διατηρεί έναν δείκτη στο αντίστοιχο εύρος των κελιών που περιέχουν τις εξερχόμενες (εισερχόμενες) ακμές του στον πίνακα των εξερχόμενων (εισερχόμενων) ακμών. Κάθε εξερχόμενη (εισερχόμενη) ακμή διατηρεί έναν δείκτη στον τελικό (αρχικό) του κόμβο και έναν δείκτη στην αντίστοιχη εισερχόμενη (εξερχόμενη) ακμή του. Κατά την προεπιλογή, η επιλεγμένη πυκνότητα στη PMG είναι τέτοια ώστε το μέγεθος στους πίνακες των κόμβων και ακμών της δομής να είναι ίσο με την επόμενη δύναμη του 2 από το χώρο που χρειάζονται. Οσο λιγότερα κενά περιέχουν οι πίνακες της δομής, τόσο καλύτερη είναι η απόδοση του γραφήματος στα ερωτήματα συντομότερων διαδρομών. Αντίθετα, η προσθήκη κενών μεγαλώνει το μέγεθος του γραφήματος, κάνοντας πιο ακριβές τις λειτουργίες προσπέλασης και ενημέρωσης των κόμβων και ακμών. Ωστόσο, η πυκνότητα μπορεί να ρυθμιστεί (fine-tuning) ανάλογα με την εφαρμογή. Αν η εφαρμογή απαιτεί πολλές ενημερώσεις, η PMG μπορεί να ρυθμιστεί να έχει μικρότερη πυκνότητα ώστε να έχει αρκετό 12

16 χώρο για νέους κόμβους και ακμές. Σχήμα 2.4: Αναπαράσταση γραφήματος πακεταρισμένης μνήμης. Κάθε δομή έχει τα δικά της πλεονεκτήματα και μειονεκτήματα, κυρίως ως αποτέλεσμα ενός συμβιβασμού (trade-off) ως προς την πολυπλοκότητα του χρόνου εκτέλεσης και του χώρου μνήμης. 2.3 Ιδιότητες χρονο-εξαρτώμενων γραφημάτων FIFO Πρόταση ([11]). Σε ένα FIFO δίκτυο η αναμονή σε ένα κόμβο δεν είναι ποτέ ευεργετική Απόδειξη. Η απόδειξη αυτή έγκειται στο γεγονός ότι οι συναρτήσεις άφιξης στις διαδρομές είναι αύξουσες. Πρόταση ([11]). Αν ένα γράφημα ικανοποιεί την FIFO ιδιότητα τότε για κάθε συνάρτηση καθυστέρησης-ακμής πρέπει να έχει παράγωγο με τιμές τουλάχιστον -1 Απόδειξη. Χρησιμοποιώντας την FIFO ιδιότητα: a A, t u, δ > 0 θα ισχύει Arr[a](t u ) < Arr[a](t u + δ) t u + D[a](t u ) < t u + δ + D[a](t u + δ) (D[a](t u + δ) D[a](t u ))/δ > 1 Πρόταση ([11]). Για κάθε διαδρομή p = (a 1,..., a k ) πρέπει να ισχύει ότι t1ɛr και δ > 0 Arr[p](t1) < Arr[p](t1 + δ) 13

17 Απόδειξη. Η εξήγηση για την FIFO σε αυθαίρετη διαδρομή p στο G παρέχεται από ένα απλό επαγωγικό επιχείρημα για τις υποδιαδρομές του p που βασίζεται σε ένα αναδρομικό ορισμό των συναρτήσεων καθυστέρησης των ακμών. Για κάθε διαδρομή p = (a 1,..., a k ) και για 1 < i < j < k έστω p ij η υποδιαδρομή της p που ξεκινάει απο τη i th ακμή και τελειώνει στην j th Τότε: Arr[p 1,k ](t o ) = t o + D[p 1,k ](t o ) = t o + D[p 1,1 ](t o ) + D[p 2,k ](t o + D[p 1,1 ](t o )) = Arr[p 2,k ](Arr[p 1,1 ](t o )) = (Arr[p 2,k ]Arr[p 1,1 ])(t o ) =... (Arr[a k ]...Arr[a 1 ])(t o ) Η σύνθεση αυξουσών συναρτήσεων είναι γνωστό ότι είναι και αυτή αύξουσα. Οσο για την συνάρτηση νωρίτερης άφιξης Arr[o, d] = min p P {Arr[p]} που μπορεί να οριστεί ως η ελαχιστοποίηση αυξουσών συναρτήσεων είναι και αυτή αυξουσα συνάρτηση χρόνου αναχώρησης από το o. Πρόταση ([11]). Σε ένα FIFO δίκτυο μπορεί να βρεθεί συντομότερη διαδρομή της οποίας οι υποδιαδρομές είναι και αυτές οι συντομότερες. Απόδειξη. Εστω για κάποια χρονική στιγμή αναχώρησης t και κάποια υποδιαδρομή q P x,y της διαδρομής p (που αποτελεί την συντομότερη διαδρομή ανάμεσα σε δύο κόμβους s, d όταν αναχωρούμε από τον κόμβο s την χρονική στιγμή t ) ότι υπάρχει άλλη διαδρομή q τέτοια ώστε D[q ](t x ) < D[q](t x ) (όπου t x = Arr[p s >x ](t)). Εκχωρώντας τη q στη p στην θέση της q, μπορούμε να δημιουργήσουμε μία νέα διαδρομή p η οποία δεν θα είναι μεγαλύτερη από p : Θέτοντας t y = t x + D[q ](t x ) και t y = t x + D[q](t x ): Arr[p ](t) = t + D[p ](t) = t + D[p s >x](t) + D[q ](t x ) + D[p y >d ](t x + D[q ](t x )) = D[q ](t x ) + t x + D[p y >d ](t x + D[q ](t x )) = t y + D[p y >d ](t y) < t y + D[p y >d ](t y ) = Arr[p](t) 2.4 Το πρόβλημα Εύρεσης Συντομότερων Διαδρομών Δεδομένου ενός σύνολου διαδρομών που ξεκινούν από έναν κόμβο αφετηρίας s και καταλήγουν σε έναν κόμβο προορισμού t, το πρόβλημα εύρεσης της συντομότερης διαδρομής ΠΕΣΔ (shortest path problem ) αφορά την εύρεση της διαδρομής που οδηγεί στο ελάχιστο κόστος μετάβασης ή στην ελάχιστη απόσταση από τον s στον t. Διακρίνουμε τέσσερις παραλλαγές του προβλήματος Εύρεσης Συντομότερων Διαδρομών: Το πρόβλημα εύρεσης της συντομότερης διαδρομής από έναν κόμβο αφετηρίας προς έναν κόμβο προορισμού (single-pair shortest path problem). Το πρόβλημα εύρεσης της συντομότερης διαδρομής από έναν κόμβο αφετηρίας προς όλους τους κόμβους (single-source shortest path problem). 14

18 Το πρόβλημα εύρεσης της συντομότερης διαδρομής από όλους τους κόμβους προς έναν κόμβο προορισμού (single-destination shortest path problem). Το πρόβλημα εύρεσης της συντομότερης διαδρομής μεταξύ οποιουδήποτε ζεύγους κόμβων στο γράφημα (all-pair shortest path problem) Ιδιότητες συντομότερων διαδρομών Οι συντομότερες διαδρομές έχουν τις ακόλουθες σημαντικές ιδιότητες [1]: Μια οποιαδήποτε υποδιαδρομή P=u-v μέσα σε μία συντομότερη διαδρομή είναι επίσης συντομότερη Για οποιεσδήποτε δύο συντομότερες διαδρομές s-v και v-t, η σύνδεση τους στο κοινό άκρο v δεν αποδίδει απαραίτητα μια συντομότερη διαδρομή Label-setting Αλγόριθμοι. Για την επίλυση του προβλήματος της εύρεσης της συντομότερης διαδρομής υπάρχουν δύο είδη αλγορίθμων: Οι αλγόριθμοι της κατηγορίας Label-correcting και οι Label-setting αλγόριθμοι. Οι Label-setting είναι αλγόριθμοι οι οποίοι σε κάθε επανάληψη ορίζουν την μόνιμη ετικέτα ενός κόμβου v και ως εκ τούτου απαιτούν το πολύ n = V επαναλήψεις Ο Αλγόριθμος του Dijkstra Ο αλγόριθμος του Dijkstra [8] είναι ένας αλγόριθμος που λύνει το πρόβλημα εύρεσης της συντομότερης διαδρομής μεταξύ ενός κόμβου αφετηρίας και ενός άλλου κόμβου προορισμού και ανήκει στην κατηγορία των Label-setting αλγορίθμων. Για ένα δεδομένο ζευγάρι κόμβων s και t ενός γραφήματος G=(V,E), ο αλγόριθμος βρίσκει την διαδρομή απο το s στο t με το χαμηλότερο κόστος. Είσοδος-έξοδος: Η είσοδος του αλγορίθμου είναι: ένα γράφημα G = (V, E) κατευθυνόμενο ή μη, τα βάρη των ακμών του γραφήματος, ένας κόμβος αφετηρίας s και ένας κόμβος- προορισμού t. Η έξοδος ανάλογα με το κριτήριο τερματισμού είναι ολόκληρο ή ένα μέρος από το δένδρο των συντομότερων διαδρομών με ρίζα τον s. Περιορισμοί: Ο μόνος περιορισμός για την ορθή λειτουργία του αλγορίθμου είναι η χρήση μιας μηαρνητικής συνάρτησης κόστους. Οταν ικανοποιείται ο περιορισμός αυτός,τότε υπάρχει εγγύηση ότι ο αλγόριθμος θα βρίσκει πάντα τις συντομότερες διαδρομές. Καταστάσεις: Ο αλγόριθμος ανήκει σε μία κατηγορία αλγορίθμων που υπολογίζουν το ζητούμενο, θέτοντας ένα είδος "ετικέτας" σε κάθε κόμβο. Σε κάθε βήμα ο αλγόριθμος χωρίζει τους κόμβους 15

19 του γραφήματος σε τρία κύρια σύνολα. Στους μη-εξερευνημένους (unexplored), στους εξερευνημένους (explored ) και στους διευθετημένους (settled). Κάθε μια απο τις καταστάσεις έχει ιδιαίτερη σημασία. Συγκεκριμένα, μη-εξερευνημένος θεωρείται ένας κόμβος τον οποίο ο αλγόριθμος δεν έχει επισκεφθεί ακόμα. Εξερευνημένος κόμβος θεωρείται ένας κόμβος τον οποίο ο αλγόριθμος έχει επισκεφθεί τουλάχιστον μια φορά. Διευθετημένος θεωρείται ένας εξερευνημένος κόμβος,για τον οποίο ο αλγόριθμος έχει βρει την συντομότερη από όλες τις διαδρομές που ξεκινούν από την αφετηρία s και καταλήγουν σε αυτόν. Αρχικά, ο κόμβος-αφετηρίας έχει ετικέτα μηδέν (0) και οι υπόλοιποι κόμβοι άπειρο και συμβολίζουμε την απόσταση ενός κόμβου u από την αφετηρία ως dist(u). Περιγραφή αλγορίθμου : Ο αλγόριθμος του Dijkstra όπως και οποιοσδήποτε άλλος αλγόριθμος αναζήτησης συντομότερων διαδρομών, στηρίζεται πάνω σε μία στρατηγική εξερεύνησης του γραφήματος. Στην συγκεκριμένη περίπτωση, στο πλαίσιο της άπληστης και απληροφόρητης αναζήτησης, η αποδοτικότερη προσέγγιση συνεπάγεται την επίσκεψη των κόμβων του γραφήματος κατά αύξουσα σειρά απόστασης από την αφετηρία s. Αυτού του είδους η αναζήτηση μπορεί να υποστηριχθεί αποδοτικότερα με την χρήση ουρών προτεραιότητας. Μια ουρά προτεραιότητας PQ παρέχει ότι χρειάζεται, προκειμένου οι κόμβοι του γραφήματος να επεξεργαστούν στη "σωστή" σειρά. Αναλυτικότερα, ο αλγόριθμος σε ένα ο- ποιοδήποτε βήμα εισάγει στην ουρά προτεραιότητας ένα κόμβο v τον οποίο επισκέπτεται για πρώτη φορά. Η θέση του κόμβου μέσα στην ουρά συσχετίζεται με ένα κλειδί προτεραιότητας, το οποίο επιλέγεται ίσο με την απόστασή του από το κόμβο αφετηρίας s. Επιλέγοντας την διάταξη των κόμβων μέσα στην ουρά κατά αύξουσα σειρά κλειδιού, οι κόμβοι που εισάγονται ταξινομούνται κατά αύξουσα σειρά απόστασης απο την αφετηρία. Οταν σε έναν κόμβο u ανακαλυφθεί από τον αλγόριθμο μια διαφορετική διαδρομή s-u με μικρότερη απόσταση τότε χρειάζεται να πραγματοποιηθεί ενημέρωση στην ουρά. Σε αυτή την περίπτωση, στο κλειδί του κόμβου καταχωρείται η νέα τρέχουσα μικρότερη απόσταση.η αλλαγή του κλειδιού δεν είνει πάντα ανέξοδη, καθώς ενδεχομένως αυτή μπορεί να επιφέρει μια διορθωτική αναδιάταξη στην ουρά προκειμένου όλοι οι κόμβοι να παραμείνουν ταξινομημένοι αυστηρά κατά αύξουσα σειρά απόστασης απο την αφετηρία s. Σε κάθε βήμα,ο κόμβος που ο αλγόριθμος εξάγει απο την ουρά, θα έχει μεν την μικρότερη απόσταση απο την αφετηρία σε σχέση με τους υπόλοιπους κόμβους εντός της ουράς, αλλά το σημαντικότερο είναι ότι θα έχει αποκτήσει και την συντομότερη διαδρομή απο την αφετηρία. Συνεπώς κάθε κόμβος που εξάγεται απο την ουρά θεωρείται ως διευθετημένος. Ενας διευθετημένος κόμβος δεν θα χρειαστεί να επαναξεταστεί ή να επανεισαχθεί στην ουρά. Βέβαια αυτό συνδεέται άρρηκτα με τον περιορισμό ότι η απόσταση, καθώς απομακρυνόμαστε απο την αφετηρία s, είναι μόνο αύξουσα. Ο αλγόριθμος εκτελεί τα εξής βήματα: Διάλεξε τον κόμβο u με την μικρότερη προσωρινή απόσταση μέσα από το PQ για τον οποίο μπορεί να αποδειχθεί ότι έχουμε βρει την ελάχιστη απόσταση και τον τοποθετούμε στο S. 16

20 Χαλάρωσε τις εξερχόμενες ακμές του u. Ενημέρωσε τους γειτονικούς κόμβους για την νέα διαδρομή που βρέθηκε. Χαλάρωση ακμών: Ονομάζουμε χαλάρωση ακμών την εξής διαδικασία: Εστω ο κόμβος u ɛ S με γνωστή ελάχιστη απόσταση απο το s ίση με d(u). (u,v) ɛ E, αν dist(v)>dist(u)+wt(u,v), θέσε dist(v)=dist(u)+wt(u,v) και γονέα του v τον u. Ο αλγόριθμος τερματίζει αφού βρει όλες τις συντομότερες διαδρομές. Ακόμα, αφού κάθε κόμβος έχει έναν γονέα ο αλγόριθμος δημιουργεί και το δένδρο συντομότερων διαδρομών. Ορθότητα: Ο αλγόριθμος του Dijkstra λύνει το πρόβλημα της εύρεσης συντομότερων διαδρομών με την προυπόθεση ότι η συνάρτηση κόστους των ακμών είναι μη αρνητική. Η απόδειξη της ορθότητας είναι αναγκαία γιατί ο αλγόριθμος του Dijkstra ανήκει στην κατηγορία τω άπληστων αλγορίθμων. Σε κάθε βήμα επιλέγει την τοπικά βέλτιστη λύση. Ωστόσο το γεγονός ότι οι τοπικές λύσεις είναι βέλτιστες δεν εγγυάται ότι και η σύνθεσή τους θα παράγει ως αποτέλεσμα μια συνολικά βέλτιστη λύση. Απόδειξη (επαγωγή): Εστω S το σύνολο των διευθετημένων κόμβων. Για κάθε u S το dist(s,u)=dist sp (s,u) είναι το κόστος της συντομότερης διαδρομής s-u. Εστω P su η συντομότερη διαδρομή που έχει σημειώσει ο αλγόριθμος από την αφετηρία s στο κόμβο u. Θα δείξουμε ότι για κάθε κόμβο v του συνόλου S και για κάθε βήμα εκτέλεσης του αλγορίθμου, η P su που υπολόγισε είναι πράγματι μια συντομότερη διαδρομή. Αυτό αποδεικνύει άμεσα ότι ο αλγόριθμος βρίσκει όλες τις συντομότερες διαδρομές αφού στο τελευταίο βήμα το σύνολο S θα περιέχει όλους τους κόμβους του γραφήματος. Βήμα 1 Για S = 1 ισχύει S = {s}. Ο πρώτος κόμβος που διευθετείται είναι ο κόμβος αφετηρίας s με dist(s,s)=0. Εφόσον δεν υπάρχουν αρνητικά βάρη η απόσταση απο το εαυτό του δεν μπορεί να είναι μικρότερη απο 0. Το κόστος της διαδρομής P ss είναι 0 και η P ss αποτελεί την συντομότερη διαδρομή.άρα προφανώς για S = 1 ισχύει. Επαγωγικό υπόθεση: Υποθέτουμε ότι για S = k με k > 1 ο ισχυρισμός ισχύει. Θα δείξουμε ότι ο ισχυρισμός εξακολουθεί να ισχύει και για S = k + 1 έχοντας προσθέσει στο σύνολο S ένα διευθετημένο κόμβο έστω τον κόμβο v Επαγωγικό βήμα: Εστω ότι υπάρχει μια οποιαδήποτε άλλη διαδρομή P su από την αφετηρία s στο κόμβο u. Για να ισχύει το θεώρημα χρειάζεται να δείξουμε ότι η P su έχει ίσο ή μεγαλύτερο κόστος απο αυτό της P su. Υποθέτουμε ότι η διαδρομή P su πριν τον u, περιέχει μια ακολουθία 17

21 κόμβων που δεν ανήκουν στο σύνολο S. Εστω ότι ο κόμβος y είναι ο πρώτος κόμβος της P su που δεν ανήκει στο S, και ότι ο αμέσως προηγούμενος του, που ανήκει στο S είναι ο x. Οπως σε κάθε επαναληπτικό βήμα του αλγορίθμου έτσι και στο k+1 βήμα,επιλέγεται η διαδρομή με το μικρότερο κόστος απο το s προς ένα μη-διευθετημένο κόμβο, γειτονικό ενός από τους διευθετημένους κόμβους στο S. Επομένως, μεταξύ αυτών,εφόσον οι x και u είναι ήδη διευθετημένοι,εξετάζονται και η P su και η P sy. Το γεγονός ότι εξάγεται ο κόμβος u έναντι του y σημαίνει ότι dist(s,u) < dist(s,y) και κατά συνέπεια η P sy έχει μεγαλύτερο ή ίσο κόστος σε σύγκριση με την διαδρομή P sv. Επιπλέον,αφού η P sy είναι ένα μόνο μέρος (υποδιαδρομή) της διαδρομής P sv και δεν υπάρχουν αρνητικά βάρη, είναι προφανές ότι το συνολικό κόστος της P sv θα είναι ίσο ή μεγαλύτερο από την P sv. Άρα η P sv δεν μπορεί να έχει μεγαλύτερο κόστος από την P sv και άρα αποτελεί βέλτιστη όπως θέλαμε να δείξουμε. Η ισότητα αφορά την περίπτωση που οι διαδρομές έχουν και οι δύο ελάχιστο κόστος, δηλαδή και οι δύο είναι συντομότερες. Χρονική πολυπλοκότητα Εφόσον οποιοσδήποτε κόμβος εισάγεται και εξάγεται το πολύ μια φορά στην ουρά PQ, θα χρειαστούν το πολύ n επαληπτικά βήματα,δηλαδή όσο είναι και ο αριθμός των κόμβων του γραφήματος. Επομένως, ο αλγόριθμος χρειάζεται να εκτελέσει O(n) βήματα. Στην ουρά μπορεί να εισαχθούν και να εξαχθούν το πολύ n κόμβοι. Οπότε η extract min και η insert θα χρειαστεί να εκτελεστούν το πολύ n φορές. Ακόμα, εάν ο αλγόριθμος συνεχώς ανακαλύπτει νέες διαδρομές μικρότερου κόστους θα χρειαστούν m χαλαρώσεις ακμών. Και αυτό βέβαια σημαίνει ότι m νέες διαδρομές,θα πυροδοτήσουν m μειώσεις κλειδιών. Χρησιμοποιώντας τις υποθέσεις που κάναμε παραπάνω, η πολυπλοκότητα χρόνου του συγκεκριμένου αλγορίθμου φαίνεται να είναι O(m + n logn) αν το σύνολο υλοποιηθεί με μία αποδοτική ουρά προτεραιότητας π. χ. με ουρά Fibonacci [1]. 18

22 Σχήμα 2.5: Ψευδοκώδικας του Dijkstra Παράδειγμα Στο σχήμα 2.6 φαίνεται το γράφημα πάνω στο οποίο εκτελείται ο αλγόριθμος του Dijkstra για την εύρεση της συντομότερης διαδρομής από τον κόμβο s στο κόμβο t. Αρχικά φαίνεται το γράφημα με τα κόστη των ακμών ενώ στην συνέχεια περιγράφονται αναλυτικά τα πρώτα βήματα του αλγορίθμου και η τελική συντομότερη διαδρομή Αρχικό γράφημα Σχήμα 2.6: Αρχικό γράφημα 19

23 Βήμα 1 Σχήμα 2.7: Βήμα 1 Στο σχήμα 2.7 επιλέγουμε ως κόμβο με την ελάχιστη προσωρινή απόσταση το s και χαλαρώνουμε τις εξερχόμενες ακμές και ενημερώνουμε τους γείτονες dist(s, a) = dist(s, s) + l(s, a) = = 1 dist(s, b) = dist(s, s) + l(s, b) = = 5 dist(s, d) = dist(s, s) + l(s, d) = = 1 dist(s, h) = dist(s, s) + l(s, h) = = 3 Βήμα 2 Σχήμα 2.8: Βήμα 2 Στο σχήμα 2.8 επιλέγουμε ως κόμβο με την ελάχιστη προσωρινή απόσταση τον a και χαλαρώνουμε τις εξερχόμενες ακμές και ενημερώνουμε τους γείτονες. dist(s, c) = dist(s, a) + l(a, c) = = 4 20

24 Βήμα 3 Σχήμα 2.9: Βήμα 3 Στο σχήμα 2.9 επιλέγουμε ως κόμβο με την ελάχιστη προσωρινή απόσταση το d και χαλαρώνουμε τις εξερχόμενες ακμές και ενημερώνουμε τους γείτονες. dist(s, e) = dist(s, d) + l(d, e) = = 4 Βήμα 4 Σχήμα 2.10: Βήμα 4 Στο σχήμα 2.10 επιλέγουμε ως κόμβο με την ελάχιστη προσωρινή απόσταση τον h και χαλαρώνουμε τις εξερχόμενες ακμές και ενημερώνουμε τους γείτονες. dist(s, g) = dist(s, h) + l(h, g) = = 9 dist(s, e) = dist(s, h) + l(h, e) = = 7 > 4 (δεν γινεται καμια αλλαγή) 21

25 Βήμα 5 Σχήμα 2.11: Βήμα 5 Στο σχήμα 2.11 επιλέγουμε ως κόμβο με την ελάχιστη προσωρινή απόσταση τον c και χαλαρώνουμε τις εξερχόμενες ακμές και ενημερώνουμε τους γείτονες. dist(s, g) = dist(s, h) + l(h, g) = = 5 < 9(γίνεται η αλλαγή) Βήμα 6 Σχήμα 2.12: Τελικό βήμα Στο σχήμα 2.12 επιλέγουμε ως κόμβο με την ελάχιστη προσωρινή απόσταση τον e και χαλαρώνουμε τις εξερχόμενες ακμές και ενημερώνουμε τους γείτονες. dist(s, t) = dist(s, e) + l(e, t) = = 6 Και στο σημείο αυτό τελειώνει ο αλγόριθμος με την συντομότερη διαδρομή από το s t να είναι η s d e t με κόστος Παράλληλος Αλγόριθμος του Dijkstra Για την παραλληλοποίηση του αλγορίθμου Dijkstra [5] υπάρχουν δύο βασικές ιδέες. Η πρώτη ιδέα είναι να χαλαρώνονται όλες οι εξερχώμενες ακμές του ενεργού κόμβου u παράλληλα, παραλληλοποιώντας αποτελεσματικά την εσωτερική επανάληψη του αλγορίθμου. Ωστόσο, η βελτίωση στο χρόνο που μπορεί να επιτευχθεί με αυτή την ιδέα περιορίζεται από τον αριθμό των εξερχόμενων ακμών για τον κάθε κόμβο. Για το λόγο αυτό η συγκεκριμένη ιδέα δεν μπορεί να χρησιμοποιηθεί σε δίκτυα του πραγματικού κόσμου, καθώς ο μέσος 22

26 όρος του αριθμού των εξερχόμενων ακμών για κάθε κόμβο είναι σχετικά μικρός, και άρα η παραλληλοποίηση των χαλαρώσεων των εξερχόμενων ακμών δεν θα προσφέρει σημαντική βελτίωση εκτός από την περίπτωση των πυκνών δικτύων. Η δεύτερη ιδέα που μπορεί να χρησιμοποιηθεί για την παραλληλοποίηση του αλγορίθμου του Dijkstra είναι να αφαιρεθούν πολλαπλοί κόμβοι από την ουρά προτεραιότητας ταυτοχρόνως. Ενώ στην αρχή του κάθε βήματος αρχικά επιλεγέται ένας μοναδικός κόμβος με την ελάχιστη προσωρινή ετικέτα, στην συγκεκριμένη παραλλαγή επιλεγουμε όλους τους κόμβους που έχουν προσωρινή ετικέτα κάτω από μια συγκεκριμένη τιμή έστω μ και χαλαρώνουμε τις εξερχόμενες ακμές τους. Βέβαια μπορεί σε κάποιο επόμενο βήμα να πρέπει κάποιος από αυτούς τους κόμβους να ξαναμπεί στην ουρά προτεραιότητας και οι εξερχόμενες ακμές να πρέπει να χαλαρώσουν ξανά. Συνέπως, φαίνεται ότι υπάρχει ένας συμβιβασμός (trade-off) μεταξύ της αξιοποίησης της παραλληλοποίησης (αφαιρώντας πολλαπλούς κόμβους σε καθε βήμα) και στο αριθμό της επαναεισαγωγής κόμβων για τους οποίους έχουν χαλαρώσει ήδη οι εξερχώμενες ακμές τους. Προσπαθώντας να βρεθεί η σωστή τιμή για την μεταβλητή-κατωφλίου μ στο [5] υλοποιήθηκαν δύο κύρια κριτήρια: OUT-version: Υπολογίζεται η τιμή του κατωφλίου με βάση το βάρος των εξερχόμενων ακμών: Εστω L=min {tent(u) + c(u, z): u βρίσκεται στην ουρά προτεραιότητας και (u, z) E }, γίνεται ταυτόχρονη αφαίρεση όλων των κόμβων που ι- κανοποιούν την συνθήκη tent(u) L. Εδώ πρέπει να σημειωθεί ότι όταν ένας κόμβος u αφαιρείται από την ουρά τότε dist(u) = tent(u). Το κατώφλι για το OUT-criterion μπορεί να υπολογιστεί είτε από μία δεύτερη ουρά προτεραιότητας για o(v) = tent(v) + min{c(v, u) : (v, u) E} ή την ίδια στιγμή που αφαιρούνται οι κόμβοι. IN-version: Το δεύτερο κριτήριο ορίζεται μέσω των εισερχόμενων ακμών: Εστω M = min{tent(u) : u βρίσκεται στην ουρά προτεραιότητας} και i(v) = tent(v) min{c(u, v) : (u, v) E} για κάθε κόμβο v που βρίσκεται στην ουρά. Τότε το v μπορεί να αφαιρεθεί ασφαλώς απο την ουρά αν i(v) M ο Αλγόριθμος του Dial Το 1969 ο Dial [7] πρότεινε ένα απλό τρόπο για την βελτίωση του αλγορίθμου του Dijkstra όταν το κόστος των ακμών είναι ακέραιο. Ο αλγόριθμος είναι βασισμένος στην εξής ιδιότητα: Πρόταση ([7]). Οι ετικέτες αποστάσεων των κόμβων που είναι διευθετημένοι στον αλγόριθμο Dijkstra είναι μη-φθίνουσες: Απόδειξη. Στον συγκεκριμένο αλγόρθμο ο επόμενος διευθετημένος κόμβος v είναι ο κόμβος με την μικρότερη προσωρινή ετικέτα d(v). Επιπροσθέτως, όταν ο αλγόριθμος εξέτάζει τον κόμβο w γειτονικό του v κατα την διάρκεια της ενημέρωσης των ετικετών, δεν θα μειωθεί ποτέ η ετικέτα d(w) κάτω από τη d(v), αφού το κόστος των ακμών είναι μη αρνητικό. 23

27 Εστω το μεγαλύτερο κόστος των ακμών σε ένα δίκτυο G = (V, E). Προφανώς n είναι το πάνω όριο της ετικέτας για κάθε μη-άπειρη ετικέτα ενός κόμβου. Ο Αλγόριθμος του Dial αποθηκεύει τους κόμβους με μη-άπειρες προσωρινές ετικέτες σε μια συλλογή με n + 1 σύνολα που ονομάζονται κάδοι, αριθμημένοι από το 0 εως το n. Ο κάδος k αποθηκεύει τους κόμβους με προσωρινές ετικέτες ίσες με k. Εστω B(k) να αντιπροσωπεύει το περιεχόμενο του κάδου k. Τα δύο κύρια βήματα (επιλογή κόμβου και ενημέρωση ετικετών) εφαρμόζονται ως εξής: Επιλογή κόμβου: (i) κοιτάμε τους κάδους 0,1,2,..., έως φτάσουμε στο πρώτο μη-κενό κάδο, και έστω k, ο κάδος αυτός. Κάθε κόμβος u ɛ B(k) έχει την ελάχιστη τιμή ετικέτας. (ii) Αφαιρουμε όλους τους κόμβους u ɛ B(k), τους ορίζουμε ως διευθετημένους, και προχωράμε στο βήμα της ενημέρωσης των ετικετών. Ενημέρωση των ετικετών: (i) Εστω w με ετικέτα d 1, ο κόμβος γειτονικός του u ππου έχει διευθετηθεί στο βήμα επιλογής των κόμβων. Εκτελούμε την ενημέρωση της ετικέτας του w με αποτέλεσμα να δημιουργηθεί μια νέα ετικέτα d 2 για το w. (ii) μεταφέρουμε το w από το B(d 1 ) στο B(d 2 ). Στο βήμα της επιλογής των κόμβων, ελέγχονται οι κάδοι k+1, k+2,..., για να βρεθεί ο πρώτος μη-κενός κάδος. Αυτό επιφέρει τα σωστά αποτελέσματα καθώς από πρόταση οι κάδοι 0,1,2,...k θα είναι κενοί στις επόμενες επαναλήψεις. Πολυπλοκότητα αλγορίθμου : Ο έλεγχος αν ένας κάδος είναι κενός, καθώς η πρόσθεση και αφαίρεση στοιχείων από το κάδο B(k) είναι της τάξης Ο(1). Με την συγεκριμένη δομή, κάθε ενημέρωση ετικετών παίρνει χρόνο Ο(1) και άρα ο αλγόριθμος χρειάζεται O(m) για όλα τα βήματα ενημέρωσης ετικετών. Ομως για την επιλογή των κόμβων χρειάζεται να κοιτάξουμε n +1 κάδους. Η πρόταση μας διασφαλίζει ότι κάθε κάδος πρέπει να κοιταχθεί μόνο μία φορά. Από τα παραπάνω αποδεικνύεται ότι ο αλγόριθμος του Dial τρέχει σε χρόνο Ο(μ+ν ). Παράδειγμα Στο σχήμα 2.13 φαίνεται το γράφημα πάνω στο οποίο εκτελείται ο αλγόριθμος του Dial για την εύρεση της συντομότερης διαδρομής από τον κόμβο a στο κόμβο t. Αρχικά φαίνεται το γράφημα με τα κόστη των ακμών ενώ στην συνέχεια περιγράφονται αναλυτικά τα βήματα του αλγορίθμου και η τελική συντομότερη διαδρομή. 24

28 Αρχικό γράφημα Σχήμα 2.13: Αρχικό γράφημα Βήμα 1 Σχήμα 2.14: Βήμα 1 Στο σχήμα 2.14 επιλέγουμε ως κόμβο με την ελάχιστη προσωρινή απόσταση τον a και χαλαρώνουμε τις εξερχόμενες ακμές και ενημερώνουμε τους γείτονες και βάζουμε τους κόμβους στους αντίστοιχους κάδους. Και προχωράμε στον επόμενο μη-κενό κάδο. dist(a, b) = dist(a, a) + l(a, b) = = 4 dist(a, c) = dist(a, c) + l(a, c) = = 2 25

29 Βήμα 2 Σχήμα 2.15: Βήμα 2 Στο σχήμα 2.15 επιλέγουμε ως κόμβο με την ελάχιστη προσωρινή απόσταση τον c, χαλαρώνουμε τις εξερχόμενες ακμές και ενημερώνουμε τους γείτονες και βάζουμε τους κόμβους στους αντίστοιχους κάδους. Στην συνέχεια προχωράμε στον επόμενο μη-κενό κάδο. dist(a, b) = dist(a, c) + l(c, b) = = 3 dist(a, d) = dist(a, c) + l(c, d) = = 6 dist(a, e) = dist(a, c) + l(c, e) = = 4 Βήμα 3 Σχήμα 2.16: Βήμα 3 Στο σχήμα 2.16 επιλέγουμε ως κόμβο με την ελάχιστη προσωρινή απόσταση τον b, χαλαρώνουμε τις εξερχόμενες ακμές, ενημερώνουμε τους γείτονες και βάζουμε τους κόμβους στους αντίστοιχους κάδους. Και προχωράμε στον επόμενο μη-κενό κάδο. dist(a, e) = dist(a, b) + l(b, e) = = 6 > 4 δεν γίνεται καμία αλλαγή. 26

30 Βήμα 4 Σχήμα 2.17: Βήμα 4 Στο σχήμα 2.17 επιλέγουμε ως κόμβο με την ελάχιστη προσωρινή απόσταση τον e, χαλαρώνουμε τις εξερχόμενες ακμές, ενημερώνουμε τους γείτονες και βάζουμε τους κόμβους στους αντίστοιχους κάδους. Και προχωράμε στον επόμενο μη-κενό κάδο. dist(a, d) = dist(a, e) + l(e, d) = = 7 > 6 δεν γίνεται καμία αλλαγή. dist(a, t) = dist(a, e) + l(e, t) = = 6 Βήμα 5 Σχήμα 2.18: Βήμα 5 Στο σχήμα 2.18 επιλέγουμε ως κόμβο με την ελάχιστη προσωρινή απόσταση τον d, χαλαρώνουμε τις εξερχόμενες ακμές, ενημερώνουμε τους γείτονες και βάζουμε τους κόμβους στους αντίστοιχους κάδους. Άρα προχωράμε στον επόμενο μη-κενό κάδο. dist(a, t) = dist(a, d) + l(d, t) = = 8 > 6 δεν γίνεται καμία αλλαγή. 27

31 Βήμα 6 Σχήμα 2.19: Βήμα 6 Στο σχήμα 2.19 επιλέγουμε ως κόμβο με την ελάχιστη προσωρινή απόσταση τον t, καθώς όμως έχουν διευθετηθεί όλοι οι κόμβοι, ο αλγόριθμος τερματίζει έχοντας βρει τις συντομότερες διαδρομές από τον a προς όλους τους κόμβους του δικτύου Label-correcting Αλγόριθμοι: το παράδειγμα του αλγορίθμου των Bellman Ford Η κύρια διαφορά μεταξύ των label-setting και των label-correcting αλγορίθμων είναι ότι ενώ στους label-setting αλγόριθμους όπως ειπώθηκε παραπάνω σε κάθε επανάληψη ορίζουμε την μόνιμη ετικέτα ενός κόμβου v, στους label-correcting μπορούν να χαλαρώσουν ακμές από μη-διευθετημένους κόμβους και ο αριθμός των επαναλήψεων που χρειάζεται για να ολοκληρωθεί ο αλγόριθμος μπορεί να διαφέρει: Ολες οι ετικέτες θεωρούνται προσωρινές μέχρι το τελικό βήμμα, που όλες γίνονται μόνιμες. Ο καλύτερος label-setting αλγόριθμος έχει σημαντικά καλύτερο χρόνο χειρότερης περίπτωσης από οποιοδήποτε label-correcting αλγόριθμο Αλγόρθμος των Bellman Ford Ο αλγόριθμος των Bellman Ford [2] είναι ένας αλγόριθμος που λύνει το πρόβλημα εύρεσης συντομότερης διαδρομής μεταξύ ενός κόμβου αφετηρίας και ενός άλλου κόμβου προορισμού και ανήκει στην κατηγορία των Label-correcting αλγορίθμων. Για ένα δεδομένο ζευγάρι κόμβων s και t ενός γραφήματος G=(V,E), ο αλγόριθμος βρίσκει την διαδρομή απο το s στο t με το χαμηλότερο κόστος. Είσοδος-έξοδος: Η είσοδος του αλγορίθμου είναι ένα γράφημα G = (V, E) κατευθυνόμενο ή μη, τα βάρη των ακμών του γραφήματος, ένας κόμβος αφετηρίας s και ένας κόμβος-προορισμού t. Η έξοδος ανάλογα με το κριτήριο τερματισμού είναι ολόκληρο ή ένα μέρος απο το δένδρο των συντομότερων διαδρομών με ρίζα το s. 28

32 Περιορισμοί: Ο μόνος περιορισμός για την ορθή λειτουργία του αλγορίθμου είναι να μην υπάρχει στο γράφημα εισόδου αρνητικός κύκλος. Οταν ικανοποιείται ο περιορισμός αυτός,τότε υπάρχει εγγύηση ότι ο αλγόριθμος θα βρίσκει πάντα τις συντομότερες διαδρομές. Περιγραφή αλγορίθμου : Ο αλγόριθμος των Bellman Ford όπως και οποιοσδήποτε άλλος αλγόριθμος αναζήτησης συντομότερων διαδρομών, στηρίζεται πάνω σε μία στρατηγική εξερεύνησης του γραφήματος. Αρχικά οργανώνει τις ακμές του γραφήματος εισόδου G = (V, E) σε κάποια τυχαία σειρά. Στην συνέχεια περνάει μέσω όλων των ακμών E χαλαρώνοντας τις ακμές μία μία (με την ίδια σειρά με την οποία τις προσπέρασε). Δηλαδή, σε κάθε πέρασμα εξετάζει για κάθε ακμή (u, v)ɛe αν η συνθήκη d(v) > d(u) + wt(u, v) ισχύει και αν ναι, ανενεώνει d(v) = d(u) + wt(u, v) και θέτει pred(v) = u. Ο αλγόριθμος σταματάει όταν δεν γίνεται καμία αλλαγή σε ετικέτα σε κάποιο πέρασμα Χρονική πολυπλοκότητα Ο αλγόριθμος των Bellman Ford λύνει το πρόβλημα της εύρεσης των συντομότερων διαδρομών σε χρόνο O(nm). Απόδειξη: Αρκεί να δείξουμε ότι ο αλγόριθμος τρέχει το πολύ σε n-1 φάσεις. Τότε, θα έχουμε αποδείξει την χρονική πολυπλοκότητα καθώς κάθε φάση χρειάζεται O(m) αφού εξετάζουμε κάθε ακμή. Για να αποδείξουμε ότι ο αλγόριθμος χρειάζεται n-1 φάσεις, απλά πρέπει να δείξουμε ότι στο τέλος της k-οστής φάσης, 1 k n 1,ο αλγόριθμος θέτει d(v) = δ(s, v) για όλες τις συντομότερες s-v διαδρομές με το πολύ k ακμές. Αν αποδείξουμε την παραπάνω πρόταση, έχει ολοκληρωθεί η απόδειξή καθώς καμία συντομότερη διαδρομή στο G δεν περίεχει πάνω από n-1 ακμές. Χρησιμοποιούμε επαγωγή στο k. Για k = 1 ισχύει, καθώς d(s) = 0 = δ(s, s). Υ- ποθέτουμε ότι d(u) = δ(s, u) για όλες τις συντομοτέρες διαδρομές s u μονοπάτια με το πολύ k 1 ακμές. Υποθέτουμε τον κόμβο v τέτοιον ώστε κάθε s v συντομότερο μονοπάτι έχει ακριβώς k ακμές. Εστω ένα τέτοιο μονοπάτι s = v 1, v 2,..., v k = v. Α- πό την πρώτη ιδιότητα των συντομότερων διαδρομών της ενότητας το υπομονοπάτι s = v 1, v 2,..., v k 1 είναι το συνομότερο s v k 1 μονοπάτι, και άρα (από επαγωγική υπόθεση) d(v k 1 ) = δ(s, v k 1 ). Αφού δεν υπάρχει συντομότερο μονοπάτι s v με λιγότερο από k ακμές, η ακμή (v k 1, v k ) πρέπει να έχουν χαλαρώσει κατά την k-οστή φάση. Συνεπώς d(v k ) = d(v k 1 ) + wt(v k 1, v k ) = δ(s, v k 1 ) + wt(v k 1, v k ) = δ(s, v k ). 29

33 Σχήμα 2.20: Ψευδοκώδικας του αλγορίθμου Bellman Ford Παράδειγμα Στο σχήμα 2.21 φαίνεται το γράφημα πάνω στο οποίο εκτελείται ο αλγόριθμος των Bellman Ford για την εύρεση της συντομότερης διαδρομής από τον κόμβο s στο κόμβο t. Αρχικά φαίνεται το γράφημα με τα κόστη των ακμών ενώ στην συνέχεια περιγράφονται αναλυτικά τα πρώτα βήματα του αλγορίθμου και η τελική συντομότερη διαδρομή Αρχικό γράφημα Σχήμα 2.21: Αρχικό γράφημα 30

34 Βήμα 1 Σχήμα 2.22: Βήμα 1 Στο σχήμα 2.22 εξετάζουμε τις ακμές με την σειρά που τις έχουμε τοποθετήσει και χαλαρώνουμε όποια ακμή μπορούμε σε αυτό το βήμα. dist(s, a) = dist(s, s) + l(s, a) = 0 1 = 1 (ακμή (s, a)) dist(s, b) = dist(s, s) + l(s, b) = = 4 (ακμή (s, b)) dist(s, b) = dist(s, a) + l(a, b) = = 2 (ακμή (a, b)) Βήμα 2 Σχήμα 2.23: Βήμα 2 Στο σχήμα 2.23 εξετάζουμε τις ακμές με την σειρά που τις έχουμε τοποθετήσει και χαλαρώνουμε όποια ακμή μπορούμε σε αυτό το βήμα. dist(s, t) = dist(s, a) + l(a, t) = = 1 (ακμή (a, t)) dist(s, c) = dist(s, a) + l(a, c) = = 1 (ακμή (a, c)) dist(s, c) = dist(s, t) + l(t, c) = 1 3 = 2 (ακμή (t, c)) και ο αλγόριθμος ολοκληρώνεται. 31

35 2.4.8 Ο Αλγόριθμος -stepping Ο αλγόρθμος -stepping [15] είναι ένας αλγόριθμος που λύνει το πρόβλημα εύρεσης συντομότερης διαδρομής μεταξύ ενός κόμβου αφετηρίας και ενός άλλου κόμβου προορισμού. Για ένα δεδομένο ζευγάρι κόμβων s και t ενός γραφήματος G = (V, E), ο αλγόριθμος βρίσκει την διαδρομή απο το s στο t με το χαμηλότερο κόστος.η κύρια διαφορά του συγκεκριμένου αλγορίθμου με τον αλγόριθμο του Dijkstra είναι ότι προσπαθεί να βελτιώσει το χρόνο εύρεσης συντομότερων διαδρομών χαλαρώνοντας τον τρόπο που λειτουργεί η ουρά προτεραιότητας, χρησιμοποιώντας έναν μονοδιάστατο πίνακα B από κάδους. Είσοδος-έξοδος: Η είσοδος του αλγορίθμου είναι ένα γράφημα G = (V, E) κατευθυνόμενο ή μη, τα βάρη των ακμών του γραφήματος, ένας κόμβος αφετηρίας s και ένας κόμβος-προορισμού t. Η έξοδος ανάλογα με το κριτήριο τερματισμού είναι ολόκληρο ή ένα μέρος απο το δένδρο των συντομότερων διαδρομών με ρίζα το s. Περιορισμοί: Ο μόνος περιορισμός για την ορθή λειτουργία του αλγορίθμου είναι η χρήση μιας μηαρνητικής συνάρτησης κόστους. Οταν ικανοποιείται ο περιορισμός αυτός,τότε υπάρχει εγγύηση ότι ο αλγόριθμος θα βρίσκει πάντα τις συντομότερες διαδρομές. Περιγραφή αλγορίθμου : Ο αλγόριθμος -stepping όπως και οποιοσδήποτε άλλος αλγόριθμος αναζήτησης συντομότερων διαδρομών, στηρίζεται πάνω σε μία στρατηγική εξερεύνησης του γραφήματος. Ο αλγόριθμος, όπως αναφέρθηκε και παραπάνω, χρησιμοποιεί έναν μονοδιάστατο πίνακα B από κάδους έτσι ώστε στο B[i] να αποθηκεύεται το σύνολο {v V : tent(v)ɛ[i, (i + 1) )]} όπου είναι ένας θετικός πραγματικός αριθμός. Πιο συγκεκριμένα αν L max =ν [max(wt(e), e E)] είναι η μεγαλύτερη τιμή ενός συντομότερου μονοπατιού στο γράφημα, τότε ο B πρέπει να περιέχει L max / κάδους. Εστω Li οι λεπτές ακμές με wt(e),e E και He (βαριές) ακμές με wt(e) >,e E. Ο αλγόριθμος λειτουργεί σε φάσεις και σε κάθε φάση, όλοι οι κόμβοι αφαιρούνται από το κάδο στον οποίο βρίσκεται ο αλγόριθμος και όλες οι ακμές e Li γειτονικές σε αυτούς τους κόμβους χαλαρώνουν. Η διαδικασία αυτή μπορεί να έχει ως αποτέλεσμα να προστεθούν καινούριοι κόμβοι στον τρέχοντα κάδο. Είναι επίσης δυνατόν κόμβοι που είχαν προηγουμένως διαγραφεί από τον τρέχοντα κάδο να επανεισαχθούν και να διαγραφούν ξανά στην επόμενη φάση. Οταν ο τρέχων κάδος παραμείνει κενός μετά τις χαλαρώσεις, οι ακμές e He χαλαρώνουν. Ταυτόχρονα ο αλγόριθμος συνεχίζει ώσπου όλοι οι κάδοι να είναι κενοί. Στο σημείο αυτό παρατίθενται κάποιοι ορισμοί που θα χρησιμοποιηθούν στην συνέχεια. Ορίζουμε ως -μονοπάτι ένα οποιοδήποτε μονοπάτι στο γράφημα όπου έχει συνολικό βάρος το πολύ και ως C το σύνολο όλων των ζευγαριών των κόμβων (u, v) που συνδέονται με ένα -μονοπάτι (u,..., v) και ορίζουμε ως n = C. Ομοίως ορίζουμε ως C + το σύνολο 32

36 Σχήμα 2.24: Ψευδοκώδικας του -stepping των τριάδων (u, v, v) όπου (u, v ) C και (v, v) είναι λεπτή ακμή και m = C +. Τέλος οριζουμε ως l Delta το μέγιστο αριθμό συν ενα των ακμών που χρειάζεται για να ενώσουμε οποιοδήποτε ζευγάρι (u, v) C. Χρονική πολυπλοκότητα: Για να αποδείξουμε την χρονική πολυπλοκότητα του -stepping πρέπει αρχικά να αποδείξουμε τις παρακάτω προτάσεις Πρόταση Ο συνολικός αριθμός των εισαγωγών των κόμβων που έχουν ήδη εισαχθεί στον τρέχοντα κάδο είναι το πολύ ίσος με το αριθμό n = C και ο συνολικός αριθμός των χαλαρώσεων των ακμών που έχουν ήδη χαλαρωθεί είναι το πολύ m = C + Απόδειξη. Εστω ένας κόμβος v ο οποίος επαναεισήχθη στη φάση t. Θα πρέπει να υπάρχει μια προηγούμενη φάση t t όπου ο κόμβος v είχε διαγραφεί. Εστω οποιοδήποτε συντομότερο μονοπάτι A(v) = (s,.., v,..., v) όπου v είναι ο πρώτος μη-διευθετημένος κόμβος στο A(v) αμέσως πριν την φάση t. Άρα ο v έχει την τελική απόσταση απο το s. Α- κόμα, αφού ο v είναι τουλάχιστον το ίδιο κοντά στο s όσο και ο v οι κόμβοι v και v θα διαγραφούν στην φάση t και ο v θα διευθετηθεί ενώ ο v θα εισαχθεί πάλι στην φάση 33

37 t. Επιπροσθέτως αφού και οι κόμβοι v και v έχουν διαγραφεί στην φάση t, το μονοπάτι A (v, v) είναι και αυτό -μονοπάτι, (v, v)ɛc. Παρομοίως, κάθε χαλάρωση ακμής που έχει ήδη χαλαρώσει μπορεί να ταυτιστεί μοναδικά με μία επανεισαγωγή προσθέτοντας μια λεπτή ακμή e. Πρόταση Ο αριθμός των φάσεων του αλγόριθμου μπορεί να οριοθετηθεί από μία ως συνάρτηση του, του μέγιστου βάρους ενός μονοπατιού L και του μέγιστου μεγέθους l όπου l είναι ο μέγιστος αριθμός ακμών συν ένα, για ένα μονοπάτι με βάρος Απόδειξη. Ο αλγόριθμος συνεχώς αφαιρεί όλους του κόμβους από τον τρέχοντα κάδο και χαλαρώνει τις εξερχόμενες ακμές ώσπου ο κάδος παραμείνει άδειος. Τότε προχωρεί στον επόμενο κάδο. Για το μονοπάτι με το μέγιστο βάρος L πρέπει να διαπεράσει L/ κάδους. Άρα για να αποδειχθεί η παραπάνω πρόταση αρκεί να αποδείξουμε ότι το πολύ l φάσεις χρειάζονται ώσπου κάθε κάδος να παραμείνει άδειος. Εστω ένας κόμβος u διαφορετικός από το αρχικό κόμβο s με dist(u) B[i] και έστω (s..u 0, u 1...u l = u) το συντομότερο μονοπάτι από το s στο u τέτοιο ώστε οι κόμβοι από το u 1 έως u l διευθετούνται κατά τις επαναλήψεις στο B[i] και το l είναι ελάχιστο δηλαδή από όλα τα συντομότερα μονοπάτια στο u επιλέγουμε αυτό με τον ελάχιστο αριθμό κόμβων στο B[i]. Πριν αφαιρεθεί ο πρώτος κόμβος από το κάδο B[i], ο u 0 πρέπει να έχει διευθετηθεί σε προηγούμενο κάδο. Και άρα, η ακμή (u 0, u 1 ) έχει χαλαρώσει με την σωστή τιμή ετικέτας για τον u 0 και άρα ο κόμβος u 1 έχει την σωστή ετικέτα απόστασης. Άρα ο κόμβος u 1 διευθετείται στην πρώτη φάση του κάδου B[i]. Ομοίως αποδεικνύεται επαγωγικά ότι στην φάση j για το κάδο B[i], 1 j l ο κόμβος u j διευθετείται. Ομως το l δεν μπορεί να ξεπερνά το l αφού τότε το ζευγάρι (u 1, u l ) ɛc δεν θα είχε σύνδεση με λιγότερες από l ακμές κάτι που δεν γίνεται από τον ορισμό του l. Άρα μετά από l επαναλήψεις ο τελευταίος κόμβος του κάδου B[i] θα πρέπει να διευθετηθεί. Χρησιμοποιώντας την παράπάνω πρόταση μπορούμε να αποδείξουμε τον χρόνο εκτέλεσης του -stepping αλγορίθμου. Θεώρημα Ο σειριακός αλγόριθμος -stepping έχει χρονική πολυπλοκότητα O(n+ m + L/ + n + m ) Απόδειξη. Χρεώνουμε τις λειτουργίες που εκτελεί ο -stepping σε ένα από τους n κόμβους, σε μία από τις ακμές, σε ένα από τους πολύ L/ άδειους διαπερασμένους κάδους ή σε ένα από τα στοιχεία του C ή του C +. Μπορούμε να βρούμε την χρονική πολυπλοκότητα του αλγορίθμου δείχνοντας ότι κανένα από τα παραπάνω αντικείμενα δεν παίρνει πάνω από μία σταθερή χρέωση. Οι έλεγχοι στην επανάληψη μπορούν να εκτελεστούν σε σταθερό χρόνο κρατώντας μετρητές για το μέγεθος των κάδων και των αθροίσματών τους. Το κόστος τους μπορεί να χρεωθεί στους κόμβους καθώς σε κάθε επανάληωη τουλάχιστον ένας κόμβος γίνεται διευθετινόμενος. Ο χρόνος για να βρεθεί ο επόμενος μη-κενός κάδος μπορεί να χρεωθεί στους κενούς κάδους όπου εξετάζουμε κάθε έναν από αυτούς μόνο μία φορά Ο χρόνος για να βρεθούν οι λεπτές ακμές καθώς και η χαλάρωση αυτών χρειάζεται σταθερή δουλειά για κάθε επανεισαγωγή κόμβων ή επαναχαλάρωση. Αυτές οι λειτουργίες 34

38 μπορού να χρεωθούν στα στοιχεία του C καθώς ο συνολικός αριθμός επανεισαγωγής κόμβων δεν μπορεί να είναι μεγαλύτερος από τον αριθμό των κόμβων στο C με βάση την πρόταση Ο χρόνος για την χαλάρωστη των βαριών ακμών μπορεί να χρεωθεί στους κόμβους και στις ακμές καθώς οι βαριές ακμές χαλαρώνουν μόνο μία φορά. Παράδειγμα Στο σχήμα 2.25 φαίνεται το γράφημα πάνω στο οποίο εκτελείται ο αλγόριθμος του - stepping για την εύρεση της συντομότερης διαδρομής από τον κόμβο a στο κόμβο e. Αρχικά φαίνεται το γράφημα με τα κόστη των ακμών, ενώ στην συνέχεια περιγράφονται αναλυτικά τα πρώτα βήματα του αλγορίθμου και η τελική συντομότερη διαδρομή. Αρχικό γράφημα Σχήμα 2.25: Αρχικό γράφημα 35

39 Βήμα 1 Σχήμα 2.26: Βήμα 1 Στο σχήμα 2.26 βρίσκουμε τον πρώτο μη-κενό κάδο που είναι ο κάδος 0. Στην συνέχεια προσθέτουμε στο set R τις αιτήσεις για τις χαλαρές ακμές του κόμβου a οποίος βρίσκεται στον κάδο 0. Βήμα 2 Σχήμα 2.27: Βήμα 2 Στο σχήμα 2.27 διαγράφουμε τον κόμβο a και τον προσθέτουμε στο set S ώστε να τον θυμόμαστε. 36

40 Βήμα 3 Σχήμα 2.28: Βήμα 3 Στο σχήμα 2.28 χαλαρώνουμε τους κόμβους d και c. dist(a, d) = dist(a, a) + l(a, d) = = 1 dist(a, c) = dist(a, a) + l(a, c) = = 3 Στην συνέχεια, τους προσθέτουμε στο κάδο 0. Τέλος, προσθέτουμε στο set R τις αιτήσεις για τις χαλαρές ακμές του κόμβου c,d οι οποίοι βρίσκονται στον κάδο 0. Βήμα 4 Σχήμα 2.29: Βήμα 4 Στο σχήμα 2.29 διαγράφουμε τους κόμβους d,c και τους τοποθετούμε στο set S ώστε να τους θυμόμαστε. 37

41 Βήμα 5 Σχήμα 2.30: Βήμα 5 Στο σχήμα 2.30 χαλαρώνουμε τους κόμβους b και c. dist(a, b) = dist(a, b) + l(c, b) = = 5 dist(a, c) = dist(a, d) + l(d, c) = = 2 Στην συνέχεια, προσθέτουμε τον κόμβο b στο κάδο 1 και το κόμβο c στον κάδο 0. Τέλος, προσθέτουμε στο set R τις αιτήσεις για τις χαλαρές ακμές του κόμβου c ο οποίος βρίσκεται στον κάδο 0. Βήμα 6 Σχήμα 2.31: Βήμα 6 Στο σχήμα 2.31 χαλαρώνουμε τον κόμβο b dist(a, b) = dist(a, c) + l(c, b) = = 4 και τον προσθέτουμε πάλι στο κάδο 1. Τέλος, αφού ο κάδος 0 είναι άδειος προχωράμε στην χαλάρωση των βαριών ακμών των κόμβων a,b,c: dist(a, b) = dist(a, a) + l(a, b) = = 4 dist(a, f) = dist(a, d) + l(d, f) = = 6 38

42 και προσθέτουμε τον κόμβο f στο κάδο 1. Βήμα 7 Σχήμα 2.32: Βήμα 7 Στο σχήμα 2.32 βρίσκουμε τον πρώτο μη-κενό κάδο που είναι ο κάδος 1. Στην συνέχεια προσθέτουμε στο set R τις αιτήσεις για τις χαλαρές ακμές του κόμβου b,f οι οποίοι βρίσκονται στον κάδο 1. Βήμα 8 Σχήμα 2.33: Βήμα 8 Στο σχήμα 2.33 διαγράφουμε τον κόμβο b,f και τους προσθέτουμε στο set S ώστε να τους θυμόμαστε. 39

43 Βήμα 9 Σχήμα 2.34: Βήμα 9 Στο σχήμα 2.34 χαλαρώνουμε τον κόμβο f dist(a, f) = dist(a, b) + l(b, f) = = 5 και τον προσθέτουμε στο κάδο 1. Βήμα 10 Σχήμα 2.35: Βήμα 10 Στο σχήμα 2.35 καθώς ο κόμβος f δεν έχει λεπτές ακμές απλά τον διαγράφουμε και αφού ο κάδος 1 γίνει κενός προχωράμε στην χαλάρωση των βαριών ακμών των κόμβων b,f: dist(a, e) = dist(a, b) + l(b, e) = = 13 και τοποθετούμε τον κόμβο e στο κάδο 5. 40

44 Βήμα 11 Σχήμα 2.36: Βήμα 11 Στο σχήμα 2.36 βρίσκουμε τον πρώτο μη-κενό κάδο που είναι ο κάδος 5. Αφού όμως ο κόμβος e δεν έχει εξερχόμενες ακμές απλά τον διαγράφουμε και ο αλγόριθμος τερματίζει Παράλληλος αλγόρθμος -stepping Η ιδέα του παράλληλου -stepping [15] αλγόριθμου είναι να παραμείνει η σειριακή αναζήτηση για το επόμενο μη κενό κάδο αλλά οι ενέργειες της κάθε φάσης για το τρέχοντα κάδο να εκτελεστούν παράλληλα. Προκειμένου να πραγματοποιηθεί η παραπάνω ίδεα δημιουργήθηκαν διάφορες στατηγικές για το πως η δουλειά της κάθε φάσης να διαμοιραστεί ανάμεσα στους επεξεργαστές. Προεπεξεργασία: Οι κόμβοι ανατίθενται τυχαία στους επεξεργαστές δημιουργώντας αρχικά ένα πίνακα με δείκτες "ind" για τους επεξεργαστές. Κάθε εγγραφή ind[u] δείχνει τον επεξεργαστή που είναι υπεύθυνος για τον κόμβο u. Κάθε ένας από τους p επεξεργαστές κρατάει την δικιά του δομή για κάθε κάδο όπου και αποθηκεύει τους κόμβους για τους οποίους είναι υπεύθυνος. Ελεγχος επαναλήψεων: Κάθε επεξεργαστής διαπερνά τοπικά τους δικούς του άδειους κάδους σε σταθερό χρόνο ανά κάδο. Σε κάθε επανάληψη ελέγχεται αν κάποιος επεξεργαστής έχει βρει ένα μη κενό κάδο και με τον τρόπο αυτό βρίσκεται ο μικρότερος δείκτης μη κενού κάδου για όλους τους επεξεργαστές. Δημιουργία αιτήσεων: Αρχικά όλοι οι επεξεργαστές δημιουργούν ένα άδειο buffer για να τοποθετηθούν οι αιτήσεις που τους αναλογούν. Εστω Req i το σύνολο των αιτήσεων από τον επεξεργαστή i. Κάθε αίτηση (w, x) Req i πρέπει να μεταφερθεί στον άδειο buffer του επεξεργαστή ind(w). Κα- 41

45 θώς όμως για την τοποθέτηση των αιτήσεων οι επεξεργαστές χρησιμοποιούν την τεχνική της τυχαίας τοποθέτησης πολλοί επεξεργαστές μπορεί να προσπαθήσουν να γράψουν στην ίδια θέση μνήμης. Οπως φαίνεται και στο παράδειγμα της εικόνας 2.37 ο επεξεργαστής P 0 καταφέρνει να τοποθετήσει την αίτησή του στο buffer του B 2. Ενώ οι επεξεργαστές P 1 και P 2 προσπαθούν να γράψουν στην ίδια θέση του B 1. Στην συγκεκριμένη περίπτωση ο P 2 νικάει και ο P 1 πρέπει να ψάξει για μια άλλη θέση στο B 1. Ο P 3 αποτυγχάνει η συγκεκριμένη καθώς η θέση είναι ήδη κατειλημμένη. Ο κίνδυνος αυτός μπορεί να αποφευχθεί μεγαλώνοντας το μέγεθο του buffer καθώς η πιθανότητα επιτυχίας μιας αίτησης είναι ανάλογη με το μέγεθος του buffer που θα χρησιμοποιήσουμε.τέλος στην περίπτωση που ο buffer είναι μικρός, η ορθότητα του αλγορίθμου μπορεί να διατηρηθεί ελέγχοντας περιοδικά αν οι εγγραφές των αιτήσεων έχουν όλες επιτευχθεί και να αυξηθεί το μέγεθος του buffer αν χρειάζεται. Εκτέλεση αιτήσεων: Κάθε επεξεργαστής διαπερνά τον δικό του buffer και εκτελεί μία μία τις αιτήσεις που του αναλογούν. Καθώς κανένας άλλος επεξεργαστής δεν εργάζεται πάνω στους ίδιους κόμβους οι χαλαρώσεις γίνονται ατομικά. Τέλος αθροίζοντας το κόστος της κάθε φάσης και χρησιμοποιώντας την πρόταση 2.4.3, βρίσκουμε ότι ο χρόνος εκτέλεσης του παράλληλου -stepping είναι O((n + m + n + m )/p + L/ dl logn) Σχήμα 2.37: Τυχαία τοποθέτηση αίτησεων σε buffer Τέλος, ενώ τα βήματα του παράλληλου αλγορίθμου είναι αυτά που αναλύθηκαν παραπάνω, μπορούν να χρησιμοποιηθούν διάφορες παραλλαγές ώστε να έχουμε περισσότερη ισορροπία ανάμεσα στις δουλειές που αναλαμβάνει κάθε επεξεργαστής. Πιο συγκεκριμένα αντί να γίνεται ταξινόμηση όλων των αιτήσεων χρειάζεται μόνο ημι-ταξινόμηση δηλαδή να οργανωθούν οι αιτήσεις έτσι ώστε όλες οι αιτήσεις για τον ίδιο κόμβο να βρίσκονται στην ίδια ομάδα. Στην συνέχεια μόνο η αίτηση με τον μικρότερο χρόνο θα επιλεγεί και θα εκτελεστεί. Με τον τρόπο αυτό ο επεξεργαστής θα πρέπει να εκτελέσει μόνο μια αίτηση για τον 42

46 κάθε κόμβο. Στο παράδειγμα της εικόνας 2.38 φαίνεται πως οι επεξεργαστές συνεργάζονται για την δημιουργία του συνόλου των αιτήσεων: Οι μεγάλες λίστες γειτνίασης χειρίζονται από ο- μάδες PUs. Στην συνέχεια, οι παραγόμενες αιτήσεις ομαδοποιούνται μέσω ημι-ταξινόμησης. Στην συνέχεια, οι περιττές αιτήσεις φιλτράρονται, και οι υπόλοιπες αιτήσεις στέλνονται στο κατάλληλους επεξεργαστές. Στο συγκεκριμένο παράδειγμα αν δεν υπήρχε εξισορρόπηση ο επεξεργαστής P 0 θα ήταν υπερφορτωμένος κατά την διάρκεια της παραγωγής των αιτήσεων ενώ ο επεργαστής P 1 θα λάμβανε πάρα πολλές αιτήσεις.παραγόμενες Σχήμα 2.38: Ημι-ταξινόμηση των αιτήσεων 43

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

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

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

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

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

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

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

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

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

Διαχρονικές δομές δεδομένων

Διαχρονικές δομές δεδομένων Διαχρονικές δομές δεδομένων Μια τυπική δομή δεδομένων μεταβάλλεται με πράξεις εισαγωγής ή διαγραφής Π.χ. κοκκινόμαυρο δένδρο εισαγωγή 0 18 0 5 39 73 1 46 6 80 Αποκατάσταση ισορροπίας 5 39 73 0 46 6 80

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

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

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

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

ΠΑΡΑΣΚΕΥΟΠΟΥΛΟΣ ΑΝΔΡΕΑΣ Α.Μ.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προσεγγιστικοί Αλγόριθμοι

Προσεγγιστικοί Αλγόριθμοι Πολλά NP-πλήρη προβλήματα έχουν μεγάλο πρακτικό ενδιαφέρον. http://xkcd.com/287/ Πολλά NP-πλήρη προβλήματα έχουν μεγάλο πρακτικό ενδιαφέρον. Πως μπορούμε να αντιμετωπίσουμε το γεγονός ότι είναι απίθανη(;)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

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

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

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

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

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

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

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

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

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

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

Επιµέλεια Θοδωρής Πιερράτος

Επιµέλεια Θοδωρής Πιερράτος εδοµένα οµές δεδοµένων και αλγόριθµοι Τα δεδοµένα είναι ακατέργαστα γεγονότα. Η συλλογή των ακατέργαστων δεδοµένων και ο συσχετισµός τους δίνει ως αποτέλεσµα την πληροφορία. Η µέτρηση, η κωδικοποίηση,

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

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

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

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

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

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

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

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

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

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

Διάλεξη 4: Απόδειξη: Για την κατεύθυνση, παρατηρούμε ότι διαγράφοντας μια κορυφή δεν μπορούμε να διαχωρίσουμε τα u και v. Αποδεικνύουμε

Διάλεξη 4: Απόδειξη: Για την κατεύθυνση, παρατηρούμε ότι διαγράφοντας μια κορυφή δεν μπορούμε να διαχωρίσουμε τα u και v. Αποδεικνύουμε Διάλεξη 4: 20.10.2016 Θεωρία Γραφημάτων Γραφέας: Σ. Κ. Διδάσκων: Σταύρος Κολλιόπουλος 4.1 2-συνεκτικά γραφήματα (συνέχεια) Πρόταση 4.1 Δύο μπλοκ ενός γραφήματος G μοιράζονται το πολύ μία κορυφή. Απόδειξη:

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

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

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

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

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

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

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

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

Κατανεμημένα Συστήματα Ι Εκλογή αρχηγού σε γενικά δίκτυα 20 Οκτωβρίου 2016 Παναγιώτα Παναγοπούλου Εκλογή αρχηγού σε γενικά δίκτυα Προηγούμενη διάλεξη Σύγχρονα Κατανεμημένα Συστήματα Μοντελοποίηση συστήματος Πρόβλημα εκλογής αρχηγού

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

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

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

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

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

Κατανεμημένα Συστήματα Ι Κατανεμημένα Συστήματα Ι Παναγιώτα Παναγοπούλου 11η Διάλεξη 12 Ιανουαρίου 2017 1 Ανεξάρτητο σύνολο Δοθέντος ενός μη κατευθυνόμενου γραφήματος G = (V, E), ένα ανεξάρτητο σύνολο (independent set) είναι ένα

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

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

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

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

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 3 1. Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή 2. Δυναμικές είναι οι δομές που αποθηκεύονται σε συνεχόμενες θέσεις μνήμης 3. Ένας πίνακας

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

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

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

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

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

Διαχείριση Εφοδιαστικής Αλυσίδας ΙΙ Διαχείριση Εφοδιαστικής Αλυσίδας ΙΙ 1 η Διάλεξη: Αναδρομή στον Μαθηματικό Προγραμματισμό 2019, Πολυτεχνική Σχολή Εργαστήριο Συστημάτων Σχεδιασμού, Παραγωγής και Λειτουργιών Περιεχόμενα 1. Γραμμικός Προγραμματισμός

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

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

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

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

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

Κατανεμημένα Συστήματα Ι Συναίνεση χωρίς την παρουσία σφαλμάτων Κατανεμημένα Συστήματα Ι 4η Διάλεξη 27 Οκτωβρίου 2016 Παναγιώτα Παναγοπούλου Κατανεμημένα Συστήματα Ι 4η Διάλεξη 1 Συναίνεση χωρίς την παρουσία σφαλμάτων Προηγούμενη

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

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

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

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

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

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

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

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

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

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

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

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 12/10/2017

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

Οι δυναμικές δομές δεδομένων στην ΑΕΠΠ

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

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

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 21/10/2016

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

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

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

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

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

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

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

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

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

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 3ο: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΜΕΡΟΣ 2 ο : ΣΤΟΙΒΑ & ΟΥΡΑ ΙΣΤΟΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ: http://eclass.sch.gr/courses/el594100/ ΣΤΟΙΒΑ 2 Μια στοίβα

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

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

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

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

3. Προσομοίωση ενός Συστήματος Αναμονής.

3. Προσομοίωση ενός Συστήματος Αναμονής. 3. Προσομοίωση ενός Συστήματος Αναμονής. 3.1. Διατύπωση του Προβλήματος. Τα συστήματα αναμονής (queueing systems), βρίσκονται πίσω από τα περισσότερα μοντέλα μελέτης της απόδοσης υπολογιστικών συστημάτων,

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

ΠΛΗ 20, 4 η ΟΣΣ: Βασικές Έννοιες Θεωρίας Γραφημάτων

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

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

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

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

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

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

ΤΕΙ ΛΑΜΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ ΥΠΟΛΟΓΙΣΤΩΝ ÌïëëÜ Ì. Á μýô Á.Ì. : 5 moll@moll.r ΤΕΙ ΛΑΜΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑ ΥΠΟΛΟΓΙΣΤΩΝ ΜΑΘΗΜΑ : ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΙΑΔΙΚΤΥΟ (ΕΡΓΑΣΤΗΡΙΟ) Ε ΕΞΑΜΗΝΟ ΕΙΣΗΓΗΤΕΣ: Χαϊδόγιαννος Χαράλαμπος ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ

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

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

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

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

Διάλεξη 4: Θεωρία Γραφημάτων Γραφέας: Σ. Κ. Διδάσκων: Σταύρος Κολλιόπουλος συνεκτικά γραφήματα (συνέχεια) Πρόταση 4.1 Δύο μπλοκ ενός

Διάλεξη 4: Θεωρία Γραφημάτων Γραφέας: Σ. Κ. Διδάσκων: Σταύρος Κολλιόπουλος συνεκτικά γραφήματα (συνέχεια) Πρόταση 4.1 Δύο μπλοκ ενός Διάλεξη 4: 20.10.2016 Θεωρία Γραφημάτων Γραφέας: Σ. Κ. Διδάσκων: Σταύρος Κολλιόπουλος 4.1 2-συνεκτικά γραφήματα (συνέχεια) Πρόταση 4.1 Δύο μπλοκ ενός γραφήματος G μοιράζονται το πολύ μία κορυφή. Απόδειξη:

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

Κεφάλαιο 11 Ένωση Ξένων Συνόλων

Κεφάλαιο 11 Ένωση Ξένων Συνόλων Κεφάλαιο 11 Ένωση Ξένων Συνόλων Περιεχόμενα 11.1 Εισαγωγή... 227 11.2 Εφαρμογή στο Πρόβλημα της Συνεκτικότητας... 228 11.3 Δομή Ξένων Συνόλων με Συνδεδεμένες Λίστες... 229 11.4 Δομή Ξένων Συνόλων με Ανοδικά

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

Ενδεικτικές Ερωτήσεις Θεωρίας

Ενδεικτικές Ερωτήσεις Θεωρίας Ενδεικτικές Ερωτήσεις Θεωρίας Κεφάλαιο 2 1. Τι καλούμε αλγόριθμο; 2. Ποια κριτήρια πρέπει οπωσδήποτε να ικανοποιεί ένας αλγόριθμος; 3. Πώς ονομάζεται μια διαδικασία που δεν περατώνεται μετά από συγκεκριμένο

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

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

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

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

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

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

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

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

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

Αλγόριθμοι Ταξινόμησης Μέρος 4

Αλγόριθμοι Ταξινόμησης Μέρος 4 Αλγόριθμοι Ταξινόμησης Μέρος 4 Μανόλης Κουμπαράκης Δομές Δεδομένων και Τεχνικές 1 Μέθοδοι Ταξινόμησης Βασισμένοι σε Συγκρίσεις Κλειδιών Οι αλγόριθμοι ταξινόμησης που είδαμε μέχρι τώρα αποφασίζουν πώς να

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

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

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

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

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

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

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

1 Διάσχιση κατευθυνόμενων γραφημάτων

1 Διάσχιση κατευθυνόμενων γραφημάτων ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΜΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2010 11 Ιστοσελίδα μαθήματος: http://eclass.teilam.gr/di288 5ο ΕΡΓΑΣΤΗΡΙΟ

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

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

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

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

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

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

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

Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων

Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων Κ Σ Ι Ενδεικτικές Λύσεις 1ου Σετ Ασκήσεων Παναγιώτα Παναγοπούλου Άσκηση 1. Υποθέστε ότι οι διεργασίες ενός σύγχρονου κατανεμημένου συστήματος έχουν μοναδικές ταυτότητες (UIDs), γνωρίζουν ότι είναι συνδεδεμένες

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στους Αλγόριθμους Εισαγωγή στους Αλγόριθμους Εύη Παπαϊωάννου Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διαχείρισης Πολιτισμικού Περιβάλλοντος και Νέων Τεχνολογιών Σκοποί ενότητας Παρουσίαση και μελέτη αλγορίθμων

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

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

Αλγόριθµοι Γραφηµάτων Αλγόριθµοι Γραφηµάτων Παύλος Σπυράκης Πανεπιστήµιο Πατρών Τοµέας Θεµελιώσεων και Εφαρµογών της Επιστήµης των Υπολογιστών Ερευνητικό Ακαδηµαϊκό Ινστιτούτο Τεχνολογίας Υπολογιστών Γραφήµατα Μοντελοποίηση

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

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

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

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

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

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

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

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

Ασκήσεις στους Γράφους. 1 ο Σετ Ασκήσεων Βαθμός Μονοπάτια Κύκλος Euler Κύκλος Hamilton Συνεκτικότητα

Ασκήσεις στους Γράφους. 1 ο Σετ Ασκήσεων Βαθμός Μονοπάτια Κύκλος Euler Κύκλος Hamilton Συνεκτικότητα Ασκήσεις στους Γράφους 1 ο Σετ Ασκήσεων Βαθμός Μονοπάτια Κύκλος Euler Κύκλος Hamilton Συνεκτικότητα Ασκηση 1 η Να αποδείξετε ότι κάθε γράφημα περιέχει μια διαδρομή από μια κορυφή u σε μια κορυφή w αν και

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

Δυναμικός προγραμματισμός για δέντρα

Δυναμικός προγραμματισμός για δέντρα ΘΕ5 Ιδιότητες Δέντρων και Αναδρομή για Δέντρα Δυναμικός προγραμματισμός για δέντρα Έστω ότι, για k=1,..., m, το γράφημα Γ k = (V k, E k ) είναι δέντρο. Έστω w V 1... V m, z k V k, για k=1,..., m. Συμβολίζουμε

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

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

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΡΧΗ 1ης ΣΕΛΙ ΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΦΕΒΡΟΥΑΡΙΟΥ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 ΘΕΜΑ Α :

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

2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ

2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ 2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ Προκειμένου να επιτευχθεί η «ακριβής περιγραφή» ενός αλγορίθμου, χρησιμοποιείται κάποια γλώσσα που μπορεί να περιγράφει σειρές ενεργειών με τρόπο αυστηρό,

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

5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων

5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 5. Απλή Ταξινόμηση 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 11/11/2016 Εισαγωγή Η

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