Data Structure Algorithm 10 Graph BFS DFS JJCAO

Data Structure & Algorithm 10 – Graph & BFS & DFS JJCAO

Graph Are Not 2


Can be very complex. Excellent Tool! 4

Terminology 5

Adjacency List Representation 6

Adjacency Matrix Representation 7

Object-Oriented Representation • Node: some structure, with all relevant information • Edge: name & pointers to two endpoints 8

Sub-Graphs 9

More Terminology 10

Connectivity 11

Connected Components • Every node v is connected to itself • if u and v are in the same connected component then v is connected to u and u is connected to v • Connected components form a partition of the nodes and so are disjoint: 12

Forests & Trees 13

Properties 14

Directed Graph 15

Adding Direction • An undirected graph can be transformed into a directed one 16

Terminology • endpoints of an edge = the vertices it connects • e = (u, v) is incident from u = leaves u incident to v = enters v – u is the tail – v is the head • degree of v = indegree + outdegree – indegree = # incoming edges – outdegree = # outgoing edges • Paths and cycles are now directed 17

Simple Graphs Are graphs with no parallel edges, no self loops Properties: 18

More Properties 19

Strong Connectivity • Vertices strongly connected ↔ there is a path from each to the other • Graph Strongly connected↔every 2 vertices are strongly connected • Strongly Connected Components = maximal strongly connected subgraphs 20

Strong Connectivity The strongly connected components of the above graph 21
![Graph Traversals Given: a graph G a source vertex s in V[G] Goal: “visit” Graph Traversals Given: a graph G a source vertex s in V[G] Goal: “visit”](http://slidetodoc.com/presentation_image_h2/788a6582deef15d7284455be511a0e64/image-22.jpg)
Graph Traversals Given: a graph G a source vertex s in V[G] Goal: “visit” all the vertices of G to determine some property: – Is G connected? – Does G contain a cycle? – is there a v u path in G? – What is the shortest path connecting v and u? – Will G disconnect if we remove a single edge? A vertex? – G is the WWW - follow links to retrieve information…. 22

Data Structure for BFS • First In First Out (FIFO) Queue 23

Breadth First Search 24

Example 25

26

27

BFS - Running Time Adjacency list representation: 28

Shortest Paths Goal: Find a shortest path from s to every other v Idea: - start at s - find all vertices at distance 1 - find all vertices at distance 2 29

BFS for Shortest Paths 30

Shortest-Paths Claim 31

BFS for Connectivity 32

Depth First Search Goal: Visit all vertices of the graph Idea: - start at s - keep going “deeper” into the graph whenever possible 33

Depth First Search 34

Data Structure for DFS • Last In First Out (LIFO) Stack Rewrite the procedure DFS, using a stack to eliminate recursion 35

Example 36

Time Stamping 37

Example 38

BFS vs. DFS 39

Classification of Edges in DFS Forest Relative to the same DFS tree 40

Classification of Edges 41

DFS - Running Time Adjacency list representation 42

Applications of DFS • 43

Cycles in Directed Graphs Theorem: Di. Graph G has a cycle DFS forest has a back edge Lemma: A directed graph G is acyclic if and only if a depth-first search of G yields no back edges. Proof: • back edge => cycle: obvious • cycle => back edge: 44
![Topological Sort an ordering "<" of V[G] such that if (u, v) E[G] => Topological Sort an ordering "<" of V[G] such that if (u, v) E[G] =>](http://slidetodoc.com/presentation_image_h2/788a6582deef15d7284455be511a0e64/image-45.jpg)
Topological Sort an ordering "<" of V[G] such that if (u, v) E[G] => u < v 45

Application of Topological Sort Many applications use directed acyclic graphs to indicate precedence among events, such as Professor Bumstead gets dressed in the morning. 46

Topological Sort Lemma: G can be topologically sorted <=> G is a DAG (directed acyclic graph) Proof: cycle => G can't be sorted - obvious: no cycle => G can be sorted: we will show an algorithm 47

A Simple Top. Sort Algorithm Source = a vertex with indegree = 0 48

A Simple Top. Sort Algorithm Source = a vertex with indegree = 0 49

Adjacency Matrix Implementation 50

Adjacency List Implementation 51

Topological-Sort 1 call DFS. G/ to compute finishing times v. f for each vertex 2 as each vertex is finished, insert it onto the front of a linked list 3 return the linked list of vertices • 52

1 call DFS. G/ to compute finishing times v. f for each vertex 2 as each vertex is finished, insert it onto the front of a linked list 3 return the linked list of vertices 53

Graph in C++ • Boost/graph 54

Over 55

Strongly Connected Components 56

Simple SCC Algorithms 57
- Slides: 57