1 ΔΙΑΣΧΙΣΗ ΓΡΑΦΗΜΑΤΩΝ. 2 Θέματα μελέτης Πρόβλημα αναζήτησης σε γραφήματα –Αναζήτηση κατά βάθος (Depth-first search – DFS) –Αναζήτηση κατά πλάτος (Breadth-first.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Γραφήματα & Επίπεδα Γραφήματα
Advertisements

Δένδρα van Emde Boas TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μελετάμε την περίπτωση όπου αποθηκεύουμε.
Γραφήματα & Επίπεδα Γραφήματα
Αλγόριθμοι Αναζήτησης
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
Διακριτά Μαθηματικά ΙI Δέντρα
Επίπεδα Γραφήματα : Προβλήματα και Υπολογιστική Πολυπλοκότητα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
11-1 ΜΑΘΗΜΑ 12 ο Γράφοι, Διάσχιση Γράφων Υλικό από τις σημειώσεις Ν. Παπασπύρου, 2006.
Εισαγωγικές Έννοιες Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Γραφήματα & Επίπεδα Γραφήματα
Διαίρει και Βασίλευε πρόβλημα μεγέθους Ν διάσπαση πρόβλημα μεγέθους Ν-k πρόβλημα μεγέθους k.
Γραφήματα & Επίπεδα Γραφήματα
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
1 Θεματική Ενότητα Γραφήματα & Επίπεδα Γραφήματα.
Προσεγγιστικοί Αλγόριθμοι
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου.
Γράφοι: Προβλήματα και Αλγόριθμοι
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ο αλγόριθμος του Prim και ο αλγόριθμος του Kruskal.
Διδάσκων: Παύλος Παυλικκάς1 Ολυμπιάδα Πληροφορικής Γράφοι – Διάσχιση.
ΘΕΩΡΙΑ ΠΟΛΥΠΛΟΚΟΤΗΤΑΣ ΠΑΡΟΥΣΙΑΣΗ ΣΤΑ ΚΕΦΑΛΑΙΑ 7.4 – 7.6 NP ΠΛΗΡΟΤΗΤΑ.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
Συντομότερες Διαδρομές
Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - Eξάμηνο 4ο1 Μείωσε και Βασίλευε Μειώνουμε το στιγμιότυπο του προβλήματος σε ένα μικρότερο στιγμιότυπο.
Διερεύνηση γραφήματος. Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος.
Ελαφρύτατες διαδρομές TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A.
Αναζήτηση – Δέντρα (2 ο Μέρος) Advanced Data Indexing (Προηγμένη ευρετηρίαση δεδομένων)
Ελάχιστο Συνδετικό Δέντρο
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Κεφάλαιο 4: Συνδεσμικότητα Data Engineering Lab 1.
Λεξικό, Union – Find Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Διερεύνηση γραφήματος. Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος.
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
Αναζήτηση Κατά Βάθος Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Ενότητα 4 Δ ΕΝΔΡΑ Σταύρος Δ. Νικολόπουλος 1.
Χρονική Πολυπλοκότητα και Μοντέλα
Μέγιστη ροή TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A Συνάρτηση χωρητικότητας Κατευθυνόμενο γράφημα.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι13-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ο αλγόριθμος Dijkstra για εύρεση βραχυτέρων μονοπατιών.
Θεωρία Υπολογισμού Κλάσεις P και NP.
1 ΤΜΗΜΑ ΜΠΕΣ Αλγόριθμοι Αναζήτησης Εργασία 1 Τυφλή Αναζήτηση.
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο
Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές TSP, Μέτρα κεντρικότητας, Dijkstra Data Engineering Lab.
Ελαφρύτατες διαδρομές TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A.
Συνδεσμικότητα ΘΕΩΡΙΑ ΓΡΑΦΩΝ Εργαστήριο Τεχνολογίας & Επεξεργασίας Δεδομένων Θεωρία Γράφων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές Κεφάλαιο 4: Συνδεσμικότητα.
Θεωρία Γραφημάτων Θεμελιώσεις-Αλγόριθμοι-Εφαρμογές
Μέγιστη ροή TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A Συνάρτηση χωρητικότητας Κατευθυνόμενο γράφημα.
Συνδετικότητα γραφήματος (graph connectivity). α β Υπάρχει μονοπάτι μεταξύ α και β; Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές.
ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΠΑΡΆΡΤΗΜΑ ΛΕΥΚΑΔΑΣ ΥΠΕΥΘΥΝΗ ΚΑΘΗΓΉΤΡΙΑ Δρ. ΤΣΙΝΤΖΑ ΠΑΝΑΓΙΩΤΑ Οι παρουσιάσεις του μαθήματος βασίζονται στο.
ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΠΑΡΆΡΤΗΜΑ ΛΕΥΚΑΔΑΣ ΥΠΕΥΘΥΝΗ ΚΑΘΗΓΉΤΡΙΑ Δρ. ΤΣΙΝΤΖΑ ΠΑΝΑΓΙΩΤΑ Οι παρουσιάσεις του μαθήματος βασίζονται στο.
ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΕΥΡΕΤΙΚΕΣ ΜΕΘΟΔΟΥΣ Άπληστη Αναζήτηση και Αναζήτηση Α* ΣΠΥΡΟΣ ΛΥΚΟΘΑΝΑΣΗΣ, ΚΑΘΗΓΗΤΗΣ.
Γράφημα είναι μία διμελής σχέση επί ενός συνόλου την οποία παριστάνουμε με γραφικό τρόπο.
Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα:
ΕΥΡΕΣΗ ΕΛΑΧΙΣΤΩΝ ΜΟΝΟΠΑΤΙΩΝ & ΚΑΤΗΓΟΡΙΕΣ ΑΛΓΟΡΙΘΜΩΝ
Επίλυση Προβλημάτων με Αναζήτηση
Προβλήματα Ικανοποίησης Περιορισμών
Διερεύνηση γραφήματος
Δένδρα Δένδρο είναι ένα συνεκτικό άκυκλο γράφημα. Δένδρο Δένδρο Δένδρο
Μέγιστη ροή Κατευθυνόμενο γράφημα 12 Συνάρτηση χωρητικότητας
Διδάσκων: Δρ. Τσίντζα Παναγιώτα
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
ΓΡΑΦΟΙ (GRAPHS).
Χρωματισμός κορυφών -Χρωματισμός χαρτών
Μέγιστη ροή Κατευθυνόμενο γράφημα 12 Συνάρτηση χωρητικότητας
ΕπιβλΕπων: Δρ. Κ. Σ. ΧειλΑΣ, ΑναπληρωΤΗΣ ΚαθηγητΗΣ
Στοιχεία Θεωρίας Γραφημάτων
ΜΥΥ105: Εισαγωγή στον Προγραμματισμό
ΣΤΟΙΧΕΙΑ ΘΕΩΡΙΑΣ ΓΡΑΦΗΜΑΤΩΝ II
(2,4) Trees 11/15/2018 8:56 PM (2,4) Δέντρα (2,4) Δέντρα.
Μεταγράφημα παρουσίασης:

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

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

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

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

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

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

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

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

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

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

11 Αναζήτηση κατά βάθος (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 στη στοίβα Μέχρι να αδειάσει η στοίβα

12 Παράδειγμα (1) εκτέλεσης αλγορίθμου DFS v0v0 v1v1 v2v2 v3v3 Προεπεξεργασία-αναπαράσταση γραφήματος: Δημιουργία λίστας γειτνίασης για κάθε κορυφή v 0 : {v 1, v 2 } v 1 : {v 3 } v 2 : {v 3 } v 3 : {} v0v0 v1v1 v2v2 v3v3 v0v0 v0v0 v1v1 v2v2 v3v3 v0v0 v1v1 v0v0 v1v1 v2v2 v3v3 v0v0 v1v1 v0v0 v1v1 v2v2 v3v3 v0v0 v1v1 v2v2 v3v3 v3v3 v0v0 v1v1 v3v3 v2v2

13 Παράδειγμα (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, Ø

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

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

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

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

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

19 Αναζήτηση κατά πλάτος (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, Ø

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

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

22 CB A E D L0L0 L1L1 F CB A E D L0L0 L1L1 F L2L2 CB A E D L0L0 L1L1 F L2L2 CB A E D L0L0 L1L1 F L2L2 Παράδειγμα (1) εκτέλεσης αλγορίθμου BFS

23 CB A E D L0L0 L1L1 F L2L2 CB A E D L0L0 L1L1 F L2L2 CB A E D L0L0 L1L1 F L2L2 Παράδειγμα (1) εκτέλεσης αλγορίθμου BFS

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

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

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

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

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

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

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