Διερεύνηση γραφήματος
Διερεύνηση γραφήματος Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος ή κατά βάθος. Καθοδική διερεύνηση (pt-irst sr) : Εξερευνά ένα μονοπάτι μέχρι να φθάσει σε αδιέξοδο, οπότε και επιστρέφει για να εξερευνήσει ένα διαφορετικό μονοπάτι.
g
g Η αναζήτηση θα ξεκινήσει από τον κόμβο. Χρησιμοποιούμε μία στοίβα S για να κρατάμε τη σειρά επίσκεψης των κόμβων.
g : Αρχικά κενή
g ώθηση(s,) : τοποθετεί το στην κορυφή της στοίβας
g επεξεργαζόμαστε τον κόμβο που βρίσκεται στην κορυφή της στοίβας
g ώθηση(s,)
g ώθηση(s,)
g επεξεργαζόμαστε τον κόμβο που βρίσκεται στην κορυφή της στοίβας
g o κόμβος είχε τοποθετηθεί στην S προηγουμένως και δεν τοποθετείται ξανά
g ώθηση(s,)
g επεξεργαζόμαστε τον κόμβο που βρίσκεται στην κορυφή της στοίβας
g o κόμβος είχε τοποθετηθεί στην S προηγουμένως και δεν τοποθετείται ξανά
g o κόμβος είχε τοποθετηθεί στην S προηγουμένως και δεν τοποθετείται ξανά
g απώθηση(s)
g
g επεξεργαζόμαστε τον κόμβο που βρίσκεται στην κορυφή της στοίβας
g ώθηση(s,)
g επεξεργαζόμαστε τον κόμβο που βρίσκεται στην κορυφή της στοίβας
g o κόμβος είχε τοποθετηθεί στην S προηγουμένως και δεν τοποθετείται ξανά
g ώθηση(s,)
g επεξεργαζόμαστε τον κόμβο που βρίσκεται στην κορυφή της στοίβας
g o κόμβος είχε τοποθετηθεί στην S προηγουμένως και δεν τοποθετείται ξανά
6 g ώθηση(s,)
6 g επεξεργαζόμαστε τον κόμβο που βρίσκεται στην κορυφή της στοίβας
6 g o κόμβος είχε τοποθετηθεί στην S προηγουμένως και δεν τοποθετείται ξανά
6 g o κόμβος είχε τοποθετηθεί στην S προηγουμένως και δεν τοποθετείται ξανά
6 7 g ώθηση(s,)
6 7 g επεξεργαζόμαστε τον κόμβο που βρίσκεται στην κορυφή της στοίβας
6 7 g o κόμβος είχε τοποθετηθεί στην S προηγουμένως και δεν τοποθετείται ξανά
6 7 g o κόμβος είχε τοποθετηθεί στην S προηγουμένως και δεν τοποθετείται ξανά
6 7 g απώθηση(s)
6 7 g επεξεργαζόμαστε τον κόμβο που βρίσκεται στην κορυφή της στοίβας
6 7 g απώθηση(s)
6 7 g επεξεργαζόμαστε τον κόμβο που βρίσκεται στην κορυφή της στοίβας
8 6 7 g ώθηση(s,g)
8 6 7 g επεξεργαζόμαστε τον κόμβο g που βρίσκεται στην κορυφή της στοίβας
8 6 7 g o κόμβος είχε τοποθετηθεί στην S προηγουμένως και δεν τοποθετείται ξανά
8 6 7 g απώθηση(s)
8 6 7 g επεξεργαζόμαστε τον κόμβο που βρίσκεται στην κορυφή της στοίβας
8 6 7 g o κόμβος είχε τοποθετηθεί στην S προηγουμένως και δεν τοποθετείται ξανά
8 6 7 g απώθηση(s)
8 6 7 g επεξεργαζόμαστε τον κόμβο που βρίσκεται στην κορυφή της στοίβας
8 6 7 g απώθηση(s)
8 6 7 g επεξεργαζόμαστε τον κόμβο που βρίσκεται στην κορυφή της στοίβας
8 6 7 g απώθηση(s)
8 6 7 g επεξεργαζόμαστε τον κόμβο που βρίσκεται στην κορυφή της στοίβας
8 6 7 g o κόμβος είχε τοποθετηθεί στην S προηγουμένως και δεν τοποθετείται ξανά
8 6 7 g o κόμβος είχε τοποθετηθεί στην S προηγουμένως και δεν τοποθετείται ξανά
8 6 7 g απώθηση(s)
8 6 7 g Έχουμε επεξεργαστεί όλους τους κόμβους.
8 6 7 Δένδρο καθοδικής διερεύνησης με αφετηρία τον κόμβο : Κάθε κόμβος συνδέεται με τον κόμβο που τον έβαλε στη στοίβα.
Αν το γράφημα δεν είναι συνεκτικό μπορούμε να ξεκινήσουμε νέα διερεύνηση από κάποιο κόμβο που δεν έχουμε επισκεφτεί. Συνεχίζουμε με αυτό τον τρόπο μέχρι να επισκεφτούμε όλους τους κόμβους 8 6 7 9 0 Δάσος καθοδικής διερεύνησης
Αν το γράφημα δεν είναι συνεκτικό μπορούμε να ξεκινήσουμε νέα διερεύνηση από κάποιο κόμβο που δεν έχουμε επισκεφτεί. Συνεχίζουμε με αυτό τον τρόπο μέχρι να επισκεφτούμε όλους τους κόμβους 8 6 7 9 0 Δάσος καθοδικής διερεύνησης : Κάθε δένδρο αποτελεί και μια ξεχωριστή συνιστώσα του γραφήματος Δίνει μια καλή λύση στο στατικό (olin) πρόβλημα συνδετικότητας, όταν το γράφημα είναι εξαρχής γνωστό (όπως και η οριζόντια διερεύνηση)
Αναπαράσταση Γραφήματος j Λίστες γειτνίασης (jny lists) lss AjnyLists { stti lss No { int v; No nxt; No(int v, No t) { tis.v = v; nxt = t; } } } puli stti voi min(string[] rgs) { int N = Intgr.prsInt(rgs[0]); int M = Intgr.prsInt(rgs[]); No j[] = nw No[V]; or (int i = 0; i < N; i++) j[i] = null; or (In.init();!In.mpty();) { int i = In.gtInt(), j = In.gtInt(); j[j] = nw No(i, j[j]); j[i] = nw No(j, j[i]); } } Διαβάζει μη κατευθυνόμενο γράφημα
Υλοποίηση με αναδρομή : Η διαχείριση της στοίβας γίνεται από το σύστημα μέσω των αναδρομικών κλήσεων voi DFS(int k) // ο τρέχων κόμβος είναι ο k { mrk[k] = tru; or (No t = j[k]; t!= null; t = t.nxt) i (!mrk[t.v]) { prnt[t.v] = k; DFS(t.v); } } Χρόνος εκτέλεσης για γράφημα με κόμβους και ακμές
Υλοποίηση με αναδρομή : Η διαχείριση της στοίβας γίνεται από το σύστημα μέσω των αναδρομικών κλήσεων voi DFS(int k) // ο τρέχων κόμβος είναι ο k { } mrk[k] = tru; or (No t = j[k]; t!= null; t = t.nxt) i (!mrk[t.v]) { } prnt[t.v] = k; DFS(t.v); αποθήκευση του γονέα στο δάσος της καθοδικής διερεύνησης Χρόνος εκτέλεσης για γράφημα με κόμβους και ακμές
Καθοδική διερεύνηση (pt-irst sr) : Εξερευνά ένα μονοπάτι μέχρι να φθάσει σε αδιέξοδο, οπότε και επιστρέφει για να εξερευνήσει ένα διαφορετικό μονοπάτι. Μόλις επισκεφτεί ένα κόμβο v τότε επισκέπτεται αναδρομικά όλους τους κόμβους προς τους οποίους έχει ακμή ο v. s g i j k l γράφημα
Καθοδική διερεύνηση (pt-irst sr) : Εξερευνά ένα μονοπάτι μέχρι να φθάσει σε αδιέξοδο, οπότε και επιστρέφει για να εξερευνήσει ένα διαφορετικό μονοπάτι. Μόλις επισκεφτεί ένα κόμβο v τότε επισκέπτεται αναδρομικά όλους τους κόμβους προς τους οποίους έχει ακμή ο v. s g i j k l γράφημα δένδρο καθοδικής διερεύνησης
Καθοδική διερεύνηση (pt-irst sr) : Εξερευνά ένα μονοπάτι μέχρι να φθάσει σε αδιέξοδο, οπότε και επιστρέφει για να εξερευνήσει ένα διαφορετικό μονοπάτι. Μόλις επισκεφτεί ένα κόμβο v τότε επισκέπτεται αναδρομικά όλους τους κόμβους προς τους οποίους έχει ακμή ο v. s g i j k l γράφημα δένδρο καθοδικής διερεύνησης
Καθοδική διερεύνηση (pt-irst sr) : Εξερευνά ένα μονοπάτι μέχρι να φθάσει σε αδιέξοδο, οπότε και επιστρέφει για να εξερευνήσει ένα διαφορετικό μονοπάτι. Μόλις επισκεφτεί ένα κόμβο v τότε επισκέπτεται αναδρομικά όλους τους κόμβους προς τους οποίους έχει ακμή ο v. s g i j k l γράφημα δένδρο καθοδικής διερεύνησης
Καθοδική διερεύνηση (pt-irst sr) : Εξερευνά ένα μονοπάτι μέχρι να φθάσει σε αδιέξοδο, οπότε και επιστρέφει για να εξερευνήσει ένα διαφορετικό μονοπάτι. Μόλις επισκεφτεί ένα κόμβο v τότε επισκέπτεται αναδρομικά όλους τους κόμβους προς τους οποίους έχει ακμή ο v. s g i j k l γράφημα δένδρο καθοδικής διερεύνησης
Καθοδική διερεύνηση (pt-irst sr) : Εξερευνά ένα μονοπάτι μέχρι να φθάσει σε αδιέξοδο, οπότε και επιστρέφει για να εξερευνήσει ένα διαφορετικό μονοπάτι. Μόλις επισκεφτεί ένα κόμβο v τότε επισκέπτεται αναδρομικά όλους τους κόμβους προς τους οποίους έχει ακμή ο v. s g i j k l γράφημα δένδρο καθοδικής διερεύνησης
Καθοδική διερεύνηση (pt-irst sr) : Εξερευνά ένα μονοπάτι μέχρι να φθάσει σε αδιέξοδο, οπότε και επιστρέφει για να εξερευνήσει ένα διαφορετικό μονοπάτι. Μόλις επισκεφτεί ένα κόμβο v τότε επισκέπτεται αναδρομικά όλους τους κόμβους προς τους οποίους έχει ακμή ο v. s g i j k l γράφημα δένδρο καθοδικής διερεύνησης
Καθοδική διερεύνηση (pt-irst sr) : Εξερευνά ένα μονοπάτι μέχρι να φθάσει σε αδιέξοδο, οπότε και επιστρέφει για να εξερευνήσει ένα διαφορετικό μονοπάτι. Μόλις επισκεφτεί ένα κόμβο v τότε επισκέπτεται αναδρομικά όλους τους κόμβους προς τους οποίους έχει ακμή ο v. s 6 g i j k l γράφημα δένδρο καθοδικής διερεύνησης
Καθοδική διερεύνηση (pt-irst sr) : Εξερευνά ένα μονοπάτι μέχρι να φθάσει σε αδιέξοδο, οπότε και επιστρέφει για να εξερευνήσει ένα διαφορετικό μονοπάτι. Μόλις επισκεφτεί ένα κόμβο v τότε επισκέπτεται αναδρομικά όλους τους κόμβους προς τους οποίους έχει ακμή ο v. s 6 g i 7 j k l γράφημα δένδρο καθοδικής διερεύνησης
Καθοδική διερεύνηση (pt-irst sr) : Εξερευνά ένα μονοπάτι μέχρι να φθάσει σε αδιέξοδο, οπότε και επιστρέφει για να εξερευνήσει ένα διαφορετικό μονοπάτι. Μόλις επισκεφτεί ένα κόμβο v τότε επισκέπτεται αναδρομικά όλους τους κόμβους προς τους οποίους έχει ακμή ο v. s 6 g i 7 j k l γράφημα δένδρο καθοδικής διερεύνησης
Καθοδική διερεύνηση (pt-irst sr) : Εξερευνά ένα μονοπάτι μέχρι να φθάσει σε αδιέξοδο, οπότε και επιστρέφει για να εξερευνήσει ένα διαφορετικό μονοπάτι. Μόλις επισκεφτεί ένα κόμβο v τότε επισκέπτεται αναδρομικά όλους τους κόμβους προς τους οποίους έχει ακμή ο v. s 6 g i 7 j k l γράφημα δένδρο καθοδικής διερεύνησης
Καθοδική διερεύνηση (pt-irst sr) : Εξερευνά ένα μονοπάτι μέχρι να φθάσει σε αδιέξοδο, οπότε και επιστρέφει για να εξερευνήσει ένα διαφορετικό μονοπάτι. Μόλις επισκεφτεί ένα κόμβο v τότε επισκέπτεται αναδρομικά όλους τους κόμβους προς τους οποίους έχει ακμή ο v. s 6 g i 7 j k l γράφημα δένδρο καθοδικής διερεύνησης
Καθοδική διερεύνηση (pt-irst sr) : Εξερευνά ένα μονοπάτι μέχρι να φθάσει σε αδιέξοδο, οπότε και επιστρέφει για να εξερευνήσει ένα διαφορετικό μονοπάτι. Μόλις επισκεφτεί ένα κόμβο v τότε επισκέπτεται αναδρομικά όλους τους κόμβους προς τους οποίους έχει ακμή ο v. s 8 6 g i 7 j k l γράφημα δένδρο καθοδικής διερεύνησης
Καθοδική διερεύνηση (pt-irst sr) : Εξερευνά ένα μονοπάτι μέχρι να φθάσει σε αδιέξοδο, οπότε και επιστρέφει για να εξερευνήσει ένα διαφορετικό μονοπάτι. Μόλις επισκεφτεί ένα κόμβο v τότε επισκέπτεται αναδρομικά όλους τους κόμβους προς τους οποίους έχει ακμή ο v. s 8 6 g 9 i 7 j k l γράφημα δένδρο καθοδικής διερεύνησης
Καθοδική διερεύνηση (pt-irst sr) : Εξερευνά ένα μονοπάτι μέχρι να φθάσει σε αδιέξοδο, οπότε και επιστρέφει για να εξερευνήσει ένα διαφορετικό μονοπάτι. Μόλις επισκεφτεί ένα κόμβο v τότε επισκέπτεται αναδρομικά όλους τους κόμβους προς τους οποίους έχει ακμή ο v. s 8 6 g 9 i 7 j k 0 l γράφημα δένδρο καθοδικής διερεύνησης
Καθοδική διερεύνηση (pt-irst sr) : Εξερευνά ένα μονοπάτι μέχρι να φθάσει σε αδιέξοδο, οπότε και επιστρέφει για να εξερευνήσει ένα διαφορετικό μονοπάτι. Μόλις επισκεφτεί ένα κόμβο v τότε επισκέπτεται αναδρομικά όλους τους κόμβους προς τους οποίους έχει ακμή ο v. s 8 6 g 9 i 7 j k 0 l γράφημα δένδρο καθοδικής διερεύνησης
Καθοδική διερεύνηση (pt-irst sr) : Εξερευνά ένα μονοπάτι μέχρι να φθάσει σε αδιέξοδο, οπότε και επιστρέφει για να εξερευνήσει ένα διαφορετικό μονοπάτι. Μόλις επισκεφτεί ένα κόμβο v τότε επισκέπτεται αναδρομικά όλους τους κόμβους προς τους οποίους έχει ακμή ο v. s g 9 8 i 6 7 j k 0 l γράφημα δένδρο καθοδικής διερεύνησης
Καθοδική διερεύνηση (pt-irst sr) : Εξερευνά ένα μονοπάτι μέχρι να φθάσει σε αδιέξοδο, οπότε και επιστρέφει για να εξερευνήσει ένα διαφορετικό μονοπάτι. Μόλις επισκεφτεί ένα κόμβο v τότε επισκέπτεται αναδρομικά όλους τους κόμβους προς τους οποίους έχει ακμή ο v. s g 9 8 i 6 7 j k 0 l γράφημα δένδρο καθοδικής διερεύνησης
Καθοδική διερεύνηση (pt-irst sr) : Εξερευνά ένα μονοπάτι μέχρι να φθάσει σε αδιέξοδο, οπότε και επιστρέφει για να εξερευνήσει ένα διαφορετικό μονοπάτι. Μόλις επισκεφτεί ένα κόμβο v τότε επισκέπτεται αναδρομικά όλους τους κόμβους προς τους οποίους έχει ακμή ο v. s g 9 8 i 6 7 j k 0 l γράφημα δένδρο καθοδικής διερεύνησης
Καθοδική διερεύνηση (pt-irst sr) : Εξερευνά ένα μονοπάτι μέχρι να φθάσει σε αδιέξοδο, οπότε και επιστρέφει για να εξερευνήσει ένα διαφορετικό μονοπάτι. Μόλις επισκεφτεί ένα κόμβο v τότε επισκέπτεται αναδρομικά όλους τους κόμβους προς τους οποίους έχει ακμή ο v. s g 9 8 i 6 7 j k 0 l γράφημα δένδρο καθοδικής διερεύνησης
Καθοδική διερεύνηση (pt-irst sr) : Εξερευνά ένα μονοπάτι μέχρι να φθάσει σε αδιέξοδο, οπότε και επιστρέφει για να εξερευνήσει ένα διαφορετικό μονοπάτι. Μόλις επισκεφτεί ένα κόμβο v τότε επισκέπτεται αναδρομικά όλους τους κόμβους προς τους οποίους έχει ακμή ο v. s g 9 8 i 6 7 j k 0 l γράφημα δένδρο καθοδικής διερεύνησης
Καθοδική διερεύνηση (pt-irst sr) : Εξερευνά ένα μονοπάτι μέχρι να φθάσει σε αδιέξοδο, οπότε και επιστρέφει για να εξερευνήσει ένα διαφορετικό μονοπάτι. Μόλις επισκεφτεί ένα κόμβο v τότε επισκέπτεται αναδρομικά όλους τους κόμβους προς τους οποίους έχει ακμή ο v. s g 9 8 i 6 7 j k 0 l γράφημα δένδρο καθοδικής διερεύνησης
Καθοδική διερεύνηση (pt-irst sr) : Εξερευνά ένα μονοπάτι μέχρι να φθάσει σε αδιέξοδο, οπότε και επιστρέφει για να εξερευνήσει ένα διαφορετικό μονοπάτι. Μόλις επισκεφτεί ένα κόμβο v τότε επισκέπτεται αναδρομικά όλους τους κόμβους προς τους οποίους έχει ακμή ο v. s g 9 8 i 6 7 j k 0 l γράφημα δένδρο καθοδικής διερεύνησης
Καθοδική διερεύνηση (pt-irst sr) : Εξερευνά ένα μονοπάτι μέχρι να φθάσει σε αδιέξοδο, οπότε και επιστρέφει για να εξερευνήσει ένα διαφορετικό μονοπάτι. Μόλις επισκεφτεί ένα κόμβο v τότε επισκέπτεται αναδρομικά όλους τους κόμβους προς τους οποίους έχει ακμή ο v. s g 9 8 i 6 7 j k 0 l γράφημα δένδρο καθοδικής διερεύνησης