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



Σχετικά έγγραφα
Αλγόριθμοι Γραφημάτων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 2: Μαθηματικό Υπόβαθρο

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

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

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

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

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

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

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

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

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

Αλγόριθμοι εύρεσης ελάχιστων γεννητικών δέντρων (MST)

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

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

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

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

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

Κεφάλαιο 2. Η δομή δεδομένων Σωρός και η Ταξινόμηση Σωρού (The Heap data structure and Heapsort) Έκδοση 1.3, 14/11/2014

Union Find, Λεξικό. Δημήτρης Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Εθνικό Μετσόβιο Πολυτεχνείο

ΠΛΗ 20, 6 η ΟΣΣ: Δέντρα Εξετάσεις

Δομές δεδομένων. Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

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

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

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

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

I 1 I 2 I 3 I 4 I 5 I 6 I 7 I 8 I 9 I 10 I 11

d(v) = 3 S. q(g \ S) S

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

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

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

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

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

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

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

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

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

Πρόβληµα (ADT) Λεξικού. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 2

Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort

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

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

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

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

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

ΕΝΟΤΗΤΑ 9 ΕΝΩΣΗ ΞΕΝΩΝ ΣΥΝΟΛΩΝ ( ΟΜΕΣ UNION-FIND)

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

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

Transcript:

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

Άπληστοι Αλγόριθμοι Είναι δύσκολο να ορίσουμε ακριβώς την έννοια του άπληστου αλγόριθμου. Γενικά ένας άπληστος αλγόριθμος (greedy algorithm) κατασκευάζει μια λύση τμηματικά επιλέγοντας πάντοτε το επόμενο τμήμα το οποίο προσφέρει το πιο προφανές και άμεσο όφελος. Για κάποια προβλήματα αυτή η στρατηγική είναι καταστροφική αλλά για άλλα είναι βέλτιστη. Χαροκόπειο Πανεπιστήμιο 2/62

Χρονοπρογραμματισμός Διαστημάτων Είσοδος. Σύνολο αιτημάτων {1, 2,..., n}. Αίτημα i ξεκινά την χρονική στιγμή s(i) και τερματίζει την f(i). Έξοδος. To μέγιστο συμβατό υποσύνολο αιτημάτων, όπου ένα υποσύνολο είναι συμβατό εαν ανά δύο τα αιτήματα δεν επικαλύπτονται χρονικά. Χαροκόπειο Πανεπιστήμιο 3/62

Χρονοπρογραμματισμός Διαστημάτων a b c d e f g 0 1 2 3 4 5 6 7 8 9 10 11 12 13 h Χαροκόπειο Πανεπιστήμιο 4/62

Χρονοπρογραμματισμός Διαστημάτων Ένας άπληστος αλγόριθμος για το πρόβλημα χρονοπρογραμματισμού διαστημάτων χρησιμοποιεί έναν απλό κανόνα για να κάνει επιλογή αιτημάτων με βάση την λογική που ακολουθεί..1 επιλέγει ένα αίτημα i 1.2 διαγράφει όλα τα αιτήματα που δεν είναι συμβατά με το i 1.3 κατόπιν επιλέγει ένα άλλο αίτημα i 2.4 διαγράφει όλα τα αιτήματα που δεν είναι συμβατά με το i 2.5 συνεχίζει έτσι μέχρι να τελειώσουν τα δυνατά αιτήματα Χαροκόπειο Πανεπιστήμιο 5/62

Χρονοπρογραμματισμός Διαστημάτων Ένας άπληστος αλγόριθμος για το πρόβλημα χρονοπρογραμματισμού διαστημάτων χρησιμοποιεί έναν απλό κανόνα για να κάνει επιλογή αιτημάτων με βάση την λογική που ακολουθεί..1 επιλέγει ένα αίτημα i 1.2 διαγράφει όλα τα αιτήματα που δεν είναι συμβατά με το i 1.3 κατόπιν επιλέγει ένα άλλο αίτημα i 2.4 διαγράφει όλα τα αιτήματα που δεν είναι συμβατά με το i 2.5 συνεχίζει έτσι μέχρι να τελειώσουν τα δυνατά αιτήματα Δεν μπορεί να πάρει πίσω μια επιλογή αιτήματος. Χαροκόπειο Πανεπιστήμιο 5/62

Χρονοπρογραμματισμός Διαστημάτων Μπορούμε να παρουσιάσουμε τον ίδιο αλγόριθμο ως εξής:.1 ταξινόμησε τα αιτήματα με βάση κάποιο κριτήριο.2 διάλεξε ένα αίτημα εαν είναι συμβατό με τα αιτήματα που έχεις ήδη διαλέξει Χαροκόπειο Πανεπιστήμιο 6/62

Χρονοπρογραμματισμός Διαστημάτων Μπορούμε να παρουσιάσουμε τον ίδιο αλγόριθμο ως εξής:.1 ταξινόμησε τα αιτήματα με βάση κάποιο κριτήριο.2 διάλεξε ένα αίτημα εαν είναι συμβατό με τα αιτήματα που έχεις ήδη διαλέξει Λειτουργεί σωστά ένας τέτοιος αλγόριθμος; Χαροκόπειο Πανεπιστήμιο 6/62

Χρονοπρογραμματισμός Διαστημάτων Μπορούμε να παρουσιάσουμε τον ίδιο αλγόριθμο ως εξής:.1 ταξινόμησε τα αιτήματα με βάση κάποιο κριτήριο.2 διάλεξε ένα αίτημα εαν είναι συμβατό με τα αιτήματα που έχεις ήδη διαλέξει Λειτουργεί σωστά ένας τέτοιος αλγόριθμος; Για να απαντήσουμε πρέπει καταρχήν να ορίσουμε τον κανόνα επιλογής των αιτημάτων. Χαροκόπειο Πανεπιστήμιο 6/62

Χρονοπρογραμματισμός Διαστημάτων Μικρότερος Χρόνος Έναρξης Φανταστείτε τον αλγόριθμο που επιλέγει πρώτα το αίτημα που ξεκινά πιο νωρίς. a b d c 0 1 2 3 4 5 6 7 8 9 10 11 12 13 Ο αλγόριθμος θα επιλέξει πρώτα το αίτημα c ενώ η καλύτερη λύση είναι a, b, και d. Ο αλγόριθμος δεν είναι βέλτιστος! Χαροκόπειο Πανεπιστήμιο 7/62

Χρονοπρογραμματισμός Διαστημάτων Μικρότερου Μήκους Διάστημα Έστω ο αλγόριθμος που επιλέγει πρώτα το αίτημα που έχει την μικρότερη διάρκεια. b c a 0 1 2 3 4 5 6 7 8 9 10 11 12 13 Ο αλγόριθμος θα επιλέξει πρώτα το αίτημα a ενώ η καλύτερη λύση είναι b, c. Ο αλγόριθμος δεν είναι βέλτιστος! Χαροκόπειο Πανεπιστήμιο 8/62

Χρονοπρογραμματισμός Διαστημάτων Αίτημα όπου f( ) είναι ελάχιστο Έστω ο αλγόριθμος που επιλέγει πρώτα το αίτημα που τελειώνει πρώτο, δηλαδή το αίτημα i όπου ο χρόνος f(i) είναι όσο το δυνατόν μικρότερος..1 διασφαλίζει ότι οι πόροι μας θα απελευθερωθούν όσο το δυνατόν πιο σύντομα.2 μεγιστοποιεί τον χρόνο που απομένει για την ικανοποίηση των άλλων αιτημάτων.3 θα αποδείξουμε πως βρίσκει την βέλτιστη λύση Χαροκόπειο Πανεπιστήμιο 9/62

Χρονοπρογραμματισμός Διαστημάτων Αίτημα όπου f( ) είναι ελάχιστο Συντομότερος χρόνος ολοκλήρωσης Έστω R το σύνολο όλων των αιτημάτων και A κενό while R δεν είναι κενό do Διάλεξε ένα αίτημα i R που έχει το συντομότερο χρόνο ολοκλήρωσης Πρόσθεσε το i στο σύνολο A Διάγραψε από το R το αίτημα i και όλα τα αιτήματα που δεν είναι συμβατά με το i end return το σύνολο A Χαροκόπειο Πανεπιστήμιο 10/62

Παράδειγμα Χαροκόπειο Πανεπιστήμιο 11/62

Παράδειγμα Χαροκόπειο Πανεπιστήμιο 11/62

Παράδειγμα Χαροκόπειο Πανεπιστήμιο 11/62

Παράδειγμα Χαροκόπειο Πανεπιστήμιο 11/62

Παράδειγμα Χαροκόπειο Πανεπιστήμιο 11/62

Παράδειγμα Χαροκόπειο Πανεπιστήμιο 11/62

Παράδειγμα Χαροκόπειο Πανεπιστήμιο 11/62

Παράδειγμα Χαροκόπειο Πανεπιστήμιο 11/62

Παράδειγμα Χαροκόπειο Πανεπιστήμιο 11/62

Χρονοπρογραμματισμός Διαστημάτων Αίτημα όπου f( ) είναι ελάχιστο Πρέπει να αποδείξουμε πως ο αλγόριθμος αυτός βρίσκει όντως την βέλτιστη λύση. Ορθότητα. Καταρχήν είναι προφανές πως ο αλγόριθμος επιστρέφει ένα σύνολο αιτημάτων που είναι συμβατά. Απομένει να δείξουμε πως η λύση είναι βέλτιστη. Έστω λοιπόν για λόγους σύγκρισης ότι O είναι ένα βέλτιστο σύνολο χρονικών διαστημάτων..1 είναι υπερβολή να προσπαθήσουμε να αποδείξουμε πως A = O μιας και μπορεί να υπάρχουν πολλές βέλτιστες λύσεις.2 αρκεί να δείξουμε πως A = O Χαροκόπειο Πανεπιστήμιο 12/62

Χρονοπρογραμματισμός Διαστημάτων Απόδειξη Βέλτιστης Λύσης Λύση αλγορίθμου. Έστω i 1,..., i k το σύνολο αιτημάτων στο A με τη σειρά με την οποία προστέθηκαν στο A. Βέλτιστη λύση. Έστω j 1,..., j m το σύνολο αιτημάτων στο O. Υποθέστε πως είναι ταξινομημένα με τη σειρά των χρονικών σημείων έναρξης και τέλους (λόγω συμβατότητας τα σημεία έναρξης έχουν την ίδια σειρά με τα σημεία τέλους). Θέλουμε να δείξουμε πως k = m. Χαροκόπειο Πανεπιστήμιο 13/62

Χρονοπρογραμματισμός Διαστημάτων Απόδειξη Βέλτιστης Λύσης Λήμμα Για όλους τους δείκτες r k ισχύει f(i r ) f(j r ). Θα χρησιμοποιήσουμε επαγωγή. Για r = 1 ισχύει μιας και ο αλγόριθμος διαλέγει το αίτημα i 1 με τον ελάχιστο χρόνο τερματισμού. Έστω τώρα ένα r > 1 και ας θεωρήσουμε πως ότι η πρόταση είναι αληθής για r 1. Ξέρουμε δηλαδή πως f(i r 1) f(j r 1). i r 1 i r? j r 1 j r Είναι δυνατόν να συμβεί αυτό που δείχνει το παραπάνω σχήμα; Χαροκόπειο Πανεπιστήμιο 14/62

Χρονοπρογραμματισμός Διαστημάτων Απόδειξη Βέλτιστης Λύσης i r 1 i r? j r 1 j r Όχι γιατι ο αλγόριθμος μας θα είχε διαλέξει το j r. Πιο τυπικά μπορούμε να πούμε πως f(j r 1 ) s(j r ) αφού το O έχει συμβατά διαστήματα f(i r 1 ) f(j r 1 ) από την επαγωγική υπόθεση και άρα f(i r 1 ) s(j r ). Με άλλα λόγια το διάστημα j r ανήκει στο σύνολο R των διαθέσιμων χρονικών διαστημάτων την ώρα που ο άπληστος αλγόριθμος επιλέγει το διάστημα i r. Επειδή ο αλγόριθμος διαλέγει πάντα το μικρότερο χρόνο τερματισμού έχουμε πως f(i r ) f(j r ). Χαροκόπειο Πανεπιστήμιο 15/62

Χρονοπρογραμματισμός Διαστημάτων Απόδειξη Βέλτιστης Λύσης Θεώρημα Ο άπληστος αλγόριθμος επιστρέφει ένα βέλτιστο σύνολο A. Χαροκόπειο Πανεπιστήμιο 16/62

Χρονοπρογραμματισμός Διαστημάτων Απόδειξη Βέλτιστης Λύσης Θεώρημα Ο άπληστος αλγόριθμος επιστρέφει ένα βέλτιστο σύνολο A. Απόδειξη Θα χρησιμοποιήσουμε εις άτοπον απαγωγή. Χαροκόπειο Πανεπιστήμιο 16/62

Χρονοπρογραμματισμός Διαστημάτων Απόδειξη Βέλτιστης Λύσης Θεώρημα Ο άπληστος αλγόριθμος επιστρέφει ένα βέλτιστο σύνολο A. Απόδειξη Θα χρησιμοποιήσουμε εις άτοπον απαγωγή. Αν το A δεν είναι βέλτιστο, τότε ένα βέλτιστο σύνολο O πρέπει να έχει περισσότερα αιτήματα, δηλαδή, πρέπει m > k. Χαροκόπειο Πανεπιστήμιο 16/62

Χρονοπρογραμματισμός Διαστημάτων Απόδειξη Βέλτιστης Λύσης Θεώρημα Ο άπληστος αλγόριθμος επιστρέφει ένα βέλτιστο σύνολο A. Απόδειξη Θα χρησιμοποιήσουμε εις άτοπον απαγωγή. Αν το A δεν είναι βέλτιστο, τότε ένα βέλτιστο σύνολο O πρέπει να έχει περισσότερα αιτήματα, δηλαδή, πρέπει m > k. Χρησιμοποιώντας το προηγούμενο Λήμμα για r = k έχουμε πως f(i k ) f(j k ). Χαροκόπειο Πανεπιστήμιο 16/62

Χρονοπρογραμματισμός Διαστημάτων Απόδειξη Βέλτιστης Λύσης Θεώρημα Ο άπληστος αλγόριθμος επιστρέφει ένα βέλτιστο σύνολο A. Απόδειξη Θα χρησιμοποιήσουμε εις άτοπον απαγωγή. Αν το A δεν είναι βέλτιστο, τότε ένα βέλτιστο σύνολο O πρέπει να έχει περισσότερα αιτήματα, δηλαδή, πρέπει m > k. Χρησιμοποιώντας το προηγούμενο Λήμμα για r = k έχουμε πως f(i k ) f(j k ). Αφού m > k υπάρχει ένα αίτημα j k+1 στο σύνολο O. Ξέρουμε όμως πως f(j k ) s(j k+1 ) και f(i k ) f(j k ) και άρα το αίτημα j k+1 είναι διαθέσιμο όταν ο άπληστος αλγόριθμος τερματίζει. Άτοπο. Χαροκόπειο Πανεπιστήμιο 16/62

Χρονοπρογραμματισμός Διαστημάτων Υλοποίηση σε χρόνο O(n log n) Αρχικοποίηση..1 ταξινόμησε τα n αιτήματα κατά σειρά χρόνου τερματισμού (f(i) < f(j) όταν i < j).2 κατασκεύασε πίνακα S[1... n] όπου το S[i] περιέχει την τιμή s(i) Αλγόριθμος. Επιλέγουμε αιτήματα με επεξεργασία των χρονικών διαστημάτων κατά αύξουσα σειρά ως προς το f(i)..1 επέλεξε το πρώτο διάστημα.2 διατρέχουμε τα διαστήματα με τη σειρά μέχρι να φτάσουμε το πρώτο χρονικό διάστημα j για το οποίο s(j) f(1) και το επιλέγουμε.3 αν το πιο πρόσφατο διάστημα που έχουμε επιλέξει τελειώνει τη χρονική στιγμή f, διατρέχουμε τα διαστήματα μέχρι να φτάσουμε στο πρώτο j για το οποίο s(j) f Χαροκόπειο Πανεπιστήμιο 17/62

Συντομότερες Διαδρομές σε Γραφήματα Τα γραφήματα χρησιμοποιούνται για να μοντελοποιήσουν δίκτυα. Κατά συνέπεια, ένα βασικό αλγοριθμικό πρόβλημα είναι ο προσδιορισμός της συντομότερης διαδρομής μεταξύ των κόμβων ενός γραφήματος. Χαροκόπειο Πανεπιστήμιο 18/62

Συντομότερες Διαδρομές σε Γραφήματα Το πρόβλημα. Μας δίνεται ένα κατευθυνόμενο γράφημα G(V, E) όπου έχουμε ένα καθορισμένο κόμβο εκκίνησης s V, κάθε ακμή e E έχει μήκος l(e) 0, το οποίο δηλώνει το χρόνο (ή την απόσταση ή το κόστος) που απαιτείται για τη διάσχιση της ακμής e, για μια διαδρομή P, το μήκος της P, είναι το άθροισμα των μηκών όλων των ακμών της και συμβολίζεται ως l(p). Σκοπός είναι να προσδιορίσουμε τη συντομότερη διαδρομή από τον s προς οποιονδήποτε άλλο κόμβο του γραφήματος. Χαροκόπειο Πανεπιστήμιο 19/62

Ο Αλγόριθμος του Dijkstra Το 1959 ο Edsger Dijkstra πρότεινε ένα πολύ απλό άπληστο αλγόριθμο για την επίλυση του προβλήματος των συντομότερων διαδρομών μιας αφετηρίας (single-source shortest paths). Χαροκόπειο Πανεπιστήμιο 20/62

Ο Αλγόριθμος του Dijkstra Ο αλγόριθμος διατηρεί ένα σύνολο κορυφών S, όπου για κάθε u S η απόσταση της συντομότερης διαδρομής d(u) είναι γνωστή. Για κάθε κόμβο v V \ S προσδιορίζουμε τη συντομότερη διαδρομή που μπορεί να κατασκευαστεί αν διατρέξουμε μια διαδρομή μέσω του εξερευνημένου τμήματος S προς κάποιο κόμβο u S, και στην συνέχεια ακολουθήσουμε την ακμή (u, v). s S v V \ S Ο κόμβος που πετυχαίνει την συντομότερη διαδρομή προστίθεται στο σύνολο S. u Χαροκόπειο Πανεπιστήμιο 21/62

Ο Αλγόριθμος του Dijkstra Αλγόριθμος του Dijkstra S = {s} d(s) = 0 while υπάρχουν ακμές από κόμβους του S σε κόμβους του V \ S do Βρες τον κόμβο v V \ S που ελαχιστοποιεί την ποσότητα d (v) = min e=(u,v):u S d(u) + l(e) Θέσε d(v) = d (v) και πρόσθεσε τον v στο σύνολο S. end Χαροκόπειο Πανεπιστήμιο 22/62

Ο Αλγόριθμος του Dijkstra Αλγόριθμος του Dijkstra S = {s} d(s) = 0 while υπάρχουν ακμές από κόμβους του S σε κόμβους του V \ S do Βρες τον κόμβο v V \ S που ελαχιστοποιεί την ποσότητα d (v) = min e=(u,v):u S d(u) + l(e) Θέσε d(v) = d (v) και πρόσθεσε τον v στο σύνολο S. end Ο αλγόριθμος θεωρείται άπληστος αφού κάθε φορά που αυξάνει το μέγεθος του συνόλου S διαλέγει τον κόμβο που βρίσκεται πιο κοντά. Χαροκόπειο Πανεπιστήμιο 22/62

Ο Αλγόριθμος του Dijkstra Παράδειγμα 3 s 1 4 1 1 2 2 3 2 Χαροκόπειο Πανεπιστήμιο 23/62

Ο Αλγόριθμος του Dijkstra Παράδειγμα 3 S 1 s 0 4 1 1 2 2 2 3 Χαροκόπειο Πανεπιστήμιο 23/62

Ο Αλγόριθμος του Dijkstra Παράδειγμα 3 S 1 s 0 4 1 1 1 2 2 2 3 Χαροκόπειο Πανεπιστήμιο 23/62

Ο Αλγόριθμος του Dijkstra Παράδειγμα 3 S 1 s 0 4 1 1 2 1 2 2 2 3 Χαροκόπειο Πανεπιστήμιο 23/62

Ο Αλγόριθμος του Dijkstra Παράδειγμα 3 S 1 s 0 4 1 1 2 1 2 2 2 2 3 Χαροκόπειο Πανεπιστήμιο 23/62

Ο Αλγόριθμος του Dijkstra Παράδειγμα 3 3 S 1 s 0 4 1 1 2 1 2 2 2 2 3 Χαροκόπειο Πανεπιστήμιο 23/62

Ο Αλγόριθμος του Dijkstra Παράδειγμα 3 3 S 1 s 0 4 1 1 2 1 2 2 2 2 3 4 Χαροκόπειο Πανεπιστήμιο 23/62

Ο Αλγόριθμος του Dijkstra Διαδρομές Αλγόριθμος του Dijkstra S = {s} d(s) = 0 while υπάρχουν ακμές από κόμβους του S σε κόμβους του V \ S do Βρες τον κόμβο v V \ S που ελαχιστοποιεί την ποσότητα d (v) = min e=(u,v):u S d(u) + l(e) Θέσε d(v) = d (v) και πρόσθεσε τον v στο σύνολο S. end Κάθε φορά που βάζουμε ένα κόμβο v στο σύνολο S κρατάμε την ακμή που χρησιμοποιήσαμε ώστε να σχηματίσουμε ένα δέντρο ελάχιστων διαδρομών. Έστω για ένα κόμβο v S η ακμή (u, v) που χρησιμοποιήσαμε. Το μονοπάτι P v ορίζεται αναδρομικά ως η διαδρομή P u ακολουθούμενη από την ακμή (u, v). Χαροκόπειο Πανεπιστήμιο 24/62

Ορθότητα Λήμμα Έστω το σύνολο S σε κάθε σημείο εκτέλεσης του αλγορίθμου. Για κάθε u S, η διαδρομή P u είναι η συντομότερη διαδρομή s u. Χαροκόπειο Πανεπιστήμιο 25/62

Ορθότητα Λήμμα Έστω το σύνολο S σε κάθε σημείο εκτέλεσης του αλγορίθμου. Για κάθε u S, η διαδρομή P u είναι η συντομότερη διαδρομή s u. Απόδειξη Θα χρησιμοποιήσουμε επαγωγή ως προς το μέγεθος του S. Η περίπτωση S = 1 είναι εύκολη αφού S = {s} και d(s) = 0. Χαροκόπειο Πανεπιστήμιο 25/62

Ορθότητα Λήμμα Έστω το σύνολο S σε κάθε σημείο εκτέλεσης του αλγορίθμου. Για κάθε u S, η διαδρομή P u είναι η συντομότερη διαδρομή s u. Απόδειξη Θα χρησιμοποιήσουμε επαγωγή ως προς το μέγεθος του S. Η περίπτωση S = 1 είναι εύκολη αφού S = {s} και d(s) = 0. Έστω πως ισχύει όταν S = k για κάποια τιμή k 1. Αυξάνουμε τώρα το μέγεθος του S με την προσθήκη του κόμβου v. Έστω ότι (u, v) είναι η τελική ακμή της διαδρομής s v P v. Χαροκόπειο Πανεπιστήμιο 25/62

Ορθότητα Λήμμα Έστω το σύνολο S σε κάθε σημείο εκτέλεσης του αλγορίθμου. Για κάθε u S, η διαδρομή P u είναι η συντομότερη διαδρομή s u. Απόδειξη Θα χρησιμοποιήσουμε επαγωγή ως προς το μέγεθος του S. Η περίπτωση S = 1 είναι εύκολη αφού S = {s} και d(s) = 0. Έστω πως ισχύει όταν S = k για κάποια τιμή k 1. Αυξάνουμε τώρα το μέγεθος του S με την προσθήκη του κόμβου v. Έστω ότι (u, v) είναι η τελική ακμή της διαδρομής s v P v. P x P y Θα δείξουμε πως οποιαδήποτε άλλη διαδρομή P από το s στο v έχει τουλάχιστον το ίδιο μήκος με την P v. Η διαδρομή P για να φτάσει στο v πρέπει να αφήσει κάπου το σύνολο S. Έστω y ο πρώτος κόμβος εκτός S και x ο αμέσως προηγούμενος. s S P u u v Χαροκόπειο Πανεπιστήμιο 25/62

Ορθότητα Λήμμα Έστω το σύνολο S σε κάθε σημείο εκτέλεσης του αλγορίθμου. Για κάθε u S, η διαδρομή P u είναι η συντομότερη διαδρομή s u. Απόδειξη Θα χρησιμοποιήσουμε επαγωγή ως προς το μέγεθος του S. Η περίπτωση S = 1 είναι εύκολη αφού S = {s} και d(s) = 0. Έστω πως ισχύει όταν S = k για κάποια τιμή k 1. Αυξάνουμε τώρα το μέγεθος του S με την προσθήκη του κόμβου v. Έστω ότι (u, v) είναι η τελική ακμή της διαδρομής s v P v. P x P y Θα δείξουμε πως οποιαδήποτε άλλη διαδρομή P από το s στο v έχει τουλάχιστον το ίδιο μήκος με την P v. Η διαδρομή P για να φτάσει στο v πρέπει να αφήσει κάπου το σύνολο S. Έστω y ο πρώτος κόμβος εκτός S και x ο αμέσως προηγούμενος. s S P u u v l(p ) l(p ) + l(x, y) d(x) + l(x, y) d (y) d (v) = l(p v ) µη-αρνητικά ϐάρη επαγωγή ορισµός d (y) επιλογή αλγορίθµου Χαροκόπειο Πανεπιστήμιο 25/62

Ο Αλγόριθμος του Dijkstra Πρώτη ανάλυση χρόνου εκτέλεσης Αλγόριθμος του Dijkstra S = {s} d(s) = 0 while υπάρχουν ακμές από κόμβους του S σε κόμβους του V \ S do Βρες τον κόμβο v V \ S που ελαχιστοποιεί την ποσότητα d (v) = min e=(u,v):u S d(u) + l(e) Θέσε d(v) = d (v) και πρόσθεσε τον v στο σύνολο S. end Μια άμεση υλοποίηση των παραπάνω χρειάζεται χρόνο O(nm) αφού για κάθε κόμβο πρέπει να βρεί την ακμή που δίνει την ελάχιστη τιμή. Χαροκόπειο Πανεπιστήμιο 26/62

Ο Αλγόριθμος του Dijkstra Βελτιστοποίηση.1 Οι τιμές των ελάχιστων ποσοτήτων d (v) = min d(u) + l(e) e=(u,v):u S για κάθε κόμβο v V \ S δεν είναι ανάγκη να υπολογίζονται από την αρχή. Μπορούμε να τις έχουμε αποθηκευμένες σε ένα πίνακα και κάθε φορά που προσθέτουμε έναν κόμβο στο S να ανανεώνουμε αυτές που πρέπει..2 Για να βρούμε τον κόμβο με την ελάχιστη τέτοια τιμή θα χρησιμοποιήσουμε μια ουρά προτεραιότητας. Χαροκόπειο Πανεπιστήμιο 27/62

Ουρές Προτεραιότητας Επανάληψη Μια ουρά προτεραιότητας είναι μια δομή δεδομένων που διατηρεί ένα σύνολο στοιχείων S, όπου κάθε στοιχείο v S έχει μια συσχετισμένη τιμή key(v) που υποδηλώνει την προτεραιότητα του στοιχείου v. Μικρότερα κλειδιά αντιπροσωπεύουν υψηλότερες προτεραιότητες. Χαροκόπειο Πανεπιστήμιο 28/62

Ουρές Προτεραιότητας Επανάληψη Λειτουργίες. Μια ουρά προτεραιότητας Q υποστηρίζει τα εξής: Insert(Q, x, k) -- εισαγωγή του στοιχείου x με κλειδί k ExtractMin(Q) -- επιστροφή και διαγραφή του στοιχείου με το μικρότερο κλειδί (μεγαλύτερη προτεραιότητα) FindMin(Q) -- επιστροφή του στοιχείου με το μικρότερο κλειδί DecreaseKey(Q, x, k ) -- μειώνει το κλειδί του στοιχείου x σε k (αύξηση προτεραιότητας) IsEmpty(Q) -- έλεγχος κενής ουράς Χαροκόπειο Πανεπιστήμιο 29/62

Υλοποίηση Ουράς Προτεραιότητας με Σωρό Επανάληψη Insert(Q, x, k) -- εισαγωγή του στοιχείου x με κλειδί k. Εαν ο σωρός έχει n στοιχεία πέρνει χρόνο O(log n). ExtractMin(Q) -- επιστροφή και διαγραφή του στοιχείου με το μικρότερο κλειδί (μεγαλύτερη προτεραιότητα). Εαν ο σωρός έχει n στοιχεία πέρνει χρόνο O(log n). FindMin(Q) -- επιστροφή του στοιχείου με το μικρότερο κλειδί. Πέρνει χρόνο O(1). DecreaseKey(Q, x, k ) -- μειώνει το κλειδί του στοιχείου x σε k (αύξηση προτεραιότητας). Εαν ο σωρός έχει n στοιχεία πέρνει χρόνο O(log n). IsEmpty(Q) -- έλεγχος κενής ουράς. Πέρνει χρόνο O(1). Χαροκόπειο Πανεπιστήμιο 30/62

Ο Αλγόριθμος του Dijkstra Αλγόριθμος του Dijkstra S θέσε d[v] = για κάθε v V έστω Q η ουρά προτεραιότητας Insert(Q, s, 0) while υπάρχουν κόμβοι στην Q do u ExtractMin(Q) S S {u} for κάθε κόμβο v όπου (u, v) E do if d[v] = then Insert(Q, v, d[u] + l(u, v)) d[v] d[u] + l(u, v) else if d[u] + l(u, v) < d[v] then DecreaseKey(Q, v, d[u] + l(u, v)) d[v] d[u] + l(u, v) end end end end Χαροκόπειο Πανεπιστήμιο 31/62

Dijkstra Χρόνος Εκτέλεσης Ο αλγόριθμος χρησιμοποιεί μια ουρά προτεραιότητας και ένα πίνακα με τιμές για κάθε κόμβο. Εκτελεί το πολύ.1 n φορές την λειτουργία ExtractMin() αφού κάθε φορά που την εκτελούμε έχουμε υπολογίσει την ελάχιστη απόσταση προς ακόμα ένα κόμβο.2 m φορές την λειτουργία DecreaseKey() αφού αυτή η λειτουργία συμβαίνει μια φορά για κάθε ακμή e = (u, v) όταν ο κόμβος u προστίθεται στο σύνολο S Χαροκόπειο Πανεπιστήμιο 32/62

Dijkstra Χρόνος Εκτέλεσης λειτουργία PQ Dijkstra Binary Heap Fibonacci Heap 1 Insert n log n 1 ExtractMin n log n log n DecreaseKey m log n 1 IsEmpty n 1 1 Σύνολο m log n m + n log n 1 amortized bounds Χαροκόπειο Πανεπιστήμιο 33/62

Ελάχιστο Γεννητικό Δέντρο Minimum Spanning Tree Έστω ένα συνεκτικό γράφημα G = (V, E) όπου κάθε ακμή e E έχει ένα πραγματικό βάρος c e 0. Ένα ελάχιστο γεννητικό δέντρο (MST) είναι ένα υποσύνολο ακμών T E όπου T είναι ένα συνεκτικό δέντρο και το άθροισμα των βαρών των ακμών του δέντρου είναι ελάχιστο. Χαροκόπειο Πανεπιστήμιο 34/62

Ελάχιστο Γεννητικό Δέντρο Minimum Spanning Tree Έστω ένα συνεκτικό γράφημα G = (V, E) όπου κάθε ακμή e E έχει ένα πραγματικό βάρος c e 0. Ένα ελάχιστο γεννητικό δέντρο (MST) είναι ένα υποσύνολο ακμών T E όπου T είναι ένα συνεκτικό δέντρο και το άθροισμα των βαρών των ακμών του δέντρου είναι ελάχιστο. 24 4 6 23 18 9 4 6 9 16 8 10 5 11 14 7 8 5 11 7 21 Χαροκόπειο Πανεπιστήμιο 34/62

Ελάχιστο Γεννητικό Δέντρο Minimum Spanning Tree Έστω ένα συνεκτικό γράφημα G = (V, E) όπου κάθε ακμή e E έχει ένα πραγματικό βάρος c e 0. Ένα ελάχιστο γεννητικό δέντρο (MST) είναι ένα υποσύνολο ακμών T E όπου T είναι ένα συνεκτικό δέντρο και το άθροισμα των βαρών των ακμών του δέντρου είναι ελάχιστο. 24 4 6 23 18 9 4 6 9 16 8 10 5 11 14 7 8 5 11 7 21 Το γράφημα με n κόμβους και όλες τις ( n 2) ακμές έχει n n 2 συνεκτικά δέντρα (Cayley's Theorem, 1889). Άρα η λύση ωμής βίας αποκλείεται. Χαροκόπειο Πανεπιστήμιο 34/62

Εφαρμογές MST Το MST πρόβλημα είναι πάρα πολύ σημαντικό με εφαρμογές σε πολλά πεδία..1 σχεδίαση δικτύων τηλεφωνικό, ηλεκτρικό, υδραυλικό, υπολογιστών, δρόμων.2 προσεγγιστικούς αλγορίθμους για "δύσκολα" προβλήματα traveling salesman problem steiner tree problem.3 εμφανίζεται ως υποπρόβλημα στην λύση διαφόρων άλλων προβλημάτων Χαροκόπειο Πανεπιστήμιο 35/62

Παράδειγμα Εφαρμογής MST Ένας πάροχος έχει κάποια data centers και θέλει να τα συνδέσει μεταξύ τους με οπτικές ίνες, έτσι ώστε όλα τα data centers να μπορούν να επικοινωνούν μεταξύ τους. 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Οι ακμές είναι οι δυνατές συνδέσεις που μπορούμε να κάνουμε. Το βάρος κάθε ακμής είναι το κόστος της ακμής (είτε κόστος κατασκευής, είτε κόστος επικοινωνίας, κ.τ.λ. ). Χαροκόπειο Πανεπιστήμιο 36/62

Παράδειγμα Εφαρμογής MST Ένας πάροχος έχει κάποια data centers και θέλει να τα συνδέσει μεταξύ τους με οπτικές ίνες, έτσι ώστε όλα τα data centers να μπορούν να επικοινωνούν μεταξύ τους. 4 6 9 5 11 8 7 Οι ακμές είναι οι δυνατές συνδέσεις που μπορούμε να κάνουμε. Το βάρος κάθε ακμής είναι το κόστος της ακμής (είτε κόστος κατασκευής, είτε κόστος επικοινωνίας, κ.τ.λ. ). Χαροκόπειο Πανεπιστήμιο 36/62

Άπληστοι Αλγόριθμοι για MST Μπορούμε εύκολα να σκεφτούμε διάφορους άπληστους αλγορίθμους για το πρόβλημα..1 Ένας απλός αλγόριθμος ξεκινά χωρίς καθόλου ακμές και δομεί ένα γεννητικό δέντρο με διαδοχική εισαγωγή ακμών από το E κατά αύξουσα σειρά κόστους. Εαν μια ακμή δημιουργεί κύκλο απλά απορρίπτεται. Αυτός είναι ο αλγόριθμος του Kruskal..2 Ένας άλλος απλός αλγόριθμος είναι παρόμοιος με τον αλγόριθμο του Dijkstra. Διατηρούμε ένα σύνολο S V για το οποίο έχουμε ήδη κατασκευάσει ένα γεννητικό δέντρο και προσθέτουμε την πιο φτηνή ακμή μεταξύ των S και V \ S. Ο αλγόριθμος ξεκινά με S = {s} όπου s V είναι οποιοσδήποτε κόμβος. Αυτός είναι ο αλγόριθμος του Prim. Θα δούμε πως και οι δύο αυτοί αλγόριθμοι παράγουν βέλτιστες λύσεις. Χαροκόπειο Πανεπιστήμιο 37/62

Ιδιότητα Τομής Cut Property Λήμμα Υποθέστε πως όλα τα βάρη των ακμών είναι διαφορετικά. Έστω S V ένα υποσύνολο κόμβων διάφορο του κενού και έστω e = (v, w) η ακμή ελάχιστου κόστους με v S και w V \ S. Κάθε ελάχιστο γεννητικό δέντρο (MST) θα περιέχει την ακμή e. Χαροκόπειο Πανεπιστήμιο 38/62

Ιδιότητα Τομής Cut Property Λήμμα Υποθέστε πως όλα τα βάρη των ακμών είναι διαφορετικά. Έστω S V ένα υποσύνολο κόμβων διάφορο του κενού και έστω e = (v, w) η ακμή ελάχιστου κόστους με v S και w V \ S. Κάθε ελάχιστο γεννητικό δέντρο (MST) θα περιέχει την ακμή e. S v e w v e w V \ S Χαροκόπειο Πανεπιστήμιο 38/62

Ιδιότητα Τομής Cut Property Λήμμα Υποθέστε πως όλα τα βάρη των ακμών είναι διαφορετικά. Έστω S V ένα υποσύνολο κόμβων διάφορο του κενού και έστω e = (v, w) η ακμή ελάχιστου κόστους με v S και w V \ S. Κάθε ελάχιστο γεννητικό δέντρο (MST) θα περιέχει την ακμή e. S v e w v e w V \ S Απόδειξη Έστω T ένα MST που δεν περιέχει την e. Υπάρχει διαδρομή μεταξύ v και w, η οποία έστω πως περνάει την τομή με την ακμή e = (v, w ). Χαροκόπειο Πανεπιστήμιο 38/62

Ιδιότητα Τομής Cut Property Λήμμα Υποθέστε πως όλα τα βάρη των ακμών είναι διαφορετικά. Έστω S V ένα υποσύνολο κόμβων διάφορο του κενού και έστω e = (v, w) η ακμή ελάχιστου κόστους με v S και w V \ S. Κάθε ελάχιστο γεννητικό δέντρο (MST) θα περιέχει την ακμή e. S v e w v e w V \ S Απόδειξη Έστω T ένα MST που δεν περιέχει την e. Υπάρχει διαδρομή μεταξύ v και w, η οποία έστω πως περνάει την τομή με την ακμή e = (v, w ). Το σύνολο ακμών T = T \ {e } {e} έχει μικρότερο κόστος. Επίσης είναι συνεκτικό και δεν περιέχει κύκλους. Χαροκόπειο Πανεπιστήμιο 38/62

Ιδιότητα Τομής Cut Property Λήμμα Υποθέστε πως όλα τα βάρη των ακμών είναι διαφορετικά. Έστω S V ένα υποσύνολο κόμβων διάφορο του κενού και έστω e = (v, w) η ακμή ελάχιστου κόστους με v S και w V \ S. Κάθε ελάχιστο γεννητικό δέντρο (MST) θα περιέχει την ακμή e. S v e w v e w V \ S Απόδειξη Έστω T ένα MST που δεν περιέχει την e. Υπάρχει διαδρομή μεταξύ v και w, η οποία έστω πως περνάει την τομή με την ακμή e = (v, w ). Το σύνολο ακμών T = T \ {e } {e} έχει μικρότερο κόστος. Επίσης είναι συνεκτικό και δεν περιέχει κύκλους. Άτοπο. Χαροκόπειο Πανεπιστήμιο 38/62

Ιδιότητα Κύκλου Cycle Property Λήμμα Υποθέστε πως όλα τα βάρη των ακμών είναι διαφορετικά. Έστω C ένας κύκλος του γραφήματος G(V, E), και έστω ότι η ακμή e = (v, w) E είναι η πιο ακριβή ακμή που ανήκει στον C. Τότε η ακμή e δεν ανήκει σε κανένα ελάχιστο γεννητικό δέντρο (MST) του G. Χαροκόπειο Πανεπιστήμιο 39/62

Ιδιότητα Κύκλου Cycle Property Λήμμα Υποθέστε πως όλα τα βάρη των ακμών είναι διαφορετικά. Έστω C ένας κύκλος του γραφήματος G(V, E), και έστω ότι η ακμή e = (v, w) E είναι η πιο ακριβή ακμή που ανήκει στον C. Τότε η ακμή e δεν ανήκει σε κανένα ελάχιστο γεννητικό δέντρο (MST) του G. S v e w C v e w V \ S Χαροκόπειο Πανεπιστήμιο 39/62

Ιδιότητα Κύκλου Cycle Property Λήμμα Υποθέστε πως όλα τα βάρη των ακμών είναι διαφορετικά. Έστω C ένας κύκλος του γραφήματος G(V, E), και έστω ότι η ακμή e = (v, w) E είναι η πιο ακριβή ακμή που ανήκει στον C. Τότε η ακμή e δεν ανήκει σε κανένα ελάχιστο γεννητικό δέντρο (MST) του G. S v e w C v e w V \ S Απόδειξη Έστω T ένα MST που περιέχει την e. Διαγράφοντας την e από το T, χωρίζουμε τους κόμβους σε δύο υποσύνολα S και V \ S. Χαροκόπειο Πανεπιστήμιο 39/62

Ιδιότητα Κύκλου Cycle Property Λήμμα Υποθέστε πως όλα τα βάρη των ακμών είναι διαφορετικά. Έστω C ένας κύκλος του γραφήματος G(V, E), και έστω ότι η ακμή e = (v, w) E είναι η πιο ακριβή ακμή που ανήκει στον C. Τότε η ακμή e δεν ανήκει σε κανένα ελάχιστο γεννητικό δέντρο (MST) του G. S v e w C v e w V \ S Απόδειξη Έστω T ένα MST που περιέχει την e. Διαγράφοντας την e από το T, χωρίζουμε τους κόμβους σε δύο υποσύνολα S και V \ S. Ακολουθώντας τον κύκλο C από v προς w μπορούμε να βρούμε μια ακμή e που περνάει την τομή (S, V \ S). Αυτή η ακμή έχει βάρος μικρότερο της e από την υπόθεση. Χαροκόπειο Πανεπιστήμιο 39/62

Ιδιότητα Κύκλου Cycle Property Λήμμα Υποθέστε πως όλα τα βάρη των ακμών είναι διαφορετικά. Έστω C ένας κύκλος του γραφήματος G(V, E), και έστω ότι η ακμή e = (v, w) E είναι η πιο ακριβή ακμή που ανήκει στον C. Τότε η ακμή e δεν ανήκει σε κανένα ελάχιστο γεννητικό δέντρο (MST) του G. S v e w C v e w V \ S Απόδειξη Έστω T ένα MST που περιέχει την e. Διαγράφοντας την e από το T, χωρίζουμε τους κόμβους σε δύο υποσύνολα S και V \ S. Ακολουθώντας τον κύκλο C από v προς w μπορούμε να βρούμε μια ακμή e που περνάει την τομή (S, V \ S). Αυτή η ακμή έχει βάρος μικρότερο της e από την υπόθεση. Το σύνολο ακμών T = T \ {e} {e } έχει μικρότερο κόστος. Επίσης είναι συνεκτικό και δεν περιέχει κύκλους. Χαροκόπειο Πανεπιστήμιο 39/62

Ιδιότητα Κύκλου Cycle Property Λήμμα Υποθέστε πως όλα τα βάρη των ακμών είναι διαφορετικά. Έστω C ένας κύκλος του γραφήματος G(V, E), και έστω ότι η ακμή e = (v, w) E είναι η πιο ακριβή ακμή που ανήκει στον C. Τότε η ακμή e δεν ανήκει σε κανένα ελάχιστο γεννητικό δέντρο (MST) του G. S v e w C v e w V \ S Απόδειξη Έστω T ένα MST που περιέχει την e. Διαγράφοντας την e από το T, χωρίζουμε τους κόμβους σε δύο υποσύνολα S και V \ S. Ακολουθώντας τον κύκλο C από v προς w μπορούμε να βρούμε μια ακμή e που περνάει την τομή (S, V \ S). Αυτή η ακμή έχει βάρος μικρότερο της e από την υπόθεση. Το σύνολο ακμών T = T \ {e} {e } έχει μικρότερο κόστος. Επίσης είναι συνεκτικό και δεν περιέχει κύκλους. Άτοπο. Χαροκόπειο Πανεπιστήμιο 39/62

Αλγόριθμος του Prim Αλγόριθμος του Prim για MST Διάλεξε έναν οποιοδήποτε κόμβο s V S {s}. T while S V do διάλεξε την ακμή e = (u, v) με ελάχιστο κόστος όπου u S και v V \ S T T {e} end return το σύνολο T Χαροκόπειο Πανεπιστήμιο 40/62

Αλγόριθμος του Prim Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 41/62

Αλγόριθμος του Prim Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 41/62

Αλγόριθμος του Prim Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 41/62

Αλγόριθμος του Prim Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 41/62

Αλγόριθμος του Prim Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 41/62

Αλγόριθμος του Prim Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 41/62

Αλγόριθμος του Prim Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 41/62

Αλγόριθμος του Prim Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 41/62

Αλγόριθμος του Prim Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 41/62

Αλγόριθμος του Prim Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 41/62

Αλγόριθμος του Prim Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 41/62

Αλγόριθμος του Prim Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 41/62

Αλγόριθμος του Prim Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 41/62

Αλγόριθμος του Prim Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 41/62

Αλγόριθμος του Prim Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 41/62

Αλγόριθμος του Prim Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 41/62

Αλγόριθμος του Prim Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 41/62

Αλγόριθμος του Prim Παράδειγμα Εκτέλεσης 4 6 9 5 11 8 7 Χαροκόπειο Πανεπιστήμιο 41/62

Αλγόριθμος του Prim Ορθότητα Θεώρημα Ο αλγόριθμος του Prim παράγει ένα ελάχιστο γεννητικό δέντρο του G. Απόδειξη Προκύπτει απευθείας από την ιδιότητα τομής (cut property) αφού ο αλγόριθμος προσθέτει πάντα την ακμή με ελάχιστο κόστος που περνάει μια τομή (S, V \ S). Χαροκόπειο Πανεπιστήμιο 42/62

Αλγόριθμος του Prim Υλοποίηση Η υλοποίηση του αλγορίθμου του Prim είναι παρόμοια με την υλοποίηση του αλγορίθμου του Dijkstra. δεδομένου του συνόλου S κάθε κόμβος έχει ένα κόστος "προσάρτησης" το κόστος προσάρτησης του κόμβου v V \ S είναι π(v) = min c e e=(u,v):u S πρέπει να μπορούμε να διαλέξουμε τον κόμβο v V \ S με το ελάχιστο κόστος προσάρτησης επίσης πρέπει να μπορούμε να ανανεώσουμε τα κόστη προσάρτησης κάθε φορά που αυξάνουμε το μέγεθος του S κατά 1. Θα χρησιμοποιήσουμε πάλι ουρά προτεραιότητας και προτεραιότητα το κόστος προσάρτησης. Χαροκόπειο Πανεπιστήμιο 43/62

Υλοποίηση του αλγορίθμου του Prim Αλγόριθμος του Prim for κάθε κόμβο v V do d[v] = end έστω Q η ουρά προτεραιότητας διάλεξε οποιονδήποτε κόμβο s V for κάθε ακμή e = (s, u) E do Insert(Q, u, c e ) d[u] c e end S = {s} while η ουρά Q δεν είναι άδεια do u ExtractMin(Q) S S {u} for κάθε κόμβο v όπου e = (u, v) E do if d[v] = then Insert(Q, v, c e ) d[v] c e else if c e < d[v] then DecreaseKey(Q, v, c e) d[v] c e end end end end Χαροκόπειο Πανεπιστήμιο 44/62

Ο Αλγόριθμος του Prim Ανάλυση Χρόνου Ο αλγόριθμος εκτελεί το πολύ n λειτουργίες Insert στην ουρά, το πολύ n λειτουργίες ExtractMin και το πολύ m λειτουργίες DecreaseKey. Με την χρήστη ως δυαδικού σωρού για ουρά προτεραιότητας ο αλγόριθμος τρέχει σε χρόνο O(m log n). Χαροκόπειο Πανεπιστήμιο 45/62

Αλγόριθμος του Kruskal Αλγόριθμος του Kruskal για MST Ταξινόμησε τις ακμές σε αύξουσα σειρά με βάση τα βάρη c e T while δεν έχουμε δει όλες τις ακμές do έστω e η επόμενη ακμή στην ταξινομημένη σειρά if T {e} δεν περιέχει κύκλο then T T {e} end end return το σύνολο T Χαροκόπειο Πανεπιστήμιο 46/62

Αλγόριθμος του Kruskal Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 47/62

Αλγόριθμος του Kruskal Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 47/62

Αλγόριθμος του Kruskal Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 47/62

Αλγόριθμος του Kruskal Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 47/62

Αλγόριθμος του Kruskal Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 47/62

Αλγόριθμος του Kruskal Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 47/62

Αλγόριθμος του Kruskal Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 47/62

Αλγόριθμος του Kruskal Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 47/62

Αλγόριθμος του Kruskal Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 47/62

Αλγόριθμος του Kruskal Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 47/62

Αλγόριθμος του Kruskal Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 47/62

Αλγόριθμος του Kruskal Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 47/62

Αλγόριθμος του Kruskal Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 47/62

Αλγόριθμος του Kruskal Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 47/62

Αλγόριθμος του Kruskal Παράδειγμα Εκτέλεσης 24 4 6 23 18 9 16 8 10 5 11 14 7 21 Χαροκόπειο Πανεπιστήμιο 47/62

Αλγόριθμος του Kruskal Παράδειγμα Εκτέλεσης 4 6 9 5 11 8 7 Χαροκόπειο Πανεπιστήμιο 47/62

Αλγόριθμος του Kruskal Ορθότητα Θεώρημα Ο αλγόριθμος του Kruskal παράγει ένα ελάχιστο γεννητικό δέντρο του G. Απόδειξη Θα εξετάσουμε τις ακμές με την σειρά που τις εξετάζει και ο αλγόριθμος. Έστω λοιπόν η ακμή e = (v, w) E την ώρα που ο αλγόριθμος εξετάζει την ένταξη της στο δέντρο. 24 4 6 23 18 9 16 8 10 5 e 11 14 7 21 Περίπτωση 1. Εαν η ακμή δημιουργεί κύκλο, τότε είναι η πιο ακριβή ακμή του κύκλου (γιατί;) και άρα από την ιδιότητα κύκλου δεν ανήκει σε κανένα MST. Χαροκόπειο Πανεπιστήμιο 48/62

Αλγόριθμος του Kruskal Ορθότητα Θεώρημα Ο αλγόριθμος του Kruskal παράγει ένα ελάχιστο γεννητικό δέντρο του G. Απόδειξη Θα εξετάσουμε τις ακμές με την σειρά που τις εξετάζει και ο αλγόριθμος. Έστω λοιπόν η ακμή e = (v, w) E την ώρα που ο αλγόριθμος εξετάζει την ένταξη της στο δέντρο. S 24 4 6 16 8 10 5 v 23 11 18 14 e w 9 7 21 Περίπτωση 2. Εαν η ακμή δεν δημιουργεί κύκλο τότε ας ορίσουμε το σύνολο S ως το σύνολο των κόμβων για τους οποίους ο κόμβος v έχει διαδρομή. Η ακμή e είναι η ελάχιστου κόστους ακμή με ακριβώς ένα κόμβο στο σύνολο S και άρα ανήκει στο MST λόγω ιδιότητας τομής. Χαροκόπειο Πανεπιστήμιο 49/62

Αλγόριθμος του Kruskal Υλοποίηση Μια αποδοτική υλοποίηση του αλγορίθμου χρειάζεται δύο μέρη:.1 ταξινόμηση ακμών στην γενική περίπτωση χρειάζεται χρόνο O(m log m) = O(m log n).2 αναγνώριση κύκλων μπορούμε να ελέγχουμε για ύπαρξη κύκλων εκτελώντας διάσχιση DFS είναι όμως πολύ αργό μιας και οδηγεί σε O(n) χρόνο για έναν έλεγχο και άρα σε O(nm) αλγόριθμο θα δούμε μια καινούρια δομή δεδομένων που μας βοηθάει Χαροκόπειο Πανεπιστήμιο 50/62

Η Δομή Union-Find Η δομή Union-Find μας επιτρέπει να διατηρήσουμε ξένα σύνολα (όπως για παράδειγμα οι συνεκτικές συνιστώσες ενός γραφήματος). Η δομή μας παρέχει 3 βασικές λειτουργίες.1 MakeSet(x) -- δημιουργεί το σύνολο {x}.2 Find(x) -- επιστρέφει το όνομα (έναν αντιπρόσωπο) του συνόλου που περιέχει το στοιχείο x.3 Union(x, y) -- συγχωνεύει τα ξένα σύνολα στα οποία ανήκουν τα στοιχεία x και y Όταν μιλάμε για το όνομα ενός συνόλου, έχουμε αρκετή ελευθερία. Αυτό που μας ενδιαφέρει είναι να είναι συνεπή, με την έννοια πως Find(v) και Find(w) πρέπει να επιστρέφουν το ίδιο όνομα αν τα v και w ανήκουν στο ίδιο σύνολο. Χαροκόπειο Πανεπιστήμιο 51/62

Αλγόριθμος του Kruskal Με δομή Union-Find Αλγόριθμος του Kruskal για MST Ταξινόμησε τις ακμές σε αύξουσα σειρά με βάση τα βάρη c e T for v V do MakeSet(v) end while δεν έχουμε δει όλες τις ακμές do έστω e = (v, w) η επόμενη ακμή στην ταξινομημένη σειρά if Find(v) Find(w) then T T {e} Union(v, w) end end return το σύνολο T Χαροκόπειο Πανεπιστήμιο 52/62

Υλοποίηση της Δομής Union-Find Θα δείξουμε μια υλοποίηση με δείκτες. κάθε σύνολο θα είναι ένα προσανατολισμένο δέντρο κόμβοι του δέντρου είναι τα στοιχεία του συνόλου (χωρίς κάποια ιδιαίτερη σειρά) κάθε κόμβος έχει ένα γονικό δείκτη που τελικά οδηγεί στη ρίζα του δέντρου το στοιχείο στη ρίζα του δέντρου είναι ο αντιπρόσωπος ή το όνομα του συνόλου ο γονικός δείκτης στην ρίζα δείχνει στον εαυτό του για λόγους που θα προκύψουν σύντομα κάθε κόμβος γνωρίζει το ύψος (ή το μέγεθος) του υποδέντρου που κρέμεται από αυτόν Χαροκόπειο Πανεπιστήμιο 53/62

Υλοποίηση της Δομής Union-Find e eg k f r w x y Αναπαράσταση προσανατολισμένου δέντρου τριών συνόλων.1 {e}.2 {g, f}.3 {k, r, w, x, y} Χαροκόπειο Πανεπιστήμιο 54/62

Υλοποίηση της Δομής Union-Find MakeSet(x) π(x) = x rank(x) = 0 Η MakeSet(x) απλά δημιουργεί ένα κόμβο ο οποίος δείχνει στον εαυτό του. Find(x) while x π(x) do x = π(x) end return x Η Find(x) ξεκινά από τον κόμβο του στοιχείου x και διασχίζει το δέντρο προς τα πάνω μέχρι να βρει και να επιστρέψει την ρίζα. Η ρίζα είναι το όνομα ή ο αντιπρόσωπος του συνόλου στο οποίο ανήκει το στοιχείο x. Χαροκόπειο Πανεπιστήμιο 55/62

Υλοποίηση της Δομής Union-Find Union by Rank Η υλοποίηση της Union(x, y) γίνεται εύκολα.1 βρίσκουμε τους δύο αντιπροσώπους με Find(x) και Find(y).2 κρεμάμε το ένα δέντρο από το άλλο.3 για να μην καταλήξουμε σε δέντρα με μεγάλο ύψος (το οποίο καθυστερεί τον χρόνο της αναζήτησης) κρεμάμε το μικρότερο δέντρο κάτω από τη ρίζα του μεγαλύτερου Union(x,y) r x = Find(x) r y = Find(y) if r x = r y then return end if rank(r x ) > rank(r y ) then π(r y ) = r x else π(r x ) = r y if rank(r x) = rank(r y) then rank(r y ) = rank(r y ) + 1 end end Χαροκόπειο Πανεπιστήμιο 56/62

Union-Find Παράδειγμα MakeSet(a), MakeSet(b),, MakeSet(g) a 0 b 0 c 0 d 0 e 0 f 0 g 0 Union(a,d), Union(b,e), Union(c,f) d 1 e 1 f 1 g 0 a 0 b 0 c 0 Χαροκόπειο Πανεπιστήμιο 57/62

Union-Find Παράδειγμα Union(a,d), Union(b,e), Union(c,f) d 1 e 1 f 1 g 0 a 0 b 0 c 0 Union(c,g), Union(e,a) d 2 f 1 a 0 e 1 c 0 g 0 b 0 Χαροκόπειο Πανεπιστήμιο 57/62

Union-Find Παράδειγμα Union(c,g), Union(e,a) d 2 f 1 a 0 e 1 c 0 g 0 b 0 Union(b,g) d 2 a 0 e 1 f 1 b 0 c 0 g 0 Χαροκόπειο Πανεπιστήμιο 57/62

Union-Find by Rank Χρόνοι Εκτέλεσης.1 η MakeSet(x) έχει προφανώς σταθερό χρόνο εκτέλεσης O(1).2 η συνάρτηση Find(x) εξαρτάται από το ύψος του δέντρου όπου βρίσκεται το στοιχείο x.3 η συνάρτηση Union(a, b) το ίδιο Θα δούμε τώρα γιατί κρατάμε σε κάθε κόμβο την τάξη (rank) που είναι το ύψος του υποδέντρου το οποίο έχει ρίζα τον κόμβο αυτό. Χαροκόπειο Πανεπιστήμιο 58/62

Union-Find by Rank Ιδιότητες Τάξεων (rank) Ιδιότητα Για έναν κόμβο x έχουμε rank(x) < rank(π(x)). Χαροκόπειο Πανεπιστήμιο 59/62

Union-Find by Rank Ιδιότητες Τάξεων (rank) Ιδιότητα Ένας ριζικός κόμβος τάξης k έχει τουλάχιστον 2 k κόμβους στο δέντρο του. Απόδειξη Θα χρησιμοποιήσουμε επαγωγή στην τάξη του κόμβου. Για k = 0 και k = 1 είναι προφανές αφού έχει αντίστοιχα 1 και 2 κόμβους στο δέντρο. Έστω πως ισχύει για k 1. Για να δημιουργηθεί ένας κόμβος τάξης k πρέπει να ενωθούν κόμβοι τάξης k 1. Το δέντρο που προκύπτει έχει (λόγω υπόθεσης επαγωγής) τουλάχιστον 2 2 k 1 = 2 k κόμβους. Η ιδιότητα αυτή ισχύει και για μη ριζικούς κόμβους, αφού κάθε κόμβος ήταν ρίζα κάποτε. Μόλις ένας κόμβος πάψει να είναι ρίζα, η τάξη του αλλά και ο αριθμός των απογόνων του δεν αλλάζει. Χαροκόπειο Πανεπιστήμιο 59/62

Union-Find by Rank Ιδιότητες Τάξεων (rank) Λόγω της πρώτης ιδιότητας ένα στοιχείο έχει το πολύ έναν πρόγονο τάξης k. Αυτό σημαίνει πως διαφορετικοί κόμβοι τάξης k δεν μπορούν να έχουν κοινούς απογόνους. Καταλήγουμε λοιπόν στο εξής συμπέρασμα. Ιδιότητα Αν συνολικά υπάρχουν n στοιχεία, τότε μπορεί να υπάρχουν το πολύ n κόμβοι 2 τάξης k. k Η τελευταία ιδιότητα σημαίνει πως η μέγιστη δυνατή τάξη είναι log n, και άρα όλα τα δέντρα έχουν ύψος log n. Χαροκόπειο Πανεπιστήμιο 59/62

Union-Find by Rank Χρόνοι Εκτέλεσης.1 η MakeSet(x) έχει προφανώς σταθερό χρόνο εκτέλεσης O(1).2 η συνάρτηση Find(x) εξαρτάται από το ύψος του δέντρου όπου βρίσκεται το στοιχείο x.3 η συνάρτηση Union(a, b) το ίδιο Το ύψος ενός δέντρου είναι log n και άρα οι Find(x) και Union(a, b) πέρνουν χρόνο O(log n). Χαροκόπειο Πανεπιστήμιο 60/62

Αλγόριθμος του Kruskal Με δομή Union-Find Αλγόριθμος του Kruskal για MST Ταξινόμησε τις ακμές σε αύξουσα σειρά με βάση τα βάρη c e T for v V do MakeSet(v) end while δεν έχουμε δει όλες τις ακμές do έστω e = (v, w) η επόμενη ακμή στην ταξινομημένη σειρά if Find(v) Find(w) then T T {e} Union(v, w) end end return το σύνολο T O(m log m) = O(m log n) για ταξινόμηση των ακμών O(n) χρόνο για να κατασκευάσει όλα τα αρχικά σύνολα O(m log n) για όλα τα Find(x) O(m log n) για όλα τα Union(a, b) σύνολο O(m log n) Χαροκόπειο Πανεπιστήμιο 61/62

Απαλοιφή Υπόθεσης για Διαφορετικά Βάρη Εαν έχουμε ένα πρόβλημα όπου υπάρχουν ακμές με ίδια βάρη "διαταρράσουμε" τα βάρη των ακμών προσθέτοντας ή αφαιρώντας διαφορετικούς, εξαιρετικά μικρούς αριθμούς με αυτό τον τρόπο όλα τα βάρη γίνονται διαφορετικά φροντίζουμε οι διαταραχή αυτή να μην αλλάζει την σχετική σειρά των δέντρων που δεν είχαν ίδιο αρχικό κόστος Αυτό είναι ίδιο με το να εκφράσουμε συμβολικά αυτή την διαταραχή, επιλύοντας τις διαφορές λεξικογραφικά: bool l e s s ( i, j ) { i f ( cost ( e i ) == cost ( e j ) ) return i < j ; else return cost ( e i ) < cost ( e j ) ; } Χαροκόπειο Πανεπιστήμιο 62/62