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

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

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

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

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

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

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

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

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

Διαπεράσεις Μη Κατευθυνόμενων Γραφημάτων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ιαφάνειες παρουσίασης #11

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 4 Σωροί, Γράφοι

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

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

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

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

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

(elementary graph algorithms)

Κεφάλαιο 3. Γραφήματα. v1.3 ( ) Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του 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

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

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

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

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

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

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

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

(elementary graph algorithms)

Αναζήτηση σε Γράφους. Μανόλης Κουμπαράκης. ΥΣ02 Τεχνητή Νοημοσύνη 1

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

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

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

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

Βασικές Δομές Δεδομένων

Δένδρα. Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών :

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

Βασικές Έννοιες Δοµών Δεδοµένων

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

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

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

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

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

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

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

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

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

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

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

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΑΣΚΗΣΗ 1 Για τις ερωτήσεις 1-4 θεωρήσατε τον ακόλουθο γράφο. Ποιές από τις παρακάτω προτάσεις αληθεύουν και ποιές όχι;

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

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

Βασικές οµές εδοµένων

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

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

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

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

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

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

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

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

ένδρα u o Κόµβοι (nodes) o Ακµές (edges) o Ουρά και κεφαλή ακµής (tail, head) o Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) o Μονοπάτι (pat

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

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

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

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Βασικές Ιδιότητες και Διάσχιση Κεφάλαιο 5 ( και ) Ε. Μαρκάκης Επίκουρος Καθηγητής

Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα

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

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

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

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

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

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

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

ΘΕΩΡΙΑ ΓΡΑΦΩΝ. 10 η Διάλεξη Κατευθυνόμενοι Γράφοι Βασικά χαρακτηριστικά Αλγόριθμοι διάσχισης κατευθυνόμενων γράφων Λίγα Λόγια για Αλυσίδες Markov

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

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

Transcript:

ΘΕΩΡΙΑ ΓΡΑΦΩΝ 6 η Διάλεξη Διάσχιση Γράφων και Δέντρων Αλγόριθμος αναζήτησης σε Βαθος Αλγόριθμος αναζήτησης κατά Πλάτος Αλγόριθμοι για Δένδρα Εύρεση ελαχίστων Γεννητορικών (Επικαλύπτοντα) Δένδρων

Διάσχιση Γράφων Μέχρι τώρα οι αλγόριθμοι που εξετάσαμε για γράφους «επισκέπτονταν» τις κορυφές του γράφου με συγκεκριμένη σειρά: η «κοντινότερη» κορυφή, το «συντομότερο» μονοπάτι κ.ο.κ. Στο κεφάλαιο αυτό εισάγουμε κάποιες γενικές τεχνικές διάσχισης γράφων, που είναι χρήσιμες όταν δεν επιβάλλεται η επίσκεψη των κορυφών του γράφου με συγκεκριμένη σειρά. Ένας γράφος μπορεί να βρίσκεται αποθηκευμένος ως δομή στη μνήμη του υπολογιστή. Κάθε κορυφή αναπαριστάται από έναν αριθμό bytes και κάθε ακμή από ένα δείκτη.

Διάσχιση Γράφων Το να «σημειώσουμε» μία κορυφή σημαίνει ότι με κάποιο τρόπο επηρεάζουμε τα δεδομένα, που αντιστοιχούν σ αυτήν. Το να βρούμε μία γειτονική κορυφή σημαίνει να ακολουθήσουμε ένα δείκτη προς αυτήν. Μερικές φορές η ύπαρξη του γράφου δεν απεικονίζεται στη μνήμη, αλλά είναι μόνο ιδεατή. Μία τέτοια εφαρμογή είναι όταν για παράδειγμα χρησιμοποιείται ως μία αφαιρετική δομή για την αναπαράσταση παιγνίων. Τότε, κάθε κορυφή μπορεί να αντιστοιχεί σε μία συγκεκριμένη θέση που π.χ. έχουν τα πιόνια στο πεδίο και κάθε ακμή εκφράζει το γεγονός ότι μπορούμε να μετακινηθούμε από τη μία κορυφή στην άλλη με την εκτέλεση μιας επιτρεπτής κίνησης. Είτε ο γράφος είναι μία δομή δεδομένων, είτε απλά μία αφαιρετική αναπαράσταση οι τεχνικές διάσχισης είναι οι ίδιες.

Διάσχιση Γράφων Αν θέλουµε να επισκεφτούµε όλους τους κόµβους ενός γράφου µπορούµε να χρησιµοποιήσουµε έναν από πολλούς τρόπους, οι οποίοι διαφέρουν στη σειρά µε την οποία εξετάζουν τους κόµβους. ιαδικασίες διάσχισης χρησιµοποιούνται για τη διακρίβωση ύπαρξης µονοπατιού µεταξύ δύο κόµβων κ.α. Έχουν πολλές εφαρµογές. Depth-First Search Γενίκευση της προθεµατικής διάσχισης δένδρων: Ξεκινώντας από ένα κόµβο v, επισκεπτόµαστε πρώτα τον v και ύστερα καλούµε αναδροµικά τη διαδικασία στο καθένα από τα παιδιά του. Πως επηρεάζει η ύπαρξη κύκλων την πιο πάνω ιδέα; Θα διατηρήσουµε ένα πίνακα Visited ο οποίος θα κρατά πληροφορίες ως προς το ποιους κόµβους έχουµε επισκεφθεί ανά πάσα στιγµή.

Αναζήτηση προτεραιότητας βάθους σε μη κατευθυνόμενους γράφους Ι Έστω G=<N,A> ένας μη κατευθυνόμενος γράφος του οποίου πρέπει να επισκεφθούμε όλες τις κορυφές. Ας υποθέσουμε ότι με κάποιο τρόπο είναι πιθανό να «σημειώσουμε» μία κορυφή, έτσι ώστε να φαίνεται ότι την έχουμε επισκεφθεί. Για την εκτέλεση μιας διάσχισης με προτεραιότητα βάθους επιλέγουμε οποιαδήποτε κορυφή v N ως αφετηρία. Σημειώνουμε την κορυφή αυτή έτσι ώστε να φαίνεται ότι την έχουμε επισκεφθεί. Στη συνέχεια επιλέγουμε μια κορυφή που βρίσκεται στο άλλο άκρο ακμής που προσπίπτει στην v, η οποία όμως δεν είναι σημειωμένη. Αυτή επιλέγεται ως νέα αφετηρία και καλείται αναδρομικά η διαδικασία αναζήτησης προτεραιότητας βάθους. Στην επιστροφή της αναδρομικής κλήσης αν υπάρχει άλλη προσπίπτουσα ακμή στο v, έτσι ώστε δεν έχει γίνει επίσκεψη στην κορυφή που αυτή καταλήγει, τότε επιλέγουμε την κορυφή αυτή ως αφετηρία και καλούμε πάλι τη διαδικασία. Η διαδικασία ολοκληρώνεται όταν έχουν «σημειωθεί» όλες οι κορυφές, που βρίσκονται πλησίον της v.

Αναζήτηση προτεραιότητας βάθους σε μη κατευθυνόμενους γράφους ΙI procedure search(g) for each v N do mark[v] not-visited for each v N do if mark[v] visited then dfs(v) procedure dfs(v:node) {δεν έχουμε επισκεφθεί ακόμη την κορυφή v} mark[v] visited for each node w adjacent to v do if mark[w] visited then dfs(w)

Αναζήτηση προτεραιότητας βάθους σε μη κατευθυνόμενους γράφους ΙII ΠΑΡΑΔΕΙΓΜΑ 1 2 3 4 5 6 7 8 Αν υποθέσουμε ότι οι γειτονικές κορυφές εξετάζονται κάθε φορά με αριθμητική σειρά και ότι η αφετηρία είναι η κορυφή 1, τότε μία διάσχιση με προτεραιότητα βάθους θα έχει ως εξής: dfs(1) dfs(2) dfs(4) dfs(3) dfs(7) dfs(6) dfs(8) dfs(5)

Παράδειγμα ΑσΒ Αρχικά όλες οι κορυφές θεωρούνται ως ανεξέταστες Μέχρι να εξερευνήσουμε όλες τις κορυφές,επαναληπτικά, κάνουμε τα ακόλουθα: Επιλέγουμε μία ανεξερεύνητη και την κηρύσσουμε εξερευνημένη Εάν υπάρχει γειτονική της ανεξέταστη, την επιλέγουμε ως επόμενη προς θεώρηση κορυφή

Παράδειγμα ΑσΒ (2)

Παράδειγμα ΑσΒ (3)

Κατηγορίες Ακμών ΑσΒ Κατηγορίες ακμών Ακμές δένδρου Οπισθοακμές (ακμή {v,w} στο G, που να μην υπάρχει αντίστοιχη στο δένδρο Τ ) Αριθμοί προδιατάξεως και μεταδιατάξεως ν απόγονος της w εάν έχει μεγαλύτερο αριθμό προδιατάξεως και μικρότερο αριθμό μεταδιατάξεως v πρόγονος της w εάν έχει μικρότερο αριθμό προδιατάξεως και μεγαλύτερο αριθμό μεταδιατάξεως σε κάθε άλλη περίπτωση δεν σχετίζονται... Κατασκευή ανάστροφου δένδρου ΑσΒ μέσω βοηθητικού πίνακα, όπου θα σημειώνεται ο πατέρας κάθε ανακαλυφθείσας κορυφής

Αναζήτηση προτεραιότητας βάθους σε μη κατευθυνόμενους γράφους ΙV Αποδοτικότητα αλγορίθμου: Πόσος χρόνος απαιτείται για την εξερεύνηση n κορυφών και α ακμών; Κάθε κορυφή την επισκεπτόμαστε ακριβώς μία φορά, άρα υπάρχουν n κλήσεις της διαδικασία dfs. Ακόμη όταν επισκεπτόμαστε μία κορυφή αναζητούμε ποιες από τις γειτονικές της κορυφές δεν είναι σημειωμένες. Αν ο γράφος αναπαριστάται με λίστες γειτνίασης, έτσι ώστε για κάθε κορυφή να έχουμε άμεση προσπέλαση στις γειτονικές της, τότε αυτό έχει πολυπλοκότητα της τάξης α. Άρα έχουμε O(n) κλήσεις διαδικασιών και O(α) για να ελεγχθούν οι σημειωμένες κορυφές, οπότε η συνολική πολυπλοκότητα του αλγορίθμου είναι O(max(α,n)).

Αναζήτηση προτεραιότητας βάθους σε μη κατευθυνόμενους γράφους V Σε ένα συνδεδεμένο γράφο μία διάσχιση με προτεραιότητα βάθους αντιστοιχεί στο γράφο ένα ζευγνύον δένδρο. Οι ακμές του δένδρου αντιστοιχούν στις ακμές που χρησιμοποιούνται στη διάσχιση του γράφου. Οι ακμές που δεν χρησιμοποιούνται στη διάσχιση του γράφου δεν απεικονίζονται στο δένδρο ή απεικονίζονται (αν θέλουμε) με διακεκομμένες γραμμές. Ρίζα του δένδρου είναι η αφετηρία. Αν ο γράφος δεν είναι συνδεδεμένος, τότε η αναζήτηση με προτεραιότητα βάθους δεν αντιστοιχεί ένα δένδρο αλλά ένα δάσος από δένδρα(πχ).

Αναζήτηση προτεραιότητας βάθους σε μη κατευθυνόμενους γράφους VΙ Επίσης, μία αναζήτηση με προτεραιότητα βάθους εκτός των άλλων μας παρέχει και μία σειρά αρίθμησης των κορυφών του γράφου ανάλογα με τη σειρά επίσκεψής τους. Σε σχέση με το αντίστοιχο ζευγνύον δένδρο η αρίθμηση αυτή των κόμβων είναι μία προδιατεταγμένη αρίθμηση. Πως όμως τροποποιείται ο αλγόριθμος έτσι ώστε να αποδίδει και αυτήν την αρίθμηση;

Αναζήτηση προτεραιότητας βάθους σε μη κατευθυνόμενους γράφους VΙΙ procedure search(g) pnum 0 for each v N do mark[v] not-visited for each v N do if mark[v] visited then dfs(v) procedure dfs(v:node) {δεν έχουμε επισκεφθεί ακόμη την κορυφή v} pnum pnum+1 prenum[v] pnum mark[v] visited for each node w adjacent to v do if mark[w] visited then dfs(w)

Αναζήτηση προτεραιότητας βάθους σε μη κατευθυνόμενους γράφους ΙII ΠΑΡΑΔΕΙΓΜΑ 1 2 3 4 5 6 7 8 Αν υποθέσουμε ότι οι γειτονικές κορυφές εξετάζονται κάθε φορά με αριθμητική σειρά και ότι η αφετηρία είναι η κορυφή 1, τότε μία διάσχιση με προτεραιότητα βάθους θα έχει ως εξής: dfs(1) dfs(2) dfs(4) dfs(3) dfs(7) dfs(6) dfs(8) dfs(5)

Αναζήτηση προτεραιότητας βάθους σε μη κατευθυνόμενους γράφους VΙΙI Η εκτέλεση ενός αλγορίθμου προτεραιότητας βάθους δεν αποδίδει πάντα το ίδιο επικαλύπτον δένδρο, αλλά αυτό που σχηματίζεται εξαρτάται από την κορυφή που επιλέγεται ως αφετηρία της διάσχισης. 2 3 2 3 1 1 6 7 4 7 4 6 8 8 5 5

Αναζήτηση προτεραιότητας βάθους σε μη κατευθυνόμενους γράφους Μία κορυφή v σε ένα συνδεδεμένο γράφο λέμε ότι είναι αποκόπτουσα αν μετά από τη διαγραφή της καθώς επίσης και τη διαγραφή των ακμών που προσπίπτουν σε αυτήν προκύπτει ένας μη συνδεδεμένος γράφος (με περισσότερες από μία συνιστώσες). ΠΑΡΑΔΕΙΓΜΑ 1 Στο γράφο 2 3 4 η κορυφή 1 είναι αποκόπτουσα. 5 6 7 8

Παράδειγμα μη Συνεκτικού μη Κατευθυνόμενου Γραφήματος

Παράδειγμα μη Συνεκτικού μη Κατευθυνόμενου Γραφήματος

Εφαρμογές Εντοπισμός Κύκλου: Αφ ης στιγμής ανακαλυφθεί οπισθοακμή Εύρεση Απλού Μονοπατιού μεταξύ v και w: Εκκίνηση ΑσΒ από την v (απόδειξη με επαγωγή στο μήκος του μονοπατιού) Επικαλύπτον Δένδρο ή Δάσος (απλή συνεκτικότητα): Εάν το γράφημα είναι συνεκτικό, τότε το δένδρο ΑσΒ είναι επικαλύπτον. Διαφορετικά, κάθε επανεκκίνηση της ΑσΒ ανακαλύπτει και μία συνεκτική συνιστώσα (ελάχιστες οι τροποποιήσεις των αλγορίθμων- μόνο ένας πίνακας και μία βοηθητική μεταβλητή)

Παράδειγµα Depth-First- Search 1 Depth-First-Search (G,A) A Β Γ Δ Ε Ζ 1 2 Α Β Γ 3 Δ 5 Ε 4 Ζ

Παράδειγµα Depth-First- Search 2 Α Β Γ Δ Ε Ζ 1 6 Α Β Γ 5 Δ Ε Ζ 2 3 4

Αναζήτηση με προτεραιότητα πλάτους Ι Σε κόμβο v φθάνει μία αναζήτηση με προτεραιότητα βάθους, τότε επισκέπτεται ένα γείτονα τη v, μετά ένα γείτονα του γείτονα κ.ο.κ. Στην αναζήτηση με προτεραιότητα πλάτους, όταν αυτή φθάνει σε έναν κόμβο v, τότε επισκεπτόμαστε ένα προς ένα όλους τους γείτονες και μετά ο αλγόριθμος συνεχίζει σε άλλους κόμβους. Σε αντίθεση με την αναζήτηση με προτεραιότητα βάθους, που είναι εξ ορισμού αναδρομική, η αναζήτηση με προτεραιότητα πλάτους δεν είναι αναδρομική. Για να φανεί αυτή η αντίθεση προχωράμε σε μία εναλλακτική διατύπωση της αναζήτησης με προτεραιότητα βάθους, όπου γίνεται χρήση στοίβας αντί για αναδρομή. Σημειώνουμε ότι η στοίβα είναι μία δομή LIFO.

Παράδειγμα ΑκΠ

Παράδειγμα ΑκΠ

Κατηγορίες ακμών ΑκΠ Κατηγορίες ακμών Ακμές δένδρου Διασταυρώσεως (μεταξύ επιπέδων που διαφέρουν κατά ένα) ΔΕΝ ΥΠΑΡΧΟΥΝ ΟΠΙΣΘΟΑΚΜΕΣ

Μερικά Σχόλια Η διαδικασία καλείται σε κάθε κόµβο το πολύ µια φορά. Χρόνος Εκτέλεσης: Ο( V + E ), δηλαδή γραµµικός ως προς τον αριθµό των ακµών και κορυφών. Αρίθµηση DFS των κορυφών ενός γράφου ονοµάζεται η σειρά µε την οποία επισκέπτεται η διαδικασία DepthFirstSearch τις κορυφές του γράφου. Η διαδικασία µπορεί να κληθεί και για µη-κατευθυνόµενους και για κατευθυνόµενους γράφους. Αντί µε αναδροµή η διαδικασία µπορεί να υλοποιηθεί, ως συνήθως, µε τη χρήση στοιβών.

Εφαρμογές ΑκΠ Εντοπισμός Κύκλου: Μέχρι να ανακαλυφθεί οπισθοακμή Εύρεση Απλού Μονοπατιού μεταξύ v και w: Εκκίνηση ΑκΠ από την v (απόδειξη με επαγωγή στο μήκος του μονοπατιού) Επικαλύπτον Δένδρο ή Δάσος (απλή συνεκτικότητα): Εάν το γράφημα είναι συνεκτικό, τότε το δένδρο ΑκΠ είναι επικαλύπτον. Διαφορετικά, κάθε επανεκκίνηση της ΑκΠ ανακαλύπτει και μία συνεκτική συνιστώσα (ελάχιστες οι τροποποιήσεις των αλγορίθμων- μόνο ένας πίνακας και μία βοηθητική μεταβλητή) Συντομότερα μονοπάτια από μία κορυφή-πηγή: Εκκίνηση ΑκΠ από την v

Αναζήτηση με προτεραιότητα πλάτους ΙΙΙ ΑΝΑΖΗΤΗΣΗ ΜΕ ΠΡΟΤΕΡΑΙΟΤΗΤΑ ΠΛΑΤΟΥΣ procedure bfs(v:node) Q empty-queue mark[v] visited enqueue v into Q while Q is not empty do u first(q) dequeue u from Q for each node w adjacent to u do if mark[w] visited then mark[v] visited enqueue w into Q

Αναζήτηση με προτεραιότητα πλάτους IV Στην αναζήτηση με προτεραιότητα πλάτους χρησιμοποιείται μία ουρά που είναι δομή FIFO. ΠΑΡΑΔΕΙΓΜΑ 1 2 3 4 κόμβος επίσκεψης ουρά 1 2, 3, 4 2 3, 4, 5, 6 3 4, 5, 6 4 5, 6, 7, 8 5 6, 7, 8 6 7, 8 7 8 8 5 6 7 8

Αναζήτηση με προτεραιότητα πλάτους V Όπως και στην αναζήτηση με προτεραιότητα βάθους, έτσι και σ αυτή την περίπτωση αντιστοιχεί ένα δένδρο. ΠΑΡΑΔΕΙΓΜΑ (συνέχεια) 1 2 3 4 5 6 7 8 Ο ίδιος αλγόριθμος εφαρμόζεται επίσης και σε κατευθυνόμενους γράφους χρησιμοποιώντας άλλη ερμηνεία για την έννοια γειτονικός κόμβος.

ιαδικασία Breadth-First Search BFSearch(graph G, vertex v){ Q=MakeEmptyQueue(); for each w in G Visited[w]=False; Visited[v]= True; Enqueue(v,Q); while (!IsEmpty(Q)){ w = Dequeue(Q); Visit(w); for each u adjacent to w if (Visited[u]=False) Visited[u]=True; Enqueue(u,Q); }

Αναζήτηση με προτεραιότητα πλάτους ΙΙ ΑΝΑΖΗΤΗΣΗ ΜΕ ΠΡΟΤΕΡΑΙΟΤΗΤΑ ΒΑΘΟΥΣ (εναλλακτική διατύπωση) procedure dfs (v:node) P empty-stack mark[v] visited push v on P while P is not empty do while there exists a node w adjacent to top(p) such that mark[w] visited do mark[w] visited push w on P pop top(p)

Αναζήτηση προτεραιότητας βάθους σε κατευθυνόμενους γράφους Ι Ο αλγόριθμος είναι βασικά ο ίδιος που εφαρμόζεται και σε μη κατευθυνόμενους γράφους, μόνο που αλλάζει η ερμηνεία του όρου «γειτονική κορυφή». Σε έναν κατευθυνόμενο γράφο η κορυφή w είναι γειτονική της κορυφής v αν υπάρχει το τόξο (v, w). Αν αυτό συμβαίνει αλλά δεν υπάρχει το τόξο (w,v), τότε η κορυφή w είναι της v αλλά η v δεν είναι γειτονική της w. Με αυτή τη διαφορετική ερμηνεία εφαρμόζουμε τον αλγόριθμο διάσχισης με προτεραιότητα βάθους στο παράδειγμα που ακολουθεί.

Αναζήτηση προτεραιότητας βάθους σε κατευθυνόμενους γράφους ΙΙ 1 2 3 4 dfs(1) dfs(2) dfs(3) 5 6 7 8 dfs(4) dfs(5) dfs(8) dfs(6) dfs(7)

Αναζήτηση προτεραιότητας βάθους σε κατευθυνόμενους γράφους ΙΙΙ Τα τόξα που χρησιμοποιούνται κατά τη διάσχιση των κορυφών του γράφου μπορεί να σχηματίζουν ένα δάσος από δένδρα και όχι μόνο ένα δένδρο. 1 5 2 4 6 3 8 7

Breadth-First Search Ξεκινώντας από ένα κόµβο v, επισκεπτόµαστε πρώτα το v, ύστερα τους κόµβους που γειτνιάζουν µε τον v, ύστερα τους κόµβους που βρίσκονται σε απόσταση 2 από τον v, και ούτω καθεξής. Β Ε Α Δ Θ Ζ Γ Εξοδος: Α Β Δ Γ Ε Θ Ζ