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

Σχετικά έγγραφα
Αλγόριθμοι Γραφημάτων

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

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

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

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

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

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

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

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

Δομές Δεδομένων Ενότητα 6

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

ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ

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

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

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

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

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

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

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

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

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

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

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

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

Συντομότερα Μονοπάτια για Όλα τα Ζεύγη Κορυφών

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 3: ΑΝΑΠΑΡΑΣΤΑΣΗ ΔΕΔΟΜΕΝΩΝ - ΓΡΑΦΗΜΑΤΑ

Τίτλος Μαθήματος: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

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

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

Γράφοι. Αλγόριθμοι και πολυπλοκότητα. Στάθης Ζάχος, Δημήτρης Φωτάκης

(elementary graph algorithms)

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

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

Γράφοι. Ένας γράφος ή αλλιώς γράφηµα αποτελείται απο. Εφαρµογές: Τηλεπικοινωνιακά και Οδικά ίκτυα, Ηλεκτρονικά Κυκλώµατα, Β.. κ.ά.

(elementary graph algorithms)

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

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

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

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

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

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

Γράφοι. Ορολογία. Ορισµός: G = (V, E) όπου. Ορολογία (συνέχεια) γράφος ή γράφηµα (graph) V:ένα σύνολο E:µια διµελής σχέση στο V

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

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

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

Θεωρία Πιθανοτήτων & Στατιστική

Βασικές Δοµές Δεδοµένων. Σύντοµη επανάληψη (ΕΠΛ 035).

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

Δομές Δεδομένων. Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα. Καθηγήτρια Μαρία Σατρατζέμη

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

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

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

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

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

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

Μετασχηματισμοί, Αναπαράσταση και Ισομορφισμός Γραφημάτων

ΑΛΓΟΡΙΘΜΟΙ. Ενότητα 9: Άπληστοι Αλγόριθμοι. Ιωάννης Μανωλόπουλος, Καθηγητής Αναστάσιος Γούναρης, Επίκουρος Καθηγητής Τμήμα Πληροφορικής ΑΠΘ

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

Μοντελοποίηση Λογικών Κυκλωμάτων

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

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

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

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

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

Δομημένος Προγραμματισμός

ΘΕΩΡΙΑ ΠΑΙΓΝΙΩΝ. Ενότητα 7: Τέλεια ισορροπία Nash για υποπαίγνια. Ρεφανίδης Ιωάννης Τμήμα Εφαρμοσμένης Πληροφορικής

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

ΑΝΤΙΣΤΟΙΧΗΣΕΙΣ ΟΡΩΝ ΠΟΥ ΧΡΗΣΙΜΟΠΟΙOΥΝΤΑΙ ΣΤΟΥΣ ΤΟΜΟΥΣ Α ΚΑΙ Β ΤΗΣ ΘΕ «ΔΙΑΚΡΙΤΑ ΜΑΘΗΜΑΤΙΚΑ» Ένα γράφημα αποτελείται από ένα σύνολο 94.

Υπολογιστικά & Διακριτά Μαθηματικά

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

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

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

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

ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΜΕ ΧΡΗΣΗ Η/Υ

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

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

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

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

Γράφοι. κόµβοι) και ένα σύνολο από γραµµές (που λέγονται ακµές) οι οποίες

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

ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ. Ενότητα 2: Δένδρο αναζήτησης. Ρεφανίδης Ιωάννης Τμήμα Εφαρμοσμένης Πληροφορικής

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

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

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

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

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

Υπολογιστικά & Διακριτά Μαθηματικά

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

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Θεωρία και Αλγόριθμοι Γράφων

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

Transcript:

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Ενότητα 10β: Αλγόριθμοι Γραφημάτων-Γραφήματα- Αναπαράσταση Γραφημάτων- Διερεύνηση Πρώτα σε Πλάτος (BFS) Μαρία Σατρατζέμη Τμήμα Εφαρμοσμένης Πληροφορικής

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Μαρία Σατρατζέμη 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Μακεδονίας» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ Μαρία Σατρατζέμη 3

Γραφήματα Ορισμός: Ένα γράφημα G είναι το διατεταγμένο ζεύγος (V, E), όπου V = {v 1, v 2,, v n } σύνολο κορυφών E = σύνολο ακμών = υποσύνολο του V V Άρα E = O( V 2 ) 4

Τύποι γραφημάτων Σε ένα μη προσανατολισμένο (ακατεύθυντο) γράφημα (undirected graph): ακμή (u,v) = ακμή (v,u) Χωρίς βρόχους (self-loops) -ακμή που αρχίζει & τερματίζει στον εαυτό της Σε ένα προσανατολισμένο (κατευθυντό) (directed graph): Η ακμή (u,v) κατευθύνεται από την κορυφή u προς την κορυφή v και συμβολίζεται: u v Ένα συνεκτικό (connected graph) έχει ένα μονοπάτι από κάθε κορυφή του προς κάθε κορυφή του Μονοπάτι αλληλουχία κορυφών και ακμών χωρίς επανάληψη κορυφής 5

Άλλοι Τύποι γραφημάτων Ένα γράφημα με βάρος (εμβαρές) weighted graph αντιστοιχεί βάρη είτε στις ακμές είτε στις κορυφές π.χ., ένας οδικός χάρτης: οι ακμές μπορεί να έχουν βάρη που αναπαριστούν την απόσταση Ένα multigraph επιτρέπει πολλαπλές ακμές μεταξύ των ίδιων κορυφών π.χ., το γράφημα κλήσεων συναρτήσεων σε ένα πρόγραμμα (μια συνάρτηση μπορεί να κληθεί από πολλά σημεία από μια άλλη συνάρτηση ) 6

Πυκνά Αραιά Γραφήματα Συνήθως εκφράζουμε τους χρόνους εκτέλεσης σε σχέση με τους όρους των E και V Αν E V 2 το γράφημα είναι πυκνό (dense) Αν E V το γράφημα είναι αραιό sparse Αν είναι γνωστό ότι το γράφημα είναι αραιό ή πυκνό τότε ενδεχόμενα χρησιμοποιείται διαφορετική δομή δεδομένων 7

Αναπαράσταση Γραφημάτων Υποθέτουμε ότι V = {1, 2,, n} Ένας πίνακας γειτνίασης (adjacency matrix) αναπαριστά το γράφημα ως έναν n x n πίνακα A: A[i, j] = 1 αν η ακμή (i, j) E (ή το βάρος της ακμής) = 0 αν η ακμή (i, j) E 8

Γραφήματα: Πίνακας γειτνίασης Παράδειγμα: a 1 d 2 4 A 1 2 3 4 1 2 b 3 c 3?? 4 9

Γραφήματα: Πίνακας γειτνίασης Παράδειγμα : a 1 d 2 4 b c 3 A 1 2 3 4 1 0 1 1 0 2 0 0 1 0 3 0 0 0 0 4 0 0 1 0 10

Γραφήματα: Πίνακας γειτνίασης Πόσο χώρο απαιτεί ο πίνακας γειτνίασης? A: O(V 2 ) Μη προσανατολισμένο γράφημα πίνακας συμμετρικός 11

Γραφήματα: Πίνακας γειτνίασης Ο πίνακας γειτνιάσεως Απαιτεί μεγάλο χώρο αποθήκευσης για μεγάλα γραφήματα Αλλά είναι πολύ αποτελεσματικός για μικρά γραφήματα Τα περισσότερα μεγάλα ενδιαφέροντα γραφήματα είναι αραιά π.χ., επίπεδα γραφήματα (planar graphs), στα οποία οι ακμές δε διασταυρώνονται, έχουν E = O( V ) με βάση τον τύπο του Euler η λίστα γειτνίασης (ή κατάλογος γειτνίασης) (adjacency list) είναι συνήθως πιο κατάλληλη για την αναπαράσταση ενός γραφήματος 12

Γραφήματα: Λίστα γειτνίασης Λίστα γειτνίασης: για κάθε κορυφή v V, αποθηκεύει μια λίστα από κορυφές γειτονικές της κορυφής v Παράδειγμα: 1 Adj[1] = {2,3} Adj[2] = {3} Adj[3] = {} Adj[4] = {3} 2 4 Παραλλαγή: μπορεί να διατηρεί μια λίστα από ακμές που συντρέχουν προς την κορυφή 3 13

Γραφήματα: Λίστα γειτνίασης Πόσος χώρος απαιτείται? Ο βαθμός (degree) μιας κορυφής v = # συντρέχουσες ακμές τα προσανατολισμένα γραφήματα έχουν έσω-βαθμό (in-degree), έξω-βαθμό (out-degree) Για τα προσανατολισμένα γραφήματα, # των στοιχείων στις λίστες γειτνίασης είναι out-degree(v) = E απαιτεί (V + E) χώρο Για μη-προσανατολισμένα, # των στοιχείων των λιστών γειτνίασης είναι degree(v) = 2 E επίσης απαιτεί (V + E) χώρο μνήμης Άρα: οι λίστες γειτνίασης απαιτούν Θ(V+E) χώρο # : πλήθος 14

Γραφήματα: Λίστα γειτνίασης Για προσανατολισμένο γράφημα το άθροισμα των μεγεθών των λιστών γειτνίασης είναι E αφού οποιαδήποτε ακμή (u,v) αναπαριστάται μέσω της παρουσίας της u στη λίστα Adj[u] Αν το G είναι μη προσανατολισμένο το αντίστοιχο άθροισμα είναι 2 E, αφού αν η ακμή (u,v) είναι μια μη προσανατολισμένη ακμή, τότε u θα εμφανίζεται στη λίστα γειτνίασης της v και αντιστρόφως Άρα: οι λίστες γειτνίασης απαιτούν Θ(V+E) χώρο μνήμης για τα προσανατολισμένα και μη προσανατολισμένα γραφήματα 15

Διερεύνηση Γραφήματος Δίνεται: ένα γράφημα G = (V, E), προσανατολισμένο ή μη-προσανατολισμένο Σκοπός: μεθοδική διερεύνηση κάθε κορυφής και κάθε ακμής Αποτέλεσμα: δημιουργία ενός δένδρου για το γράφημα Επιλέξτε μια κορυφή ως ρίζα Επιλέξτε συγκεκριμένες ακμές για να δημιουργήσετε το δένδρο Σημείωση: ενδεχόμενα να δημιουργηθεί δάσος (forest) αν το γράφημα δεν είναι συνεκτικό 16

Breadth-First Search Διερεύνηση ενός γραφήματος, μετατροπή του σε δένδρο Μια κορυφή τη φορά Επεκτείνετε το «σύνορο» των εξερευνημένων κορυφών σε όλο το εύρος του συνόρου ομοιόμορφα-οριζόντια ή κατά πλάτος (Breadth-First) Κατασκευή του δένδρου από το γράφημα Επιλέξετε μια κορυφή αφετηρία (source) για ρίζα Ανακαλύψτε ( discover ) τα παιδιά της, στη συνέχεια τα παιδιά τους, κτλ. 17

Αλγόριθμος BFS Ο αλγόριθμος «χρωματίζει» κάθε κορυφή για να καταγράψει την πορεία της εργασίας Λευκές κορυφές δεν έχουν ακόμη ανακαλυφθεί Όλες οι κορυφές ξεκινούν λευκές Γκρι κορυφές έχουν ανακαλυφθεί αλλά δεν έχουν εξερευνηθεί πλήρως Ενδεχόμενα να έχουν γειτονικές λευκές κορυφές Μαύρες κορυφές έχουν ανακαλυφθεί και πλήρως εξερευνηθεί Είναι γειτονικές μόνο σε μαύρες και γκρι κορυφές Εξερευνήστε τις κορυφές «σαρώνοντας» τη λίστα γειτνίασης των γκρι κορυφών 18

Breadth-First Search: Algorithm Αλγόριθμος BFS(G, s) 1. for each v V {s} 2. color[v] = WHITE; 3. d[v] = ; 4. p[v] = null; 5. color[s] = GREY; 6. d[s] = 0; 7. p[s] = null; 8. Q = 9. Enqueue(Q, s); // Q είναι ουρά; Αρχικοποιείται με την κορυφή s 10. while (Q not empty) 11. u = RemoveTop(Q); 12. for each v Adj[u] 13. if (color[v] == WHITE) 14. color[v] = GREY; 15. d[v] = d[u] + 1; 16. p[v] = u; 17. Enqueue(Q, v); 18. color[u] = BLACK; Στη μεταβλητή color[u] καταχωρίζεται το χρώμα κάθε κορυφής u Στη μεταβλητή d[u] καταχωρείται η απόσταση από την κορυφή αφετηρία s μέχρι την u την οποία υπολογίζει ο αλγόριθμος Στη μεταβλητή p[u] καταχωρίζεται ο προκάτοχος της u 19

Breadth-First Search: Example r s t u v w x y 20

Breadth-First Search: Example r s t u 0 v w x y Q: s 21

Breadth-First Search: Example r s t u 1 0 1 v w x y Q: w r 22

Breadth-First Search: Example r s t u 1 0 2 1 2 v w x y Q: r t x 23

Breadth-First Search: Example r s t u 1 0 2 2 1 2 v w x y Q: t x v 24

Breadth-First Search: Example r s t u 1 0 2 3 2 1 2 v w x y Q: x v u 25

Breadth-First Search: Example r s t u 1 0 2 3 2 1 2 3 v w x y Q: v u y 26

Breadth-First Search: Example r s t u 1 0 2 3 2 1 2 3 v w x y Q: u y 27

Breadth-First Search: Example r s t u 1 0 2 3 2 1 2 3 v w x y Q: y 28

Breadth-First Search: Example r s t u 1 0 2 3 2 1 2 3 v w x y Q: Ø 29

BFS : Ανάλυση BFS(G, s) 1. for each v V {s} 2. color[v] = WHITE; 3. d[v] = ; 4. p[v] = null; 5. color[s] = GREY; 6. d[s] = 0; 7. p[s] = null; 8. Q = 9. Enqueue(Q, s); 10. while (Q not empty) 11. u = RemoveTop(Q); 12. for each v Adj[u] 13. if (color[v] == WHITE) 14. color[v] = GREY; 15. d[v] = d[u] + 1; 16. p[v] = u; 17. Enqueue(Q, v); 18. color[u] = BLACK; Κάθε κορυφή: O(V) u = κάθε κορυφή, αλλά μια φορά (γιατί?) v = κάθε κορυφή που εμφανίζεται σε κάποια από τις λίστες γειτνίασης Συνολικός χρόνος: O(V+E) Ποιος είναι ο χρόνος εκτέλεσης? 30

BFS : Ανάλυση Μετά την απόδοση αρχικών τιμών καμιά κορυφή δε χρωματίζεται ποτέ λευκή και επομένως ο έλεγχος της γραμμής 13 διασφαλίζει ότι κάθε κορυφή προστίθεται στη ουρά το πολύ 1 φορά και επομένως αφαιρείται από αυτήν επίσης το πολύ μια φορά. Οι πράξεις της προσθήκης και της αφαίρεσης κορυφής στην ουρά απαιτούν χρόνο Ο(1). Άρα ο συνολικός χρόνος για τις πράξεις της ουράς είναι Ο(V). Η λίστα γειτνίασης κάθε κορυφής διατρέχεται μόνο όταν η κορυφή αφαιρείται από την ουρά, άρα κάθε λίστα διατρέχεται το πολύ μια φορά. Το άθροισμα των μηκών όλων των λιστών γειτνίασης είναι Ο(Ε) ο συνολικός χρόνος που αναλώνεται για τη σάρωση των λιστών αυτών είναι Ο(Ε). Η επιβάρυνση από την απόδοση αρχικών τιμών είναι Ο(V) και συνεπώς ο συνολικός χρόνος εκτέλεσης της BFS είναι Ο(V+E), γραμμικός ως προς το μέγεθος του G μέσω λίστας γειτνίασης. 31

BFS : Ανάλυση (χώρος) BFS(G, s) 1. for each v V {s} 2. color[v] = WHITE; 3. d[v] = ; 4. p[v] = null; 5. color[s] = GREY; 6. d[s] = 0; 7. p[s] = null; 8. Q = 9. Enqueue(Q, s); 10. while (Q not empty) 11. u = RemoveTop(Q); 12. for each v Adj[u] Ποιο είναι το συνολικό κόστος 13. if (color[v] == WHITE) 14. color[v] = GREY; για την αποθήκευση του 15. d[v] = d[u] + 1; δένδρου 16. p[v] = u; 17. Enqueue(Q, v); Συνολικός χώρος: 18. color[u] = BLACK; O(max(degree(v))) = O(E) 32

Breadth-First Search: Ιδιότητες BFS υπολογίζει την απόσταση του συντομότερου μονοπατιού (shortest-path distance) από την κορυφή αφετηρία Απόσταση συντομότερου μονοπατιού (s,v) = ελάχιστος αριθμός ακμών από την s στη v, ή αν v δεν είναι προσπελάσιμη από την s BFS κατασκευάζει το breadth-first tree, στο οποίο τα μονοπάτια προς τη ρίζα είναι τα συντομότερα μονοπάτια του G Ο BFS αλγόριθμος μπορεί να χρησιμοποιηθεί για να υπολογιστούν τα συντομότερα μονοπάτια από μια κορυφή προς μια άλλη σε O(V+E) χρόνο 33

Τέλος Ενότητας