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

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

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

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

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

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

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

Cuckoo Hashing. Αλγόριθμοι και Πολυπλοκότητα. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

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

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

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

Δοµές Δεδοµένων. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Ουρές Προτεραιότητας 2

Ουρά Προτεραιότητας: Heap

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Ουρά Προτεραιότητας: Heap

Ουρά Προτεραιότητας: Heap

Ουρά Προτεραιότητας: Heap

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

Κεφάλαιο 6 Ουρές Προτεραιότητας

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ουρές Προτεραιότητας Σωροί υλοποίηση και πράξεις Ο αλγόριθμος ταξινόμησης HeapSort

έντρα Πολλαπλής ιακλάδωσης και (a, b)- έντρα

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

υαδικά έντρα Αναζήτησης

Συνδετικότητα γραφήματος (graph connectivity)

Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2

Πληροφορική 2. Δομές δεδομένων και αρχείων

Πελάτες φθάνουν στο ταμείο μιας τράπεζας Eνα μόνο ταμείο είναι ανοικτό Κάθε πελάτης παρουσιάζεται με ένα νούμερο - αριθμός προτεραιότητας Όσο ο

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

Κατακερµατισµός. Οργάνωση Αρχείων (σύνοψη) Οργάνωση αρχείων: πως είναι τοποθετημένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Ανάλυση αλγορίθμων. Χρόνος εκτέλεσης: Αναμενόμενη περίπτωση. - απαιτεί γνώση της κατανομής εισόδου

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

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

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1

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

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

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

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δοµές Δεδοµένων

Διαίρει-και-Βασίλευε. Διαίρει-και-Βασίλευε. MergeSort. MergeSort. Πρόβλημα Ταξινόμησης: Είσοδος : ακολουθία n αριθμών (α 1

Ουρά Προτεραιότητας (priority queue)

Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε:

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

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

Εισαγωγή ενός νέου στοιχείου. Επιλογή i-οστoύ στοιχείου : Εύρεση στοιχείου με το i-οστό μικρότερο κλειδί

ΟιβασικέςπράξειςπουορίζουντονΑΤΔ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

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

Εισαγωγή στους Αλγόριθμους. Παύλος Εφραιμίδης, Λέκτορας

Εκτενείς Δομές Δεδομένων

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

Προγραμματισμός Ι (ΗΥ120)

Quicksort. Πρόβλημα Ταξινόμησης. Μέθοδοι Ταξινόμησης. Συγκριτικοί Αλγόριθμοι

Οι βασικές πράξεις που ορίζουν τον ΑΤ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

Διάλεξη 26: Σωροί. Διδάσκων: Παναγιώτης Ανδρέου

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

Δοµές Δεδοµένων. 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων. Ε. Μαρκάκης

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

Αναδρομικές Σχέσεις «ιαίρει-και-βασίλευε»

ΠΛΗ111. Ανοιξη Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις

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

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

Πρόβληµα Επιλογής. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Επιλογή 1

Ουρές προτεραιότητας

ΕΝΟΤΗΤΑ 4 ΣΥΝΟΛΑ - ΛΕΞΙΚΑ

Δομές Δεδομένων και Αλγόριθμοι. Λουκάς Γεωργιάδης

Το εσωτερικό ενός Σ Β

Δομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου

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

Περιεχόμενα. Περιεχόμενα

Αν ένα πρόβλημα λύνεται από δύο ή περισσότερους αλγόριθμους, ποιος θα είναι ο καλύτερος; Με ποια κριτήρια θα τους συγκρίνουμε;

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

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

Περιεχόμενα. Εισαγωγή του επιμελητή, Γιάννης Σταματίου 15 Πρόλογος 17 Εισαγωγή 23. Μέρος I. ΕΠΑΝΑΛΗΠΤΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΑΝΑΛΛΟΙΩΤΕΣ ΣΥΝΘΗΚΕΣ

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

8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση

Όρια Αλγόριθμων Ταξινόμησης. Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

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

Ουρά Προτεραιότητας (priority queue)

Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο

1. Η χειρότερη περίπτωση είναι όταν γίνου 10 επαναλήψεις, δηλαδή για n = 0.

Quicksort [Hoare, 62] Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Quicksort 1

Ο αλγόριθμος Quick-Sort. 6/14/2007 3:42 AM Quick-Sort 1

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

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

Ταξινόμηση με συγχώνευση Merge Sort

Σύνοψη Προηγούμενου. Πίνακες (Arrays) Πίνακες (Arrays): Βασικές Λειτουργίες. Πίνακες (Arrays) Ορέστης Τελέλης

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

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

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

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα

Δυναμικός Προγραμματισμός

Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Transcript:

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

Πρόβληµα (ADT) Λεξικού Δυναµικά µεταβαλλόµενη συλλογή αντικειµένων που αναγνωρίζονται µε κλειδί (π.χ. κατάλογοι, πίνακες ΒΔ). Λεξικό : συλλογή αντικειµένων µε µοναδικό κλειδί. Κλειδί: αριθµός ή τύπος δεδοµένων µε ολική διάταξη. Γενίκευση και για µη-µοναδικά κλειδιά. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 2

Πρόβληµα (ADT) Λεξικού Δυναµικά µεταβαλλόµενη συλλογή αντικειµένων που αναγνωρίζονται µε κλειδί (π.χ. κατάλογοι, πίνακες ΒΔ). Λεξικό : συλλογή αντικειµένων µε µοναδικό κλειδί. Κλειδί: αριθµός ή τύπος δεδοµένων µε ολική διάταξη. Γενίκευση και για µη-µοναδικά κλειδιά. ADT λεξικού υποστηρίζει ακολουθίες λειτουργιών: Αναζήτηση στοιχείου µε κλειδί x member(x): ελέγχει ύπαρξη στοιχείου µε κλειδί x search(x): επιστρέψει δείκτη σε θέσεις x Εισαγωγή στοιχείου µε κλειδί x Διαγραφή στοιχείου µε κλειδί x Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 2

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

Λειτουργίες Λεξικού Λεξικό υποστηρίζει λειτουργίες: Αναζήτηση/εισαγωγή/διαγραφή στοιχείου µε κλειδί x Εκτύπωση στοιχείων σε αύξουσα / φθίνουσα σειρά Προηγούµενο και επόµενο στοιχείο. Μέγιστο και ελάχιστο στοιχείο. k-οστό µικρότερο στοιχείο Βοηθητικές λειτουργίες... Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 3

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

Υλοποιήσεις Λεξικού Μη-ταξινοµηµένη διασυνδεδεµένη λίστα: Εισαγωγή: Ο(1) Αναζήτηση / διαγραφή: Ο(n) Κατάλληλη όταν συχνές εισαγωγές, σπάνιες αναζητήσεις / µεµονωµένες διαγραφές (π.χ. log file). Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 4

Υλοποιήσεις Λεξικού Μη-ταξινοµηµένη διασυνδεδεµένη λίστα: Εισαγωγή: Ο(1) Αναζήτηση / διαγραφή: Ο(n) Κατάλληλη όταν συχνές εισαγωγές, σπάνιες αναζητήσεις / µεµονωµένες διαγραφές (π.χ. log file). Ταξινοµηµένος πίνακας: (Δυαδική) αναζήτηση: Ο(log n) Στατική συλλογή : «εισαγωγή» Ο(log n) / στοιχείο Χρόνος ταξινόµησης : Ο(n log n) Δυναµική συλλογή : εισαγωγή / διαγραφή Ο(n) Κατάλληλη όταν συχνές αναζητήσεις και δεδοµένα µεταβάλλονται σπάνια (π.χ. αγγλο-ελληνικό λεξικό). Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 4

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

Υλοποιήσεις Λεξικού Ζυγισµένο (Δυαδικό) Δέντρο Αναζήτησης: Αναζήτηση / εισαγωγή / διαγραφή: Ο(log n) Μέγιστο / ελάχιστο / προηγούµενο / επόµενο / k-οστό: Ο(log n) Range queries σε γραµµικό χρόνο. Πλήρως δυναµική επιπλέον χώρος για δείκτες! Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 5

Υλοποιήσεις Λεξικού Ζυγισµένο (Δυαδικό) Δέντρο Αναζήτησης: Αναζήτηση / εισαγωγή / διαγραφή: Ο(log n) Μέγιστο / ελάχιστο / προηγούµενο / επόµενο / k-οστό: Ο(log n) Range queries σε γραµµικό χρόνο. Πλήρως δυναµική επιπλέον χώρος για δείκτες! Πίνακας Κατακερµατισµού (hashing): Αναζήτηση / διαγραφή : Ο(1) Εισαγωγή : Ο(1) expected amortized, Ο(log n), O(n) χ.π. Δεν υποστηρίζει αποδοτικά άλλες λειτουργίες. Δυναµική επιπλέον χώρος στον πίνακα (util 50%) Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 5

Διαχείριση Διαµερίσεων Συνόλου Λεξικό, Union - Find 6

Διαχείριση Διαµερίσεων Συνόλου Στοιχεία σύµπαντος διαµερίζονται σε κλάσεις ισοδυναµίας που µεταβάλλονται δυναµικά µε ένωση. Λειτουργίες: Εύρεση find(x): αντιπρόσωπο κλάσης όπου ανήκει x. Ένωση union(x, y): ένωση κλάσεων όπου ανήκουν x και y. Λεξικό, Union - Find 6

Διαχείριση Διαµερίσεων Συνόλου Στοιχεία σύµπαντος διαµερίζονται σε κλάσεις ισοδυναµίας που µεταβάλλονται δυναµικά µε ένωση. Λειτουργίες: Εύρεση find(x): αντιπρόσωπο κλάσης όπου ανήκει x. Ένωση union(x, y): ένωση κλάσεων όπου ανήκουν x και y. Λεξικό, Union - Find 6

Διαχείριση Διαµερίσεων Συνόλου Στοιχεία σύµπαντος διαµερίζονται σε κλάσεις ισοδυναµίας που µεταβάλλονται δυναµικά µε ένωση. Λειτουργίες: Εύρεση find(x): αντιπρόσωπο κλάσης όπου ανήκει x. Ένωση union(x, y): ένωση κλάσεων όπου ανήκουν x και y. Λεξικό, Union - Find 6

Διαχείριση Διαµερίσεων Συνόλου Στοιχεία σύµπαντος διαµερίζονται σε κλάσεις ισοδυναµίας που µεταβάλλονται δυναµικά µε ένωση. Λειτουργίες: Εύρεση find(x): αντιπρόσωπο κλάσης όπου ανήκει x. Ένωση union(x, y): ένωση κλάσεων όπου ανήκουν x και y. Λεξικό, Union - Find 6

Διαχείριση Διαµερίσεων Συνόλου Στοιχεία σύµπαντος διαµερίζονται σε κλάσεις ισοδυναµίας που µεταβάλλονται δυναµικά µε ένωση. Λειτουργίες: Εύρεση find(x): αντιπρόσωπο κλάσης όπου ανήκει x. Ένωση union(x, y): ένωση κλάσεων όπου ανήκουν x και y. Λεξικό, Union - Find 6

Διαχείριση Διαµερίσεων Συνόλου Στοιχεία σύµπαντος διαµερίζονται σε κλάσεις ισοδυναµίας που µεταβάλλονται δυναµικά µε ένωση. Λειτουργίες: Εύρεση find(x): αντιπρόσωπο κλάσης όπου ανήκει x. Ένωση union(x, y): ένωση κλάσεων όπου ανήκουν x και y. Λεξικό, Union - Find 6

Διαχείριση Διαµερίσεων Συνόλου Στοιχεία σύµπαντος διαµερίζονται σε κλάσεις ισοδυναµίας που µεταβάλλονται δυναµικά µε ένωση. Λειτουργίες: Εύρεση find(x): αντιπρόσωπο κλάσης όπου ανήκει x. Ένωση union(x, y): ένωση κλάσεων όπου ανήκουν x και y. Λεξικό, Union - Find 6

Διαχείριση Διαµερίσεων Συνόλου Στοιχεία σύµπαντος διαµερίζονται σε κλάσεις ισοδυναµίας που µεταβάλλονται δυναµικά µε ένωση. Λειτουργίες: Εύρεση find(x): αντιπρόσωπο κλάσης όπου ανήκει x. Ένωση union(x, y): ένωση κλάσεων όπου ανήκουν x και y. Λεξικό, Union - Find 6

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

Πρόβληµα Union Find Στοιχεία U = {1, 2,, n} αρχικά σε n κλάσεις. Κάθε κλάση προσδιορίζεται από στοιχείο αντιπρόσωπο. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 7

Πρόβληµα Union Find Στοιχεία U = {1, 2,, n} αρχικά σε n κλάσεις. Κάθε κλάση προσδιορίζεται από στοιχείο αντιπρόσωπο. find(x): αντιπρόσωπος κλάσης όπου ανήκει x. Διατηρούµε µοναδικό αντιπρόσωπο για κάθε κλάση. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 7

Πρόβληµα Union Find Στοιχεία U = {1, 2,, n} αρχικά σε n κλάσεις. Κάθε κλάση προσδιορίζεται από στοιχείο αντιπρόσωπο. find(x): αντιπρόσωπος κλάσης όπου ανήκει x. Διατηρούµε µοναδικό αντιπρόσωπο για κάθε κλάση. union(x, y): αντικατάσταση (αντιπροσώπων) κλάσεων x και y µε κλάση που προκύπτει από ένωση. Ελέγχουµε αν x και y ανήκουν σε διαφορετική κλάση. Νέος αντιπρόσωπος από τους αντιπροσώπους κλάσεων x, y Πάντα διαµέριση του U σε κλάσεις. n 1 ενώσεις (µετά από n 1, µία µόνο κλάση). Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 7

Πρόβληµα Union Find Στοιχεία U = {1, 2,, n} αρχικά σε n κλάσεις. Κάθε κλάση προσδιορίζεται από στοιχείο αντιπρόσωπο. find(x): αντιπρόσωπος κλάσης όπου ανήκει x. Διατηρούµε µοναδικό αντιπρόσωπο για κάθε κλάση. union(x, y): αντικατάσταση (αντιπροσώπων) κλάσεων x και y µε κλάση που προκύπτει από ένωση. Ελέγχουµε αν x και y ανήκουν σε διαφορετική κλάση. Νέος αντιπρόσωπος από τους αντιπροσώπους κλάσεων x, y Πάντα διαµέριση του U σε κλάσεις. n 1 ενώσεις (µετά από n 1, µία µόνο κλάση). Δοµή δεδοµένων που ελαχιστοποιεί συνολικό χρόνο για ακολουθία m ευρέσεων και n 1 ενώσεων. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 7

Αναπαράσταση Δέντρου & Δάσους Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 8

Αναπαράσταση Δέντρου & Δάσους Πίνακας γονέων Α[1...n] για δέντρο µε ρίζα και n κόµβους: Α[i] = j ανν j πατέρας του i στο δέντρο. Α[ρίζας] = ρίζα (ή -1). Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 8

Αναπαράσταση Δέντρου & Δάσους Πίνακας γονέων Α[1...n] για δέντρο µε ρίζα και n κόµβους: Α[i] = j ανν j πατέρας του i στο δέντρο. Α[ρίζας] = ρίζα (ή -1). Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 8

Αναπαράσταση Δέντρου & Δάσους Πίνακας γονέων Α[1...n] για δέντρο µε ρίζα και n κόµβους: Α[i] = j ανν j πατέρας του i στο δέντρο. Α[ρίζας] = ρίζα (ή -1). Όµοια για δάσος όπου κάθε δέντρο έχει ρίζα. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 8

Αναπαράσταση Δέντρου & Δάσους Πίνακας γονέων Α[1...n] για δέντρο µε ρίζα και n κόµβους: Α[i] = j ανν j πατέρας του i στο δέντρο. Α[ρίζας] = ρίζα (ή -1). Όµοια για δάσος όπου κάθε δέντρο έχει ρίζα. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 8

Αναπαράσταση µε Δέντρα Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011)

Αναπαράσταση µε Δέντρα Κλάση: δέντρο µε ρίζα το στοιχείο-αντιπρόσωπο. Όνοµα ρίζας. Μέγεθος κλάσης. Στοιχείο: κόµβος δέντρου µε πεδία Όνοµα στοιχείου. Όνοµα γονέα: όνοµα προηγούµενου στοιχείου στο µονοπάτι προς τη ρίζα-αντιπρόσωπο. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011)

Αναπαράσταση µε Δέντρα Κλάση: δέντρο µε ρίζα το στοιχείο-αντιπρόσωπο. Όνοµα ρίζας. Μέγεθος κλάσης. Στοιχείο: κόµβος δέντρου µε πεδία Όνοµα στοιχείου. Όνοµα γονέα: όνοµα προηγούµενου στοιχείου στο µονοπάτι προς τη ρίζα-αντιπρόσωπο. Αναπαράσταση µε πίνακα γονέων: A[x] : γονέας στοιχείου x. Ρίζα στοιχείο αντιπρόσωπος έχει Α[x] = x και επιπλέον πεδίο size. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011)

Αναπαράσταση µε Δέντρα Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 10

Αναπαράσταση µε Δέντρα find(x): ακολουθούµε δείκτες σε γονέα µέχρι τη ρίζα. elem find(elem x) { while (x!= A[x]) x = A[x]; return(x); } Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 10

Αναπαράσταση µε Δέντρα find(x): ακολουθούµε δείκτες σε γονέα µέχρι τη ρίζα. elem find(elem x) { while (x!= A[x]) x = A[x]; return(x); } union(x, y): x και y αντιπρόσωποι διαφορετικών συνόλων Συνένωση δέντρων: ρίζα 1 ου συν. γίνεται γονέας ρίζας 2 ου συν. Ενηµέρωση µεγέθους Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 10

Ένωση Λεξικό, Union - Find 11

Ένωση Λεξικό, Union - Find 11

Ένωση uniontree(elem x, elem y) { if (x == y) return; A[y] = x; A[x].size += A[y].size; } Λεξικό, Union - Find 11

Απόδοση Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 12

Απόδοση Χρόνος χ.π. για m finds και n unions: O(m n + n) Union : Ο(1) χρόνος. Find : Ο(ύψος δέντρου) Χειρότερη περίπτωση: ύψος = n 1 union(n-1, n), union(n-2, n-1), union(n-3, n-2), union(n-4, n-3),, union(3, 2), union(1, 2). Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 12

Απόδοση Χρόνος χ.π. για m finds και n unions: O(m n + n) Union : Ο(1) χρόνος. Find : Ο(ύψος δέντρου) Χειρότερη περίπτωση: ύψος = n 1 union(n-1, n), union(n-2, n-1), union(n-3, n-2), union(n-4, n-3),, union(3, 2), union(1, 2). Απλή δοµή, εύκολη υλοποίηση, αλλά ακριβό find! Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 12

Βεβαρυµένη Ένωση Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 13

Βεβαρυµένη Ένωση «Δεύτερο» σύνολο αυτό µε τα λιγότερα στοιχεία. Λογαριθµικό ύψος δέντρου : Ο(log n). Βεβαρυµένη ένωση: δέντρο ύψους h έχει 2 h στοιχεία. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 13

Βεβαρυµένη Ένωση «Δεύτερο» σύνολο αυτό µε τα λιγότερα στοιχεία. Λογαριθµικό ύψος δέντρου : Ο(log n). Βεβαρυµένη ένωση: δέντρο ύψους h έχει 2 h στοιχεία. Απόδειξη µε επαγωγή: Ισχύει για h = 0 (δέντρο ενός στοιχείου). Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 13

Βεβαρυµένη Ένωση «Δεύτερο» σύνολο αυτό µε τα λιγότερα στοιχεία. Λογαριθµικό ύψος δέντρου : Ο(log n). Βεβαρυµένη ένωση: δέντρο ύψους h έχει 2 h στοιχεία. Απόδειξη µε επαγωγή: Ισχύει για h = 0 (δέντρο ενός στοιχείου). Ένωση δέντρων x και y µε ύψη h x, h y, και στοιχεία s x s y Επαγωγικά, υποθέτουµε s 2 h (για x και y) Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 13

Βεβαρυµένη Ένωση «Δεύτερο» σύνολο αυτό µε τα λιγότερα στοιχεία. Λογαριθµικό ύψος δέντρου : Ο(log n). Βεβαρυµένη ένωση: δέντρο ύψους h έχει 2 h στοιχεία. Απόδειξη µε επαγωγή: Ισχύει για h = 0 (δέντρο ενός στοιχείου). Ένωση δέντρων x και y µε ύψη h x, h y, και στοιχεία s x s y Επαγωγικά, υποθέτουµε s 2 h (για x και y) Ύψος ένωσης = h x : στοιχεία ένωσης 2 ύψος Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 13

Βεβαρυµένη Ένωση «Δεύτερο» σύνολο αυτό µε τα λιγότερα στοιχεία. Λογαριθµικό ύψος δέντρου : Ο(log n). Βεβαρυµένη ένωση: δέντρο ύψους h έχει 2 h στοιχεία. Απόδειξη µε επαγωγή: Ισχύει για h = 0 (δέντρο ενός στοιχείου). Ένωση δέντρων x και y µε ύψη h x, h y, και στοιχεία s x s y Επαγωγικά, υποθέτουµε s 2 h (για x και y) Ύψος ένωσης = h x : στοιχεία ένωσης 2 ύψος Ύψος ένωσης = h y + 1 : στοιχεία ένωσης 2 s y 2ύψος Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 13

Βεβαρυµένη Ένωση «Δεύτερο» σύνολο αυτό µε τα λιγότερα στοιχεία. Λογαριθµικό ύψος δέντρου : Ο(log n). Βεβαρυµένη ένωση: δέντρο ύψους h έχει 2 h στοιχεία. Απόδειξη µε επαγωγή: Ισχύει για h = 0 (δέντρο ενός στοιχείου). Ένωση δέντρων x και y µε ύψη h x, h y, και στοιχεία s x s y Επαγωγικά, υποθέτουµε s 2 h (για x και y) Ύψος ένωσης = h x : στοιχεία ένωσης 2 ύψος Ύψος ένωσης = h y + 1 : στοιχεία ένωσης 2 s y 2ύψος Χρόνος χ.π. για m finds και n unions: O(m log n + n) Απλή υλοποίηση και αποδεκτή απόδοση. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 13

Σύµπτυξη Μονοπατιών Λεξικό, Union - Find 14

Σύµπτυξη Μονοπατιών Find ακριβό γιατί στοιχεία µακριά από ρίζα. Σύµπτυξη µονοπατιού όταν find(x): Όλοι οι πρόγονοι του x (και το x) γίνονται παιδιά ρίζας. Δέντρο «κονταίνει» (όχι επιβάρυνση ασυµπτωτικού χρόνου). Στο µέλλον, θα βρίσκουµε σύνολο των στοιχείων γρήγορα. Λεξικό, Union - Find 14

Σύµπτυξη Μονοπατιών Λεξικό, Union - Find 15

Σύµπτυξη Μονοπατιών elem findtreepathcompression(elem x) { if (x!= A[x]) A[x] = findtreepathcompression(a[x]); return(a[x]); } Ανεβαίνουµε µέχρι ρίζα. Επιστρέφοντας µέχρι x, όλοι οι δείκτες γονεων τίθενται να δείχνουν στη ρίζα. Λεξικό, Union - Find 15

Απόδοση Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 16

Απόδοση Δέντρα, βεβαρυµένη ένωση, και σύµπτυξη µονοπατιών. Χρόνος χ.π. για m n finds και n unions: O(m α(n, m)) α(n, m): αντίστροφη συνάρτηση Ackermann. Μεγαλώνει εξαιρετικά αργά! Στην πράξη, µπορεί να θεωρηθεί σταθερά. Απλή δοµή, εύκολη υλοποίηση, και ουσιαστικά γραµµικός χρόνος! Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Λεξικό, Union - Find 16