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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων Ενότητα 6

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

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

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

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

Αλγόριθμοι Επανάληψη για πρόοδο

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

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

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

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

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

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

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

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

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

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

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

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

Θεωρία και Αλγόριθμοι Γράφων

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

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

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

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

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

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

Αλγόριθμοι και πολυπλοκότητα Depth-First Search

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

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

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

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

Άσκηση 3 (ανακοινώθηκε στις 24 Απριλίου 2017, προθεσμία παράδοσης: 2 Ιουνίου 2017, 12 τα μεσάνυχτα).

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

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

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

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

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

O(n logba ) (p q)(x) p(x) q(x) O(n 2 ) 2n + 1. (p q)(x) O(n n)

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

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

3 Degree Centrality. 4 Closeness Centrality. Degree: (out-degree). In-Degree: Out-Degree: c D (v) = deg(v) c Din (v) = deg (v) c Dout (v) = deg + (v)

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

ΓΛΩΣΣΑΡΙ Ακολουθία Fibonacci Άκυκλο γράφημα Αλγόριθμος Αλγόριθμος Dijkstra Αλγόριθμος Kruskal Αλγόριθμος Prim Αλγόριθμος Strassen Αλγόριθμος

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

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

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

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

(elementary graph algorithms)

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

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

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

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

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

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

Σχέσεις Μερικής ιάταξης

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

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

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

3η Σειρά Γραπτών Ασκήσεων

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

Σχέση Μερικής ιάταξης Σχέση Μερικής ιάταξης (ή µερική διάταξη): ανακλαστική, αντισυµµετρική, και µεταβατική. Αριθµοί: α β (αλλά όχι α < β), α β, Σύνολ

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

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

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

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

Θεωρία και Αλγόριθμοι Γράφων

Σχέσεις Μερικής ιάταξης

3η Σειρά Γραπτών Ασκήσεων

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

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

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

Transcript:

ΑΛΓΟΡΙΘΜΟΙ http://eclass.aueb.gr/courses/inf161/ Άνοιξη 2017 - I. ΜΗΛΗΣ AΛΓΟΡΙΘΜΟΙ ΓΡΑΦΩΝ Ι ΕΞΕΡΕΥΝΗΣΗ 1

Graphs Ανά ζεύγη (pairwise) σχέσεις μεταξύ των στοιχείων ενός συνόλου 2

Graphs Εφαρμογές Χάρτες, πόλεις, δρόμοι, Πτήσεις, τραίνα, Προγράμματα, εργασίες, μαθήματα, Σχέσεις, κοινωνιολογία, Αλληλεπιδράσεις πρωτεϊνών, βιολογία Δίκτυα, Internet WWW: web graph Kοινωνικά δίκτυα: Facebook, Twitter, 3

History Leonhard Euler Seven Bridges of Königsberg [1736] 2 2 1 4 1 4 3 3 4

Graphs G = (V, E) V = {1,2,,n}: σύνολο κόμβων /κορυφών (nodes/vertices), V = n E Í V V = {(u,v) u,v Î V}: σύνολο ακμών (edges/arcs), E = m Μη προσανατολισμένοι γράφοι (Undirected graphs=graphs) Προσανατολισμένοι γράφοι (Directed graphs=digraphs) (u,v) º(v,u) (u,v) ¹(v,u) π.χ. (A,B)=(B,A) π.χ (4,5) ¹ (5,4) 5

Graph representation Adjacency matrix Undirected Συμμετρικός πίνακας (άνω τριγωνικός) Directed Space: O(n 2 ) Υπάρχει η ακμή (u,v)? Πολυπλοκότητα? 6

Graph representation Adjacency list Undirected Space: n+2m =O(n+m) Directed Space: n+m= O(n+m) Πυκνός (dense) γράφος: m=ο(n 2 ) Υπάρχει η ακμή (u,v)? Πολυπλοκότητα? 7

Graphs Γ(u) = {v (u,v) Î E}: Γειτονιά (neighborhood) of u π.χ. Γ(a)={b,c,d} d(u) = Γ(u) : Βαθμός (degree) of u π.χ. d(a)=3 Γ + (u) = {v (u,v) Î E }: out-neighborhood of u d + (u) = Γ + (u) : out-degree of u π.χ. Γ + (a) ={ d,b}, d + (a) =2 Γ - (u) = {v (v,u) Î E }: in-neighborhood of u d - (u) = Γ - (u) : in-degree of u π.χ. Γ - (a) ={c, d}, d - (a) =2 8

Graphs Άσκηση Αποδείξτε ότι για κάθε γράφο: (α) d ( u) = 2 E å uîv (β) ο αριθμός των κόμβων με περιττό βαθμό είναι άρτιος (γ) αν o βαθμός κάθε κόμβου u είναι d(u)³2, τότε υπάρχει κύκλος 9

DFS undirected graphs DFS: Depth-First Search Explore all nodes reachable from node u: for all u Î V: visited(u)= false explore(u) previsit(u) //empty visited(u)=true for each v Î Γ(u): if not visited(v): explore(v) postvisit(u) //empty Complexity: 2 E = O(m) (γιατί?) explore(a) 10

DFS undirected graphs Explore all nodes of a graph G: DFS(G) for all u Î V: visited(u)= false for all u Î V: if not visited(u): explore(u) Complexity O(n+m) (γιατί?) 11

DFS undirected graphs Δύο κατηγορίες ακμών: Ακμές δέντρου (tree edges) Ακμές πίσω (back edges) DFS δέντρο/δάσος T=(V, A), A Í E Back edge = cycle 12

DFS undirected graphs explore(u) previsit(u) // empty visited(u)=true for each v Î Γ(u): if not visited(v): explore(v) postvisit(u) // empty DFS(G) for all u Î V: visited(u)= false for all u Î V: if not visited(u): explore(u) Complexity O(n+m) 13

DFS undirected graphs Eρωτήσεις Απλές εφαρμογές: Ποια είναι η σειρά επίσκεψης των κόμβων? Ποιος είναι ο πατέρας κάθε κόμβου στο DFS δέντρο? Είναι ο γράφος συνδεμένος? # συνεκτικών συνιστωσών (connected components)? Parameters clock: integer counter pre(u): visiting order of vertex u cc: # connected components ccnum(u): the connected component vertex u belongs to parent(u): the parent of vertex u in the DFS tree 14

DFS undirected graphs explore(u) previsit(u) // empty visited(u)=true for each v Î Γ(u): if not visited(v): explore(v) postvisit(u) // empty DFS(G) for all u Î V: visited(u)= false for all u Î V: if not visited(u): explore(u) Complexity O(n+m) 15

DFS undirected graphs explore(u) previsit(u) visited(u)=true for each v Î Γ(u): if not visited(v): explore(v), parent(v)=u postvisit(u) // empty previsit(u) ccnum(u)=cc pre(u)= clock clock=clock+1 DFS(G) clock=1, cc=0 for all u Î V: visited(u)= false, parent(u)=nil for all u Î V: if not visited(u): cc:=cc+1, explore(u) Complexity O(n+m) 16

DFS undirected graphs Example u A B C D E F G H I J K L pre(u) 1 2 6 7 3 12 9 8 4 5 10 11 ccnum(u) 1 1 2 2 1 3 2 2 1 1 2 2 parent(u) nil A nil C A nil H D E I G H 17

DFS undirected graphs: orderings explore(u) previsit(u) visited(u)=true for each v Î Γ(u): if not visited(v): explore(v) postvisit(u) Πρώτη ανακάλυψη του u previsit(u) pre(u)= clock clock=clock+1 postvisit(u) post(u)= clock clock:=clock+1 DFS(G) Οριστική εγκατάλειψη του u clock:=1; for all u Î V: visited(u)= false Complexity O(n+m) for all u Î V: if not visited(u): explore(u) 18

DFS undirected graphs: orderings previsit(α) pοstvisit(α) Για κάθε ζευγάρι κόμβων u και v τα διαστήματα [pre(u), post(u)] και [pre(v), post(v)] είναι είτε ΞΕΝΑ μεταξύ τους ή ΤΟ ΕΝΑ ΠΕΡΙΕΧΕΤΑΙ ΣΤΟ ΑΛΛΟ Αναδρομή = στοίβα = LIFO (Last In First Out) [pre(u), post(u)] = διάστημα που ο κόμβος u είναι στη στοίβα 19

DFS directed graphs explore(u) previsit(u) visited(u)=true for each v Î Γ + (u): if not visited(v): explore(v) postvisit(u) Complexity: E =m previsit(u) pre(u)= clock clock=clock+1 postvisit(u) post(u)= clock clock:=clock+1 DFS(G) clock:=1; for all u Î V: Complexity O(n+m) visited(u)= false for all u Î V: if not visited(u): explore(u) 20

DFS directed graphs: orderings Four types of (directed) edges: Tree edges: προς ένα παιδί στο δέντρο Forward edges: προς έναν απόγονο στο δέντρο (όχι παιδί) Back edges: προς έναν πρόγονο στο δέντρο (ΚΥΚΛΟΣ) Cross edges: προς έναν κόμβο ούτε πρόγονο ούτε απόγονο 21

DFS directed graphs: orderings Για κάθε ζευγάρι κόμβων u και v τα διαστήματα [pre(u), post(u)] και [pre(v), post(v)] είναι είτε ΞΕΝΑ μεταξύ τους ή ΤΟ ΕΝΑ ΠΕΡΙΕΧΕΤΑΙ ΣΤΟ ΆΛΛΟ 22

DFS directed graphs: orderings 4 περιπτώσεις για μια ακμή u v Î Ε: [ u [ v v ] u] [ v [ u u ] v] [ v v ] [ u u ] [ u u ] [ v v ] Tree or Forward edge Back edge Cross edge ΑΔΥΝΑΤΟ (γιατί?) H μόνη περίπτωση με post(u) < post(v) (ΚΥΚΛΟΣ) 23

DFS directed graphs: Cycle Υπάρχει κύκλος αν και μόνο αν στο DFS βρεθεί back ακμή Aν βρεθεί back ακμή (π.χ. CB), τότε υπάρχει κύκλος: ο κύκλος αποτελείται από την back ακμή (CB), και τη διαδρομή από τoν δεύτερο (B) στον πρώτο (C) κόμβο της ακμής στο DFS δέντρο, (CBGFH) Αν υπάρχει κύκλος (π.χ. BGGCB), τότε υπάρχει back ακμή: Κάποιος κόμβος του κύκλου θα ανακαλυφθεί πρώτος στο DFS, έστω ο Β. Όλοι οι άλλοι κόμβοι του κύκλου είναι απόγονοί του (G, F, C). Η ακμή από τον τελευταίο απόγονο στον αρχικό κόμβο είναι back, π.χ. (C,B). 1 2 3 4 5 24

Directed Acyclic Graphs (DAGs) DAG: Ένας προσανατολισμένος γράφος χωρίς κύκλους Εφαρμογές: Προτεραιότητες εργασιών, μαθημάτων,... Δεν μπορεί να αρχίσει μια εργασία αν δεν έχουν ολοκληρωθεί οι προηγούμενές της 25

Directed Acyclic Graphs (DAGs) DAG=Σχέση Μερικής Διάταξης Τοπολογική ταξινόμηση (topological sorting) = μια ολική διάταξη του DAG (ΟΧΙ ΜΟΝΑΔΙΚΗ) (ένας τρόπος εκτέλεσης των εργασιών) π.χ. v 1, v 2, v 3, v 4, v 5, v 6, v 7 = μια διάταξη κόμβων από αριστερά προς τα δεξιά τέτοια ώστε όλες οι ακμές πάνε από αριστερά προς τα δεξιά 26

Directed Acyclic Graphs (DAGs) Ερωτήσεις 1) Είναι ένας προσανατολισμένος γράφος άκυκλος? Είναι αν και μόνο αν το DFS δεν ανακαλύψει back ακμή 2) Να βρεθεί μια τοπολογική ταξινόμηση ενός DAG Mόνο για τις back ακμές (u,v) ισχύει ότι post(u) < post(v) Ένας DAG δεν έχει back ακμές Για όλες τις ακμές u v ενός DAG: post(u) > post(v) Αλγόριθμος τοπολογικής ταξινόμησης = φθίνουσα σειρά post (όλες οι ακμές πάνε προς την ίδια κατεύθυνση) 27

Directed Acyclic Graphs (DAGs) DFS(G) Σειρά επίσκεψης: A B E F G H C D Τοπολογική ταξινόμηση= φθίνουσα σειρά post: A C D B E H F G Λειτουργεί ο αλγόριθμος αν τo DFS ξεκινήσει από οποιοδήποτε κόμβο? 28

Directed Acyclic Graphs (DAGs) DFS(G) Σειρά επίσκεψης: A B E F G H C D Τοπολογική ταξινόμηση= φθίνουσα σειρά post: A C D B E H F G Λειτουργεί ο αλγόριθμος αν τo DFS ξεκινήσει από οποιοδήποτε κόμβο? Είναι ο αλγόριθμος σωστός αν υπάρχει κύκλος ( π.χ. (F,B) Î E )? 29

Directed Acyclic Graphs (DAGs) DAG = No cycles = No back edges = Topological sorting Κάθε DAG έχει μια τουλάχιστον τοπολογική ταξινόμηση Ποια DAGs έχουν ακριβώς μία? Κάθε DAG έχει τουλάχιστον έναν αρχικό κόμβο (d - (u) =0), και ένα τερματικό κόμβο (d + (u) =0) (γιατί?) 30

Aναδρομική DFS Xρησιμοποιεί μια στοίβα S (LIFO=DFS) DFS(G) for all uîv: visited(u)=false for all uîv: if not visited(u): explore(u) explore(u) visited(u)=true for each vîγ(u): if not visited(v): explore(v) 31

Mη-αναδρομική DFS Xρησιμοποιεί μια στοίβα S (LIFO=DFS) DFS(G) for all uîv: ins(u)=false for all uîv: if not ins(u): explore(u) explore(u) PUSH(u), ins(u)=true while NON EMPTY(S): POP(u) visited(u) ~ ins(u) for each vîγ(u): if not ins(v): PUSH(v), ins(v)=true Complexity O(m+n) 32

Mη-αναδρομική DFS: example Visiting order S A B C D Stack S àpush S ß POP A C D E B C D E C D E D E E - E Πρώτος κόμβος Αντίστροφα αλφαβητικά 33

Mη-αναδρομική DFS Xρησιμοποιεί μια στοίβα S (LIFO=DFS) DFS(G) for all uîv: ins(u)=false for all uîv: if not ins(u): explore(u) explore(u) PUSH(u), ins(u)=true while NON EMPTY(S): POP(u) for each vîγ(u): if not ins(v): PUSH(v),inS(v)=true 34

Breadth-First Search (BFS) Αντί για στοίβα (LIFO=DFS) χρησιμοποιεί μια ουρά Q (FIFO=BFS) BFS(G) for all uîv: inq(u)=false for all uîv: if not inq(u): exploreb(u) exploreβ(u) ENQUEUE(u), inq(u)=true while NON EMPTY(Q): DEQUEUE(u) Complexity O(m+n) for each vîγ(u): if not inq(v): ENQUEUE(v),inQ(v)=true 35

BFS - example Visiting order Queue Q DEQUEUE ß S S A C D E A C D E B C D E B D E B E B B - ß ENQUEUE Πρώτος κόμβος Αλφαβητικά 36

Breadth-First Search (BFS) Αντί για στοίβα (LIFO=DFS) χρησιμοποιεί μια ουρά Q (FIFO=BFS) BFS(G) for all uîv: inq(u)=false for all uîv: if not inq(u): exploreb(u) exploreβ(u) ENQUEUE(u), inq(u)=true while NON EMPTY(Q): DEQUEUE(u) for each vîγ(u): if not inq(v): ENQUEUE(v),inQ(v)=true 37

Breadth-First Search (BFS) Αντί για στοίβα (LIFO=DFS) χρησιμοποιεί μια ουρά Q (FIFO=BFS) BFS(G) clock=1 for all uîv: inq(u)=false, par(u)=nil for all uîv: if not inq(u): exploreb(u) exploreβ(u) ENQUEUE(u), inq(u)=true while NON EMPTY(Q): DEQUEUE(u) visit(u) for each vîγ(u): if not inq(v): visit(u) order(u)=clock clock=clock+1 ENQUEUE(v),inQ(v)=true, par(v)=u 38