Analog and digital C - MinimumSpanningTree .pptx, Study notes of Digital & Analog Electronics

Description about Minimum Spanning Tree, What is a Minimum Spanning Tree., Constructing Minimum Spanning Trees., What is a Minimum-Cost Spanning Tree., Applications of Minimum Cost Spanning Trees., Prim’s Algorithm.

Typology: Study notes

2010/2011

Uploaded on 09/02/2011

hamit1990
hamit1990 🇮🇳

4.3

(76)

95 documents

1 / 15

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Minimum Spanning Tree
What is a Minimum Spanning Tree.
Constructing Minimum Spanning Trees.
What is a Minimum-Cost Spanning Tree.
Applications of Minimum Cost Spanning Trees.
Prim’s Algorithm.
Example.
Implementation.
Kruskal’s algorithm.
Example.
Implementation.
Review Questions.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff

Partial preview of the text

Download Analog and digital C - MinimumSpanningTree .pptx and more Study notes Digital & Analog Electronics in PDF only on Docsity!

Minimum Spanning Tree

  • (^) What is a Minimum Spanning Tree.
  • (^) Constructing Minimum Spanning Trees.
  • (^) What is a Minimum-Cost Spanning Tree.
  • (^) Applications of Minimum Cost Spanning Trees.
  • (^) Prim’s Algorithm.
    • (^) Example.
    • (^) Implementation.
  • (^) Kruskal’s algorithm.
    • (^) Example.
    • (^) Implementation.
  • (^) Review Questions.

What is a Minimum Spanning Tree.

• Let G = (V, E) be a simple, connected, undirected graph that is not

edge-weighted.

• A spanning tree of G is a free tree (i.e., a tree with no root) with | V | - 1

edges that connects all the vertices of the graph.

• Thus a minimum spanning tree for G is a graph, T = (V’, E’) with the

following properties:

 V’ = V

 T is connected

 T is acyclic.

• A spanning tree is called a tree because every acyclic undirected

graph can be viewed as a general, unordered tree. Because the edges

are undirected, any vertex may be chosen to serve as the root of the

tree.

What is a Minimum-Cost Spanning Tree

• For an edge-weighted , connected, undirected graph, G, the total

cost of G is the sum of the weights on all its edges.

• A minimum-cost spanning tree for G is a minimum spanning tree of

G that has the least total cost.

• Example: The graph

Has 16 spanning trees. Some are:

The graph has two minimum-cost spanning trees, each with a cost of 6:

Applications of Minimum-Cost Spanning Trees

Minimum-cost spanning trees have many applications. Some are:

• Building cable networks that join n locations with minimum cost.

• Building a road network that joins n cities with minimum cost.

• Obtaining an independent set of circuit equations for an electrical

network.

• In pattern recognition minimal spanning trees can be used to find noisy

pixels.

Example

: Trace Prim’s algorithm starting at vertex a

: The resulting minimum-cost spanning tree is

Implementation of Prim’s Algorithm.

• Prims algorithn can be implememted similar to the Dijskra’s

algorithm as shown below:

public static Graph primsAlgorithm(Graph g, Vertex start){ int n = g.getNumberOfVertices(); Entry table[] = new Entry[n]; for(int v = 0; v < n; v++) table[v] = new Entry(); table[g.getIndex(start)].distance = 0; PriorityQueue queue = new BinaryHeap(g.getNumberOfEdges()); queue.enqueue(new Association(new Integer(0), start)); while(!queue.isEmpty()) { Association association = (Association)queue.dequeueMin(); Vertex v1 = (Vertex) association.getValue(); int n1 = g.getIndex(v1); if(!table[n1].known){ table[n1].known = true; Iterator p = v1.getEmanatingEdges(); while (p.hasNext()){ Edge edge = (Edge) p.next(); Vertex v2 = edge.getMate(v1); int n2 = g.getIndex(v2); Integer weight = (Integer) edge.getWeight(); int d = weight.intValue();

Kruskal's Algorithm.

• Kruskal’s algorithm also finds the minimum cost

spanning tree of a graph by adding edges one-by-one.

enqueue edges of G in a queue in increasing order of cost.

T =  ;

while(queue is not empty){

dequeue an edge e;

if(e does not create a cycle with edges in T)

add e to T;

return T;

Example for Kruskal’s Algorithm.

Trace Kruskal's algorithm in finding a minimum-cost spanning tree for the

undirected, weighted graph given below:

The minimum cost is: 24

Implementation of Kruskal's Algorithm – Cont’d

public abstract class AbstractGraph implements Graph { public boolean isReachable(String from, String to){ Vertex fromVertex = getVertex(from); Vertex toVertex = getVertex(to); if (fromVertex == null || toVertex==null) throw new IllegalArgumentException("Vertex not in the graph"); PathVisitor visitor = new PathVisitor(toVertex); this.preorderDepthFirstTraversal(visitor, fromVertex); return visitor.isReached(); } private class PathVisitor implements Visitor { boolean reached = false; Vertex target; PathVisitor(Vertex t){target = t;} public void visit(Object obj){ Vertex v = (Vertex) obj; if (v.equals(target)) reached = true; } public boolean isDone(){return reached;} boolean isReached(){return reached;} } }

Prim’s and Kruskal’s Algorithms

Note: It is not necessary that Prim's and Kruskal's algorithm generate the same minimum-cost spanning tree. For example for the graph:

Kruskal's algorithm (that imposes an ordering on edges with equal weights) results

in the following minimum cost spanning tree:

The same tree is generated by Prim's algorithm if the start vertex is any of: A, B, or

D; however if the start vertex is C the minimum cost spanning tree is: