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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Επιλογή. Πρόβλημα Επιλογής. Μέγιστο / Ελάχιστο. Εφαρμογές

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Βασικές Έννοιες Θεωρίας Γραφημάτων

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

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

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

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

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

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

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

Μέγιστη Ροή Ελάχιστη Τομή

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

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

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

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

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

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

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

Ασυμπτωτικός Συμβολισμός

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

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

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

Κοντινότεροι Κοινοί Πρόγονοι

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

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

Transcript:

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

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

Πρόβλημα 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 ενώσεων. Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2018) Λεξικό, Union - Find 3

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

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

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

Ένωση α 4 ε 3 β γ ζ η δ α 7 uniontree(elem x, elem y) { if (x == y) return; A[y] = x; A[x].size += A[y].size; } β γ ε δ ζ η Λεξικό, Union - Find 7

Απόδοση Χρόνος χ.π. για m finds και n unions: O(mn+ 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! Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2018) Λεξικό, Union - Find 8

Βεβαρυμένη Ένωση «Δεύτερο» σύνολο αυτό με τα λιγότερα στοιχεία. Λογαριθμικό ύψος δέντρου : Ο(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) Απλή υλοποίηση και αποδεκτή απόδοση. Αλγόριθμοι & Πολυπλοκότητα (Χειμώνας 2018) Λεξικό, Union - Find 9

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

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

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

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

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

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

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