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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Γηάιεμε 19: Δηζαγσγή ζηνπο Γξάθνπο

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

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

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

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

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

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

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

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

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

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

(elementary graph algorithms)

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

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

Εισαγωγή στη Θεωρία Γράφων

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

Διάλεξη 11: Δέντρα Ι Εισαγωγή σε Δενδρικές Δομές Δεδομένων

Διάλεξη 11: Δέντρα Ι - Εισαγωγή σε Δενδρικές Δομές Δεδομένων

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

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

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

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

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

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

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

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

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

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

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

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

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

Αυτοματοποιημένη Επαλήθευση

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

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

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

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

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

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

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

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

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

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

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

Δένδρα. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δυναµικός Προγραµµατισµός (ΔΠ)

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

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

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

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

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

βασικές έννοιες (τόμος Β)

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

Αλγόριθμοι Ισχυρά συνεκτικές συνιστώσες Εφαρμογές, BFS

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

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

Διάλεξη 18: B-Δένδρα

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

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

Transcript:

Διάλεξη 9: Εισαγωγή στους Γράφους Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Γράφοι - ορισμοί και υλοποίηση Διάσχιση Γράφων Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ ΕΠΛ 35 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. 9-

Εισαγωγή στους Γράφους Η πιο γενική μορφή δομής δεδομένων, με την έννοια ότι όλες οι προηγούμενες δομές μπορούν να θεωρηθούν ως περιπτώσεις γράφων. Ένα γράφος G(V,E) αποτελείται από ένα σύνολο V κορυφών (vertices), ή σημείων, ή κόμβων, και ένα σύνολο Ε ακμών (edges), ή τόξων, ή γραμμών. Μια ακμή είναι ένα ζεύγος (u,v) από κορυφές. Παράδειγμα γράφου: ΕΠΛ 35 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. 9-2

Γράφοι Οι γράφοι προσφέρουν μια χρήσιμη μέθοδο για τη διατύπωση και λύση πολλών προβλημάτων, σε δίκτυα και συστήματα τηλεπικοινωνιών (π.χ. το Internet), χάρτες - επιλογή δρομολογίων, προγραμματισμό εργασιών (scheduling), ανάλυση προγραμμάτων (flow charts). Η θεωρία των γράφων θεωρείται ότι ξεκίνησε από τον Euler στις αρχές του 8ου αιώνα (736). Ο γράφος των Autonomous Systems στο Διαδίκτυο 9-3

Ορισμοί Ένας γράφος ονομάζεται κατευθυνόμενος (directed graph, digraph) αν κάθε μια από τις ακμές του είναι προσανατολισμένη προς μία κατεύθυνση. (πχ: ένα οδικό δίκτυο με λωρίδες μονής κατεύθυνσης) Ένας γράφος ονομάζεται μη-κατευθυνόμενος (undirected) αν οι ακμές του δεν είναι προσανατολισμένες.(πχ: ένα οδικό δίκτυο με λωρίδες διπλής κατεύθυνσης) Αν (u,v) είναι ακμή τότε λέμε ότι οι κορυφές u και v είναι γειτονικές (adjacent) ή ότι γειτνιάζουν. Μονοπάτι ή διαδρομή (path) ενός γράφου μήκους n, είναι μια ακολουθία κόμβων v, v,, v n, όπου για κάθε i, i < n, (v i, v i+ ) είναι ακμή του γράφου. Μήκος ενός μονοπατιού είναι ο αριθμός ακμών που περιέχει (εκτός και εάν ορίζεται διαφορετικά) Βραχύτερο Μονοπάτι μεταξύ δυο κορυφών (Shortest Path): To μονοπάτι μεταξύ δυο κορυφών που έχει το ελάχιστο μήκος. Μια διαδρομή ενός γράφου ονομάζεται απλή (simple path) αν όλες οι κορυφές της είναι διαφορετικές μεταξύ τους, εκτός από την πρώτη και την τελευταία οι οποίες μπορούν να είναι οι ίδιες. Κυκλική Διαδρομή (cycle) ονομάζεται μια διαδρομή με μήκος > οπου v = v n. ΕΠΛ 35 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. 9-4

Ορισμοί Ένας γράφος που δεν περιέχει κύκλους ονομάζεται άκυκλος (acyclic graph) Έστω G=(V,E) και G = (V, E ) γράφοι, όπου V V και E E. Tότε ο γράφος G είναι υπογράφος (subgraph) του γράφου G. Απόσταση Κορυφών (Vertex Distance): Tο μήκος της συντομότερης διαδρομής που οδηγεί από τη μια κορυφή στην άλλη. Συνεκτικός Γράφος (Connected Graph): Ένας μη-κατευθυνόμενος γράφος στον οποίο υπάρχει τουλάχιστο μια διαδρομή μεταξύ όλων των κορυφών. Ισχυρά Συνεκτικός Γράφος (Strongly Connected Graph): Ένας κατευθυνόμενος γράφος στον οποίο υπάρχει μια διαδρομή από οποιαδήποτε κορυφή σε οποιανδήποτε άλλη. Ελαφρά Συνεκτικός Γράφος (Weakly Connected Graph): Ένας κατευθυνόμενος (συνεκτικός) γράφος στον οποίο δεν υπάρχει μια διαδρομή από οποιαδήποτε κορυφή σε οποιανδήποτε άλλη. 9-5

Ορισμοί Πόσες ακμές μπορεί να έχει ένας γράφος με n κορυφές; A) Κατευθυνόμενος: nx(n-) B) Μη-κατευθυνόμενος: nx(n-)/2 Αραιός Γράφος (Sparse Graph): Αν ο αριθμός των ακμών του είναι της τάξης Ο(n), όπου n είναι ο αριθμός κορυφών του, διαφορετικά λέγεται Πυκνός Γράφος (Dense Graph) Γράφος με Βάρη (Weighted Graph): Συχνά συσχετίζουμε κάθε ακμή ενός γράφου με κάποιο βάρος (weight). Ποιες ιδιότητες ικανοποιούν οι πιο κάτω γράφοι; Connected, undirected, unweighted Weakly connected, directed, weighted 2 4 7 5 strongly connected directed, unweighted, -3 ΕΠΛ 35 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. 9-6

Αναπαράσταση γράφων στην Μνήμη Αναπαράσταση γράφων με Πίνακες Γειτνίασης (Adjacency Matrix) Γράφος (Graph) Ένας γράφος G=(V,E) με n κορυφές μπορεί να αναπαρασταθεί ως ένας nn πίνακας που περιέχει τις τιμές και, και όπου αν η (i,j) είναι ακμή τότε A[(i,j)]=, διαφορετικά A[(i,j)]=. Αν ο γράφος είναι γράφος με βάρη, και το βάρος κάθε ακμής είναι τύπου t, τότε για την αναπαράσταση του γράφου μπορεί να χρησιμοποιηθεί πίνακας τύπου t με Α[(i,j)] = βάρος(i,j), αν υπάρχει ακμή (i,j) A[(i,j)] =, αν δεν υπάρχει ακμή (i,j) Αυτή η αναπαράσταση απαιτεί χώρο Θ(n 2 ), όπου n= V. Αν ο γράφος είναι αραιός (δηλαδή τάξης Ο(n)) η μέθοδος οδηγεί σε σπάταλη χώρου. From: 3 4 Πίνακας Γειτνίασης (Adjacency Matrix) To: 2 3 4 2 3 4 2 ΕΠΛ 35 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. 9-7

Αναπαράσταση γράφων Αναπαράσταση γράφων με Λίστες Γειτνίασης (Adjacency Lists) Ένας γράφος G=(V,E) αναπαρίσταται ως ένας μονοδιάστατος πίνακας Α. Γράφος (Graph) 2 Για κάθε κορυφή v, Α[v] είναι ένας δείκτης σε μια συνδεδεμένη λίστα στην οποία αποθηκεύονται οι κορυφές που γειτνιάζουν με την v. Η μέθοδος απαιτεί χώρο Θ( V + Ε ). Επιτυγχάνεται εξοικονόμηση χώρου για αραιούς γράφους. Στην περίπτωση γράφων με βάρη στη λίστα γειτνίασης αποθηκεύουμε επίσης το βάρος κάθε ακμής. 2 3 4 3 4 Λίστα Γειτνίασης 2 3 ΕΠΛ 35 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. 9-8 2 3 4

Διάσχιση Γράφων Αν θέλουμε να επισκεφτούμε όλους τους κόμβους ενός γράφου μπορούμε να χρησιμοποιήσουμε έναν από πολλούς τρόπους, οι οποίοι διαφέρουν στη σειρά με την οποία εξετάζουν τους κόμβους. Διαδικασίες διάσχισης χρησιμοποιούνται για τη διακρίβωση ύπαρξης μονοπατιού μεταξύ δύο κόμβων κ.α. Άλλα Παραδείγματα. Οι μηχανές αναζήτησης (search engines π.χ. Google), χρησιμοποιούν προγράμματα τα οποία ονομάζονται crawlers, για να διασχίσουν όλες τις ιστοσελίδες του WWW. Αυτές εκτελούνε αναδρομικά την εξής διαδικασία: a) Κατέβασε την σελίδα Χ, b) Βρες όλους του επόμενους συνδέσμους (links) από την X, c) Για κάθε σύνδεσμο εκτέλεσε τα βήματα a-c. 2. Προγράμματα ανταλλαγής αρχείων (P2P File-sharing Systems, π.χ. Gnutella), χρησιμοποιούνε αλγόριθμους διάσχισης για να μπορούνε οι χρήστες να αποστέλλουν την αναζήτηση τους (query) στους κόμβους του δικτύου. Αν κάποιος κόμβος έχει κάποιο αρχείο το οποίο ψάχνουμε τότε στέλνει κάποια απάντηση στο query. ΕΠΛ 35 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. 9-9

Διάσχιση Γράφων Οι πιο διαδεδομένοι τύποι διάσχισης είναι:. Κατά Βάθος Διάσχιση(Depth-First Search (DFS)) 2. Κατά Πλάτος Διάσχιση (Breadth-First Search (BFS)) Depth-First Search Γενίκευση της προθεματικής διάσχισης δένδρων: Ξεκινώντας από ένα κόμβο v, επισκεπτόμαστε πρώτα τον v και ύστερα καλούμε αναδρομικά τη διαδικασία στο καθένα από τα παιδιά του. Δηλαδή: Print_Preorder(treenode u) Output data at u; for each child v of u Print_Preorder(v) Σε ένα δένδρο δεν έχουμε κυκλικές διαδρομές. Σε ένα γράφο όμως έχουμε κυκλικές διαδρομές. Άρα πως θα διασχίσουμε τον γράφο; Θα διατηρήσουμε ένα πίνακα Visited ο οποίος θα κρατά πληροφορίες ως προς το ποιους κόμβους έχουμε επισκεφθεί ανά πάσα στιγμή. Δεν θα επισκεπτόμαστε ξανά τον ίδιο κόμβο ΕΠΛ 35 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. 9-

Διαδικασία Προθεματικής Διάσχισης DepthFirstSearch(graph G,vertex v){ } for each vertex w in G DFS(v); visited[w] = False; DFS(vertex v){ } visited[v] = True; print Visited node v for each w adjacent to v if (visited[w]==false) DFS(w) Αρχικοποίηση Πίνακα Visited Χρόνος Εκτέλεσης: Θ( V + E ) Θα επισκεφτούμε ακριβώς μια φορά όλες τις κορυφές και ακμές Υπόθεση: O γράφος είναι συνεκτικός (connected). 2 3 4 ΕΠΛ 35 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. 9-

Προθεματική Διάσχιση Αν ο γράφος δεν είναι συνεκτικός (disconnected) αυτή η στρατηγική πιθανό να αγνοήσει μερικούς κόμβους. Αν ο στόχος μας είναι να επισκεφθούμε όλους τους κόμβους τότε μετά το τέλος της εκτέλεσης του DFS(v) θα πρέπει να ελέγξουμε τον πίνακα Visited να βρούμε τους κόμβους που δεν έχουμε επισκεφθεί και να καλέσουμε σε αυτούς τη διαδικασία DFS: DepthFirstSearch(graph G,vertex v){ for each vertex w in G Visited[w] = False; DFS(v); for each vertex w in G if (Visited[w]== False) DFS(w); } ΕΠΛ 35 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. 9-2

Παράδειγμα Depth-First-Search (σε Μη-Κατευθυνόμενο Γράφο) DepthFirstSearch(G, A) A B Γ Ζ Ε Δ A B Γ Ζ Ε Δ 2 3 6 5 4 Α Β Γ Δ Ε Ζ Α Β Γ Δ Ε Ζ FROM TO: ΕΠΛ 35 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. 9-3

Παράδειγμα Depth-First-Search 2 (σε Κατευθυνόμενο & Ελαφρά Συνεκτικό Γράφο) DepthFirstSearch(G, A) 2 A B Ε Δ Γ A B Ε Δ Γ Ζ Ζ 3 4 5 6 Α Β Γ Δ Ε Ζ Α Β Γ Δ Ε Ζ Στον αρχικό γράφο δεν υπάρχει μια διαδρομή μεταξύ όλων των ζευγών Π.χ. Α->Β FROM TO: ΕΠΛ 35 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. 9-4

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

Breadth-First Search (BFS) Ξεκινώντας από ένα κόμβο v, επισκεπτόμαστε πρώτα το v, ύστερα τους κόμβους που γειτνιάζουν με τον v, ύστερα τους κόμβους που βρίσκονται σε απόσταση 2 από τον v, και ούτω καθεξής. A B Γ Αρχικός Γράφος Ε Δ Ζ A B Γ 4 5 2 Διάσχιση BFS 3 Ε Δ Ζ ΕΠΛ 35 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. 9-6

Διαδικασία Breadth-First Search Διάσχιση Γράφου G ξεκινώντας από το v 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); Print(w); for each u adjacent to w if (Visited[u]==False){ Visited[u]=True; Enqueue(u,Q); } } Υλοποίηση BFS με χρήση ουράς Χρόνος Εκτέλεσης: O( V + E ) ΕΠΛ 35 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. 9-7

Quiz - Results Quiz 9 8 7 6 5 4 3 2 3 5 7 9 3 5 7 9 2 23 25 27 29 3 33 35 37 39 4 43 45 47 49 5 53 55 57 59 ΕΠΛ 35 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. 9-8

Quiz - Results ΕΠΛ 35 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. και Μηχ. Υπολ. 9-9