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

Σχετικά έγγραφα
Εισαγωγή στους Αλγόριθμους

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

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

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

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

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

Αλγόριθμοι για ανάθεση συχνοτήτων και έλεγχο αποδοχής κλήσεων σε κυψελικά ασύρματα δίκτυα. (μέρος Ι)

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

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

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

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

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

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

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

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

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

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

Το πρόβλημα μονοδρόμησης (The One-Way Street Problem)

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

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

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

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

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

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

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

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

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

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

(elementary graph algorithms)

Αλγόριθμοι εύρεσης ελάχιστων γεννητικών δέντρων (MST)

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

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

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

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

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

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

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

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

Επίλυση Προβλημάτων 1

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

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

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

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

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

Αλγόριθμοι για Ασύρματα Δίκτυα. Θεωρία Γραφημάτων

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

(elementary graph algorithms)

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

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

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

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

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

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

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

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

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

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

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

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

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

Αλγόριθμοι Τυφλής Αναζήτησης

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

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

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

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

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

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

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

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

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

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

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

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

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

Δένδρα. συνεκτικό μη κατευθυνόμενο γράφημα που δεν περιέχει απλά κυκλώματα

Αλγόριθµοι Τύπου Μείωσης Προβλήµατος

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

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

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

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

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

Διάλεξη 21: Γράφοι IV - Βραχύτερα Μονοπάτια σε Γράφους

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

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

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

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

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

Διάλεξη 18: Γράφοι I Εισαγωγή

Το Πρόβλημα του Περιοδεύοντος Πωλητή - The Travelling Salesman Problem

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

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

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

Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές

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

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

ΠΡΟΛΟΓΟΣ. Θεσσαλονίκη, Μάρτιος Οι συγγραφείς. Κ. Παπαρρίζος, Ν. Σαμαράς, Α. Σιφαλέρας.

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

Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές

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

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

Transcript:

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

Θέματα μελέτης Πρόβλημα αναζήτησης σε γραφήματα Αναζήτηση κατά βάθος (Depth-first search DFS) Αναζήτηση κατά πλάτος (Breadth-first search BFS) 2

Γράφημα (graph) Αναπαράσταση συνόλου αντικειμένων στην οποία κάποια αντικείμενα συνδέονται μεταξύ τους Τα αντικείμενα αναπαρίστανται από αφηρημένα κατασκευάσματα που καλούνται κορυφές και οι σύνδεσμοι μεταξύ κάποιων κορυφών καλούνται ακμές Κορυφές που συνδέονται με ακμή καλούνται γειτονικές Βαθμός κορυφής: πόσες άλλες κορυφές συνδέονται με αυτή; Βαθμός γραφήματος: μέγιστος βαθμός κορυφής Συνήθως τα γραφήματα αναπαρίστανται με διαγράμματα που περιέχουν σύνολο κορυφών (τελείες) και σύνολο ακμών (γραμμές μεταξύ κάποιων τελειών) Η λέξη "γράφημα" πρωτοχρησιμοποιήθηκε με αυτή την έννοια το 1878 από τον Άγγλο μαθηματικό James Joseph Sylvester 3

Κατευθυνόμενα και μη κατευθυνόμενα γραφήματα Τα γραφήματα χαρακτηρίζονται κατευθυνόμενα ή μη κατευθυνόμενα ανάλογα με το αν οι ακμές τους είναι κατευθυνόμενες ή μη κατευθυνόμενες Αν οι κορυφές αναπαριστούν άτομα σε ένα party και υπάρχει ακμή μεταξύ δύο κορυφών αν τα αντίστοιχα άτομα ανταλλάσσουν χειραψία τότε προκύπτει ένα μη κατευθυνόμενο γράφημα Αν ένα άτομο A χαιρετάει ένα άτομο B τότε και το άτομο B χαιρετάει το άτομο A (συμμετρική σχέση) Αντίθετα, αν οι κορυφές αναπαριστούν άτομα σε ένα party και υπάρχει ακμή μεταξύ δύο κορυφών αν τα αντίστοιχα άτομα γνωρίζονται τότε προκύπτει ένα κατευθυνόμενο γράφημα Αν ένα άτομο A γνωρίζει ένα άτομο B δεν είναι απαραίτητο το άτομο B να γνωρίζει επίσης το άτομο A (όχι απαραίτητα συμμετρική σχέση) 4

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

Πώς χρησιμοποιούμε τα γραφήματα; Όταν μελετάμε ένα πρόβλημα στην Επιστήμη των Υπολογιστών (αλλά και σε άλλες επιστήμες) είθισται να προσπαθούμε να το απεικονίσουμε με ένα γράφημα Στη συνέχεια μελετώντας το γράφημα εξάγουμε συμπεράσματα για το πρόβλημα 6

Πώς διασχίζουμε ένα γράφημα; Τρόπος 1: Ξεκινάμε από μία κορυφή και μέσω επίσκεψης της γειτονιάς επισκεπτόμαστε ολόκληρο το γράφημα: Αναζήτηση κατά πλάτος (Breadth-first search- BFS) Τρόπος 2: Ξεκινάμε από μία κορυφή και επισκεπτόμαστε το πρώτο της παιδί και προχωράμε μέχρι να φτάσουμε σε κορυφή που δεν έχει παιδιά μετά επιστρέφουμε στην πρώτη κορυφή που δεν έχουμε επεξεργαστεί και κάνουμε το ίδιο - Αναζήτηση κατά βάθος (Depth- First search-dfs) 7

Πρόβλημα εύρεσης ελάχιστων μονοπατιών σε γραφήματα (shortest path problem) Δεδομένα: μη κατευθυνόμενο γράφημα G με σύνολο κορυφών V (vertices) και σύνολο ακμών E (edges) και δύο κορυφές v1, v2 που ανήκουν στο σύνολο V Ζητούμενα: Μονοπάτι, δηλ., ακολουθία ακμών, που ενώνει τις κορυφές v1, v2 με το ελάχιστο δυνατό μήκος Παράδειγμα-εφαρμογή: Βρες το ελάχιστο μονοπάτι μεταξύ 2 διασταυρώσεων σε ένα χάρτη Κορυφές γραφήματος διασταυρώσεις Ακμές γραφήματος οδικά τμήματα Βάρος ακμής γραφήματος μήκος αντίστοιχου οδικού τμήματος 8

Πρόβλημα εύρεσης ελάχιστων μονοπατιών σε γραφήματα (shortest path problem) Η απόσταση 2 κορυφών είναι το μήκος του συντομότερου μονοπατιού μεταξύ τους Πιο πρακτικά: φανταστείτε ότι σε κάθε κορυφή βρίσκεται μία μπάλα και κάθε ακμή αντιστοιχεί σε κλωστή Αν τραβήξουμε αρκετά ψηλά τη μπάλα στην κορυφή s, οι υπόλοιπες μπάλες που θα τραβηχτούν μαζί με αυτή λόγω των δεσιμάτων μεταξύ τους είναι αυτές που μπορούμε να φτάσουμε από την κορυφή s και για να βρούμε τις αντίστοιχες αποστάσεις από την s αρκεί να μετρήσουμε πόσο κάτω από την s κρέμονται Τα μήκη των μονοπατιών επιτρέπουν την ποσοτική αξιολόγηση του κατά πόσον οι κορυφές σε ένα γράφημα είναι απομακρυσμένες 9

Αναζήτηση κατά βάθος (Depth-first search - DFS) Η αναζήτηση κατά βάθος (depth-first search- DFS) προσδιορίζει όλες τις κορυφές που μπορούμε να φτάσουμε από κάποιο συγκεκριμένο αρχικό σημείο και βρίσκει μονοπάτια προς αυτές τις κορυφές που συνοψίζονται στο δένδρο αναζήτησης κατά βάθος (DFS tree) Στρατηγική: Προχώρα όσο μπορείς αλλιώς γύρνα πίσω και δοκίμασε άλλο δρόμο Μία κορυφή ορίζεται σαν αρχική και οι υπόλοιπες διατάσσονται αλφαβητικά Ξεκινώντας από την αρχική κορυφή ακολουθούμε ακμές για να φτιάξουμε το μεγαλύτερο δυνατό μονοπάτι Τα μονοπάτια μπορεί να μην είναι τα πιο «οικονομικά» Μπορούμε να φτάσουμε την κορυφή C από την S διασχίζοντας μία μόνο ακμή ενώ το δένδρο αναζήτησης επιστρέφει μονοπάτι μεγέθους 3. Δένδρο αναζήτησης 10

Αναζήτηση κατά βάθος (Depth-first search - DFS) Αρχικοποίησε Mark[n] σε false Mark[s] = true Θέσε s στη στοίβα (Ζ, s) Επανάλαβε Πάρε x (από την κορυφή της στοίβας Ζ) Αν όλοι οι διάδοχοί του είναι μαρκαρισμένοι Διάγραψε τον x από τη στοίβα Ζ Αλλιώς Πάρε ένα διάδοχο y του x, μη μαρκαρισμένο Μάρκαρε τον κόμβο y Θέσε τον κόμβο y στη στοίβα Z Μέχρι Z = Ø Φτιάξε μια στοίβα με n άδειες θέσεις Μάρκαρε την κορυφή s Βάλε την s στη στοίβα Επανάλαβε Πάρε την κορυφή x από την κορυφή της στοίβας Αν όλες οι διάδοχές της κορυφές είναι μαρκαρισμένες Διάγραψε τη x από τη στοίβα Αλλιώς Πάρε μία διαδοχική κορυφή y της x, μη μαρκαρισμένη Μάρκαρε την κορυφή y Βάλε την y στη στοίβα Μέχρι να αδειάσει η στοίβα 11

Παράδειγμα (1) εκτέλεσης αλγορίθμου DFS v0 v1 v2 v3 Προεπεξεργασία-αναπαράσταση γραφήματος: Δημιουργία λίστας γειτνίασης για κάθε κορυφή v0: {v1, v2} v1: {v3} v2: {v3} v3: {} v0 v1 v3 v0 v0 v1 v3 v3 v1 v0 v0 v1 v3 v2 v2 v2 v0 v1 v3 v1 v0 v0 v1 v3 v2 v3 v1 v0 v2 v2 12

Παράδειγμα (1) εκτέλεσης αλγορίθμου Σειρά μαρκαρίσματος: DFS a:1, b:2, c:3, e:4, f:5, g:6, h:7, d:8 Εξέλιξη της στοίβας Ζ: a, ab, abc, abce, abcef, abcefg, abcef, abcefh, abcef, abce, abc, abcd, abc, ab, a, Ø 13

Αναζήτηση κατά βάθος (Depth-first search - DFS) Χρόνος εκτέλεσης του αλγορίθμου DFS σε γράφημα με V κορυφές και E ακμές; Ασχολούμαστε με κάθε κορυφή μία φορά για να την εισάγουμε στην ουρά επεξεργασίας και μία για να την εξάγουμε: Ο( V ) Ασχολούμαστε με κάθε ακμή το πολύ δύο φορές όταν την αναζητούμε στη λίστα γειτνίασης ενός κόμβου: Ο( E ) Συνολικά: Ο( V + E ) (υποθέτοντας ότι η «ενασχόληση» κοστίζει Ο(1)) 14

Αναζήτηση κατά πλάτος (Breadth-first search - BFS) Ανασηκώνοντας την κορυφή s, το γράφημα διαμερίζεται σε επίπεδα: αυτό που περιέχει μόνο την s, αυτό που περιέχει κορυφές σε απόσταση 1 από την s, αυτό που περιέχει κορυφές σε απόσταση 2 από την s, κ.ο.κ. Ένας απλός τρόπος για να υπολογίσουμε την απόσταση της s από τις υπόλοιπες κορυφές είναι να ψάχνουμε απομακρυνόμενοι από την κορυφή s σε κάθε κατεύθυνση και προσθέτουμε κορυφές σε ένα επίπεδο κάθε φορά Αφού επιλέξουμε τις κορυφές σε απόσταση 0,1,2,,d οι κορυφές σε απόσταση d + 1 βρίσκονται πολύ εύκολα: είναι οι γειτονικές κορυφές του επιπέδου σε απόσταση d που δεν έχουμε επισκεφθεί ακόμα Επίπεδο 0 Επίπεδο 1 Επίπεδο 2

Αναζήτηση κατά πλάτος (Breadth-first search - BFS) Η ιδέα δίνει τον αναδρομικό αλγόριθμο αναζήτησης κατά πλάτος (breadthfirst search - BFS) στον οποίο σε κάθε χρονική στιγμή είναι ενεργά 2 επίπεδα: κάποιο επίπεδο d, που έχει προσδιοριστεί πλήρως, και το επίπεδο d + 1, που ανακαλύπτεται προσδιορίζοντας τους γείτονες των κορυφών του επιπέδου d Στρατηγική: Αντί να πας όσο πιο μακρυά μπορείς, ψάξε όλα τα μονοπάτια Βήματα αλγορίθμου BFS 1. Επίπεδο L0 = {s} 2. Επίπεδο L1 = όλοι οι γείτονες του επιπέδου L0 3. Επίπεδο L2 = όλες οι κορυφές που δεν ανήκουν στα επίπεδα L0 ή L1 και συνδέονται με κορυφή του επιπέδου L1 4. Επίπεδο Li+1 = όλες οι κορυφές που δεν ανήκουν σε προηγούμενο επίπεδο και συνδέονται με κορυφή του επιπέδου Li 16

Αναζήτηση κατά πλάτος (Breadth-first search - BFS) Αρχικοποίησε Mark[n] σε false Mark[s] = true Θέσε s στην ουρά: Ζ={s} Επανάλαβε Πάρε x από την κεφαλή της ουράς Για κάθε διάδοχο y του x Μέχρι Z = Ø Αν y μη μαρκαρισμένος μάρκαρε y Θέσε y στο τέλος της ουράς Πάρε μια άδεια ουρά με n άδειες θέσεις Μάρκαρε την κορυφή s Βάλε την s στην ουρά Επανάλαβε Πάρε την κορυφή x από την κεφαλή της ουράς Για κάθε διάδοχο y του x Αν y μη μαρκαρισμένη μάρκαρε y Βάλε y στο τέλος της ουράς Μέχρι να αδειάσει η ουρά 17

Αναζήτηση κατά πλάτος (Breadth-first search - BFS) 18

Αναζήτηση κατά πλάτος (Breadth-first search - BFS) Σειρά μαρκαρίσματος: a:1, b:2, d:3, c:4, e:5, f:6, h:7, g:8 Εξέλιξη της ουράς Ζ: a, db, cd, c, e, hf, gh, g, Ø 19

Αναζήτηση κατά πλάτος (Breadth-first search - BFS) Εκτέλεση BFS: Υποθέτουμε ότι η κορυφή S είναι η αφετηρία και επισκεπτόμαστε μία-μία τις κορυφές που είναι διαταγμένες με αλφαβητική σειρά Σειρά επίσκεψης Περιεχόμενα ουράς μετά την επίσκεψη στην κορυφή 20

Παράδειγμα (1) εκτέλεσης αλγορίθμου BFS A Κορυφή που δεν έχουμε επισκεφθεί L 0 A A Κορυφή που έχουμε επισκεφθεί Ακμή που δεν έχουμε επισκεφθεί L 1 B C D Ακμή που οδηγεί σε νέα κορυφή Ακμή που δεν οδηγεί σε νέα κορυφή E F L 0 A L 0 A L 1 B C D L 1 B C D E F E F 21

Παράδειγμα (1) εκτέλεσης αλγορίθμου BFS L 0 A L 0 A L 1 B C D L 1 B C D E F L 2 E F L 0 A L 0 A L 1 B C D L 1 B C D L 2 E F L 2 E F 22

Παράδειγμα (1) εκτέλεσης αλγορίθμου BFS L 0 A L 0 A L 1 B C D L 1 B C D L 2 E F L 2 E F L 0 A L 1 B C D L 2 E F 23

Παράδειγμα (2) εκτέλεσης αλγορίθμου BFS 24

Παράδειγμα (2) εκτέλεσης αλγορίθμου BFS 25

Παράδειγμα (2) εκτέλεσης αλγορίθμου BFS 26

Παράδειγμα (2) εκτέλεσης αλγορίθμου BFS 27

Αναζήτηση κατά πλάτος (Breadth-first search - BFS) Το BFS δένδρο είναι διαφορετικό από το αντίστοιχο δένδρο αναζήτησης κατά βάθος (DFS δένδρο) και έχει την ιδιότητα ότι όλα τα μονοπάτια που περιέχει είναι τα συντομότερα δυνατά: έχουμε δένδρο συντομότερων μονοπατιών Κάθε επίπεδο Li αποτελείται από όλες τις κορυφές σε απόσταση ακριβώς i από την κορυφή s Υπάρχει μονοπάτι από την κορυφή s στην t αν και μόνον αν η t εμφανίζεται σε κάποιο επίπεδο DFS BFS 28

Αναζήτηση κατά πλάτος (Breadth-first search - BFS) O αλγόριθμος BFS εκτελείται σε O( V + E )=O(n+m) βήματα Με κάθε κορυφή ασχολούμαστε μία φορά για να την εισάγουμε στην ουρά και μία φορά για να την εξάγουμε: Ο( V ) βήματα Με κάθε ακμή ασχολούμαστε δύο φορές: όταν την ανακαλύπτουμε και την προσθέτουμε ως προσκείμενη σε κάποιες κορυφές και όταν την ανακαλύπτουμε αλλά δεν την προσθέτουμε γιατί οι αντίστοιχες κορυφές της έχουν ήδη ανακαλυφθεί πραγματοποιούνται συνολικά 2 λειτουργίες (σταθερού χρόνου) με κάθε μία από τις Ε ακμές απαιτούνται 2 * Ε βήματα Συνολικά: Ο( V + Ε ) βήματα 29

DFS ή BFS Ο αλγόριθμος DFS έχει πολύ περισσότερες εφαρμογές γιατί λόγω του τρόπου λειτουργίας του πολύ περισσότερη πληροφορία είναι διαθέσιμη (εξαιτίας της αναδρομής) Ο αλγόριθμος BFS είναι πλήρης, δηλ., εγγυάται ότι θα βρει τα μονοπάτια από μία αρχική κορυφή προς όλες τις άλλες (που μάλιστα θα είναι και τα συντομότερα) ενώ ο DFS όχι 30