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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(elementary graph algorithms)

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

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

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

(elementary graph algorithms)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ν. Μ. Σγούρος Κοινωνικά Δίκτυα Τμ. Ψηφιακών Συστημάτων, Παν. Πειραιώς

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

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

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

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

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

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

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

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

ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

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

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

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

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

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

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

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

Ασκηση 1 [ ] Παράδοση : Τετάρτη , 13:00

Διάλεξη 21: Γράφοι II - Τοπολογική Ταξινόμηση

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

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

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

Γράφηµα (Graph) Εργαστήριο 10. Εισαγωγή

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

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

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

4η Γραπτή Ασκηση Αλγόριθμοι και Πολυπλοκότητα CoReLab ΣΗΜΜΥ 7 Φεβρουαρίου 2017 CoReLab (ΣΗΜΜΥ) 4η Γραπτή Ασκηση 7 Φεβρουαρίου / 38

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

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

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

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

Ελάχιστο Γεννητικό Δένδρο. Παράδειγμα - Αλγόριθμος Prim. Γιατί δουλεύουν αυτοί οι αλγόριθμοι;

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

2 ) d i = 2e 28, i=1. a b c

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

d(v) = 3 S. q(g \ S) S

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

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

Διαίρει και Βασίλευε. πρόβλημα μεγέθους Ν. διάσπαση. πρόβλημα μεγέθους k. πρόβλημα μεγέθους Ν-k

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

Outline 1 Άσκηση 1: Εφαρμογές BFS DFS 2 Άσκηση 2: Μια Συνάρτηση Κόστους σε Κατευθυνόμενα Γραφήματα 3 Άσκηση 3: Ανάλυση Ασφάλειας 4 Άσκηση 4: Το Σύνολο

HY118- ιακριτά Μαθηµατικά. Θεωρία γράφων / γραφήµατα. Τι είναι οι γράφοι; Εφαρµογές των γράφων Γράφοι

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

Συνεκτικότητα Γραφήματος

Επίπεδα Γραφήματα (planar graphs)

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

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

Ασκήσεις στους Γράφους. 1 ο Σετ Ασκήσεων Βαθμός Μονοπάτια Κύκλος Euler Κύκλος Hamilton Συνεκτικότητα

Γραφήματα. Κεφάλαιο Εισαγωγικές έννοιες Ορισμός

Transcript:

Αλγόριθμοι Γραφημάτων. Γραφήματα. Αναπαράσταση Γραφημάτων 3. Διερεύνηση σε Πρώτα σε Πλάτος (BFS) Εισαγωγή στην Ανάλυση Αλγορίθμων Μάγια Σατρατζέμη

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Breadth-First Search: Algorithm Αλγόριθμος BFS(G, s). for each v V {s}. 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 0. while (Q not empty). u = RemoveTop(Q);. for each v Adj[u] 3. if (color[v] == WHITE) 4. color[v] = GREY; 5. d[v] = d[u] + ; 6. p[v] = u; 7. Enqueue(Q, v); 8. color[u] = BLACK; Στη μεταβλητή color[u] καταχωρίζεται το χρώμα κάθε κορυφής u Στη μεταβλητή d[u] καταχωρείται η απόσταση από την κορυφή αφετηρία s μέχρι την u την οποία υπολογίζει ο αλγόριθμος Στη μεταβλητή p[u] καταχωρίζεται ο προκάτοχος της u 7

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

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

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

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

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

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

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

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

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

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

BFS : Ανάλυση πολυπλοκότητας BFS(G, s). for each v V {s}. 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); 0. while (Q not empty). u = RemoveTop(Q);. for each v Adj[u] 3. if (color[v] == WHITE) 4. color[v] = GREY; 5. d[v] = d[u] + ; 6. p[v] = u; 7. Enqueue(Q, v); 8. color[u] = BLACK; Εκτελείται για κάθε κορυφή: O(V) u = κάθε κορυφή, αλλά μια φορά (γιατί?) v = κάθε κορυφή που εμφανίζεται σε κάποια από τις λίστες γειτνίασης Συνολικός χρόνος: O(V+E) Ποιος είναι ο χρόνος εκτέλεσης? 8

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

BFS : Ανάλυση (χώρος) BFS(G, s). for each v V {s}. 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); 0. while (Q not empty). u = RemoveTop(Q);. for each v Adj[u] Ποιο είναι το συνολικό κόστος 3. if (color[v] == WHITE) 4. color[v] = GREY; για την αποθήκευση του 5. d[v] = d[u] + ; δένδρου 6. p[v] = u; 7. Enqueue(Q, v); Συνολικός χώρος: 8. color[u] = BLACK; O(max(degree(v))) = O(E) 30

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