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

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

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

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

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

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

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

ΔΙΑΣΧΙΣΗ ΓΡΑΦΗΜΑΤΩΝ 1

Κεφάλαιο 3. Γραφήµατα v1.0 ( ) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

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

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

Εισαγωγή στην Επιστήμη των Υπολογιστών

1 Διάσχιση κατευθυνόμενων γραφημάτων

Αναζήτηση στους γράφους. - Αναζήτηση η κατά βάθος Συνεκτικές Συνιστώσες - Αλγόριθμος εύρεσης συνεκτικών συνιστωσών

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

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

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

Γράφοι: κατευθυνόμενοι και μη

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

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

Κεφάλαιο 3. Γραφήματα. v1.3 ( ) Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Λυσεις προβλημάτων τελικής φάσης Παγκύπριου Μαθητικού Διαγωνισμού Πληροφορικής 2007

Θέματα Υπολογισμού στον Πολιτισμό - Δένδρα. Δένδρα

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

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

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

Ενότητα 5: Αλγόριθμοι γράφων και δικτύων

Εισαγωγή στην Επιστήμη των Υπολογιστών

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

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

Στοιχεία Θεωρίας Γράφων (Graph Theory)

Κεφάλαιο 3. Γραφήµατα v1.1 ( ) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Δυναμικές Δομές Δεδομένων Λίστες Δένδρα - Γράφοι

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

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

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

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

Αλγόριθμοι και πολυπλοκότητα: 4 η σειρά ασκήσεων ΣΗΜΜΥ - Ε.Μ.Π.

Αφηρημένες Δομές Δεδομένων. Στοίβα (Stack) Υλοποίηση στοίβας

Τεχνητή Νοημοσύνη. 2η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

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

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

Επίλυση προβλημάτων με αναζήτηση

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

6η Διάλεξη Διάσχιση Γράφων και Δέντρων

3η Σειρά Γραπτών Ασκήσεων

Graph Algorithms. Παρουσίαση στα πλαίσια του μαθήματος «Παράλληλοι Αλγόριθμοι» Καούρη Γεωργία Μήτσου Βάλια

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

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας

4. Συνδεδεμένες Λίστες

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

Αλγόριθμοι Γραφημάτων

9. Κόκκινα-Μαύρα Δέντρα

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

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

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

Άσκηση 3 (ανακοινώθηκε στις 24 Απριλίου 2017, προθεσμία παράδοσης: 2 Ιουνίου 2017, 12 τα μεσάνυχτα).

Ελάχιστα Γεννητορικά ένδρα

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

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

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

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

Αλγόριθμοι και πολυπλοκότητα Περιήγηση Πανεπιστημίων

3η Σειρά Γραπτών Ασκήσεων

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 3 : Γραφήματα & Αποδείξεις. Αλέξανδρος Τζάλλας

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 4 Σωροί, Γράφοι

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

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

u v 4 w G 2 G 1 u v w x y z 4

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

Θεωρία Γραφημάτων 6η Διάλεξη

Κατευθυνόμενα γραφήματα. Μαθηματικά Πληροφορικής 6ο Μάθημα. Βρόχοι. Μη κατευθυνόμενα γραφήματα. Ορισμός

ΑΣΚΗΣΗ 1 Για τις ερωτήσεις 1-4 θεωρήσατε τον ακόλουθο γράφο. Ποιές από τις παρακάτω προτάσεις αληθεύουν και ποιές όχι;

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Βασικές Ιδιότητες και Διάσχιση Κεφάλαιο 5 ( και ) Ε. Μαρκάκης Επίκουρος Καθηγητής

Κατευθυνόμενα γραφήματα. Μαθηματικά Πληροφορικής 6ο Μάθημα. Βρόγχοι. Μη κατευθυνόμενα γραφήματα. Ορισμός

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

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

Αλγόριθµοι Γραφηµάτων

(elementary graph algorithms)

Τεχνητή Νοημοσύνη (ΥΠ23) 6 ο εξάμηνο Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ουρανία Χατζή

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to

1 Το πρόβλημα της συντομότερης διαδρομής

Αλγόριθμοι Γραφημάτων

Θέμα 1: Robbie και Αναζήτηση

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

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

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

Κατευθυνόμενα γραφήματα. Μαθηματικά Πληροφορικής 6ο Μάθημα. Βρόχοι. Μη κατευθυνόμενα γραφήματα. Ορισμός

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

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

Θεωρία Υπολογισμού και Πολυπλοκότητα Μαθηματικό Υπόβαθρο

Θεωρήστε ένα puzzle (παιχνίδι σπαζοκεφαλιάς) με την ακόλουθη αρχική διαμόρφωση : b b b w w w e

Σχεδιαση Αλγοριθμων -Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Οι δυναμικές δομές δεδομένων στην ΑΕΠΠ

έντρα ομές εδομένων 3ο εξάμηνο ιδάσκων: Χρήστος ουλκερίδης ιαφάνειες προσαρμοσμένες από το υλικό της Μαρίας Χαλκίδη

Μη κατευθυνόµενα γραφήµατα. Στοιχεία Θεωρίας Γραφηµάτων (1) Υπογραφήµατα.

Network Science. Θεωρεία Γραφηµάτων (2)

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

Transcript:

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 11. Γράφοι 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 23/12/2016

Εισαγωγή Οι γράφοι είναι μια από τις πιο ευέλικτες δομές που χρησιμοποιούνται στον προγραμματισμό Χρησιμοποιούνται σε διαφορετικά είδη προβλημάτων από αυτά που έχουμε αντιμετωπίσει έως τώρα Όχι τόσο για αποθήκευση δεδομένων Όμως, για κάποια προβλήματα ο γράφος είναι αναντικατάστατος Οι γράφοι είναι δομές δεδομένων που μοιάζουν με τα δέντρα Για την ακρίβεια, ένα δέντρο είναι είδος γράφου Δομές Δεδομένων, 3ο Εξάμηνο 2

Αναλογία με Δέντρα Οι δομές δεδομένων που έχουμε εξετάσει έχουν αρχιτεκτονική που υπαγορεύεται από τους αλγόριθμους που χρησιμοποιούνται με αυτές Π.χ. Ένα δυαδικό δέντρο αναζήτησης αναπαρίσταται με τη μορφή που έχουμε μάθει, διότι το συγκεκριμένο σχήμα καθιστά εύκολη την αναζήτηση και την εισαγωγή δεδομένων Οι γράφοι παίρνουν κάποιο σχήμα που υπαγορεύεται από ένα πραγματικό ή αφηρημένο πρόβλημα Π.χ. Κόμβοι αναπαριστούν πόλεις, ενώ οι ακμές διαδρομές πτήσεων μεταξύ πόλεων Π.χ. Γράφος που αναπαριστά εργασίες (κόμβοι) που απαιτούνται για την ολοκλήρωση ενός έργου (οι ακμές δηλώνουν σειρά προτεραιότητας) Δομές Δεδομένων, 3ο Εξάμηνο 3

Εφαρμογές CS16 Ηλεκτρονικά κυκλώματα ίκτυα (δρόμων, πτήσεων, επικοινωνιών) LAX STL JFK HNL DFW FTL Δομές Δεδομένων, 3ο Εξάμηνο 4

Τι είναι ένας Γράφος; Ένας γράφος G = (V,E) αποτελείται από: V: σύνολο κορυφών (vertices) E: σύνολο από ακμές που συνδέουν τις κορυφές Μια ακμή e = (u,v) είναι ένα ζευγάρι κορυφών Παράδειγμα: a b V= {a,b,c,d,e} c E= {(a,b),(a,c),(a,d), (b,e),(c,d),(c,e), (d,e)} d e Δομές Δεδομένων, 3ο Εξάμηνο 5

Ορισμοί Ο γράφος αποτελείται από κορυφές και ακμές (μια ακμή ενώνει δύο κορυφές) Γειτνίαση ύο κορυφές ονομάζονται γειτονικές αν συνδέονται από μια ακμή ιαδρομή Είναι μια ακολουθία ακμών Συνεκτικοί γράφοι Ένας γράφος ονομάζεται συνεκτικός εάν υπάρχει τουλάχιστον μία διαδρομή από κάθε κορυφή σε κάθε άλλη κορυφή συνεκτικός μη συνεκτικός 6

Κατευθυνόμενοι & Ζυγισμένοι Γράφοι Κατευθυνόμενος γράφος Οι ακμές απεικονίζουν καταστάσεις στις οποίες μπορεί να κινηθεί κανείς σε μία κατεύθυνση μόνο κατά μήκος της ακμής Ζυγισμένος γράφος Στις ακμές εκχωρείται ένα βάρος, που είναι ένας αριθμός που μπορεί να αναπαραστήσει τη φυσική απόσταση μεταξύ δύο κορυφών ή το χρόνο ή το κόστος μετάβασης Δομές Δεδομένων, 3ο Εξάμηνο 7

Κορυφές: Κλάση Vertex Δομές Δεδομένων, 3ο Εξάμηνο 8

Ακμές Για την αναπαράσταση των ακμών υπάρχουν δύο δημοφιλείς τρόποι απεικόνισης Ο πίνακας γειτνίασης Ένας δισδιάστατος ΝxΝ πίνακας του οποίου τα στοιχεία δείχνουν εάν υπάρχει ακμή μεταξύ δύο κορυφών Η λίστα γειτνίασης Ένας πίνακας (ή μια λίστα) συνδεδεμένων λιστών Κάθε μεμονωμένη λίστα δείχνει με ποιες κορυφές γειτνιάζει μια συγκεκριμένη κορυφή Δομές Δεδομένων, 3ο Εξάμηνο 9

Πίνακας Γειτνίασης (Adjacency Matrix) a b c d e a 0 1 1 1 0 b 1 0 0 0 1 c 1 0 0 1 1 d 1 0 1 0 1 e 0 1 1 1 0 a d c b e Δομές Δεδομένων, 3ο Εξάμηνο 10

Λίστα Γειτνίασης (Adjacency List) a b d c a b b a e c d a d e a c e c e b c d d e Δομές Δεδομένων, 3ο Εξάμηνο 11

Κλάση Graph (με Πίνακα Γειτνίασης) Δομές Δεδομένων, 3ο Εξάμηνο 12

Κλάση Graph (συνέχ.) Δομές Δεδομένων, 3ο Εξάμηνο 13

Αναζητήσεις Μια από τις πιο βασικές λειτουργίες σε ένα γράφο είναι η εύρεση των κορυφών που μπορούν να προσεγγιστούν από μια συγκεκριμένη κορυφή Π.χ. Σε ποιες πόλεις μπορεί να φτάσει κάποιος επιβάτης τρένου που ξεκινά από την Αθήνα; Υπάρχουν δύο κοινές προτάσεις για την αναζήτηση ενός γράφου Αναζήτηση κατά βάθος (DFS) Υλοποιείται με στοίβα Αναζήτηση κατά πλάτος (BFS) Υλοποιείται με ουρά Δομές Δεδομένων, 3ο Εξάμηνο 14

Αναζήτηση κατά Βάθος (Depth-first Search) Υπάρχουν 3 κανόνες που καθορίζουν τη σειρά επίσκεψης των κόμβων #1: αν είναι δυνατό, επισκεφτείτε μια γειτονική κορυφή που δεν έχετε επισκεφτεί, σημαδέψτε την και εισάγετέ την στη στοίβα #2: αν δεν μπορείτε να ακολουθήσετε τον κανόνα #1, τότε, εάν είναι δυνατό, εξάγετε μια κορυφή από τη στοίβα #3: αν δεν μπορείτε να ακολουθήσετε τον κανόνα #1 ή τον κανόνα #2, έχετε τελειώσει Δομές Δεδομένων, 3ο Εξάμηνο 15

Αναζήτηση κατά Βάθος (Παράδειγμα) 3 4 2 Β F H 5 1 C Α 6 7 8 D G I E 9 Δομές Δεδομένων, 3ο Εξάμηνο 16

Αναζήτηση κατά Βάθος Υλοποίηση Δομές Δεδομένων, 3ο Εξάμηνο 17

Δομές Δεδομένων, 3ο Εξάμηνο 18

Δομές Δεδομένων, 3ο Εξάμηνο 19

December 23, 2016 Δομές Δεδομένων, 3ο Εξάμηνο 20

Εφαρμογές Αναζήτησης κατά Βάθος Συχνά χρησιμοποιείται σε προσομοιώσεις παιχνιδιών (π.χ. τρίλιζα, σκάκι,...) Ο γράφος αποτυπώνει το σύνολο όλων των πιθανών ακολουθιών κινήσεων των παικτών ημιουργείται ένας τεράστιος χώρος αναζήτησης, ακόμη και για απλά παιχνίδια όπως η τρίλιζα 9! = 362.880 διαδρομές σε 9 γράφους (ένας γράφος ανάλογα με την πρώτη κίνηση) Ένας τρόπος εξέτασης των καταστάσεων σε ένα πρόγραμμα υπολογιστή είναι η αναζήτηση κατά βάθος (σε μια προσπάθεια να εντοπιστεί διαδρομή που οδηγεί σε νίκη) Όταν εντοπιστεί μια τέτοια διαδρομή από τον υπολογιστή, επιλέγεται η πρώτη κίνηση κατά μήκος αυτής της διαδρομής Εάν μια διαδρομή οδηγεί σε νίκη του αντιπάλου, γίνεται οπισθοχώρηση στο γράφο και επιλέγεται άλλη διαδρομή Δομές Δεδομένων, 3ο Εξάμηνο 21

Αναζήτηση κατά Πλάτος (Breadth-first Search) Υπάρχουν 3 κανόνες που καθορίζουν τη σειρά επίσκεψης των κόμβων #1: επισκεφτείτε την επόμενη κορυφή που δεν έχει δεχθεί επίσκεψη (αν υπάρχει) και είναι γειτονική της τρέχουσας κορυφής, σημαδέψτε την και εισάγετέ την στην ουρά #2: αν δεν μπορείτε να ακολουθήσετε τον κανόνα #1 επειδή δεν υπάρχουν κορυφές που δεν έχουν δεχθεί επίσκεψη, αφαιρείτε μια κορυφή από την ουρά (αν γίνεται) και την κάνετε τρέχουσα #3: αν δεν μπορείτε να ακολουθήσετε τον κανόνα #2 επειδή η ουρά έχει τελειώσει, έχετε τελειώσει Δομές Δεδομένων, 3ο Εξάμηνο 22

Αναζήτηση κατά Πλάτος (Παράδειγμα) 6 8 2 Β F H 3 1 C Α 4 7 9 D G I E 5 Δομές Δεδομένων, 3ο Εξάμηνο 23

Αναζήτηση κατά Πλάτος Υλοποίηση Δομές Δεδομένων, 3ο Εξάμηνο 24

Δομές Δεδομένων, 3ο Εξάμηνο 25

December 23, 2016 Δομές Δεδομένων, 3ο Εξάμηνο 26

Χρήσιμη Ιδιότητα της BFS Βρίσκει πρώτα όλες τις κορυφές που απέχουν μια ακμή από το σημείο εκκίνησης Έπειτα βρίσκει όλες τις κορυφές που απέχουν δύο ακμές και ούτω καθ εξής Άρα όταν βρίσκει μια κορυφή, γνωρίζουμε ότι η διαδρομή που ακολουθήθηκε ήταν η συντομότερη διαδρομή προς αυτή την κορυφή ιότι εάν υπήρχε άλλη πιο σύντομη διαδρομή, η BFS θα την είχε ήδη βρει Δομές Δεδομένων, 3ο Εξάμηνο 27

Δέντρο Ελάχιστου Σκελετού (Minimum Spanning Tree) Είναι το ελάχιστο υποσύνολο των ακμών ενός γράφου που διατηρεί το γράφο συνεκτικό Για ένα δεδομένο σύνολο κορυφών υπάρχουν πολλά πιθανά δέντρα ελάχιστου σκελετού Ο αριθμός των ακμών E σε ένα δέντρο ελάχιστου σκελετού είναι πάντα ένα λιγότερο από τον αριθμό κορυφών V E = V 1 ε μας ενδιαφέρει το μήκος των ακμών Απλά ο αριθμός τους να είναι ελάχιστος Δομές Δεδομένων, 3ο Εξάμηνο 28

Δέντρο Ελάχιστου Σκελετού Υλοποίηση December 23, 2016 Δομές Δεδομένων, 3ο Εξάμηνο 29

Συνέχεια... Συνδεσιμότητα δικτύου Συνδεδεμένες συνιστώσες (connected components) Αφηρημένη ένωση-εύρεση (union-find) Γρήγορη εύρεση Γρήγορη ένωση Σταθμισμένη γρήγορη ένωση Σταθμισμένη γρήγορη ένωση με συμπίεση μονοπατιών ιαφάνειες προσαρμοσμένες από υλικό Ευάγγελου Μαρκάκη (Ο.Π.Α) Δομές Δεδομένων, 3ο Εξάμηνο 30

Προβλήματα Συνδεσιμότητας Συνδεσιμότητα μεταξύ δρομολογητών, παρόχων δικτύου, υπολογιστών, σε δίκτυα επικοινωνιών (Internet Graph) Συνδεσιμότητα μεταξύ ιστοσελίδων στον γράφο του Web Συνδεσιμότητα μεταξύ τρανζίστορ ολοκληρωμένου κυκλώματος Κοινωνικά ίκτυα (συνδεδεμένες κοινότητες χρηστών του Facebook) Βιολογικά ίκτυα (συνδεσιμότητα / αλληλεπίδραση πρωτεϊνών) Πρόβλημα Θέλουμε να κωδικοποιήσουμε ένα γράφο σε μια δομή δεδομένων έτσι ώστε να μπορούμε να απαντάμε για κάθε δύο κόμβους u και v την ερώτηση: είναι συνδεδεμένος (με ένα μονοπάτι ακμών) ο κόμβος u με τον κόμβο v; Δομές Δεδομένων, 3ο Εξάμηνο 31

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

Παράδειγμα Πρόβλημα (πιο συγκεκριμένα): Θέλουμε να κωδικοποιήσουμε ένα άσος Ελάχιστου Σκελετού του γράφου σε μια δομή δεδομένων έτσι ώστε να μπορούμε να απαντάμε για κάθε δύο κόμβους u και v την ερώτηση: είναι συνδεδεμένος (με ένα μονοπάτι ακμών) ο κόμβος u με τον κόμβο v; Δομές Δεδομένων, 3ο Εξάμηνο 33

Πιο Μεγάλο Παράδειγμα u v Συνδέεται ο u με τον v? Υπάρχει μονοπάτι που τους συνδέει? Ανήκουν στην ίδια συνδεδεμένη συνιστώσα? Δομές Δεδομένων, 3ο Εξάμηνο 34

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

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

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

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

Γρήγορη Εύρεση (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 Συνδεδεμένα υποσύνολα: {0}, {1}, {2, 3, 4, 9}, {5, 6}, {7}, {8} Δομές Δεδομένων, 3ο Εξάμηνο 39

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

Γρήγορη Εύρεση Δομές Δεδομένων, 3ο Εξάμηνο 41

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

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

Γρήγορη Ένωση (Quick Union) Ιδέα: Απεικόνιση κάθε συνδεδεμένου συνόλου ως δέντρο Κάνει πολύ γρήγορη την ένωση με αντίτιμο στην εύρεση ομή δεδομένων Πίνακας ακεραίων id[] μεγέθους N Ερμηνεία: το id[i] είναι ο πατέρας του i (και όχι ένα απλό id όπως πριν) Η ρίζα στο δέντρο που βρίσκεται ο i είναι το 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 Δομές Δεδομένων, 3ο Εξάμηνο 44

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

Γρήγορη Ένωση Δομές Δεδομένων, 3ο Εξάμηνο 46

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

Γρήγορη Ένωση Το πόσο ρηχά θα είναι τα δέντρα εξαρτάται από την είσοδο Είσοδος Έξοδος 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 Εδώ σε κάθε βήμα πρέπει να διατρέξουμε όλο το δέντρο για να βρούμε τη ρίζα (Ο(Ν) βήματα για τις τελευταίες συνδέσεις) Δομές Δεδομένων, 3ο Εξάμηνο 48

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

Σταθμισμένη Γρήγορη Ένωση Παραλλαγή της γρήγορης ένωσης Τροποποιούμε την ένωση για να κρατάμε τα δέντρα σχετικά ρηχά Παρακολουθούμε το μέγεθος κάθε δέντρου Χρήση ενός πρόσθετου πίνακα για να κρατάμε το μέγεθος Το μικρότερο δέντρο τοποθετείται κάτω από το μεγαλύτερο Το μέγεθος αναφέρεται στο σύνολο των κόμβων Παράδειγμα: αν διαβάσουμε το ζεύγος (3, 5) Η σταθμισμένη ένωση τοποθετεί το 6 κάτω από το 9 και όχι ανάποδα 0 1 9 6 7 8 2 4 5 3 Δομές Δεδομένων, 3ο Εξάμηνο 50

Σταθμισμένη Γρήγορη Ένωση Τα δέντρα παραμένουν ρηχά Δομές Δεδομένων, 3ο Εξάμηνο 51

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

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

Ένωση με Συμπίεση Μονοπατιών Βασική υλοποίηση συμπίεσης μονοπατιών Προσθήκη δεύτερου βρόχου Κάνει τον πατέρα κάθε κόμβου ίσο με τη ρίζα Απαιτεί δεύτερο πέρασμα της διαδρομής Απλούστερη υλοποίηση συμπίεσης μονοπατιών Κατά τη διάσχιση κάνουμε κάθε δεύτερο κόμβο να δείχνει στον πατέρα του πατέρα του Το δέντρο συμπιέζεται κατά το ήμισυ Στην πράξη η διαφορά είναι μικρή 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]]; Δομές Δεδομένων, 3ο Εξάμηνο 54

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

Ένωση με Συμπίεση Μονοπατιών Σύγκριση των αλγορίθμων 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 Δομές Δεδομένων, 3ο Εξάμηνο 56

Ανακεφαλαίωση των Αλγορίθμων Ένωσης Εύρεσης Τελικά συμπεράσματα για το παράδειγμα που είδαμε: Για Ν αντικείμενα και Μ ζεύγη στην είσοδο, Η γρήγορη εύρεση και η γρήγορη ένωση χρειάζονται χρόνο ανάλογο του ΜΝ στη χειρότερη περίπτωση η σταθμισμένη γρήγορη ένωση χρειάζεται χρόνο ανάλογο του ΜlogΝ στη χειρότερη περίπτωση η σταθμισμένη γρήγορη ένωση με συμπίεση μονοπατιών τρέχει σε χρόνο «σχεδόν» ανάλογο του (Μ + Ν) Ο αλγόριθμος της σταθμισμένης γρήγορης ένωσης με συμπίεση μονοπατιών τρέχει πιο γρήγορα σε ένα κινητό που υποστηρίζει Java από ότι ο αλγόριθμος της γρήγορης εύρεσης σε ένα supercomputer Δομές Δεδομένων, 3ο Εξάμηνο 57