Γράφοι (συνέχεια) Ο αλγόριθµος Dijkstra για εύρεση βραχυτέρων µονοπατιών Ta µονοπάτια Euler

Σχετικά έγγραφα
Βραχύτερα Μονοπάτια σε Γράφους (CLR, κεφάλαιο 25)

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

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

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

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

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

Αλγόριθµοι Ροής σε Γράφους (CLR, κεφάλαιο 27)

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

Άσκηση 1. Ψευδοκώδικας Kruskal. Παρακάτω βλέπουμε την εφαρμογή του στο παρακάτω συνδεδεμένο γράφημα.

Ελάχιστα Γεννητορικά ένδρα

Βραχύτερα Μονοπάτια σε Γράφους (CLR, κεφάλαιο 25)

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

Αλγόριθµοι Οπισθοδρόµησης

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ231: Δομές Δεδομένων και Αλγόριθμοι. Εαρινό Εξάμηνο Φροντιστήριο 10 ΛΥΣΕΙΣ

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

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

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

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

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

Συντομότερες Διαδρομές

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

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

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

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

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

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

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

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

Συντομότερες ιαδρομές

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

Συντομότερες ιαδρομές

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

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

Σχεδίαση & Ανάλυση Αλγορίθμων

Επίλυση Προβληµάτων µε Greedy Αλγόριθµους

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

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

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

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

Ελάχιστο Γεννητικό Δένδρο. Παράδειγμα - Αλγόριθμος Prim. Γιατί δουλεύουν αυτοί οι αλγόριθμοι;

Συντομότερες ιαδρομές

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

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

Συντομότερες Διαδρομές

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ, ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

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

Ελαφρύτατες διαδρομές

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

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

ΕΠΛ 232: Αλγόριθµοι και Πολυπλοκότητα. Κατ οίκον Εργασία 2A Σκελετοί Λύσεων

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

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

Άπληστοι Αλγόριθµοι (CLR, κεφάλαιο 17)

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

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

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

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

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

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

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

ΘΕΩΡΙΑ ΑΡΙΘΜΩΝ Ασκησεις - Φυλλαδιο 3

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

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

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

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

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

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

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

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

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

ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΠΟΛΥΠΛΟΚΟΤΗΤΑ Φεβρουάριος 2005 Σύνολο μονάδων: 91

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

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

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

(CLR, κεφάλαιο 32) Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα: Παραστάσεις πολυωνύµων Πολυωνυµική Παρεµβολή ιακριτός Μετασχηµατισµός Fourier

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

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

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

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

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

Κρυπτογραφία και Πολυπλοκότητα

Outline 1 Άσκηση 1: Εφαρμογές BFS DFS 2 Άσκηση 2: Μια Συνάρτηση Κόστους σε Κατευθυνόμενα Γραφήματα 3 Άσκηση 3: Ανάλυση Ασφάλειας 4 Άσκηση 4: Το Σύνολο

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

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

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

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

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

Σχεδιαση Αλγοριθμων -Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο

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

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

έντρα ιδάσκοντες:. Φωτάκης,. Σούλιου Επιμέλεια διαφανειών:. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

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

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

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

Στην ενότητα αυτή θα µελετηθούν τα εξής θέµατα:

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

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

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

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

Transcript:

Γράφοι (συνέχεια) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Ο αλγόριθµος Dijkstra για εύρεση βραχυτέρων µονοπατιών Ta µονοπάτια Euler ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 131

Βραχύτερα Μονοπάτια σε Γράφους Γενίκευση της αναζήτησης κατά βάθος ή πλάτος σε γράφους µε βάρη. Με δεδοµένο ένα κατευθυνόµενο γράφο µε βάρη G=(V,E) και µια συνάρτηση βαρών w: E R, θέλουµε να βρούµε µονοπάτια µε το ελάχιστο δυνατό βάρος. Υπενθύµιση: Το βάρος w(p) ενός µονοπατιού p δίνεται ως εξής: Aν τότε p = v o v k i... v w( p ) = = w( vi 1 1 1,v i k ) Ορισµός: Βραχύτερο µονοπάτι µεταξύ ενός συνόλου από µονοπάτια είναι το µονοπάτι µε το ελάχιστο βάρος. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 132

Ηδοµή της βέλτιστης λύσης Λήµµα 1 Έστω κατευθυνόµενος γράφος µε βάρη G=(V,E) και έστω p = u v1... v k v το βραχύτερο µονοπάτι µεταξύ των κόµβων u και v. Τότε κάθε υποµονοπάτι του p είναι βραχύτερο. Απόδειξη u v i v j v... Ας υποθέσουµε ότι το πιο πάνω είναι το βραχύτερο µονοπάτι µεταξύ των κόµβων u και v και ότι το υποµονοπάτι v i v j δεν είναι βραχύτερο ανάµεσα στα µονοπάτια που συνδέουν τους κόµβους p και s. Τότε αν αντικαταστήσουµε το βραχύτερο τέτοιο υποµονοπάτι στο αρχικό µονοπάτι θα παίρναµε ένα βραχύτερο µονοπάτι µεταξύ των κόµβων u και v. Αντίφαση! ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 133

H δοµή της βέλτιστης λύσης Συµβολισµός: Θα γράφουµε δ(u,v) για το βάρος του βραχύτερου µονοπατιού από την κορυφή u στην κορυφή v. Λήµµα 1 (Tριγωνική ανισότητα) Για κάθε τριάδα κορυφών u, v, x, δ(u,v) δ(u,x) + δ(x,v) Απόδειξη Τo ελάχιστο µονοπάτι από τον u στον v u δεν είναι µακρύτερο από οποιοδήποτε άλλο µονοπάτι από τον u στο v εν προκειµένω, το µονοπάτι που παίρνει πρώτα το ελάχιστο µονοπάτι από τον u στον κόµβο x και στη συνέχεια από τον x στον v. x v Τι συµβαίνει σε γράφους µε αρνητικά βάρη; Τι συµβαίνει αν υπάρχει κύκλος µε αρνητικό βάρος; ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 134

Αλγόριθµος του Dijkstra ουλεύει όταν όλα τα βάρη είναι µηαρνητικά. Έστω ότι θέλουµε να βρούµε τα βραχύτερα µονοπάτια από κάποιο κόµβο A προς όλους τους υπόλοιπους κόµβους σε κάποιο γράφο G. Ο αλγόριθµος αυτός διατηρεί ένα πίνακα S από κορυφές όπου αποθηκεύει τις κορυφές του G, για τις οποίες το µήκος του βραχύτερου µονοπατιού έχει υπολογισθεί. Eπίσης διατηρεί ένα πίνακα d όπου για κάθε κόµβο Β του γράφου φυλάει την ανά πάσα στιγµή µικρότερη απόσταση του κόµβου B από τον κόµβο Α την οποία γνωρίζει. Αρχικά S= και d [ V ] =. Οαλγόριθµος επανεληµένα διαλέγει την κοντινότερη κορυφή B προς τον Α, που δεν έχει µέχρι στιγµής επεξεργασθεί (δηλαδή Β VS), και ελέγχει αν για οποιοδήποτε γείτονα Γ της Β χρήση της ακµής (Β,Γ) µπορεί να δηµιουργήσει βραχύτερο µονοπάτι προς την Γ. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 135

Αλγόριθµος του Dijkstra Χρησιµοποιεί ουρά προτεραιότητας, Q, για αποθήκευση ακµών, όπου η προτεραιότητα δίνεται από το d[v]. S είναι το σύνολο των κορυφών i για τα οποία d[i]=δ(s,i). heap Q; for all v V d[v]= ; d[s]=0; S= ; Q=V; while (Q ){ u=deletemin(q); S=S {u}; για κάθε γείτονα v του u if d[v]>d[u]+w(u,v) d[v]=d[u]+w(u,v); } ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 136

Παράδειγµα A 8 5 B Γ 9 6 1 Ε 1 1 1 4 Ζ S d(a) d(b) d(γ) d( ) d(ε) d(ζ) S= 0 S={A} 0 8 9 6 S={A,E} 0 6 10 S={A,E,B} 0 12 6 8 S={A,E,B, } 0 12 6 8 S={A,E,B,,Ζ} 0 9 6 8 S={A,E,B,,Ζ, Γ} 0 9 6 8 ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 13

Αλγόριθµος του Dijkstra Εύρεση ΒΜ Αν εκτός από το µήκος του µονοπατιού µας ενδιαφέρει και το ακριβές µονοπάτι (οι κόµβοι του) τότε θα πρέπει σε ένα πίνακα, έστω P, να φυλάγουµε και κορυφές ως εξής: κάθε φορά που χρήση µιας κορυφής Χ διευκολύνει την εύρεση βραχύτερου µονοπατιού προς µια κορυφή Υ, τότε φυλάσσουµε το όνοµα της κορυφής: P[Y] = X. Σε αυτή την περίπτωση, πως µπορούµε µε τον τερµατισµό του αλγόριθµου να κατασκευάσουµε από τον πίνακα P το µέγιστο µονοπάτι από τον κόµβο εκκίνησης προς κάποιον άλλο κόµβο Χ; ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 138

Αλγόριθµος του Dijkstra µε εύρεση ΒΜ heap Q; for all v V d[v]= ; P[v]= ; d[s]=0; S= ; Q=V; while (Q ){ u=deletemin(q); S=S {u}; για κάθε γείτονα v του u if d[v]>d[u]+w(u,v) d[v]=d[u]+w(u,v); P[v] = w; } ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 139

Παράδειγµα A 8 5 B Γ 9 6 1 Ε 1 1 1 4 Ζ S P(A) P(B) P(Γ) P( ) P(Ε) P(Ζ) S= S={A} Α Α Α S={A,E} Ε Ε Α Ε S={A,E,B} E B E A B S={A,E,B, } E B E A B S={A,E,B,,Ζ} E Z E A B S={A,E,B,,Ζ, Γ} E Z E A B ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 1310

Αλγόριθµος του Dijkstra Υλοποίηση heap Q; for all v V d[v]= ; P[v]= ; Insert(Q, (v,d[v])); d[s]=0; DecreaseKey(Q,s,0); Μείωσε την τιµή του ζεύγους που αφορά το στοιχείο s στη σωρό Q έτσι ώστε να γίνει (s,0) S= ; while (!IsEmpty(Q)){ u=deletemin(q); S=S {u}; για κάθε v γείτονα του u if d[v]>d[u]+w(u,v) d[v]=d[u]+w(u,v); DecreaseKey(Q,v, d[v]); P[v] = u; } ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 1311

Απόδειξη ορθότητας Θεώρηµα 1 Όταν µια κορυφή u µπαίνει στο S, τότε d[u] = δ(s,u). Απόδειξη Υποθέτουµε, για να φτάσουµε σε αντίφαση, ότι η u είναι η πρώτη κορυφή η οποία, κατά την εκτέλεση του αλγόριθµου, µπαίνοντας στο S έχει d[u] µεγαλύτερο (προσέξτε Λήµµα 2) από το βάρος του βραχύτερου µονοπατιού µεταξύ της u και της s. Έστω y η `πρώτη κορυφή στο VS που ανήκει στο βραχύτερο µονοπάτι από την s στη u. s S x y u V Aφού η xµπήκε στο S πριν από την u, d[x]=δ(s,x). Επίσης, µε την εισαγωγή του x στο S, ετέθει d[y]=d[x]+w(x,y), το οποίο είναι το κόστος του υποµονοπατιού στο σχήµα. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 1312

Απόδειξη ορθότητας Αφού το µονοπάτι από τos στο u, είναι βραχύτερο, τότε από τη δοµή βέλτιστης λύσης συνεπάγεται ότι το υποµονοπάτι s x y από το s στο y είναι επίσης βραχύτερο. Άρα d[y] = δ(s,y). Έτσι: d[u] > δ(s,u) (αρχική υπόθεση) = δ(s,y) + δ(y,u) (δοµή βέλτιστης λύσης) = d[y] + δ(y,u) (d[y] = δ(s,y)) d[y] (τα κόστα είναι 0) Αφού d[u]>d[y], ο αλγόριθµος θα διάλεγε και θα εισήγαγε τη y στο S και όχι τη u. Αντίφαση! Λήµµα 2 Καθ όλη τη διάρκεια του αλγόριθµου d[u] δ(s,u). Η απόδειξη είναι παρόµοια µε αυτή του Λήµµατος 1. Χρόνος Εκτέλεσης: ( V + E ) log V ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 1313

Μονοπάτια Εuler (Παράδειγµα Εφαρµογής κατά βάθους διερεύνησης) Σπαζοκεφαλιά: µπορούµε να δηµιουργήσουµε τα πιο κάτω σύνολα γραµµών ζωγραφίζοντας κάθε γραµµή ακριβώς µια φορά χωρίς να σηκώσουµε την πένα από το χαρτί; Tο πρόβληµα µπορεί να µετατραπεί σε πρόβληµα γράφων: Κτίζουµε γράφο G του οποίου κόµβοι είναι τα σηµεία όπου διασταυρώνονται γραµµές του σχεδίου και ακµή µεταξύ δύο κόµβων υπάρχει αν υπάρχει γραµµή µεταξύ των αντίστοιχων σηµείων του σχεδίου. ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 1314

Μονοπάτια Εuler Το πρόβληµα τώρα είναι να διακριβώσουµε την ύπαρξη µονοπατιού που περνά από κάθε ακµή ακριβώς µια φορά. Tέτοια µονοπάτια ονοµάζονται µονοπάτια Εuler, από το µαθηµατικό Euler o οποίος έλυσε το πρόβληµα το 132. Ένας γράφος µε n κόµβους έχει µονοπάτι Euler αν και µόνο αν 1. είναι συνεκτικός, 2. τουλάχιστον n2 από τους κόµβους του έχουν Degree mod 2 = 0 όπου Degree ενός κόµβου v είναι ο αριθµός των ακµών που ξεκινούν απ αυτόν. Hδεύτερη ιδιότητα οφείλεται στο ότι για όλους εκτός από τον πρώτο και τον τελευταίο κόµβο κάθε φορά που το µονοπάτι µπαίνει σε ένα κόµβο θα πρέπει και να βγει. Πόσα µονοπάτια Euler έχει ένας γράφος; ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 1315

Εύρεση Μονοπατιού Εuler Πως µπορούµε να βρούµε µονοπάτια Euler; Υπάρχει αλγόριθµος βασισµένος σε DFS ο οποίος πετυχαίνει το στόχο σε χρόνο γραµµικό. Έστω ότι γνωρίζουµε την ύπαρξη µονοπατιού Euler σε ένα γράφο. Εφαρµόζουµε τα εξής βήµατα: 1. διαλέγουµε µια από τις κορυφές για τις οποίες Indegree Outdegree αν τέτοια κορυφή υπάρχει, διαφορετικά οποιαδήποτε άλλη κορυφή. 2. Εφαρµόζουµε κατά βάθος διερεύνηση µέχρις ότου να µην µπορούµε να προχωρήσουµε. Έστω ότι παίρνουµε το µονοπάτι s = e1...e n 3. Bρίσκουµε την πρώτη ακµή e =(u,v) στο µονοπάτι s στην οποία ο αρχικός κόµβος, u, έχει παιδιά τα οποία δεν έχουν ήδη εξερευνηθεί και από εκεί ξεκινούµε DFS διερεύνηση στο µέρος του γράφου που παραµένει ανεξερεύνητο. Έστω ότι λαµβάνουµε το µονοπάτι s. Προσθέτουµε το s στο s ως εξής: s = e1...ei 1 s' e 4. Επαναλαµβάνουµε το βήµα 3 µέχρις ότου να εξερευνηθεί ολόκληρος ο γράφος και επιστρέφουµε το µονοπάτι s. i... e n ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, 2006 1316