Upload
domenic-dalton
View
224
Download
0
Embed Size (px)
Citation preview
2
Topics
Spanning trees DFS Spanning tree BFS Spanning tree
Minimum spanning trees Algorithms Prim Dijkstra
3
Spanning Trees A special kind of undirected graph
Contains all the vertex Is a tree There may be several spanning trees for a given graph
If we have a connected undirected graph with cycle, we obtain a spanning tree by removing edges until we have no cycles
We can determine whether a connected graph contains a cycle simply by counting its nodes & edges
If we add an edge to a spanning tree, then the resulting graph is no longer a tree, because it will produce a cycle containing the new edge
6
Spanning Trees Observations about undirected graphs:
A connected undirected graph that has N nodes must have at least N-1 edges
A connected undirected graph that has N nodes and exactly N-1 edges contains no cycles
A connected undirected graph that has N nodes & more than N-1 edges must contain at least one cycle
Two algorithms for determining a spanning tree of a graph, based on traversal algorithms
DFS BFS
7
Spanning Trees
Spanning tree recursive (DFS) algorithm
dfs_Tree_R(v)
// Recursive version
Mark v as visited
for (each unvisited node u adjacent to v)
{ Mark the edge from u to v
dfs_Tree_R(u)
} // end for
8
Spanning Trees
Spanning tree recursive (DFS) algorithm example Order of nodes visited
a b c d g e f h i
a
f g
eh
d
c
b
i
Root
6
75
4
3
218
9
Spanning Trees Spanning tree iterative (BFS) algorithm
Uses queuebfs_Tree_I( v)// Iterative versionq.createQueue( )// Add v to queue amd mark itq.enqueue(v)Mark v as visitedwhile (!q.isEmpty ( ) ){ q.dequeue(w)
for (each unvisited node u adjacent to w){ Mark u as visited
Mark edge between w & uq.enqueue(u)
} // end for} // end while
10
Spanning Trees
Minimum Spanning Tree (MST) Weighted connected, undirected graph
a
f g
eh
d
c
b
i
8
4
97
2
4
6
1
25
3
11
Spanning Trees
Minimum Spanning Tree (MST) If a graph has weighted edges, it is called a Network The weight can be thought of as a cost or Distance Minimum spanning tree (MST):
A subgraph of a given connected graph that is connected and that minimizes the sum of the weights of its edges
If we have a graph G with weighted edges, then any spanning tree has associated weight which is equal to the sum of the weights of its edges
12
Spanning Trees
Minimum Spanning Tree (MST) Weighted connected, undirected graph
a
f g
eh
d
c
b
i
8
4
97
2
4
6
1
25
3
13
Prim's Algorithm
Building a MST of an undirected graph Idea:
Choose the root for the MST Start with the MST having the root node Repeatedly add to MST the graph node that is closest, in the
sense of having least weight, to MST Continue until all nodes have been added
At the end of each pass, the marked tree is a MST for that subgraph of G consisting of the nodes chosen so far, along with all edges of G connecting these nodes.
14
Prim's Algorithm
Prim”s Algorithm(v)// Determines a MST for a weighted (non-negative),
//connected, undirected graph, beginning with node v
Mark node v as visited & include it in the MST
while ( there are unvisited nodes)
{ Find the least cost edge (v, u) to the MST
Mark u as visited
Add node u & the edge (v, u) to the MST
} // end while
16
Dijkstra's Algorithm One of the greedy algorithms
At each step the best "local" solution to the problem is the one chosen
Finds the shortest (cheapest) path between two nodes in a weighted directed graph Known as “single-source least-cost” problem
17
Dijkstra's Algorithm
A
B
CD
E30 60
10010
50
10
Example: Cheapest (shortest-whatever) path from A to E?
20
18
Dijkstra's Algorithm For each vertex keep track of
Cost Cheapest known cost to get this vertex from the source
Path The path with cheapest known cost to get this vertex from
the source
Done Is the path and cost guaranteed to be optimum?
20
Dijkstra's Algorithm Set cost of source vertex to 0 While destination vertex no done do
Find cheapest not Done vertex (X) Mark it as done
It is guaranteed to be so
For each vertex X do Calculate total cost of getting to vertex If total cost < current cost
Replace current cost with lowest cost Mark route (path) as X