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

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

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

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

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

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

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

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

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

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

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

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

Αλγόριθμοι και πολυπλοκότητα Συγχωνευτική Ταξινόμηση

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

ΗΥ240 - Παναγιώτα Φατούρου 2

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

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

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

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

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

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

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 3: Εφαρμογές Δικτυωτής Ανάλυσης (2 ο Μέρος)

Διοικητική Λογιστική

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

Δομές Δεδομένων Ενότητα 1

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Κβαντική Επεξεργασία Πληροφορίας

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

Βέλτιστος Έλεγχος Συστημάτων

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Μηχανολογικό Σχέδιο Ι

Διαφήμιση και Δημόσιες Σχέσεις Ενότητα 9: Σχέσεις διαφημιστή-διαφημιζόμενου

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Άσκηση - Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων

Εισαγωγή στους Η/Υ. Ενότητα 2β: Αντίστροφο Πρόβλημα. Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών

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

Ενότητα 7 Ουρές Προτεραιότητας

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Ψηφιακή Επεξεργασία Εικόνων

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

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

Κβαντική Επεξεργασία Πληροφορίας

Ενδεικτικές λύσεις ασκήσεων διαγραμμάτων περίπτωσης χρήσης (1ο Μέρος)

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Εισαγωγή στους Υπολογιστές

Βάσεις Περιβαλλοντικών Δεδομένων

Μυελού των Οστών Ενότητα #1: Ερωτήσεις κατανόησης και αυτόαξιολόγησης

Κβαντική Επεξεργασία Πληροφορίας

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Αλγόριθμοι και πολυπλοκότητα Ταχυταξινόμηση (Quick-Sort)

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

Εισαγωγή στους Υπολογιστές

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

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

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

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

Μάρκετινγκ Αγροτικών Προϊόντων

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 6: Συμπίεση Έργου

Πληροφοριακά Συστήματα Διοίκησης Ενότητα 10: Διαχείριση Έργων (2ο Μέρος)

Διαχείριση Έργων. Ενότητα 10: Χρονοπρογραμματισμός έργων (υπό συνθήκες αβεβαιότητας)

Διοίκηση Ολικής Ποιότητας & Επιχειρηματική Αριστεία Ενότητα 1.3.3: Μεθοδολογία εφαρμογής προγράμματος Ολικής Ποιότητας

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Προσχολική Παιδαγωγική Ενότητα 2: Οργάνωση χρόνου και χώρου στα νηπιαγωγεία

Μάρκετινγκ. Ενότητα 2: Αξία για τους Πελάτες

Αλγόριθμοι και πολυπλοκότητα Μελανέρυθρα δεντρα

Δομές δεδομένων. Ενότητα 5η: Υλοποίηση Λεξικών με Ισοζυγισμένα Δένδρα Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

Εκπαιδευτική Διαδικασία και Μάθηση στο Νηπιαγωγείο Ενότητα 1: Εισαγωγή

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

Διοίκηση Ολικής Ποιότητας & Επιχειρηματική Αριστεία Ενότητα 1.3.2: Παραδοσιακή VS νέα προσέγγιση της ΔΟΠ

ΗΛΕΚΤΡΟΝΙΚΗ ΙIΙ Ενότητα 6

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4: ΑΝΑΠΑΡΑΣΤΑΣΗ ΔΕΔΟΜΕΝΩΝ - ΔΕΝΤΡΑ

Κβαντική Επεξεργασία Πληροφορίας

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Β. Διαφορικός Λογισμός

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

Διοικητική Λογιστική

Διοίκηση Ολικής Ποιότητας & Επιχειρηματική Αριστεία Ενότητα 1.4: ISO 9004:2009

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Εισαγωγή στην Διοίκηση Επιχειρήσεων

6 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

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

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 5: Διαχείριση Έργων υπό συνθήκες αβεβαιότητας

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους (1)

Τεχνικό Σχέδιο - CAD

Λογιστική Κόστους Ενότητα 10: Ασκήσεις Προτύπου Κόστους Αποκλίσεων.

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

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

Ευφυής Προγραμματισμός

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

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

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Transcript:

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

Ενότητα 8 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find) ΗΥ240 - Παναγιώτα Φατούρου 2

Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης Έστω ότι S 1,, S k είναι ξένα υποσύνολα ενός συνόλου U, δηλαδή ισχύει ότι S i S j =, για κάθε i,j με i j και S 1 S k = U. Λειτουργίες MakeSet(X): επιστρέφει ένα νέο σύνολο που περιέχει μόνο το στοιχείο X Union(S,T): επιστρέφει το σύνολο S T, το οποίο αντικαθιστά τα S, T Find(X): επιστρέφει το σύνολο S στο οποίο ανήκει το στοιχείο Χ ΗΥ240 - Παναγιώτα Φατούρου 3

Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης Εφαρμογές Το πρόβλημα της διαχειρίσεως ξένων μεταξύ τους συνόλων εμφανίζεται σε αρκετές εφαρμογές. Υπάρχουν αλγόριθμοι ευρέσεως σκελετικών δένδρων (spanning trees) που ξεκινούν από n στοιχειώδη σκελετικά δένδρα με έναν κόμβο το καθένα και βήμα προς βήμα συνενώνουν ξένα μεταξύ τους σκελετικά υποδένδρα μέχρι να προκύψει τελικά ένα δένδρο που αποτελεί το προς αναζήτηση σκελετικό δένδρο. ΗΥ240 - Παναγιώτα Φατούρου 4

Ξένα Σύνολα με τη λειτουργία της Ένωσης Up-Tree Είναι δένδρο στο οποίο κάθε κόμβος διατηρεί μόνο ένα δείκτη προς τον πατρικό του κόμβο (έτσι όλοι οι δείκτες δείχνουν προς τα πάνω). Ένας κόμβος μπορεί να έχει οποιοδήποτε πλήθος παιδιών. Το σύνολο U υλοποιείται ως ένα δάσος από Up-trees. Κάθε τέτοιο δένδρο περιέχει τα στοιχεία ενός από τα ξένα σύνολα. Το στοιχείο της ρίζας αποτελεί το αναγνωριστικό του συνόλου. Υλοποίηση Find(X), όπου X είναι ένας δείκτης σε ένα κόμβο Ακολούθησε τους δείκτες από τον κόμβο προς τη ρίζα. Ποια είναι η πολυπλοκότητα της Find(); Σχήμα 9.5 (a): Lewis & Denenberg, Data Structures & Their Algorithms, Addison-Wesley, 1991 Ο(ύψος δένδρου) ΗΥ240 - Παναγιώτα Φατούρου 5

Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης Σχήμα 9.5 (b) & (c): Lewis & Denenberg, Data Structures & Their Algorithms, Addison-Wesley, 1991 Έλεγχος αν ένα στοιχείο Χ ανήκει στο σύνολο S Ελέγχουμε αν η Find(X) επιστρέφει S. Υλοποίηση Union(S,T) Κάνε τη ρίζα του ενός δένδρου να δείχνει στη ρίζα του άλλου. Ποια είναι η πολυπλοκότητα της Union(); Ο(1) Είναι επιθυμητό το ύψος του δένδρου να είναι όσο το δυνατό μικρότερο Χρειάζεται προσοχή στην επιλογή του δένδρου του οποίου η ρίζα θα δείξει στη ρίζα του άλλου! ΗΥ240 - Παναγιώτα Φατούρου 6

Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης Παράδειγμα Έστω ότι έχουμε n σύνολα με ένα στοιχείο το καθένα. Ποιο είναι το χειρότερο ύψος δένδρου που μπορεί να προκύψει και πως πρέπει να εκτελεστεί η Union() για να προκύψει ένα τέτοιο δένδρο; S 1 S 2 S 3 S 4 S 5 Στρατηγική για μείωση ύψους δένδρου «Πάντα συνενώνουμε το μικρότερο δένδρο στο μεγαλύτερο, δηλαδή κάνουμε τη ρίζα του μικρότερου δένδρου να δείχνει στη ρίζα του μεγαλύτερου δένδρου». Ένα δένδρο είναι μεγαλύτερο από ένα άλλο αν έχει περισσότερους κόμβους. S 2 S 3 S 4 S 5 ΗΥ240 - Παναγιώτα Φατούρου S 1 7

Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης Κάθε κόμβος είναι ένα struct με πεδία κάποια πληροφορία για το στοιχείο, το δείκτη parent στο γονικό κόμβο, και ένα μετρητή count, που χρησιμοποιείται μόνο αν ο κόμβος είναι η ρίζα και περιέχει το πλήθος των κόμβων στο up-tree. pointer UpTreeFind(pointer P) { // return the root of the tree containing P } if (P == NULL) error; q = P; while (q->parent!= NULL) do q = q->parent return q; ΗΥ240 - Παναγιώτα Φατούρου 8

Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης pointer UpTreeUnion(pointer S,T) { // S and T are roots of up-trees */ // returns result of merging smaller into larger if (S == NULL OR P == NULL) return; if (S->count >= T->count) { S->count = S->count + T->count; T->parent = S; return S; } else { T->count = T->count + S->count; S->parent = T; return T; } } ΗΥ240 - Παναγιώτα Φατούρου 9

Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης Λήμμα Έστω ότι T είναι ένα up-tree που αναπαριστά ένα σύνολο μεγέθους n, το οποίο δημιουργήθηκε με τη συνένωση n συνόλων μεγέθους 1 χρησιμοποιώντας την UPTreeUnion(). Τότε, το ύψος του T είναι το πολύ log n. Απόδειξη: Αποδεικνύουμε ότι για κάθε h, αν το Τ είναι up-tree ύψους h που δημιουργήθηκε από τη συνένωση n συνόλων μεγέθους 1 (εκτελώντας επαναληπτικά την UpTreeUnion()), τότε το Τ έχει τουλάχιστον 2 h κόμβους, δηλαδή Τ 2 h. Με επαγωγή στο h. Βάση Επαγωγής (h=0): Τότε το Τ αποτελείται από έναν μόνο κόμβο Τ = 1 2 0. Επαγωγική Υπόθεση: Υποθέτουμε πως για κάθε up-tree S, αν το ύψος h του S είναι h, τότε S 2 h. ΗΥ240 - Παναγιώτα Φατούρου 10

Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης Επαγωγικό Βήμα: Συμβολίζουμε με Τ το πρώτο δένδρο που δημιουργείται με ύψος h+1 (εφαρμόζοντας τον παραπάνω αλγόριθμο). Τότε, το Τ δημιουργείται με τη συνένωση ενός up-tree Τ 2 σε ένα uptree Τ 1 για τα οποία ισχύουν τα εξής: το Τ 2 έχει ύψος h, ενώ το Τ 1 έχει ύψος το πολύ h και Τ 1 Τ 2. Από επαγωγική υπόθεση, Τ 2 2 h. Επομένως, Τ = Τ 1 + Τ 2 2* Τ 2 2*2 h = 2 h+1. Συμπεραίνουμε επομένως ότι: n = Τ 2 h+1 h log n - 1 νέα ακμή δένδρο με λιγότερους κόμβους Σχήμα 9.6: Lewis & Denenberg, Data Structures & Their Algorithms, Addison-Wesley, 1991 ΗΥ240 - Παναγιώτα Φατούρου 11

Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης Ποια είναι η πολυπλοκότητα της Find(X); H Find(X) εμπεριέχει μια LookUp(). Πως θα υλοποιήσουμε αυτή τη LookUp; Περιπτώσεις 1. Ο χώρος των κλειδιών είναι μικρός και τα κλειδιά έχουν μικρές τιμές. Τότε, είναι εφικτό να αποθηκευτούν αυτά σε έναν πίνακα 100 θέσεων του οποίου η θέση i περιέχει δείκτη προς το κλειδί i (ή NULL αν το κλειδί i δεν ανήκει στο U), οπότε η LookUp() υλοποιείται σε σταθερό χρόνο. 2. Ο χώρος των κλειδιών είναι μεγάλος. Τότε, απαιτείται μια βοηθητική δομή (π.χ., μια από τις δενδρικές δομές που υλοποιούν λεξικά) που η πληροφορία κάθε κόμβου είναι δείκτης σε ένα από τα κλειδιά του up-tree. Σχήμα 9.7: Lewis & Denenberg, Data Structures & Their Algorithms, Addison-Wesley, 1991 ΗΥ240 - Παναγιώτα Φατούρου 12

Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης To 2-3 δένδρο περιέχει όλα τα κλειδιά του up-tree εκτός από το μεγαλύτερο. Κάθε κλειδί του 2-3 δένδρου έχει συσχετισθεί με έναν δείκτη προς κάποιο κόμβο του up-tree. Για τα κλειδιά που είναι αποθηκευμένα σε κόμβους φύλλα, ο δείκτης αυτός είναι ο δείκτης που βρίσκεται στα αριστερά τους. Ποια είναι η πολυπλοκότητα της Για τα κλειδιά που είναι αποθηκευμένα σε εσωτερικούς Find() με τα νέα δεδομένα; Ο(logn) κόμβους, ο δείκτης αυτός είναι ο δείκτης στα δεξιά του προηγούμενού τους στην ενδοδιατεγμένη διάταξη. Ο δείκτης στα δεξιά του Η δείχνει στον κόμβο με το μεγαλύτερο κλειδί στο up-tree. ΗΥ240 - Παναγιώτα Φατούρου 13

Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης Στρατηγική Συμπίεσης Μονοπατιού «Κατά τη διάρκεια εκτέλεσης μιας Find(Χ), το parent πεδίο κάθε κόμβου στο μονοπάτι που ακολουθείται από τον κόμβο με κλειδί Χ στη ρίζα, αλλάζει ώστε να δείχνει στη ρίζα». Σχήμα 9.8: Lewis & Denenberg, Data Structures & Their Algorithms, Addison-Wesley, 1991 Αποτέλεσμα Find(D) όταν χρησιμοποιείται η στρατηγική συμπίεσης μονοπατιού. ΗΥ240 - Παναγιώτα Φατούρου 14

Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης Τι αλλαγές επιφέρει η στρατηγική συμπίεσης μονοπατιού στην απόδοση? Οι MakeEmptySet() και Union() εξακολουθούν να χρειάζονται σταθερό χρόνο. Η Find() αρχικά εκτελείται στον ίδιο ακριβώς χρόνο όπως χωρίς να εφαρμόζεται η στρατηγική, αλλά μετά την εκτέλεση αρκετών Find(), η πολυπλοκότητά της γίνεται «σχεδόν σταθερή». Αποτέλεσμα Find(D) όταν χρησιμοποιείται η στρατηγική συμπίεσης μονοπατιού. ΗΥ240 - Παναγιώτα Φατούρου 15

Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης Για κάθε j, έστω F(j) η αναδρομική συνάρτηση που ορίζεται ως εξής: F(0) = 1 και F(j+1) = 2 F(j), j 0. Οι τιμές της F(j) αυξάνουν πάρα πολύ γρήγορα καθώς αυξάνεται το j, π.χ., για j = 5, Φ(5) = 2 65536 10 19728. Ο αριθμός αυτός είναι πολύ μεγάλος (η διάμετρος του σύμπαντος είναι 10 40 και το πλήθος μορίων σε ολόκληρο το σύμπαν είναι μικρότερο από 10 120 ). Ορίζουμε την log*n ως εξής: log*n = το ελάχιστο i τ.ω. F(i) n = το ελάχιστο i τ.ω. log log log log n 1 i φορές Οι τιμές της log*n αυξάνονται πάρα πολύ αργά καθώς αυξάνει το n, π.χ., log*n είναι 5 για οποιαδήποτε «χρήσιμη» τιμή του n. Αν η Find() εκτελείται σε χρόνο Ο(log*n) είναι επομένως σαν να είναι σταθερής πολυπλοκότητας. ΗΥ240 - Παναγιώτα Φατούρου 16

Αναφορές Το υλικό της ενότητας αυτής περιέχεται στo ακόλουθo βιβλίo: Harry Lewis and Larry Denenberg, Data Structures and Their Algorithms, Harper Collins Publishers, Inc., New York, 1991 Section 9.2: Disjoint Sets with Union ΗΥ240 - Παναγιώτα Φατούρου 17

Τέλος Ενότητας

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Κρήτης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.

Σημειώματα

Σημείωμα αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά Δημιουργού - Μη Εμπορική Χρήση - Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-nd/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί..

Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Κρήτης, Παναγιώτα Φατούρου. «Δομές δεδομένων. Ενότητα 8: Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)». Έκδοση: 1.0. Ηράκλειο/Ρέθυμνο 2013. Διαθέσιμο από τη δικτυακή διεύθυνση: http://www.csd.uoc.gr/~hy240/