Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεPhaon Michel Τροποποιήθηκε πριν 9 χρόνια
1
Διδάσκων: Παύλος Παυλικκάς1 Ολυμπιάδα Πληροφορικής Γράφοι – Διάσχιση
2
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι Διάσχιση Γράφων Αν θέλουμε να επισκεφτούμε όλους τους κόμβους ενός γράφου μπορούμε να χρησιμοποιήσουμε έναν από πολλούς τρόπους, οι οποίοι διαφέρουν στη σειρά με την οποία εξετάζουν τους κόμβους. Διαδικασίες διάσχισης χρησιμοποιούνται για τη διακρίβωση ύπαρξης μονοπατιού μεταξύ δύο κόμβων κ.α. Έχουν πολλές εφαρμογές.
3
Depth-First Search Γενίκευση της προθεματικής διάσχισης δένδρων: Ξεκινώντας από ένα κόμβο v, επισκεπτόμαστε πρώτα τον v και ύστερα καλούμε αναδρομικά τη διαδικασία στο καθένα από τα παιδιά του. Πως επηρεάζει η ύπαρξη κύκλων την πιο πάνω ιδέα; Θα διατηρήσουμε ένα πίνακα Visited ο οποίος θα κρατά πληροφορίες ως προς το ποιους κόμβους έχουμε επισκεφθεί ανά πάσα στιγμή. Διδάσκων: Παύλος Παυλικκάς3
4
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι Παράδειγμα Depth-First-Search 1 A B Γ Ζ Ε Δ A B Γ Ζ Ε Δ 1 23 6 5 4 ΑΒΓΔΕΖΑΒΓΔΕΖ Α Β Γ Δ Ε Ζ
5
Παράδειγμα Depth-First-Search 2 2 A B Ε Δ Γ A B Ε Δ Γ Ζ Ζ 1 3 4 5 6 ΑΒ Γ Δ Ε Ζ Α Β Γ Δ Ε Ζ 000000 100001 010000 100000 110101 001000
6
Παράδειγμα Depth-First-Search 2 2 A B Ε Δ Γ A B Ε Δ Γ Ζ Ζ 1 3 4 5 6 ΑΒ Γ Δ Ε Ζ Α Β Γ Δ Ε Ζ 000000 100001 010000 100000 110101 001000
7
DFS void dfs( int start ) { int w; v[start] = 1; for( w=0; w < size; w++ ) if( ( b[start][w] == 1 ) && ( v[w] == 0 ) ) dfs( w ); } Όπου b o πίνακας γειτνίασης, v ο πίνακας visited, size το μέγεθος του πίνακα γειτνίασης. Διδάσκων: Παύλος Παυλικκάς7
8
8
9
9
10
Άσκηση 1 (Α γύρος 2011 και Β γύρος 2007) Η άσκηση μπορεί να λυθεί και χωρίς γράφους Αν λυθεί με γράφους πρέπει πρώτα από όλα να σχηματιστεί ο πίνακας γειτνίασης. Ο πίνακας που δίνεται δεν είναι ο πίνακας γειτνίασης Τρέχουμε το DFS. Αν όλα τα στοιχεία του πίνακα visited είναι 1 τότε σημαίνει ότι έχουμε επισκεφθεί όλους του κόμβους του γράφου με μια διάσχιση. Αυτό θα σήμαινε ότι έχουμε ένα μόνο νησί. Αν όμως δεν είναι όλα τα στοιχεία του πίνακα visited = 1 τότε πρέπει να συνεχίσουμε να καλούμε τον DFS μέχρι να γίνουν όλα ίσο με 1. Όσες φορές καλέσαμε τον DFS τόσα είναι και τα νησιά Διδάσκων: Παύλος Παυλικκάς10
11
Διδάσκων: Παύλος Παυλικκάς11
12
Διδάσκων: Παύλος Παυλικκάς12
13
Άσκηση 2 (άσκηση 6. Θα αναρτηθεί σύντομα στο σύστημα) Στη λύση αυτή της άσκησης γίνεται χρήση των λιστών γειτνίασης. Δημιουργούνται πρώτα οι λίστες γειτνίασης Τρέχουμε το dfs με αφετηρία την πόλη αφετηρίας Ελέγχουμε τον πίνακα Visited για να δούμε αν έχουμε περάσει από την πόλη άφιξης Διδάσκων: Παύλος Παυλικκάς13
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.