Δομές Δεδομένων 2η Διάλεξη Αλγόριθμοι Ένωσης-Εύρεσης (Union-Find)

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
Advertisements

Στοιχειώδεις Δομές Δεδομένων TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Τύποι δεδομένων στη Java • Ακέραιοι.
Chord: A scalable Peer-to-Peer Lookup Service for Internet Applications Παρουσίαση: Αθανασόπουλος, Αλεξάκης, Δεβελέγκα, Πεχλιβάνη, Φωτιάδου, Φωτόπουλος.
Αλγόριθμοι Αναζήτησης
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
Ανακτηση Πληροφοριασ σε νεφη Υπολογιστων
ΔΙΔΑΚΤΙΚΕΣ ΔΥΣΚΟΛΙΕΣ ΣΤΟΥΣ ΠΙΝΑΚΕΣ ΠΕΚ ΠΕΙΡΑΙΑ Α΄φάση Επιμόρφωσης Εκπ/κών κλάδου ΠΕ19 Διδακτική της Πληροφορικής Ρόδος, Νοέμβρης 2007.
Πολυπλοκότητα Παράμετροι της αποδοτικότητας ενός αλγόριθμου:
 Αυδίκου Χριστίνα  Γιουμούκης Παναγιώτης  Κιντσάκης Θάνος  Πάπιστας Γιάννης.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Ο Αλγόριθμος FP-Growth. Αλγόριθμος FP-Growth Ο αλγόριθμος χρησιμοποιεί μια συμπιεσμένη αναπαράσταση της βάσης των συναλλαγών με τη μορφή ενός FP-δέντρου.
Αλγόριθμοι και Πολυπλοκότητα
Εισαγωγικές Έννοιες Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Εργασία Η υλοποίηση του αλγορίθμου συγχώνευσης θα πρέπει να χρησιμοποιεί την ιδέα των ροών (streams). Θα πρέπει να υπάρχουν δύο διαφορετικά είδη.
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
Προσεγγιστικοί Αλγόριθμοι
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων. Πίνακας Συμβόλων (Symbol Table) (Ι)  Είναι μια δομή στην οποία αποθηκεύονται τα ονόματα ενός προγράμματος και.
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ο αλγόριθμος του Prim και ο αλγόριθμος του Kruskal.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων Φροντιστήριο - 30/04/2009.
Ο αλγόριθμος Bellman-Ford (επανεξετάζεται)
Διερεύνηση γραφήματος. Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος.
Αναζήτηση – Δέντρα (2 ο Μέρος) Advanced Data Indexing (Προηγμένη ευρετηρίαση δεδομένων)
TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει.
Ελάχιστο Συνδετικό Δέντρο
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Κεφάλαιο 4: Συνδεσμικότητα Data Engineering Lab 1.
Λεξικό, Union – Find Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Διερεύνηση γραφήματος. Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος.
Quicksort Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο.
Advanced Data Indexing (Προηγμένη ευρετηρίαση δεδομένων) Κατακερματισμός – Hashing (1 ο Μέρος)
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων.
Μέγιστη ροή TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A Συνάρτηση χωρητικότητας Κατευθυνόμενο γράφημα.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι13-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ο αλγόριθμος Dijkstra για εύρεση βραχυτέρων μονοπατιών.
1 ΤΜΗΜΑ ΜΠΕΣ Αλγόριθμοι Αναζήτησης Εργασία 1 Τυφλή Αναζήτηση.
Δομές Δεδομένων 1 Θέματα Απόδοσης. Δομές Δεδομένων 2 Οργανώνοντας τα Δεδομένα  Η επιλογή της δομής δεδομένων και του αλγορίθμου επηρεάζουν το χρόνο εκτέλεσης.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Επεξεργασία Ερωτήσεων.
Συνδεσμικότητα ΘΕΩΡΙΑ ΓΡΑΦΩΝ Εργαστήριο Τεχνολογίας & Επεξεργασίας Δεδομένων Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Κεφάλαιο 4: Συνδεσμικότητα.
Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Συνδετικότητα γραφήματος (graph connectivity). α β Υπάρχει μονοπάτι μεταξύ α και β; Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές.
Για μτ από ατ μέχρι ττ [με_βήμα β] εντολές Τέλος_επανάληψης : περιοχή εντολών μτ : η μεταβλητή της οποίας η τιμή θα περάσει από την αρχική.
ΠΩΣ ΑΝΤΙΛΑΜΒΑΝΟΝΤΑΙ ΟΙ ΜΑΘΗΤΕΣ ΤΗ ΧΡΗΣΗ ΓΡΑΜΜΑΤΩΝ ΣΤΗΝ ΑΛΓΕΒΡΑ.
Δομές Δεδομένων 7η Διάλεξη Αφηρημένοι Τύποι Δεδομένων Ε. Μαρκάκης.
17η Διάλεξη Ισορροπημένα δέντρα Ε. Μαρκάκης
Αναζήτηση σε πίνακα Αναζήτηση σε πίνακα που περιέχει ακέραιους αριθμούς.
ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ & ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΣΥΓΧΩΝΕΥΣΗ. Δυαδική αναζήτηση (Binary search) ΔΕΔΟΜΕΝΟ: ένα μεγάλο αρχείο που περιέχει τιμές z [0,1,…,n-1] ταξινομημένες.
Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα:
Δυναμικός Κατακερματισμός
Στοιχειώδεις Δομές Δεδομένων: Πίνακες και Λίστες
Επίλυση Προβλημάτων με Αναζήτηση
ΑΛΓΟΡΙΘΜΟΣ ΠΡΟΒΛΗΜΑ ΑΛΓΟΡΙΘΜΟΣ ΛΥΣΗ
Πίνακες και αλφαριθμητικά
3η Διάλεξη Στοιχειώδεις Δομές Δεδομένων: Πίνακες Ε. Μαρκάκης
5η Διάλεξη Λίστες και αρχές ανάλυσης αλγορίθμων Ε. Μαρκάκης
9η Διάλεξη Ταξινόμηση Ε. Μαρκάκης
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Μέγιστη ροή Κατευθυνόμενο γράφημα 12 Συνάρτηση χωρητικότητας
Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών
Ουρά Προτεραιότητας (priority queue)
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ
ΑΣΥΜΠΤΩΤΙΚΗ ΑΝΑΛΥΣΗ & ΠΡΟΣΘΕΣΗ
19η Διάλεξη Εξωτερική Αναζήτηση και Β-δέντρα Ε. Μαρκάκης
ΗΥ-150 Προγραμματισμός Αναδρομή (1/2).
Union - Find 30 Μαρτίου 2017.
Δυναμικός Κατακερματισμός
Μεταγράφημα παρουσίασης:

Δομές Δεδομένων 2η Διάλεξη Αλγόριθμοι Ένωσης-Εύρεσης (Union-Find) Ε. Μαρκάκης Βασίζεται στις διαφάνειες των R. Sedgewick – K. Wayne

Περίληψη Συνδετικότητα δικτύου Αφαιρέσεις Συνδεδεμένα συστατικά Αφηρημένη εύρεση-ένωση Γρήγορη εύρεση Γρήγορη ένωση Σταθμισμένη γρήγορη ένωση Σταθμισμένη γρήγορη ένωση με συμπίεση μονοπατιών Δομές Δεδομένων

Προβλήματα Συνδετικότητας Γράφος (graph): Ένα σύνολο από αντικείμενα (κόμβοι ή κορυφές) Πλευρές (σύνδεσμοι μεταξύ αντικειμένων) Αν έχουμε Ν αντικείμενα, τα ονοματίζουμε από 0 ως Ν-1 Δομές Δεδομένων

Προβλήματα Συνδετικότητας Τα αντικείμενα μπορεί να απεικονίζουν: Κόμβους σε ένα δίκτυο υπολογιστών (δρομολογητές, πάροχοι δικτύου, κτλ) Ιστοσελίδες (web graph) Τρανζίστορ ενός μικροτσιπ Χρήστες του facebook (κοινωνικά δίκτυα) Πρωτείνες (βιολογικά δίκτυα για την αλληλεπίδραση πρωτεϊνών) Δομές Δεδομένων

Συνδετικότητα δικτύου Είσοδος: Δίνεται μία ακολουθία από ζεύγη ακεραίων Κάθε ακέραιος είναι ένα αντικείμενο Κάθε ζεύγος αντιπροσωπεύει μία σύνδεση Η συνδετικότητα είναι μεταβατική σχέση: Αν συνδέεται(p,q) και συνδέεται(q,r) τότε συνδέεται(p,r) Πρόβλημα: εντοπισμός των περιττών ζευγών Ένα ζεύγος (p, q) είναι περιττό αν από τα ζεύγη που έχουν εξεταστεί πριν το (p, q) συνεπάγεται ότι συνδέεται(p,q). Στην έξοδο τυπώνονται μόνο τα μη περιττά ζεύγη Προσοχή στο τι ακριβώς ζητάει το πρόβλημα! Δεν ζητάει το μονοπάτι ανάμεσα στα αντικείμενα Η εύρεση του μονοπατιού μπορεί να είναι πιο δύσκολη Δομές Δεδομένων

Παράδειγμα Είσοδος Έξοδος 3 4 3 4 4 9 4 9 8 0 8 0 2 3 2 3 5 6 5 6 2 9 Είσοδος Έξοδος 3 4 3 4 4 9 4 9 8 0 8 0 2 3 2 3 5 6 5 6 2 9 5 9 5 9 7 3 7 3 7 5 5 6 1 6 5 9 2 3 4 7 8 Δομές Δεδομένων

Συνδετικότητα δικτύου u v Συνδέεται το u με το v? Δομές Δεδομένων

Αφαιρέσεις Ποιες είναι οι βασικές λειτουργίες που χρειαζόμαστε? Απλό μοντέλο της φύσης της συνδεσιμότητας Αντικείμενα 0 1 2 3 4 5 6 7 8 9 κόμβοι του γράφου Σύνολα από αντικείμενα που συνδέονται μεταξύ τους (ανανεώνεται κατά τη διάρκεια του αλγορίθμου) 0 1 { 2 3 9 } { 5 6 } 7 { 4 8 } συνδεδεμένα υποσύνολα Ερώτηση εύρεσης: τα 2 και 9 ανήκουν στο ίδιο σύνολο; 0 1 { 2 3 9 } { 5 6 } 7 { 4 8 } συνδέονται δύο σημεία; Εντολή ένωσης: συγχώνευσε τα σύνολα με το 3 και το 8 0 1 { 2 3 4 8 9 } { 5 6 } 7 νέα σύνδεση μεταξύ σημείων Δομές Δεδομένων

Αφαιρέσεις Οι αλγόριθμοι ένωσης-εύρεσης (union-find) διαχειρίζονται αντικείμενα στα οποία αντιστοιχίζουμε τους ακεραίους 0 έως N-1 Αποκρύπτονται λεπτομέρειες άσχετες με την ένωση-εύρεση Οι ακέραιοι επιτρέπουν γρήγορη προσπέλαση στα αντικείμενα Χρήση ως δείκτες σε πίνακες Πίνακας συμβόλων για αντιστοίχιση Μετάφραση ονομάτων σε αριθμούς Δομές Δεδομένων

Συνδεδεμένα συστατικά Σύνολο συνδεδεμένων σημείων: Συνδεδεμένο συστατικό (connected component) Κάθε εντολή ένωσης μειώνει τα σύνολα κατά ένα Είσοδος Έξοδος 3 4 3 4 4 9 4 9 8 0 8 0 2 3 2 3 5 6 5 6 2 9 5 9 5 9 7 3 7 3 Έχουμε 10 – 7 = 3 συστατικά Δομές Δεδομένων

Αφηρημένη ένωση-εύρεση Γενική μορφή της λύσης του προβλήματός μας Για κάθε νέο ζεύγος (p, q) που διαβάζουμε: Κάνε μία ερώτηση εύρεσης για να δούμε αν ήδη συνδέεται το p με το q Αν ναι, τότε το (p, q) είναι περιττό ζεύγος Αν όχι, το (p, q) δεν είναι περιττό: εκτέλεσε μία εντολή ένωσης για να ενώσουμε τα σύνολα που περιέχουν το p και το q Στόχος: Σχεδιασμός αποδοτικής δομής δεδομένων Παρατηρήσεις Οι ευρέσεις και οι ενώσεις μπορούν να αναμειγνύονται Τα ερωτήματα εύρεσης απαντώνται μόλις τεθούν Το πλήθος των εντολών M μπορεί να είναι τεράστιο Το πλήθος των αντικειμένων N μπορεί να είναι τεράστιο Δομές Δεδομένων

Γρήγορη εύρεση (Quick Find) Δομή δεδομένων Χρήση πίνακα ακεραίων id[] μεγέθους N Ερμηνεία: τα p και q συνδέονται αν έχουν το ίδιο id i 0 1 2 3 4 5 6 7 8 9 id[i] 0 1 9 9 9 6 6 7 8 9 Υλοποίηση Εύρεσης: Έλεγξε αν τα p και q έχουν το ίδιο id Π.χ. Αν (p,q) = (3,6), id[3]=9 και id[6]=6 άρα τα 3 και 6 δεν συνδέονται Υλοποίηση Ένωσης: Συγχώνευση των συστατικών των p και q Αλλαγή των καταχωρήσεων με id[p] σε id[q] Ένωση των συστατικών που περιέχουν τα 3 και 6 id[i] 0 1 6 6 6 6 6 7 8 6 Δομές Δεδομένων

Γρήγορη εύρεση public class QuickF { public static void main(String[] args) { int N = Integer.parseInt(args[0]); int id[] = new int[N]; for (int i = 0; i < N ; i++) id[i] = i; for( In.init(); !In.empty(); ) { int p = In.getInt(), q = In.getInt(); int t = id[p]; if (t == id[q]) continue; //περιττό ζεύγος for (int i = 0;i<N;i++) if (id[i] == t) id[i] = id[q]; Out.println(" " +p+""+q); } Δομές Δεδομένων

Γρήγορη εύρεση Πρόβλημα: μπορεί να αλλάζουν πολλά στοιχεία του πίνακα id[] πολύ συχνά Δομές Δεδομένων

Γρήγορη εύρεση Πόσο γρήγορη είναι η γρήγορη εύρεση; Μπορεί να πάρει MN βήματα για M ενώσεις με N αντικείμενα Αριθμητικό παράδειγμα Δίνονται 1010 ζεύγη που συνδέουν Ν =109 αντικείμενα Με πρόχειρους υπολογισμούς για ένα σύγχρονο υπολογιστή η γρήγορη ένωση απαιτεί περίπου 300 χρόνια Τι γίνεται αν δεκαπλασιαστεί η ταχύτητα/χωρητικότητα; Στη μνήμη χωράει δεκαπλάσιο πρόβλημα Ο χρόνος που θα χρειαστεί όμως είναι κι αυτός δεκαπλάσιος! 10N x 10M / 10 = 10 x N x M Δομές Δεδομένων

Γρήγορη ένωση (Quick Union) Ιδέα: Απεικόνιση κάθε συνδεδεμένου συνόλου ως δέντρο Κάνει πολύ γρήγορη την ένωση με αντίτιμο στην εύρεση Δομή δεδομένων Πίνακας ακεραίων id[] μεγέθους N Ερμηνεία: το id[i]είναι ο πατέρας του i Η ρίζα στο δέντρο που βρίσκεται ο i είναι το id[id[id[…id[i]…]]] Σταματάμε όταν id[j]=j (μόνο η ρίζα έχει πατέρα τον εαυτό της) i 0 1 2 3 4 5 6 7 8 9 id[i] 0 1 9 4 4 6 6 7 8 9 Εύρεση: Έλεγξε αν τα p και q έχουν την ίδια ρίζα έστω π.χ. το (4, 9) Ένωση: Συγχώνευση των συστατικών των p και q «Κρεμάμε» το δέντρο του p στη ρίζα του q id[i] 0 1 9 4 9 6 6 7 8 9 Δομές Δεδομένων

Γρήγορη ένωση public class QuickU { public static void main(String[] args) { int N = Integer.parseInt(args[0]); int id[] = new int[N]; for (int i = 0; i < N ; i++) id[i] = i; for( In.init(); !In.empty(); ) { int i, j, p = In.getInt(), q = In.getInt(); for (i = p; i != id[i]; i = id[i]); for (j = q; j != id[j]; j = id[j]); if (i == j) continue; id[i] = j; Out.println(" " + p + " " + q); } Δομές Δεδομένων

Γρήγορη ένωση Πρόβλημα: μπορεί να διατρέξουμε πολλούς συνδέσμους Δομές Δεδομένων

Γρήγορη Ένωση Το πόσο ρηχά θα είναι τα δέντρα εξαρτάται από την είσοδο Είσοδος Έξοδος 8 7 8 7 7 6 7 6 6 5 6 5 5 4 5 4 4 3 4 3 3 2 3 2 2 1 2 1 1 0 1 0 Εδώ σε κάθε βήμα πρέπει να διατρέξουμε όλο το δέντρο για να βρούμε τη ρίζα (Ο(Ν) βήματα για τις τελευταίες συνδέσεις) Δομές Δεδομένων

Γρήγορη ένωση Πόσο γρήγορη είναι η γρήγορη ένωση; Δεν είναι πολύ πιο γρήγορη από τη γρήγορη εύρεση Παρόμοια τάξη μεγέθους (εξαρτάται και από τη φύση της είσοδου) Μειονέκτημα γρήγορης εύρεσης Η ένωση είναι αργή (διατρέχουμε όλο τον πίνακα) Τα δέντρα είναι ρηχά αλλά το κόστος της ένωσης είναι μεγάλο Μειονέκτημα γρήγορης ένωσης Τα δέντρα μπορεί να έχουν βάθος. Χειρότερη περίπτωση: όταν το δέντρο που σχηματίζεται είναι μία ευθεία γραμμή με βάθος Ν-1 Η εύρεση είναι αργή (μπορεί να διατρέξουμε τον πίνακα) Για να γίνει η ένωση πρέπει πρώτα να κάνουμε την εύρεση Στόχος: ρηχά δέντρα αλλά με μικρό κόστος! Δομές Δεδομένων

Σταθμισμένη γρήγορη ένωση Παραλλαγή της γρήγορης ένωσης Τροποποιούμε την ένωση για να κρατάμε τα δέντρα ρηχά Παρακολουθούμε το μέγεθος κάθε δέντρου Χρήση ενός πρόσθετου πίνακα για να κρατάμε το μέγεθος Το μικρότερο δέντρο τοποθετείται κάτω από το μεγαλύτερο Το μέγεθος αναφέρεται στο σύνολο των κόμβων Παράδειγμα: αν διαβάσουμε το ζεύγος (3, 5) Η σταθμισμένη ένωση τοποθετεί το 6 κάτω από το 9 Δομές Δεδομένων

Σταθμισμένη γρήγορη ένωση Τα δέντρα παραμένουν ρηχά Δομές Δεδομένων

Σταθμισμένη γρήγορη ένωση Υλοποίηση σε Java Σχεδόν ίδια με τη γρήγορη ένωση Χρήση πρόσθετου πίνακα sz[] για το πλήθος κόμβων κάθε δέντρου Έχει νόημα μόνο για τις ρίζες των δένδρων Εύρεση: ίδια με αυτή στη γρήγορη ένωση Ένωση: παραλλαγή της γρήγορης ένωσης Συγχώνευση του μικρότερου δέντρου κάτω από το μεγαλύτερο Αρχικοποίηση όλων των δένδρων σε μέγεθος 1 Ενημέρωση του πίνακα sz[] if (sz[i] < sz[j]) { id[i] = j; sz[j] += sz[i]; } else { id[j] = i; sz[i] += sz[j]; } Δομές Δεδομένων

Σταθμισμένη γρήγορη ένωση Απόδοση της σταθμισμένης γρήγορης ένωσης Εύρεση: χρόνος ανάλογος με το βάθος των p και q Ένωση: σταθερός χρόνος αφού βρεθούν οι ρίζες Αποδεικνύεται ότι το βάθος είναι μέχρι logN (=log2N) Άρα εύρεση-ένωση είναι ανάλογες του logN Πολύ καλύτερη από τις προηγούμενες μεθόδους! Σταματάμε εδώ ή μπορούμε να κάνουμε κάτι ακόμα καλύτερο; Μπορούμε: συμπίεση μονοπατιών! Για να βρούμε τη ρίζα διατρέχουμε ένα δέντρο Από τον κόμβο εκκίνησης ως τη ρίζα Σε κάθε βήμα συμπιέζουμε το δέντρο Τοποθετούμε τον τρέχοντα κόμβο κάτω από τη ρίζα Το δέντρο συμπιέζεται σε κάθε εύρεση Δομές Δεδομένων

Ένωση με συμπίεση μονοπατιών Βασική υλοποίηση συμπίεσης μονοπατιών Προσθήκη δεύτερου βρόχου Κάνει τον πατέρα κάθε κόμβου ίσο με τη ρίζα Απαιτεί δεύτερο πέρασμα της διαδρομής Απλούστερη υλοποίηση συμπίεσης μονοπατιών Κάθε δεύτερος κόμβος δείχνει στον πατέρα του πατέρα του Το δέντρο συμπιέζεται κατά το ήμισυ Στην πράξη η διαφορά είναι μικρή for (i = p; i != id[i]; i = id[i]) id[i] = id[id[i]]; for (j = q; j != id[j]; j = id[j]) id[j] = id[id[j]]; Δομές Δεδομένων

Ένωση με συμπίεση μονοπατιών Παραδείγματα Παράδειγμα 1: σχετικά ρηχά δέντρα, προσθήκη του 1-6 Παράδειγμα 2: λίγο βαθιά δέντρα, προσθήκη του 6-8 Παράδειγμα 3: πολύ βαθιά δέντρα, μειώνεται το βάθος στο μισό περίπου Δομές Δεδομένων

Ένωση με συμπίεση μονοπατιών Σύγκριση των αλγορίθμων F: γρήγορη εύρεση, U: γρήγορη ένωση W: σταθμισμένη γρήγορη ένωση P: με πλήρη συμπίεση, H: με ημιδιπλασιασμό N M F U W P H 1000 3819 63 53 17 18 15 2500 12263 185 159 22 19 24 5000 21591 698 697 34 33 35 10000 41140 2891 3987 85 101 74 25000 162748 237 267 267 50000 279279 447 533 473 100000 676113 1382 1238 1174 Δομές Δεδομένων

Άλλες Εφαρμογές των μεθόδων Ένωσης-Εύρεσης Το παιχνίδι Hex [Piet Hein 1942, John Nash 1948, Parker Brothers 1962] Επεξεργασία Εικόνων Δομές Δεδομένων