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

Σχετικά έγγραφα
ΠΛΕ075: Προηγμένη Σχεδίαση Αλγορίθμων και Δομών Δεδομένων. Λουκάς Γεωργιάδης

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

Γέφυρες σε Δίκτυα. Μας δίνεται ένα δίκτυο (κατευθυνόμενο γράφημα) αφετηριακός κόμβος. Γέφυρα του (με αφετηρία τον ) :

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

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

Δένδρα. Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών :

Μέγιστη ροή. Κατευθυνόμενο γράφημα. Συνάρτηση χωρητικότητας. αφετηρίακός κόμβος. τερματικός κόμβος. Ροή δικτύου. με τις ακόλουθες ιδιότητες

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

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

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

Γράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών

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

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

Διδάσκων: Κωνσταντίνος Κώστα

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

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

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

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

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

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

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

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

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

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

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

Αναδρομικοί Αλγόριθμοι

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

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

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

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

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

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

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

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

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

Δένδρα. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

Κατηγορίες Συμπίεσης. Συμπίεση με απώλειες δεδομένων (lossy compression) π.χ. συμπίεση εικόνας και ήχου

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

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

Μελετάμε την περίπτωση όπου αποθηκεύουμε ένα (δυναμικό) σύνολο στοιχειών. Ένα στοιχείο γράφεται ως, όπου κάθε.

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

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

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

Διερεύνηση γραφήματος

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

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

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

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

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

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

Κεφάλαιο 10 Ψηφιακά Λεξικά

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

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

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

Αντισταθμιστική ανάλυση

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

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

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

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής

Εργαστήριο 2: Πίνακες

Εισαγωγή στους Αλγόριθµους. Αλγόριθµοι. Ιστορικά Στοιχεία. Ο πρώτος Αλγόριθµος. Παραδείγµατα Αλγορίθµων. Τι είναι Αλγόριθµος

Γ7.5 Αλγόριθμοι Αναζήτησης. Γ Λυκείου Κατεύθυνσης

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Αλγόριθµοι Ένωσης-Εύρεσης (Union-Find) Κεφάλαιο 1. Ε. Μαρκάκης Επικ. Καθηγητής

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

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

Κατ οίκον Εργασία 5 Σκελετοί Λύσεων

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

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

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

Κεφάλαιο 7 Λεξικά και Δυαδικά Δένδρα Αναζήτησης

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

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

Ισορροπημένα Δένδρα. για κάθε λειτουργία; Ισορροπημένο δένδρο : Διατηρεί ύψος κάθε εισαγωγή ή διαγραφή

1 ο ΦΥΛΛΑΔΙΟ ΑΣΚΗΣΕΩΝ - ΑΛΓΟΡΙΘΜΟΙ

Κεφάλαιο 8 Ισορροπημένα Δένδρα Αναζήτησης

Διάλεξη 13: Δέντρα ΙΙΙ - Ισοζυγισμένα Δέντρα, AVL Δέντρα

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων

επιστρέφει το αμέσως μεγαλύτερο από το x στοιχείο του S επιστρέφει το αμέσως μικρότερο από το x στοιχείο του S

Εργασία 3 Σκελετοί Λύσεων

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

Red-Black Δέντρα. Red-Black Δέντρα

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

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

HY380 Αλγόριθμοι και πολυπλοκότητα Hard Problems

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

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

d k 10 k + d k 1 10 k d d = k i=0 d i 10 i.

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

Σημειωματάριο Τετάρτης 29 Νοε. 2017

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

Δυναμική Διατήρηση Γραμμικής Διάταξης

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

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

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

Δυναμικός προγραμματισμός για δέντρα

Τομές Γραφήματος. Γράφημα (μη κατευθυνόμενο) Συνάρτηση βάρους ακμών. Τομή : Διαμέριση του συνόλου των κόμβων σε δύο μη κενά σύνολα

Transcript:

Κοντινότεροι Κοινοί Πρόγονοι Μας δίνεται ένα δένδρο Τ με ρίζα και μια λίστα Λ από ζεύγη κόμβων. Θέλουμε να υπολογίσουμε τον κκπ(x,y) για κάθε ζεύγος κόμβων {x,y} της Λ. α β γ Λ = { {ι,ξ}, {τ,θ}, {ο,μ}, {λ,ι}, {τ,σ}, {λ,π}, {π,σ}, {ξ,ο} } δ ε ζ η ι κ λ μ θ ν κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξ ο π ρ σ τ

Κοντινότεροι Κοινοί Πρόγονοι Στατικό δένδρο, γνωστά ζεύγη Μας δίνεται ένα δένδρο Τ και μια λίστα Λ από ζεύγη κόμβων. Θέλουμε να υπολογίσουμε τον κκπ(x,y) για κάθε ζεύγος κόμβων {x,y} της Λ. Στατικό δένδρο, άγνωστα ζεύγη Μας δίνεται ένα δένδρο Τ το οποίο θέλουμε να επεξεργαστούμε ώστε να μπορούμε να υπολογίσουμε γρήγορα τον κκπ(x,y) για οποιοδήποτε ζεύγος κόμβων {x,y}. Δυναμικό πρόβλημα Το δένδρο Τ μπορεί να μεταβάλλεται.

Κοντινότεροι Κοινοί Πρόγονοι Στατικό δένδρο, γνωστά ζεύγη Απλοϊκή λύση για υπολογισμό κκπ(x,y) α Ανεβαίνουμε τα μονοπάτια από το x και το y προς τη ρίζα μέχρι να βρούμε τον πρώτο κοινό κόμβο. β γ για ζεύγη δ ε ζ η ι κ λ μ θ ν κκπ(π,σ)=γ ξ ο π ρ σ τ

Κοντινότεροι Κοινοί Πρόγονοι Στατικό δένδρο, γνωστά ζεύγη Ιδέα: Συρρικνώνουμε τα μονοπάτια που έχουμε ήδη επεξεργαστεί. Η επεξεργασία των κόμβων πρέπει να γίνει από τα φύλλα προς τη ρίζα α α β γ συρρίκνωση του ι στον δ β γ δ ε ζ η θ δ ε ζ η θ ι κ λ μ ν κ λ μ ν ξ ο π ρ σ ξ ο π ρ σ τ κκπ(ι,ξ) = κκπ(δ,ξ) τ

Κοντινότεροι Κοινοί Πρόγονοι Στατικό δένδρο, γνωστά ζεύγη Σε κάθε κόμβο x του δένδρου αποθηκεύουμε μια λίστα κόμβων Επισκεπτόμαστε τους κόμβους σε σειρά μεταδιάταξης του Επεξεργασία κόμβου Για κάθε κόμβο Θέτουμε Συρρικνώνουμε τον : Εξετάζουμε τη λίστα που έχουμε ήδη επεξεργαστεί κόμβος στον οποίο έχει συμπιεστεί ο στον γονέα του στο

Κοντινότεροι Κοινοί Πρόγονοι α 19 β 7 γ 18 Λ(θ)={τ} δ 2 ε 6 ζ 8 η 12 17 θ ι 1 κ 5 λ 9 11 μ 16 Λ(ι)={ξ,λ} ξ 3 4 Λ(λ)={ι,π} ο π 10 Λ(μ)={ο} ρ ν 14 15 σ Λ(ξ)={ι,ο} Λ(ο)={μ,ξ} Λ(π)={λ,σ} Λ(σ)={τ,π} τ 13 Λ(τ)={θ,σ}

Κοντινότεροι Κοινοί Πρόγονοι α 19 β 7 γ 18 Λ(θ)={τ} δ ε ζ η 2 6 8 12 {ι} Λ(μ)={ο} κ 5 λ 9 11 μ Λ(λ)={ι,π} 17 16 θ ν ξ 3 4 ο π 10 ρ 14 15 σ Λ(ξ)={ι,ο} Λ(ο)={μ,ξ} Λ(π)={λ,σ} Λ(σ)={τ,π} τ 13 Λ(τ)={θ,σ}

Κοντινότεροι Κοινοί Πρόγονοι α 19 β 7 γ 18 {ι,δ} Λ(θ)={τ} ε ζ η 6 8 12 κ 5 λ 9 11 μ Λ(λ)={ι,π} Λ(μ)={ο} 17 16 θ ν ξ 3 4 ο π 10 ρ 14 15 σ Λ(ξ)={ι,ο} Λ(ο)={μ,ξ} Λ(π)={λ,σ} Λ(σ)={τ,π} κκπ(ξ,ι)=β τ 13 Λ(τ)={θ,σ}

Κοντινότεροι Κοινοί Πρόγονοι α 19 β 7 γ 18 {ι,δ} Λ(θ)={τ} ε ζ η 6 8 12 κ 5 λ 9 11 μ {ξ} Λ(λ)={ι,π} Λ(μ)={ο} 17 16 θ ν 4 ο π 10 ρ 14 15 σ Λ(ο)={μ,ξ} Λ(π)={λ,σ} Λ(σ)={τ,π} κκπ(ο,ξ)=κ τ 13 Λ(τ)={θ,σ}

Κοντινότεροι Κοινοί Πρόγονοι α 19 β 7 γ 18 {ι,δ} Λ(θ)={τ} ε ζ η 6 8 12 κ 5 λ 9 11 μ {ξ,ο} Λ(λ)={ι,π} Λ(μ)={ο} 17 16 θ ν π 10 ρ 14 15 σ Λ(π)={λ,σ} τ 13 Λ(τ)={θ,σ} Λ(σ)={τ,π}

Κοντινότεροι Κοινοί Πρόγονοι α 19 β 7 γ 18 {ι,δ} Λ(θ)={τ} ε ζ η 6 8 12 17 θ {ξ,ο,κ} Λ(μ)={ο} λ 9 11 μ 16 ν Λ(λ)={ι,π} π 10 ρ 14 15 σ Λ(π)={λ,σ} τ 13 Λ(τ)={θ,σ} Λ(σ)={τ,π}

Κοντινότεροι Κοινοί Πρόγονοι α 19 β 7 γ 18 {ι,δ,ξ,ο,κ,ε} Λ(θ)={τ} ζ η 8 12 17 θ Λ(μ)={ο} λ 9 11 μ 16 ν Λ(λ)={ι,π} π 10 ρ 14 15 σ Λ(π)={λ,σ} τ 13 Λ(τ)={θ,σ} Λ(σ)={τ,π}

Κοντινότεροι Κοινοί Πρόγονοι α 19 {ι,δ,ξ,ο,κ,ε,β} γ 18 Λ(θ)={τ} ζ η 8 12 17 θ Λ(μ)={ο} λ 9 11 μ 16 ν Λ(λ)={ι,π} π 10 ρ 14 15 σ Λ(π)={λ,σ} τ 13 Λ(τ)={θ,σ} Λ(σ)={τ,π}

Κοντινότεροι Κοινοί Πρόγονοι α 19 {ι,δ,ξ,ο,κ,ε,β} γ {ζ} 18 Λ(θ)={τ} η 12 17 θ κκπ(λ,ι)=α λ Λ(λ)={ι,π} 9 11 Λ(μ)={ο} μ 16 ν π 10 ρ 14 15 σ Λ(π)={λ,σ} τ 13 Λ(τ)={θ,σ} Λ(σ)={τ,π}

Κοντινότεροι Κοινοί Πρόγονοι α 19 {ι,δ,ξ,ο,κ,ε,β} γ {ζ} 18 Λ(θ)={τ} η 12 17 θ {λ} Λ(μ)={ο} 11 μ 16 ν κκπ(π,λ)=η π 10 ρ 14 15 σ Λ(π)={λ,σ} τ 13 Λ(τ)={θ,σ} Λ(σ)={τ,π}

Κοντινότεροι Κοινοί Πρόγονοι α 19 {ι,δ,ξ,ο,κ,ε,β} γ {ζ} 18 Λ(θ)={τ} η 12 17 θ {λ} Λ(μ)={ο} κκπ(μ,ο)=α 11 μ 16 ν {π} ρ 14 15 σ τ 13 Λ(τ)={θ,σ} Λ(σ)={τ,π}

Κοντινότεροι Κοινοί Πρόγονοι α 19 {ι,δ,ξ,ο,κ,ε,β} γ {ζ} 18 Λ(θ)={τ} η 12 {λ,π,μ} 17 16 θ ν ρ 14 15 σ τ 13 Λ(τ)={θ,σ} Λ(σ)={τ,π}

Κοντινότεροι Κοινοί Πρόγονοι α 19 {ι,δ,ξ,ο,κ,ε,β} γ 18 {λ,π,μ,ζ,η} Λ(θ)={τ} 17 θ 16 ν ρ 14 15 σ τ 13 Λ(τ)={θ,σ} Λ(σ)={τ,π}

Κοντινότεροι Κοινοί Πρόγονοι α 19 {ι,δ,ξ,ο,κ,ε,β} γ 18 {λ,π,μ,ζ,η} Λ(θ)={τ} 17 θ 16 ν ρ {τ} 14 15 σ Λ(σ)={τ,π}

Κοντινότεροι Κοινοί Πρόγονοι α 19 {ι,δ,ξ,ο,κ,ε,β} γ 18 {λ,π,μ,ζ,η} Λ(θ)={τ} 17 θ {τ,ρ} 16 ν κκπ(σ,τ)=ν κκπ(σ,π)=γ 15 σ Λ(σ)={τ,π}

Κοντινότεροι Κοινοί Πρόγονοι α 19 {ι,δ,ξ,ο,κ,ε,β} γ 18 {λ,π,μ,ζ,η} Λ(θ)={τ} 17 θ {τ,ρ,σ} 16 ν

Κοντινότεροι Κοινοί Πρόγονοι α 19 {ι,δ,ξ,ο,κ,ε,β} γ 18 {λ,π,μ,ζ,η} 17 {τ,ρ,σ,ν} Λ(θ)={τ} θ κκπ(θ,τ)=θ

Κοντινότεροι Κοινοί Πρόγονοι α 19 {ι,δ,ξ,ο,κ,ε,β} γ 18 {λ,π,μ,ζ,η,τ,ρ,σ,ν,θ}

Κοντινότεροι Κοινοί Πρόγονοι α 19 {ι,δ,ξ,ο,κ,ε,β,λ,π,μ,ζ,η,τ,ρ,σ,ν,θ,γ}

Κοντινότεροι Κοινοί Πρόγονοι Η συρρίκνωση των κόμβων μπορεί να γίνει αποτελεσματικά με μια δομή ένωσηςεύρεσης σε ξένα σύνολα Υποστηρίζει τις παρακάτω λειτουργίες επί ενός συνόλου αντικειμένων : ένωση(α,β) : Αντικαθιστά τα σύνολα που περιέχουν τα α και β με την ένωση τους εύρεση(α) : Επιστρέφει το όνομα του συνόλου που περιέχει το αντικείμενο α ένωση(α,β)

Δομή ένωσης-εύρεσης σε ξένα σύνολα Υποστηρίζει τις παρακάτω λειτουργίες επί ενός συνόλου αντικειμένων : ένωση(α,β) : Αντικαθιστά τα σύνολα που περιέχουν τα α και β με την ένωση τους εύρεση(α) : Επιστρέφει το όνομα του συνόλου που περιέχει το αντικείμενο α Δομή «σταθμισμένης ένωσης με συμπίεση διαδρομής» 1 4 4 2 3 6 5 7 ένωση(3,6) 1 6 5 7 4 8 2 3 4 8 1 6 5 7 εύρεση(2) 2 1 6 5 7 2 3 8 3 8 όνομα συνόλου = ρίζα δένδρου

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης» Υποθέτουμε ότι τα αντικείμενα μας είναι ακέραιοι αριθμοί Χρησιμοποιούμε πίνακες και μεγέθους Αρχικοποίηση : για Αρχικά κάθε αντικείμενο αποτελεί ένα ξεχωριστό σύνολο μεγέθους 1 1 2 3 4 5 6 7 8 Κάθε σύνολο έχει ένα αντιπρόσωπο. Αν το αντικείμενο k είναι αντιπρόσωπος τότε ισχύει ότι και το σύνολο έχει αντικείμενα

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης» Υποθέτουμε ότι τα αντικείμενα μας είναι ακέραιοι αριθμοί Χρησιμοποιούμε πίνακες και μεγέθους δείκτης σε αντικείμενο του συνόλου που περιέχει το k αριθμός αντικειμένων του συνόλου με αντιπρόσωπο k εύρεση(i) : Ξεκινώντας από το i ακολουθούμε τους δείκτες μέχρι να βρούμε αντικείμενο j τέτοιο ώστε. Επιστρέφουμε τo j. ένωση(i,j) : Εκτελούμε p=εύρεση(i) και q=εύρεση(j). Αν το σύνολο του q έχει περισσότερα αντικείμενα από το σύνολο του p θέτουμε. Διαφορετικά θέτουμε.

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης» void find(int i) { int j = i; while (j!= parent[j]) j = parent[j]; return j; } void union(int i, int j) { int p = find(i); int q = find(j); if (p == q) return; if (size[q] > size[p]) { parent[p] = q; size[q] += size[p]; } else { parent[q] = p; size[p] += size[q]; } }

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης» ακολουθία ενώσεων (1,2) (2,3) (1,3) (7,8) (4,6) (4,5) (6,7) (3,6) (5,7) (4,7) δάσος ένωσης-εύρεσης 1 2 3 4 5 6 7 8

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης» ακολουθία ενώσεων (1,2) (2,3) (1,3) (7,8) (4,6) (4,5) (6,7) (3,6) (5,7) (4,7) δάσος ένωσης-εύρεσης 1 3 4 5 6 7 8 2

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης» ακολουθία ενώσεων (1,2) (2,3) (1,3) (7,8) (4,6) (4,5) (6,7) (3,6) (5,7) (4,7) δάσος ένωσης-εύρεσης 1 4 5 6 7 8 2 3

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης» ακολουθία ενώσεων (1,2) (2,3) (1,3) (7,8) (4,6) (4,5) (6,7) (3,6) (5,7) (4,7) δάσος ένωσης-εύρεσης 1 4 5 6 7 8 2 3

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης» ακολουθία ενώσεων (1,2) (2,3) (1,3) (7,8) (4,6) (4,5) (6,7) (3,6) (5,7) (4,7) δάσος ένωσης-εύρεσης 1 4 5 6 7 2 3 8

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης» ακολουθία ενώσεων (1,2) (2,3) (1,3) (7,8) (4,6) (4,5) (6,7) (3,6) (5,7) (4,7) δάσος ένωσης-εύρεσης 1 4 5 7 2 3 6 8

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης» ακολουθία ενώσεων (1,2) (2,3) (1,3) (7,8) (4,6) (4,5) (6,7) (3,6) (5,7) (4,7) δάσος ένωσης-εύρεσης 1 4 7 2 3 6 5 8

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης» ακολουθία ενώσεων (1,2) (2,3) (1,3) (7,8) (4,6) (4,5) (6,7) (3,6) (5,7) (4,7) δάσος ένωσης-εύρεσης 1 4 2 3 6 5 7 8

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης» ακολουθία ενώσεων (1,2) (2,3) (1,3) (7,8) (4,6) (4,5) (6,7) (3,6) (5,7) (4,7) δάσος ένωσης-εύρεσης 4 1 2 3 6 5 7 8

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης» ακολουθία ενώσεων (1,2) (2,3) (1,3) (7,8) (4,6) (4,5) (6,7) (3,6) (5,7) (4,7) δάσος ένωσης-εύρεσης 4 1 2 3 6 5 7 8

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης» ακολουθία ενώσεων (1,2) (2,3) (1,3) (7,8) (4,6) (4,5) (6,7) (3,6) (5,7) (4,7) δάσος ένωσης-εύρεσης 4 1 2 3 6 5 7 8

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης» Ας θεωρήσουμε την ακολουθία ένωση(1,2), ένωση(3,4), ένωση(5,6), ένωση(7,8) 1 3 5 7 2 4 6 8

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης» Ας θεωρήσουμε την ακολουθία ένωση(1,2), ένωση(3,4), ένωση(5,6), ένωση(7,8) ένωση(1,3), ένωση(5,7) 1 2 3 4 5 6 7 8

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης» Ας θεωρήσουμε την ακολουθία ένωση(1,2), ένωση(3,4), ένωση(5,6), ένωση(7,8) ένωση(1,3), ένωση(5,7) ένωση(1,5) 1 2 3 4 5 6 7 8

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης» Ομοίως, για ένωση(9,10), ένωση(11,12), ένωση(13,14), ένωση(15,16) ένωση(9,11), ένωση(13,15) ένωση(9,13) 1 9 2 3 5 10 11 13 4 6 7 12 14 15 8 16

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης» ένωση(1,9) 1 2 3 5 9 4 6 7 10 11 13 8 12 14 15 16

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης» 1 ο μέγιστος αριθμός των δεικτών μέχρι τη ρίζα είναι 2 3 5 9 4 6 7 10 11 13 8 12 14 15 16

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης» Ιδιότητα: Για αντικείμενα, ο αλγόριθμος σταθμισμένης ένωσης δημιουργεί δέντρα με ύψος το πολύ

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης» Ιδιότητα: Για αντικείμενα, ο αλγόριθμος σταθμισμένης ένωσης δημιουργεί δέντρα με ύψος το πολύ Απόδειξη: Με επαγωγή. Για ισχύει αφού. Έστω ότι μια πράξη ένωσης συνδυάζει σύνολα Α και Β με μέγεθος A B Ο αριθμός των δεικτών έως τη ρίζα του δέντρου για τα στοιχεία του A είναι

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης με συμπίεση διαδρομής» 1 2 3 5 9 εύρεση(16) 2 3 1 5 9 13 15 16 4 6 7 10 11 13 4 6 7 10 11 14 8 12 14 15 8 12 16

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης με συμπίεση διαδρομής» Υποθέτουμε ότι τα αντικείμενα μας είναι ακέραιοι αριθμοί Χρησιμοποιούμε πίνακες και μεγέθους δείκτης σε αντικείμενο του συνόλου που περιέχει το k αριθμός αντικειμένων του συνόλου με αντιπρόσωπο k εύρεση(i) : Ξεκινώντας από το i ακολουθούμε τους δείκτες μέχρι να βρούμε αντικείμενο j τέτοιο ώστε. Θέτουμε για κάθε αντικείμενο k που συναντήσαμε στη διαδρομή μέχρι το j. Επιστρέφουμε τo j. ένωση(i,j) : Εκτελούμε p=εύρεση(i) και q=εύρεση(j). Αν το σύνολο του q έχει περισσότερα αντικείμενα από το σύνολο του p θέτουμε. Διαφορετικά θέτουμε.

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης με συμπίεση διαδρομής» Χρόνος χειρότερης περίπτωσης για μία πράξη εύρεσης ή ένωσης = 1 2 3 5 9 4 6 7 10 11 13 ύψος 8 12 14 15 16

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης με συμπίεση διαδρομής» Χρόνος χειρότερης περίπτωσης για μία πράξη εύρεσης ή ένωσης = Αλλά : Συνολικός χρόνος εκτέλεσης m πράξεων εύρεσης-ένωσης = Μέσος χρόνος εκτέλεσης για μία πράξη εύρεσης ή ένωσης = σχεδόν σταθερός χρόνος ανά πράξη

Δομή ένωσης-εύρεσης σε ξένα σύνολα Δομή «σταθμισμένης ένωσης με συμπίεση διαδρομής» Η συνάρτηση Ackerman ορίζεται ως εξής Η συνάρτηση είναι αντίστροφη της αυξάνει με πάρα πολύ αργό ρυθμό! Π.χ. για

Κοντινότεροι Κοινοί Πρόγονοι Η συρρίκνωση των κόμβων μπορεί να γίνει αποτελεσματικά με μια δομή ένωσηςεύρεσης σε ξένα σύνολα Υποστηρίζει τις παρακάτω λειτουργίες επί ενός συνόλου αντικειμένων : ένωση(α,β) : Αντικαθιστά τα σύνολα που περιέχουν τα α και β με την ένωση τους εύρεση(α) : Επιστρέφει το όνομα του συνόλου που περιέχει το αντικείμενο α Στον αλγόριθμο υπολογισμού κοντινότερων κοινών προγόνων κάθε σύνολο αποτελείται από τους κόμβους ενός υποδένδρου του Τ. Πρέπει να γνωρίζουμε τη ρίζα κάθε τέτοιου υποδένδρου (αντιπρόσωπος του συνόλου), η οποία μπορεί να διαφέρει από τη ρίζα του δένδρου ένωσης-εύρεσης. β δ {ι} β δ ι ένωση(β,δ) β δ ι ρίζα = δ, αντιπρόσωπος = β Τ δάσος εύρεσης-ένωσης

Κοντινότεροι Κοινοί Πρόγονοι Η συρρίκνωση των κόμβων μπορεί να γίνει αποτελεσματικά με μια δομή ένωσηςεύρεσης σε ξένα σύνολα Υποστηρίζει τις παρακάτω λειτουργίες επί ενός συνόλου αντικειμένων : ένωση(α,β) : Αντικαθιστά τα σύνολα που περιέχουν τα α και β με την ένωση τους εύρεση(α) : Επιστρέφει το όνομα του συνόλου που περιέχει το αντικείμενο α Στον αλγόριθμο υπολογισμού κοντινότερων κοινών προγόνων κάθε σύνολο αποτελείται από τους κόμβους ενός υποδένδρου του Τ. Πρέπει να γνωρίζουμε τη ρίζα κάθε τέτοιου υποδένδρου (αντιπρόσωπος του συνόλου), η οποία μπορεί να διαφέρει από τη ρίζα του δένδρου ένωσης-εύρεσης. Χρησιμοποιούμε έναν ακόμα πίνακα που δίνει τον αντιπρόσωπο του κάθε συνόλου αντιπρόσωπος του συνόλου με ρίζα το k

Κοντινότεροι Κοινοί Πρόγονοι Στατικό δένδρο, γνωστά ζεύγη Σε κάθε κόμβο x του δένδρου αποθηκεύουμε μια λίστα κόμβων Επισκεπτόμαστε τους κόμβους σε σειρά μεταδιάταξης του Επεξεργασία κόμβου Για κάθε κόμβο Θέτουμε : Εξετάζουμε τη λίστα που έχουμε ήδη επεξεργαστεί κόμβος στον οποίο έχει συμπιεστεί ο εύρεση Συρρικνώνουμε τον στον γονέα του στο ένωση Χρόνος εκτέλεσης = για ζεύγη Αργότερα θα δούμε πως μπορεί να επιτευχθεί χρόνος στην περίπτωση όπου το Λ δεν είναι εξαρχής γνωστό ακόμα και