Graphs - II CS 2110, Spring 2015. Where did I leave that book? .
-
Upload
osborn-hunt -
Category
Documents
-
view
220 -
download
2
Transcript of Graphs - II CS 2110, Spring 2015. Where did I leave that book? .
![Page 1: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/1.jpg)
Graphs - II CS 2110, Spring 2015
![Page 2: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/2.jpg)
Where did I leave that book?
http://www.geahvet.com
![Page 3: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/3.jpg)
Where did I leave that book?
http://www.geahvet.com
![Page 4: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/4.jpg)
Where did I leave that book?
http://www.geahvet.com
Go as far down a path as possible before backtracking – Depth-First Search
![Page 5: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/5.jpg)
Graph Algorithms
• Search– Depth-first search– Breadth-first search
• Shortest paths– Dijkstra's algorithm
• Minimum spanning trees– Prim's algorithm– Kruskal's algorithm
![Page 6: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/6.jpg)
Representations of Graphs
2 3
2 4
3
1
2
3
4
0 1 0 1
0 0 1 0
0 0 0 0
0 1 1 0
1 2 3 4
1
2
3
4
Adjacency List Adjacency Matrix
1 2
34
![Page 7: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/7.jpg)
Adjacency Matrix or Adjacency List?• Definitions:
– n = number of vertices– m = number of edges– d(u) = degree of u = number of edges leaving u
• Adjacency Matrix– Uses space O(n2)– Can iterate over all edges in time O(n2)– Can answer “Is there an edge from u to v?” in O(1) time– Better for dense graphs (lots of edges)
• Adjacency List– Uses space O(m + n)– Can iterate over all edges in time O(m + n)– Can answer “Is there an edge from u to v?” in O(d(u)) time– Better for sparse graphs (fewer edges)
![Page 8: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/8.jpg)
Depth-First Search
•Given a graph and one of its nodes u(say node 1 below)
1
0
2
5
3
4
6
![Page 9: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/9.jpg)
Depth-First Search
•Given a graph and one of its nodes u(say node 1 below)
•We want to “visit” each node reachable from u(nodes 1, 0, 2, 3, 5)
1
0
2
5
3
4
6
There are many paths to some nodes.
How do we visit all nodes efficiently, without doing extra work?
![Page 10: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/10.jpg)
Depth-First Search
boolean[ ] visited;•Node u is visited means: visited[u] is true
•To visit u means to: set visited[u] to true
•Node v is REACHABLE from node u if there is a path (u, …, v) in which all nodes of the path are unvisited.
1
0
2
5
3
4
6
Suppose all nodes are unvisited.
![Page 11: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/11.jpg)
Depth-First Search
1
0
2
5
3
4
6
Suppose all nodes are unvisited.
Nodes REACHABLE from node 1:{1, 0, 2, 3, 5}
boolean[ ] visited;•Node u is visited means: visited[u] is true
•To visit u means to: set visited[u] to true
•Node v is REACHABLE from node u if there is a path (u, …, v) in which all nodes of the path are unvisited.
![Page 12: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/12.jpg)
Depth-First Search
1
0
2
5
3
4
6
Suppose all nodes are unvisited.
Nodes REACHABLE from node 1:{1, 0, 2, 3, 5}
Nodes REACHABLE from 4: {4, 5, 6}
boolean[ ] visited;•Node u is visited means: visited[u] is true
•To visit u means to: set visited[u] to true
•Node v is REACHABLE from node u if there is a path (u, …, v) in which all nodes of the path are unvisited.
![Page 13: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/13.jpg)
Depth-First Search
1
0
2
5
3
4
6
Green: visitedBlue: unvisited
boolean[ ] visited;•Node u is visited means: visited[u] is true
•To visit u means to: set visited[u] to true
•Node v is REACHABLE from node u if there is a path (u, …, v) in which all nodes of the path are unvisited.
![Page 14: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/14.jpg)
Depth-First Search
1
0
2
5
3
4
6
Green: visitedBlue: unvisited
Nodes REACHABLE from node 1:{1, 0, 5}
boolean[ ] visited;•Node u is visited means: visited[u] is true
•To visit u means to: set visited[u] to true
•Node v is REACHABLE from node u if there is a path (u, …, v) in which all nodes of the path are unvisited.
![Page 15: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/15.jpg)
Depth-First Search
1
0
2
5
3
4
6
Green: visitedBlue: unvisited
Nodes REACHABLE from node 1:{1, 0, 5}
Nodes REACHABLE from 4: none
Not even 4 itself, because it’s already been visited!
boolean[ ] visited;•Node u is visited means: visited[u] is true
•To visit u means to: set visited[u] to true
•Node v is REACHABLE from node u if there is a path (u, …, v) in which all nodes of the path are unvisited.
![Page 16: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/16.jpg)
Depth-First Search/** Node u is unvisited. Visit all nodes that are REACHABLE from u. */public static void dfs(int u) {
}
1
0
2
5
3
4
6
1
0
2
5
3
4
6
Start End
Let u be 1
The nodes REACHABLE from 1 are 1, 0, 2, 3, 5
![Page 17: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/17.jpg)
Depth-First Search/** Node u is unvisited. Visit all nodes that are REACHABLE from u. */public static void dfs(int u) {
}
1
0
2
5
3
4
6
Let u be 1
The nodes REACHABLE from 1 are 1, 0, 2, 3, 5
![Page 18: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/18.jpg)
Depth-First Search/** Node u is unvisited. Visit all nodes that are REACHABLE from u. */public static void dfs(int u) {
visited[u] = true;
}
1
0
2
5
3
4
6
Let u be 1
The nodes REACHABLE from 1 are 1, 0, 2, 3, 5
![Page 19: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/19.jpg)
Depth-First Search/** Node u is unvisited. Visit all nodes that are REACHABLE from u. */public static void dfs(int u) {
visited[u] = true;
}
1
0
2
5
3
4
6
Let u be 1 (visited)
The nodes to be visited are 0, 2, 3, 5
![Page 20: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/20.jpg)
Depth-First Search/** Node u is unvisited. Visit all nodes that are REACHABLE from u. */public static void dfs(int u) {
visited[u] = true;for all edges (u, v) leaving u:
if v is unvisited then dfs(v);}
Let u be 1 (visited)
The nodes to be visited are 0, 2, 3, 5
Have to do DFS on all unvisited neighbors of u!
1
0
2
5
3
4
6
![Page 21: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/21.jpg)
Depth-First Search/** Node u is unvisited. Visit all nodes that are REACHABLE from u. */public static void dfs(int u) {
visited[u] = true;for all edges (u, v) leaving u:
if v is unvisited then dfs(v);}
Suppose the for loop visits neighbors in numerical order. Then dfs(1) visits the nodes in this order: 1 …
1
0
2
5
3
4
6
![Page 22: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/22.jpg)
Depth-First Search/** Node u is unvisited. Visit all nodes that are REACHABLE from u. */public static void dfs(int u) {
visited[u] = true;for all edges (u, v) leaving u:
if v is unvisited then dfs(v);}
Suppose the for loop visits neighbors in numerical order. Then dfs(1) visits the nodes in this order: 1, 0 …
1
0
2
5
3
4
6
![Page 23: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/23.jpg)
Depth-First Search/** Node u is unvisited. Visit all nodes that are REACHABLE from u. */public static void dfs(int u) {
visited[u] = true;for all edges (u, v) leaving u:
if v is unvisited then dfs(v);}
Suppose the for loop visits neighbors in numerical order. Then dfs(1) visits the nodes in this order: 1, 0, 2 …
1
0
2
5
3
4
6
![Page 24: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/24.jpg)
Depth-First Search/** Node u is unvisited. Visit all nodes that are REACHABLE from u. */public static void dfs(int u) {
visited[u] = true;for all edges (u, v) leaving u:
if v is unvisited then dfs(v);}
Suppose the for loop visits neighbors in numerical order. Then dfs(1) visits the nodes in this order: 1, 0, 2, 3 …
1
0
2
5
3
4
6
![Page 25: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/25.jpg)
Depth-First Search/** Node u is unvisited. Visit all nodes that are REACHABLE from u. */public static void dfs(int u) {
visited[u] = true;for all edges (u, v) leaving u:
if v is unvisited then dfs(v);}
Suppose the for loop visits neighbors in numerical order. Then dfs(1) visits the nodes in this order: 1, 0, 2, 3, 5
1
0
2
5
3
4
6
![Page 26: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/26.jpg)
Depth-First Search/** Node u is unvisited. Visit all nodes that are REACHABLE from u. */public static void dfs(int u) {
visited[u] = true;for all edges (u, v) leaving u:
if v is unvisited then dfs(v);}
Suppose n nodes are REACHABLE along e edges (in total). What is• Worst-case execution?• Worst-case space?
![Page 27: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/27.jpg)
Depth-First Search/** Node u is unvisited. Visit all nodes that are REACHABLE from u. */public static void dfs(int u) {
visited[u] = true;for all edges (u, v) leaving u:
if v is unvisited then dfs(v);}
Example: Use different way (other than array visited) to know whether a node has been visited
Example: We really haven’t said what data structures are used to implement the graph
That’s all there is to basic DFS. You may have to change it to fit a particular situation.
If you don’t have this spec and you do something different, it’s probably wrong.
![Page 28: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/28.jpg)
Depth-First Search in OO fashionpublic class Node {
boolean visited;List<Node> neighbors;
/** This node is unvisited. Visit all nodes REACHABLE from this node */public void dfs() {visited= true; for (Node n: neighbors) { if (!n.visited) n.dfs();}}
}
Each node of the graph is an object of type Node
No need for a parameter. The object is the node.
![Page 29: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/29.jpg)
Depth-First Search written iteratively/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void dfs(int u) {
Stack s= (u); // Not Java!// inv: all nodes that have to be visited are// REACHABLE from some node in swhile ( ) {
u= s.pop(); // Remove top stack node, put in uif (u has not been visited) {
visit u;for each edge (u, v) leaving u:
s.push(v);}
}}
s is not empty
![Page 30: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/30.jpg)
Depth-First Search written iteratively/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void dfs(int u) {
Stack s= (u); while (s is not empty) {
u= s.pop();if (u has not been visited) {
visit u;for each edge (u, v) leaving u:
s.push(v);}
}}
1
0
2
5
3
4
6
Call dfs(1)
Stack s
1
![Page 31: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/31.jpg)
Depth-First Search written iteratively/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void dfs(int u) {
Stack s= (u); while (s is not empty) {
u= s.pop();if (u has not been visited) {
visit u;for each edge (u, v) leaving u:
s.push(v);}
}}
1
0
2
5
3
4
6
Call dfs(1) Iteration 0
Stack s
1
![Page 32: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/32.jpg)
Depth-First Search written iteratively/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void dfs(int u) {
Stack s= (u); while (s is not empty) {
u= s.pop();if (u has not been visited) {
visit u;for each edge (u, v) leaving u:
s.push(v);}
}}
1
0
2
5
3
4
6
Call dfs(1) Iteration 0
Stack s
![Page 33: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/33.jpg)
Depth-First Search written iteratively/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void dfs(int u) {
Stack s= (u); while (s is not empty) {
u= s.pop();if (u has not been visited) {
visit u;for each edge (u, v) leaving u:
s.push(v);}
}}
1
0
2
5
3
4
6
Call dfs(1) Iteration 0
Stack s
![Page 34: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/34.jpg)
Depth-First Search written iteratively/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void dfs(int u) {
Stack s= (u); while (s is not empty) {
u= s.pop();if (u has not been visited) {
visit u;for each edge (u, v) leaving u:
s.push(v);}
}}
1
0
2
5
3
4
6
Call dfs(1) Iteration 0
Stack s
025
![Page 35: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/35.jpg)
Depth-First Search written iteratively/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void dfs(int u) {
Stack s= (u); while (s is not empty) {
u= s.pop();if (u has not been visited) {
visit u;for each edge (u, v) leaving u:
s.push(v);}
}}
1
0
2
5
3
4
6
Call dfs(1) Iteration 1
Stack s
025
![Page 36: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/36.jpg)
Depth-First Search written iteratively/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void dfs(int u) {
Stack s= (u); while (s is not empty) {
u= s.pop();if (u has not been visited) {
visit u;for each edge (u, v) leaving u:
s.push(v);}
}}
1
0
2
5
3
4
6
Call dfs(1) Iteration 1
Stack s
25
![Page 37: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/37.jpg)
Depth-First Search written iteratively/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void dfs(int u) {
Stack s= (u); while (s is not empty) {
u= s.pop();if (u has not been visited) {
visit u;for each edge (u, v) leaving u:
s.push(v);}
}}
1
0
2
5
3
4
6
Call dfs(1) Iteration 1
Stack s
25
![Page 38: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/38.jpg)
Depth-First Search written iteratively/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void dfs(int u) {
Stack s= (u); while (s is not empty) {
u= s.pop();if (u has not been visited) {
visit u;for each edge (u, v) leaving u:
s.push(v);}
}}
1
0
2
5
3
4
6
Call dfs(1) Iteration 2
Stack s
25
![Page 39: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/39.jpg)
Depth-First Search written iteratively/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void dfs(int u) {
Stack s= (u); while (s is not empty) {
u= s.pop();if (u has not been visited) {
visit u;for each edge (u, v) leaving u:
s.push(v);}
}}
1
0
2
5
3
4
6
Call dfs(1) Iteration 2
Stack s
5
![Page 40: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/40.jpg)
Depth-First Search written iteratively/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void dfs(int u) {
Stack s= (u); while (s is not empty) {
u= s.pop();if (u has not been visited) {
visit u;for each edge (u, v) leaving u:
s.push(v);}
}}
1
0
2
5
3
4
6
Call dfs(1) Iteration 2
Stack s
5
![Page 41: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/41.jpg)
Depth-First Search written iteratively/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void dfs(int u) {
Stack s= (u); while (s is not empty) {
u= s.pop();if (u has not been visited) {
visit u;for each edge (u, v) leaving u:
s.push(v);}
}}
1
0
2
5
3
4
6
Call dfs(1) Iteration 2
Stack s
355
Yes, 5 is put on the stack twice, once for each edge to it. It will be visited only once.
![Page 42: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/42.jpg)
Breadth-First Search/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void bfs(int u) {
Queue q= (u); // Not Java!// inv: all nodes that have to be visited are// REACHABLE from some node in swhile ( ) {
u= q.popFirst(); // Remove first node in queue, put in uif (u has not been visited) {
visit u;for each edge (u, v) leaving u:
q.append(v); // Add to end of queue}
}}
q is not empty
![Page 43: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/43.jpg)
Breadth-First Search/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void bfs(int u) {
Queue q= (u); while q is not empty) {
u= q.popFirst();if (u has not been visited) {
visit u;for each edge (u, v) leaving u:
q.append(v);}
}}
1
0
2
5
3
4
6
Call bfs(1)
Queue q1
7
![Page 44: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/44.jpg)
Breadth-First Search/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void bfs(int u) {
Queue q= (u); while q is not empty) {
u= q.popFirst();if (u has not been visited) {
visit u;for each edge (u, v) leaving u:
q.append(v);}
}}
1
0
2
5
3
4
6
Call bfs(1)
Queue q1
Iteration 0
7
![Page 45: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/45.jpg)
Breadth-First Search/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void bfs(int u) {
Queue q= (u); while q is not empty) {
u= q.popFirst();if (u has not been visited) {
visit u;for each edge (u, v) leaving u:
q.append(v);}
}}
1
0
2
5
3
4
6
Call bfs(1)
Queue q
Iteration 0
7
![Page 46: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/46.jpg)
Breadth-First Search/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void bfs(int u) {
Queue q= (u); while q is not empty) {
u= q.popFirst();if (u has not been visited) {
visit u;for each edge (u, v) leaving u:
q.append(v);}
}}
1
0
2
5
3
4
6
Call bfs(1)
Queue q
Iteration 0
7
![Page 47: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/47.jpg)
Breadth-First Search/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void bfs(int u) {
Queue q= (u); while q is not empty) {
u= q.popFirst();if (u has not been visited) {
visit u;for each edge (u, v) leaving u:
q.append(v);}
}}
1
0
2
5
3
4
6
Call bfs(1)
Queue q0 2
Iteration 0
7
![Page 48: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/48.jpg)
Breadth-First Search/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void bfs(int u) {
Queue q= (u); while q is not empty) {
u= q.popFirst();if (u has not been visited) {
visit u;for each edge (u, v) leaving u:
q.append(v);}
}}
1
0
2
5
3
4
6
Call bfs(1)
Queue q0 2
Iteration 1
7
![Page 49: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/49.jpg)
Breadth-First Search/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void bfs(int u) {
Queue q= (u); while q is not empty) {
u= q.popFirst();if (u has not been visited) {
visit u;for each edge (u, v) leaving u:
q.append(v);}
}}
1
0
2
5
3
4
6
Call bfs(1)
Queue q2
Iteration 1
7
![Page 50: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/50.jpg)
Breadth-First Search/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void bfs(int u) {
Queue q= (u); while q is not empty) {
u= q.popFirst();if (u has not been visited) {
visit u;for each edge (u, v) leaving u:
q.append(v);}
}}
1
0
2
5
3
4
6
Call bfs(1)
Queue q2
Iteration 1
7
![Page 51: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/51.jpg)
Breadth-First Search/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void bfs(int u) {
Queue q= (u); while q is not empty) {
u= q.popFirst();if (u has not been visited) {
visit u;for each edge (u, v) leaving u:
q.append(v);}
}}
1
0
2
5
3
4
6
Call bfs(1)
Queue q2 7
Iteration 1
7
![Page 52: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/52.jpg)
Breadth-First Search/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void bfs(int u) {
Queue q= (u); while q is not empty) {
u= q.popFirst();if (u has not been visited) {
visit u;for each edge (u, v) leaving u:
q.append(v);}
}}
1
0
2
5
3
4
6
Call bfs(1)
Queue q2 7
Iteration 2
7
![Page 53: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/53.jpg)
Breadth-First Search/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void bfs(int u) {
Queue q= (u); while q is not empty) {
u= q.popFirst();if (u has not been visited) {
visit u;for each edge (u, v) leaving u:
q.append(v);}
}}
1
0
2
5
3
4
6
Call bfs(1)
Queue q7
Iteration 2
7
![Page 54: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/54.jpg)
Breadth-First Search/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void bfs(int u) {
Queue q= (u); while q is not empty) {
u= q.popFirst();if (u has not been visited) {
visit u;for each edge (u, v) leaving u:
q.append(v);}
}}
1
0
2
5
3
4
6
Call bfs(1)
Queue q7
Iteration 2
7
![Page 55: Graphs - II CS 2110, Spring 2015. Where did I leave that book? .](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649cc55503460f9498e2c4/html5/thumbnails/55.jpg)
Breadth-First Search/** Node u is unvisited. Visit all nodes REACHABLE from u. */public static void bfs(int u) {
Queue q= (u); while q is not empty) {
u= q.popFirst();if (u has not been visited) {
visit u;for each edge (u, v) leaving u:
q.append(v);}
}}
1
0
2
5
3
4
6
Call bfs(1)
Queue q7 3 5
Iteration 2
Breadth first:(1) Node u(2) All nodes 1 edge from u(3) All nodes 2 edges from u(4) All nodes 3 edges from u…
7