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



Σχετικά έγγραφα
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

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

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

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

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων (Data Structures)

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

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

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

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

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

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

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

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

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

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

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

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

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

Συντομότερες Διαδρομές

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

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

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

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

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

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

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

Κεφάλαιο 4 Γραφήματα και Δένδρα

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

Ενότητα 10 Γράφοι (ή Γραφήµατα)

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

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

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

Συντομότερες ιαδρομές

Συντομότερες Διαδρομές

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

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

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

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

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

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

Συντομότερες ιαδρομές

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

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

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

Άσκηση 3 (ανακοινώθηκε στις 14 Μαΐου 2018, προθεσμία παράδοσης: 8 Ιουνίου 2018, 12 τα μεσάνυχτα).

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

ΠΛΗ 20, 6 η ΟΣΣ: Δέντρα Εξετάσεις

Κατευθυνόµενα γραφήµατα. Στοιχεία Θεωρίας Γραφηµάτων (1) Πολυγραφήµατα (Multigraphs)

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

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

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

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

Κεφάλαιο 3. Γραφήματα. ver. 21/12/2014. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

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

ΕΠΛ 231 Δοµές Δεδοµένων και Αλγόριθµοι 11-1

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

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

Στοιχεία Θεωρίας Γραφηµάτων (1)

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

Πανεπιστήμιο Στερεάς Ελλάδας Τμήμα Πληροφορικής Εξάμηνο ΣΤ ΘΕΩΡΙΑ ΓΡΑΦΩΝ

Εισαγωγή στον Προγραμματισμό

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

Σχεδίαση & Ανάλυση Αλγορίθμων

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

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

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

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

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

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

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

Σημειωματάριο Δευτέρας 4 Δεκ. 2017

Δομές Δεδομένων (Data Structures)

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

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

Outline 1 Άσκηση 1 2 Άσκηση 2 3 Άσκηση 3 4 Άσκηση 4 5 Άσκηση 5 6 Προγραμματιστική Άσκηση 1 7 Προγραμματιστική Άσκηση 2 (CoReLab - NTUA) Αλγόριθμοι - 3

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

ΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research

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

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

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι

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

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

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

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

Δρομολόγηση Και Πολύχρωματισμός. Γραφημάτων ΚΑΡΑΓΕΩΡΓΟΣ ΤΙΜΟΘΕΟΣ Α.Μ 1026

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

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

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

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή

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

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

Transcript:

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

Γραφήματα Κατευθυνόμενο Γράφημα Ένα κατευθυνόμενο γράφημα G είναι ένα ζευγάρι (V, E) όπου V είναι ένα σύνολο κόμβων και E είναι ένα σύνολο με διατεταγμένα ζευγάρια κόμβων. Χαροκόπειο Πανεπιστήμιο /30

Γραφήματα Μη-κατευθυνόμενο Γράφημα Ένα μη-κατευθυνόμενο γράφημα G είναι ένα ζευγάρι (V, E) όπου V είναι ένα σύνολο κόμβων και E είναι ένα σύνολο με ζευγάρια κόμβων. Χαροκόπειο Πανεπιστήμιο 3/30

Μοντελοποίηση Προβλημάτων Πάρα πολλά προβλήματα μοντελοποιούνται με γραφήματα. Δίκτυο δρόμων Κοινωνικά Δίκτυα Μόρια Χαροκόπειο Πανεπιστήμιο 4/30

Βασικές Λειτουργίες Προσπέλαση συσχετιζόμενων πληροφοριών. Δεδομένου ενός κόμβου ή ακμής, προσπέλαση πληροφορίας που σχετίζεται, π.χ βάρος ακμής, απόσταση από άλλο κόμβο Πλοήγηση. Με δεδομένο έναν κόμβο, προσπέλαση των εξερχόμενων ακμών του. Αυτή η λειτουργία βρίσκεται στην καρδιά των περισσότερων αλγορίθμων σε γραφήματα. Μερικές φορές θέλουμε εύκολη προσπέλαση και των εισερχόμενων ακμών ενός κόμβου. Ερωτήματα ακμής. Με δεδομένο κόμβους (u, v) θέλουμε να ξέρουμε αν η συγκεκριμένη ακμή υπάρχει σε ένα γράφημα. Μερικές φορές θέλουμε να μπορούμε να βρούμε εύκολα την αντίθετη ακμή (v, u) μίας κατευθυνόμενης ακμής (u, v). Κατασκευή, μετατροπή και έξοδος. Μετατροπή της αναπαράστασης σε πιο κατάλληλη για το συγκεκριμένο αλγοριθμικό πρόβλημα που θέλουμε να λύσουμε. Ενημέρωση. Προσθήκη και διαγραφή κόμβων ή ακμών, αλλαγή πληροφορίας κόμβου ή ακμής. Χαροκόπειο Πανεπιστήμιο 5/30

Αναπαράσταση Γραφημάτων Υπάρχουν διάφορες μέθοδοι, ανάλογα με τις ανάγκες μας σε χρόνο, χώρο αλλά και κατά πόσο θέλουμε να υποστηρίξουμε δυναμικά ή μόνο στατικά γραφήματα. Μη-διατεταγμένη ακολουθία ακμών Πίνακες γειτνίασης (στατικά γραφήματα) Μητρώο γειτνίασης (adjacency matrix) Λίστες γειτνίασης (adjacency lists) ή άλλες που μπορεί να είναι κατάλληλες ανάλογα με την εφαρμογή. Χαροκόπειο Πανεπιστήμιο 6/30

Μη διατεταγμένη ακολουθία ακμών γράφημα G(V, E) όπου V = n και E = m Η αναπαράσταση περιέχει: μία μη διατεταγμένη λίστα με τις ακμές 1 0 4 3 ((1, 0), (0, 3), (1, 3), (1, ), (4, 3), (, 1), (4, ), (1, 4), (4, 1)) Χαροκόπειο Πανεπιστήμιο 7/30

Μη διατεταγμένη ακολουθία ακμών γράφημα G(V, E) όπου V = n και E = m ((1, 0), (0, 3), (1, 3), (1, ), (4, 3), (, 1), (4, ), (1, 4), (4, 1)) Χαρακτηριστικά συνήθης μορφή για είσοδο/έξοδο εύκολη προσθήκη ακμής ή κόμβου σε O(1) όλες η υπόλοιπες (π.χ πλοήγηση) O(m) απαγορευτικά μεγάλος Χαροκόπειο Πανεπιστήμιο 8/30

Πίνακας Γειτνίασης γράφημα G(V, E) όπου V = n και E = m Η αναπαράσταση περιέχει: πίνακας E[0... m 1] με ομαδοποιημένες τις εξερχόμενες ακμές ανά κόμβο πίνακας V[0... n 1] με θέσεις εκκίνησης υποπινάκων (ανά κόμβο) Για κόμβο v, η θέση V[v] περιέχει την θέση του E όπου βρίσκεται η πρώτη εξερχόμενη ακμή του v Βολεύει να προσθέσουμε εικονική καταχώρηση V[n] = m, τότε οι. εξερχόμενες ακμές του v είναι οι E[V[v]],..., E[V[v + 1] 1]. 0 n 1 1 0 V 4 3 E 3 0 3 4 1 1 3 0 m 1 Χαροκόπειο Πανεπιστήμιο 9/30

Πίνακας Γειτνίασης γράφημα G(V, E) όπου V = n και E = m 1 0 V 0 n 1 4 3 E 3 0 3 4 1 1 3 0 m 1 Χαρακτηριστικά κατανάλωση χώρου n + m + Θ(1) λέξεις επιπλέον πληροφορίες μπορούν να αποθηκευθούν μέσα στον πίνακα ακμών στατική αναπαράσταση πλοήγηση (π.χ εκτύπωση εξερχόμενων ακμών) χρόνο ίσο με τον βαθμό του κόμβου O(d) ερώτημα ακμής O(d) χρόνο Χαροκόπειο Πανεπιστήμιο 10/30

Πίνακας Γειτνίασης Άσκηση Σχεδιάστε έναν αλγόριθμο γραμμικού χρόνο O(n + m) ο οποίος πρέπει να μετατρέπει την αναπαράσταση ενός κατευθυνόμενου γραφήματος με μη-διατεταγμένη ακολουθία ακμών σε αναπαράσταση με πίνακα γειτνίασης. Πρέπει να χρησιμοποιήσετε μόνο O(1) βοηθητικό χώρο. Υπόδειξη: Θεωρήστε πως το πρόβλημα είναι η ταξινόμηση των ακμών με βάση τον κόμβο προέλευσης τους. Χρησιμοποιήστε, προσαρμόζοντας κατάλληλα, τον αλγόριθμο ταξινόμηση ακεραίων που τρέχει σε γραμμικό χρόνο. Θα χρειαστεί να διαβάσετε το κεφάλαιο ταξινόμηση. Χαροκόπειο Πανεπιστήμιο 11/30

Μητρώο γειτνίασης γράφημα G(V, E) όπου V = n και E = m Η αναπαράσταση περιέχει: ένα διδιάστατο πίνακα A με διαστάσεις n n η θέση του πίνακα i, j υποδηλώνει την ύπαρξη ή όχι της κατευθυνόμενης ακμής (i, j) εάν e = (i, j) E τότε A[i][j] = 1 αλλιώς 0 4 1 0 3 A = 0 0 0 1 0 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 Χαροκόπειο Πανεπιστήμιο 1/30

Μητρώο γειτνίασης γράφημα G(V, E) όπου V = n και E = m Χαρακτηριστικά Εισαγωγή/διαγραφή ακμών σε O(1) χρόνο Ερωτήματα ακμών σε O(1) χρόνο Πλοήγηση σε O(n) χρόνο - αποδοτικό μόνο για πολύ πυκνά γραφήματα Χώρος n bits Εννοιολογική σύνδεση μεταξύ γραφημάτων και γραμμικής άλγεβρας, π.χ εαν C = A k τότε το C ij μετρά τον συνολικό αριθμό των διαδρομών από τον κόμβο i στον κόμβο j οι οποίες έχουν k ακμές. Χαροκόπειο Πανεπιστήμιο 13/30

Λίστες γειτνίασης γράφημα G(V, E) όπου V = n και E = m Η αναπαράσταση περιέχει: ένα μονοδιάστατο πίνακα A με μία θέση για κάθε κόμβο κάθε θέση του πίνακα A είναι μία λίστα ακμών που εξέρχονται από τον αντίστοιχο κόμβο 1 0 0 n 1 3 0 1 4 3 3 1 3 4 Χαροκόπειο Πανεπιστήμιο 14/30

Λίστες γειτνίασης γράφημα G(V, E) όπου V = n και E = m 0 n 1 1 0 3 0 1 4 3 3 1 3 4 Χαρακτηριστικά κατανάλωση χώρου n + 3m λέξεις επιπλέον πληροφορίες μπορούν να αποθηκευθούν μέσα στις λίστες ή στον πίνακα των κόμβων δυναμική αναπαράσταση - εύκολη προσθήκη/αφαίρεση ακμών πλοήγηση (π.χ εκτύπωση εξερχόμενων ακμών) χρόνο ίσο με τον βαθμό του κόμβου O(d) ερώτημα ακμής O(d) χρόνο Χαροκόπειο Πανεπιστήμιο 15/30

Γραφήματα με βάρη Όταν χρησιμοποιούμε γραφήματα για να απαντήσουμε ερωτήματα διαδρομών σε μία συσκευή GPS, θέλουμε να βρούμε την συντομότερη διαδρομή μεταξύ δύο σημείων: Χαροκόπειο Πανεπιστήμιο 16/30

Γραφήματα με βάρη Όταν χρησιμοποιούμε γραφήματα για να απαντήσουμε ερωτήματα διαδρομών σε μία συσκευή GPS, θέλουμε να βρούμε την συντομότερη διαδρομή μεταξύ δύο σημείων: έχουμε υπολογίσει από πριν μία προσέγγιση του μέσου χρόνου που χρειάζεται για να διανύσουμε ένα κομμάτι δρόμου αντιστοιχούμε σε κάθε ακμή στο γράφημα ένα αριθμό που υποδηλώνει τον χρόνο που χρειάζεται για να διανύσουμε το κομμάτι του δρόμου στο οποίο αυτή η ακμή αντιστοιχεί Γενικά, μπορούμε να αντιστοιχίσουμε πληροφορία με τους κόμβους αλλά και τις ακμές ενός γραφήματος. Ένα άλλο παράδειγμα είναι η αντιστοιχία ονόματος με κάθε ακμή. Χαροκόπειο Πανεπιστήμιο 16/30

Αναπαράσταση Γραφημάτων Άσκηση Θέλετε να αποθηκεύσετε ένα γράφημα που αναπαριστά το οδικό δίκτυο της πόλης που ζείτε. Απαντήστε στα παρακάτω ερωτήματα: 1 Τι θα αναπαριστά ο κάθε κόμβος του γραφήματος; Τι θα αναπαριστά η κάθε ακμή του γραφήματος; 3 Τι επιπλέον πληροφορία θα πρέπει να υπάρχει στις ακμές και στους κόμβους ώστε να μπορείτε να απαντάτε σε ερωτήματα συντομότερης διαδρομής αλλά και να μπορείτε να ζωγραφίσετε τον χάρτη; 4 Πια αναπαράσταση από τις προηγούμενες είναι η καταλληλότερη; Γιατί; Εξηγήστε. Χαροκόπειο Πανεπιστήμιο 17/30

Αναζήτηση κατά πλάτος (BFS) Breadth-first search Η αναζήτηση κατά πλάτος είναι ένας από τους πιο απλούς αλγόριθμους αναζήτησης στα γραφήματα και χρησιμοποιείται ως βάση για πολλούς σημαντικούς αλγόριθμους γραφημάτων. Είσοδος γράφημα G(V, E) και ένας αρχικός κόμβος s Λειτουργία Ο αλγόριθμος BFS συστηματικά εξερευνά τις ακμές του G ώστε να ανακαλύψει όλους τους κόμβους που είναι προσβάσιμοι από τον κόμβο s. Χαροκόπειο Πανεπιστήμιο 18/30

Αναζήτηση κατά πλάτος (BFS) Έξοδος Αποστάσεις Την απόσταση (ελάχιστο αριθμό ακμών) από τον s σε όλους τους προσβάσιμους κόμβους. Κατα-πλάτος Δέντρο Ένα κατά-πλάτος δέντρο (breadth-first tree) με ρίζα τον s που περιέχει όλους τους προσβάσιμους κόμβους. Για κάθε κόμβο v προσβάσιμο από τον s, το μονοπάτι στο BFS δέντρο αντιστοιχεί σε ελάχιστο μονοπάτι στο γράφημα. Χαροκόπειο Πανεπιστήμιο 19/30

Αναζήτηση κατά πλάτος (BFS) Κατευθυνόμενα και μη-κατευθυνόμενα Ο αλγόριθμος λειτουργεί και σε κατευθυνόμενα και σε μη-κατευθυνόμενα γραφήματα. Χαροκόπειο Πανεπιστήμιο 0/30

Αναζήτηση κατά πλάτος (BFS) Κατευθυνόμενα και μη-κατευθυνόμενα Ο αλγόριθμος λειτουργεί και σε κατευθυνόμενα και σε μη-κατευθυνόμενα γραφήματα. Μέτωπο αναζήτησης Ονομάζεται αναζήτηση κατά πλάτος γιατί μεγαλώνει το μέτωπο της αναζήτησης σε όλο το πλάτος του. Με άλλα λόγια, ο αλγόριθμος ανακαλύπτει όλους τους κόμβους σε απόσταση k από τον s πριν ανακαλύψει κάποιον κόμβο σε απόσταση k + 1. Χαροκόπειο Πανεπιστήμιο 0/30

Αναζήτηση κατά πλάτος (BFS) Για να μετρά την πρόοδο, ο αλγόριθμος BFS χρωματίζει τους κόμβους του γραφήματος με τρία χρώματα α) λευκό, β) γκρί, και γ) μαύρο. Όλοι οι κόμβοι αρχίζουν λευκοί και στην συνέχεια μπορούν να γίνουν γκρί και μετά μαύροι. Ένας κόμβος ανακαλύπτεται την πρώτη φορά που εμφανίζεται στην αναζήτηση, και γίνεται μη-λευκός. Οι γκρί και μαύροι κόμβοι έχουν ανακαλυφθεί. Οι γκρί κόμβοι αναπαριστούν το μέτωπο της αναζήτησης και μπορεί να έχουν λευκούς γείτονες. Χαροκόπειο Πανεπιστήμιο 1/30

Αναζήτηση κατά πλάτος (BFS) Ψευδοκώδικας BFS(G, s) for κάθε κόμβο u V \ {s} do color[u] = ΛΕΥΚΟ d[u] = π[u] = nil end color[s] = ΓΚΡΙ d[s] = 0 π[s] = nil Q = {s} while Q do u = Q.head() for κάθε γείτονα v του u do if color[v] = ΛΕΥΚΟ then color[v] = ΓΚΡΙ d[v] = d[u] + 1 π[v] = u Q.enqueue(v) end end Q.dequeue() color[u] = ΜΑΥΡΟ end Χαροκόπειο Πανεπιστήμιο /30

Αναζήτηση κατά πλάτος (BFS) Παράδειγμα r s t u 0 v w x y Q s 0 Χαροκόπειο Πανεπιστήμιο 3/30

Αναζήτηση κατά πλάτος (BFS) Παράδειγμα r s t u 1 0 v w x y Q r 1 Χαροκόπειο Πανεπιστήμιο 3/30

Αναζήτηση κατά πλάτος (BFS) Παράδειγμα r s t u 1 0 Q r w 1 1 1 v w x y Χαροκόπειο Πανεπιστήμιο 3/30

Αναζήτηση κατά πλάτος (BFS) Παράδειγμα r s t u 1 0 Q r w 1 1 1 v w x y Χαροκόπειο Πανεπιστήμιο 3/30

Αναζήτηση κατά πλάτος (BFS) Παράδειγμα r s t u 1 0 1 1 v w x y Q w v Χαροκόπειο Πανεπιστήμιο 3/30

Αναζήτηση κατά πλάτος (BFS) Παράδειγμα r s t u 1 0 1 1 v w x y Q w v Χαροκόπειο Πανεπιστήμιο 3/30

Αναζήτηση κατά πλάτος (BFS) Παράδειγμα r s t u 1 0 1 v w x y Q v t Χαροκόπειο Πανεπιστήμιο 3/30

Αναζήτηση κατά πλάτος (BFS) Παράδειγμα r s t u 1 0 1 v w x y Q v t x Χαροκόπειο Πανεπιστήμιο 3/30

Αναζήτηση κατά πλάτος (BFS) Παράδειγμα r s t u 1 0 1 v w x y Q v t x Χαροκόπειο Πανεπιστήμιο 3/30

Αναζήτηση κατά πλάτος (BFS) Παράδειγμα r s t u 1 0 1 v w x y Q t x Χαροκόπειο Πανεπιστήμιο 3/30

Αναζήτηση κατά πλάτος (BFS) Παράδειγμα r s t u 1 0 1 v w x y Q t x Χαροκόπειο Πανεπιστήμιο 3/30

Αναζήτηση κατά πλάτος (BFS) Παράδειγμα r s t u 1 0 1 3 v w x y 3 Q x u Χαροκόπειο Πανεπιστήμιο 3/30

Αναζήτηση κατά πλάτος (BFS) Παράδειγμα r s t u 1 0 v w x y 3 Q 1 3 x u Χαροκόπειο Πανεπιστήμιο 3/30

Αναζήτηση κατά πλάτος (BFS) Παράδειγμα r s t u 1 0 v w x y 3 Q 1 3 3 3 u y Χαροκόπειο Πανεπιστήμιο 3/30

Αναζήτηση κατά πλάτος (BFS) Παράδειγμα r s t u 1 0 v w x y 3 Q 1 3 3 3 u y Χαροκόπειο Πανεπιστήμιο 3/30

Αναζήτηση κατά πλάτος (BFS) Παράδειγμα r s t u 1 0 1 v w x y 3 3 Q y 3 Χαροκόπειο Πανεπιστήμιο 3/30

Αναζήτηση κατά πλάτος (BFS) Παράδειγμα r s t u 1 0 1 v w x y 3 3 Q y 3 Χαροκόπειο Πανεπιστήμιο 3/30

Αναζήτηση κατά πλάτος (BFS) Παράδειγμα r s t u 1 0 1 v w x y 3 3 Q Χαροκόπειο Πανεπιστήμιο 3/30

Αναζήτηση κατά πλάτος (BFS) Παράδειγμα r s t u 1 0 1 v w x y 3 3 Q Χαροκόπειο Πανεπιστήμιο 3/30

Αναζήτηση κατά πλάτος (BFS) Χρόνος Εκτέλεσης Εαν υποθέσουμε αναπαράσταση γραφήματος με λίστες γειτνίασης. Χαροκόπειο Πανεπιστήμιο 4/30

Αναζήτηση κατά πλάτος (BFS) Χρόνος Εκτέλεσης Εαν υποθέσουμε αναπαράσταση γραφήματος με λίστες γειτνίασης. Αρχικοποίηση O(n) αφού αρχικοποιούμε πίνακες που έχουν ένα στοιχείο ανά κόμβο. Χαροκόπειο Πανεπιστήμιο 4/30

Αναζήτηση κατά πλάτος (BFS) Χρόνος Εκτέλεσης Εαν υποθέσουμε αναπαράσταση γραφήματος με λίστες γειτνίασης. Αρχικοποίηση O(n) αφού αρχικοποιούμε πίνακες που έχουν ένα στοιχείο ανά κόμβο. Κόστος Λειτουργιών Ουράς Μετά την αρχικοποίηση κανένας κόμβος δεν γίνεται λευκός και άρα κάθε κόμβος εισάγεται στην ουρά το πολύ μία φορά. Άρα αφαιρείται το πολύ μία φορά. Η ουρά χρειάζεται O(1) για τις λειτουργίες αυτές και άρα O(n) συνολικά. Χαροκόπειο Πανεπιστήμιο 4/30

Αναζήτηση κατά πλάτος (BFS) Χρόνος Εκτέλεσης Εαν υποθέσουμε αναπαράσταση γραφήματος με λίστες γειτνίασης. Αρχικοποίηση O(n) αφού αρχικοποιούμε πίνακες που έχουν ένα στοιχείο ανά κόμβο. Κόστος Λειτουργιών Ουράς Μετά την αρχικοποίηση κανένας κόμβος δεν γίνεται λευκός και άρα κάθε κόμβος εισάγεται στην ουρά το πολύ μία φορά. Άρα αφαιρείται το πολύ μία φορά. Η ουρά χρειάζεται O(1) για τις λειτουργίες αυτές και άρα O(n) συνολικά. Κόστος Διάσχισης Ακμών Η λίστα των ακμών κάθε κόμβου διασχίζεται μόνο μία φορά όταν ο κόμβος αφαιρείται από την ουρά. Το άθροισμα του μεγέθους των λιστών γειτνίασης όλων των κόμβων είναι O(m). Χαροκόπειο Πανεπιστήμιο 4/30

Αναζήτηση κατά πλάτος (BFS) Χρόνος Εκτέλεσης Εαν υποθέσουμε αναπαράσταση γραφήματος με λίστες γειτνίασης. Αρχικοποίηση O(n) αφού αρχικοποιούμε πίνακες που έχουν ένα στοιχείο ανά κόμβο. Κόστος Λειτουργιών Ουράς Μετά την αρχικοποίηση κανένας κόμβος δεν γίνεται λευκός και άρα κάθε κόμβος εισάγεται στην ουρά το πολύ μία φορά. Άρα αφαιρείται το πολύ μία φορά. Η ουρά χρειάζεται O(1) για τις λειτουργίες αυτές και άρα O(n) συνολικά. Κόστος Διάσχισης Ακμών Η λίστα των ακμών κάθε κόμβου διασχίζεται μόνο μία φορά όταν ο κόμβος αφαιρείται από την ουρά. Το άθροισμα του μεγέθους των λιστών γειτνίασης όλων των κόμβων είναι O(m). Συνολικός χρόνος εκτέλεσης O(n + m). Χαροκόπειο Πανεπιστήμιο 4/30

Αναζήτηση κατά βάθος (DFS) Depth-first search Η αναζήτηση κατά βάθος προσπαθεί να πάει όσο πιο βαθιά στο γράφημα γίνεται. Είσοδος γράφημα G(V, E) και ένας αρχικός κόμβος s Λειτουργία Ξεκινά από τον κόμβο s και ακολουθεί μία μία όλες τις εξερχόμενες ακμές του s εκτελώντας την ίδια λειτουργία αναδρομικά. Εαν σε κάποιο κόμβο δεν έχει άλλη διέξοδο, επιστρέφει στον κόμβο από όπου προήλθε και συνεχίζει να ακολουθεί ανεξερεύνητες ακμές. Χαροκόπειο Πανεπιστήμιο 5/30

Αναζήτηση κατά βάθος (DFS) Για να μετρά την πρόοδο, ο αλγόριθμος χρωματίζει τους κόμβους του γραφήματος με τρία χρώματα α) λευκό, β) γκρί, και γ) μαύρο. Όλοι οι κόμβοι αρχίζουν λευκοί και στην συνέχεια μπορούν να γίνουν γκρί και μετά μαύροι. Όταν ένας κόμβος ανακαλυφθεί γίνεται γκρί και παραμένει γκρί μέχρι να εξερευνηθούν αναδρομικά όλοι οι γείτονες τους. Στην συνέχεια γίνεται μαύρος. Ο αλγόριθμος καταγράφει δύο χρόνους για κάθε κόμβο, τον χρόνο που γίνεται γκρί και άρα ανακαλύπτεται για πρώτη φορά και τον χρόνο τερματισμού δηλαδή τον χρόνο που γίνεται μαύρος. Χαροκόπειο Πανεπιστήμιο 6/30

Αναζήτηση κατά βάθος (DFS) Ψευδοκώδικας dfs(g, s) for κάθε κόμβο u V do color[u] = ΛΕΥΚΟ π[u] = nil end time = 1 dfsvisit(g, s); dfsvisit(g, u) color[u] = ΓΚΡΙ d[u] = time time = time + 1 for κάθε γείτονα v του u do if color[v] = ΛΕΥΚΟ then π[v] = u dfsvisit(g, v) end end color[u] = ΜΑΥΡΟ f[u] = time time = time + 1 Χαροκόπειο Πανεπιστήμιο 7/30

Διάσχιση Γραφημάτων Depth-first search (DFS) s 1/ r t u v x y Χαροκόπειο Πανεπιστήμιο 8/30

Διάσχιση Γραφημάτων Depth-first search (DFS) s r 1/ / t u v x y Χαροκόπειο Πανεπιστήμιο 8/30

Διάσχιση Γραφημάτων Depth-first search (DFS) s r 1/ / t 3/ u v x y Χαροκόπειο Πανεπιστήμιο 8/30

Διάσχιση Γραφημάτων Depth-first search (DFS) s r 1/ / t 4/ 3/ u v x y Χαροκόπειο Πανεπιστήμιο 8/30

Διάσχιση Γραφημάτων Depth-first search (DFS) s r 1/ / t 5/ 4/ 3/ u v x y Χαροκόπειο Πανεπιστήμιο 8/30

Διάσχιση Γραφημάτων Depth-first search (DFS) s r 1/ / t 5/6 4/ 3/ u v x y Χαροκόπειο Πανεπιστήμιο 8/30

Διάσχιση Γραφημάτων Depth-first search (DFS) s r 1/ / t 5/6 4/7 3/ u v x y Χαροκόπειο Πανεπιστήμιο 8/30

Διάσχιση Γραφημάτων Depth-first search (DFS) s r 1/ / t 5/6 4/7 3/8 u v x y Χαροκόπειο Πανεπιστήμιο 8/30

Διάσχιση Γραφημάτων Depth-first search (DFS) s r 1/ / t 9/ 5/6 4/7 3/8 u v x y Χαροκόπειο Πανεπιστήμιο 8/30

Διάσχιση Γραφημάτων Depth-first search (DFS) s r 1/ / t 9/ 5/6 4/7 3/8 10/ u v x y Χαροκόπειο Πανεπιστήμιο 8/30

Διάσχιση Γραφημάτων Depth-first search (DFS) s r 1/ / t 9/ 5/6 4/7 3/8 10/11 u v x y Χαροκόπειο Πανεπιστήμιο 8/30

Διάσχιση Γραφημάτων Depth-first search (DFS) s r 1/ / t 9/1 5/6 4/7 3/8 10/11 u v x y Χαροκόπειο Πανεπιστήμιο 8/30

Διάσχιση Γραφημάτων Depth-first search (DFS) s 1/ r /13 t 9/1 5/6 4/7 3/8 10/11 u v x y Χαροκόπειο Πανεπιστήμιο 8/30

Διάσχιση Γραφημάτων Depth-first search (DFS) s 1/14 r /13 t 9/1 5/6 4/7 3/8 10/11 u v x y Χαροκόπειο Πανεπιστήμιο 8/30

Αναζήτηση κατά βάθος (DFS) Χρόνος Εκτέλεσης Εαν υποθέσουμε αναπαράσταση γραφήματος με λίστες γειτνίασης. Χαροκόπειο Πανεπιστήμιο 9/30

Αναζήτηση κατά βάθος (DFS) Χρόνος Εκτέλεσης Εαν υποθέσουμε αναπαράσταση γραφήματος με λίστες γειτνίασης. Αρχικοποίηση O(n) αφού αρχικοποιούμε πίνακες που έχουν ένα στοιχείο ανά κόμβο. Χαροκόπειο Πανεπιστήμιο 9/30

Αναζήτηση κατά βάθος (DFS) Χρόνος Εκτέλεσης Εαν υποθέσουμε αναπαράσταση γραφήματος με λίστες γειτνίασης. Αρχικοποίηση O(n) αφού αρχικοποιούμε πίνακες που έχουν ένα στοιχείο ανά κόμβο. Κλήσεις της dfsvisit(g, v) Η αναδρομική συνάρτηση dfsvisit(g, v) καλείται μία φορά σε κάθε κόμβο αφού καλείται μόνο σε λευκούς κόμβους και το πρώτο πράγμα που κάνει είναι να αλλάξει το χρώμα του κόμβου σε γκρί. Μία κλήση της dfsvisit(g, v) κοστίζει όσο το μήκος της λίστας γειτνίασης του κόμβου v. Το άθροισμα όλων των λιστών γειτνίασης είναι O(m). Χαροκόπειο Πανεπιστήμιο 9/30

Αναζήτηση κατά βάθος (DFS) Χρόνος Εκτέλεσης Εαν υποθέσουμε αναπαράσταση γραφήματος με λίστες γειτνίασης. Αρχικοποίηση O(n) αφού αρχικοποιούμε πίνακες που έχουν ένα στοιχείο ανά κόμβο. Κλήσεις της dfsvisit(g, v) Η αναδρομική συνάρτηση dfsvisit(g, v) καλείται μία φορά σε κάθε κόμβο αφού καλείται μόνο σε λευκούς κόμβους και το πρώτο πράγμα που κάνει είναι να αλλάξει το χρώμα του κόμβου σε γκρί. Μία κλήση της dfsvisit(g, v) κοστίζει όσο το μήκος της λίστας γειτνίασης του κόμβου v. Το άθροισμα όλων των λιστών γειτνίασης είναι O(m). Συνολικός χρόνος εκτέλεσης O(n + m). Χαροκόπειο Πανεπιστήμιο 9/30

Διάβασμα και Επιπλέον Πηγές Ενότητες 8.1, 8., 8.3, 8.4, 9.1 και 9. Kurt Mehlhorn και Peter Sanders. Αλγόριθμοι και Δομές Δεδομένων, Τα βασικά εργαλεία, Έκδοση 1η, Κλειδάριθμος, 014. Ενότητες 3.7 και 5.8 Robert Sedgewick. Αλγόριθμοι σε C: Θεμελιώδεις Έννοιες, Δομές Δεδομένων, Ταξινόμηση, Αναζήτηση. Έκδοση 3η, Κλειδάριθμος, 006. Ενότητες 3.1, 3., 3.3, 4.1, 4. Sanjoy Dasgupta, Christos Papadimitriou και Umesh Vazirani, Αλγόριθμοι, Εκδόσεις Κλειδάριθμος, 008 Ενότητες.1,.,.3 Cormen, Leiserson, Rivest και Stein, Εισαγωγή στους Αλγορίθμους (σε ένα τόμο). Έκδοση 1η, Πανεπιστημιακές Εκδόσεις Κρήτης, 01. Κεφάλαιο 15 Γεώργιος Φρ. Γεωργακόπουλος, Δομές Δεδομένων: Έννοιες, Τεχνικές, Αλγόριθμοι, Πανεπιστημιακές Εκδόσεις Κρήτης, Ηράκλειο 00. Χαροκόπειο Πανεπιστήμιο 30/30