minimum- spanning trees

Click here to load reader

Post on 15-Jan-2016

70 views

Category:

Documents

3 download

Embed Size (px)

DESCRIPTION

Minimum- Spanning Trees. 1. Concrete example: computer connection 2. Definition of a Minimum- Spanning Tree 3. The Crucial Fact about Minimum- Spanning Trees 4. Algorithms to find Minimum- Spanning Trees - Kruskal‘s Algorithm - Prim‘s Algorithm - PowerPoint PPT Presentation

TRANSCRIPT

  • Minimum- Spanning Trees1. Concrete example: computer connection

    2. Definition of a Minimum- Spanning Tree

    3. The Crucial Fact about Minimum- Spanning Trees

    4. Algorithms to find Minimum- Spanning Trees - Kruskals Algorithm - Prims Algorithm - Barvkas Algorithm

    Minimum-Spanning Trees

  • Imagine: You wish to connect all the computers in an office building using the least amount of cable

    a weighted graph problem !!

    Each vertex in a graph G represents a computer Each edge represents the amount of cable needed to connect all computersConcrete example

    Minimum-Spanning Trees

  • We are interested in:

    Finding a tree T that contains all the verticesof a graph G spanning treeand has the least total weight over allsuch trees minimum-spanning tree (MST)

    Minimum-Spanning Tree

  • min-weightbridge edgeThe Crucial Fact about MSTe

    Crucial Fact

  • The Crucial Fact about MST-The basis of the following algorithmsProposition: Let G = (V,E) be a weighted graph, and let and be two disjoint nonempty sets such that . Furthermore, let e be an edge with minimum weight from among those with one vertex in and the other in . There is a minimum- spanning tree T that has e as one of its edges.

    Crucial Fact

  • The Crucial Fact about MST-The basis of the following algorithmsJustification: There is no minimum- spanning tree that has e as one of of ist edges. The addition of e must create a cycle. There exists an edge f (one endpoint in the other in ). Choose: . By removing f from , a spanning tree is created, whose total weight is no more than before. A new MSTcontaining e Contradiction!!! There is a MST containing e after all!!!

    Crucial Fact

  • Input: A weighted connected graph G = (V,E) with n vertices and m edges

    Output: A minimum- spanning tree TMST-Algorithms

    MST-Algorithms

  • Kruskals AlgorithmEach vertex is in its own cluster

    2. Take the edge e with the smallest weight - if e connects two vertices in different clusters, then e is added to the MST and the two clusters, which are connected by e, are merged into a single cluster - if e connects two vertices, which are already in the same cluster, ignore it

    3. Continue until n-1 edges were selected

    Kruskal's Algorithm

  • CFEABD5643421232

    Kruskal's Algorithm

  • CFEABD5643421232

    Kruskal's Algorithm

  • CFEABD5643421232

    Kruskal's Algorithm

  • CFEABD5643421232

    Kruskal's Algorithm

  • CFEABD5643421232

    Kruskal's Algorithm

  • CFEABD5643421232cycle!!

    Kruskal's Algorithm

  • CFEABD5643421232

    Kruskal's Algorithm

  • CFEABD5643421232

    Kruskal's Algorithm

  • CFEABD32122minimum- spanning tree

    Kruskal's Algorithm

  • The correctness of Kruskals AlgorithmCrucial Fact about MSTsRunning time: O ( m log n )

    By implementing queue Q as a heap, Q could be initialized in O ( m ) time and a vertex could be extracted in each iteration in O ( log n ) time

    Kruskal's Algorithm

  • Input: A weighted connected graph G with n vertices and m edges Output: A minimum-spanning tree T for G

    for each vertex v in G do Define a cluster C(v) {v}.Initialize a priority queue Q to contain all edges in G, using weights as keys.T while Q do Extract (and remove) from Q an edge (v,u) with smallest weight. Let C(v) be the cluster containing v, and let C(u) be the cluster containing u. if C(v) C(u) then Add edge (v,u) to T. Merge C(v) and C(u) into one cluster, that is, union C(v) and C(u).return tree TCode Fragment

    Kruskal's Algorithm

  • Prims AlgorithmAll vertices are marked as not visited

    2. Any vertex v you like is chosen as starting vertex and is marked as visited (define a cluster C)

    The smallest- weighted edge e = (v,u), which connects one vertex v inside the cluster C with another vertex u outside of C, is chosen and is added to the MST.

    4. The process is repeated until a spanning tree is formed

    Prim's Algorithm

  • CFEABD5643421232

    Prim's Algorithm

  • CFEABD5643421232

    Prim's Algorithm

  • CFEABD5643421232We could delete these edges because of Dijkstras label D[u] for each vertex outside of the cluster

    Prim's Algorithm

  • CFEABD3421232

    Prim's Algorithm

  • CFEABD321232

    Prim's Algorithm

  • CFEABD321223

    Prim's Algorithm

  • CFEABD32122

    Prim's Algorithm

  • CFEABD32122

    Prim's Algorithm

  • CFEABD32122minimum- spanning tree

    Prim's Algorithm

  • The correctness of Prims AlgorithmCrucial Fact about MSTsRunning time: O ( m log n )

    By implementing queue Q as a heap, Q could be initialized in O ( m ) time and a vertex could be extracted in each iteration in O ( log n ) time

    Prim's Algorithm

  • Barvkas AlgorithmFor all vertices search the edge with the smallest weightof this vertex and mark these edges

    Search connected vertices (clusters) and replace them by a new vertex (cluster)

    Remove the cycles and, if two vertices are connected by more than one edge, delete all edges except the cheapest

    Baruvka's Algorithm

  • CFEABD5643421232

    Baruvka's Algorithm

  • CFEABD5643421232

    Baruvka's Algorithm

  • CFEABD5643421232

    Baruvka's Algorithm

  • CFEABD5643421232

    Baruvka's Algorithm

  • CFEABD32122

    Baruvka's Algorithm

  • CFEABD32122minimum- spanning tree

    Baruvka's Algorithm

  • The correctness of Barvkas AlgorithmCrucial Fact about MSTsRunning time: O ( m log n )

    The number of edges is at least reduced by half in each step.Number of steps: O ( log n )

    Baruvka's Algorithm

  • ComparisonKruskals,Prims,and Borvkasalgorithm

    Comparison

  • ComparisonAlthough each of the above algorithms has the same worth-case running time, each one achieves this running time using different data structures and different approaches to build the MST.

    there is no clear winner among these three algorithms

    Comparison