lecture-35 minimum spanning tree

Upload: taqi-shah

Post on 06-Apr-2018

229 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    1/32

    Minimum Spanning

    Tree (MST)

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    2/32

    MotivationFor an electrical circuit certain pins have to begrounded. Finding the arrangement of wires

    (connecting those pins) that uses the least amount of

    wire.Let a G(V,E) be a graph such that (u, v) E and a

    weight w(u,v) corresponding to wire needed to join u

    and v.

    We are looking for an acyclic subset T E that

    connects all vertices and whose total weight w(T) is

    minimized.

    !Tvu

    vuwTw),(

    ),()(

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    3/32

    MotivationSince T is acyclic and connects all the vertices, it mustform a tree.

    Since it spans the graph, it is called a spanning tree.

    MST or actually means Minimum Weight Spanning

    Tree.

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    4/32

    Minimum Spanning Tree Problem: given a connected, undirected,

    weighted graph:

    14

    10

    3

    6 4

    5

    2

    9

    15

    8

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    5/32

    Minimum Spanning Tree Problem: given a connected, undirected,weighted graph, find a spanning tree using

    edges that minimize the total weight

    14

    10

    3

    6 4

    5

    2

    9

    15

    8

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    6/32

    Minimum Spanning Tree Which edges form the minimum spanning

    tree (MST) of the following graph?

    H B C

    G E D

    F

    A

    14

    10

    3

    6 4

    5

    2

    9

    15

    8

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    7/32

    Minimum Spanning TreeAnswer:

    H B C

    G E D

    F

    A

    14

    10

    3

    6 45

    2

    9

    15

    8

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    8/32

    Prims AlgorithmMST-Prim(G, w, r)

    Q = V[G];

    for each u Q

    key[u] = g;

    key[r] = 0;

    p[r] = NULL;

    while (Q not empty)

    u = ExtractMin(Q);

    for each v Adj[u]

    if (v Q and w(u,v) < key[v])

    p[v] = u;

    key[v] = w(u,v);

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    9/32

    Prims AlgorithmMST-Prim(G, w, r)

    Q = V[G];

    for each u Q

    key[u] = g;

    key[r] = 0;

    p[r] = NULL;

    while (Q not empty)

    u = ExtractMin(Q);

    for each v Adj[u]

    if (v Q and w(u,v) < key[v])

    p[v] = u;

    key[v] = w(u,v);

    1410

    3

    6 4

    5

    2

    9

    15

    8

    Run on example graph

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    10/32

    Prims AlgorithmMST-Prim(G, w, r)

    Q = V[G];

    for each u Q

    key[u] = g;

    key[r] = 0;

    p[r] = NULL;

    while (Q not empty)

    u = ExtractMin(Q);

    for each v Adj[u]

    if (v Q and w(u,v) < key[v])

    p[v] = u;

    key[v] = w(u,v);

    g g g

    g g g

    g

    g

    1410

    3

    6 4

    5

    2

    9

    15

    8

    Run on example graph

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    11/32

    Prims AlgorithmMST-Prim(G, w, r)

    Q = V[G];

    for each u Q

    key[u] = g;

    key[r] = 0;

    p[r] = NULL;

    while (Q not empty)

    u = ExtractMin(Q);

    for each v Adj[u]

    if (v Q and w(u,v) < key[v])

    p[v] = u;

    key[v] = w(u,v);

    g g g

    0 g g

    g

    g

    1410

    3

    6 4

    5

    2

    9

    15

    8

    Picka start vertex r

    r

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    12/32

    Prims AlgorithmMST-Prim(G, w, r)

    Q = V[G];

    for each u Q

    key[u] = g;

    key[r] = 0;

    p[r] = NULL;

    while (Q not empty)

    u = ExtractMin(Q);

    for each v Adj[u]

    if (v Q and w(u,v) < key[v])

    p[v] = u;

    key[v] = w(u,v);

    g g g

    0 g g

    g

    g

    1410

    3

    6 4

    5

    2

    9

    15

    8

    Blackvertices have been removed from Q

    u

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    13/32

    Prims AlgorithmMST-Prim(G, w, r)

    Q = V[G];

    for each u Q

    key[u] = g;

    key[r] = 0;

    p[r] = NULL;

    while (Q not empty)

    u = ExtractMin(Q);for each v Adj[u]

    if (v Q and w(u,v) < key[v])

    p[v] = u;

    key[v] = w(u,v);

    g g g

    0 g g

    3

    g

    1410

    3

    6 4

    5

    2

    9

    15

    8

    Blackarrows indicate parent pointers

    u

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    14/32

    Prims AlgorithmMST-Prim(G, w, r)

    Q = V[G];

    for each u Q

    key[u] = g;

    key[r] = 0;

    p[r] = NULL;

    while (Q not empty)

    u = ExtractMin(Q);for each v Adj[u]

    if (v Q and w(u,v) < key[v])

    p[v] = u;

    key[v] = w(u,v);

    14 g g

    0 g g

    3

    g

    1410

    3

    6 4

    5

    2

    9

    15

    8

    u

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    15/32

    Prims AlgorithmMST-Prim(G, w, r)

    Q = V[G];

    for each u Q

    key[u] = g;

    key[r] = 0;

    p[r] = NULL;

    while (Q not empty)

    u = ExtractMin(Q);for each v Adj[u]

    if (v Q and w(u,v) < key[v])

    p[v] = u;

    key[v] = w(u,v);

    14 g g

    0 g g

    3

    g

    1410

    3

    6 4

    5

    2

    9

    15

    8u

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    16/32

    Prims AlgorithmMST-Prim(G, w, r)

    Q = V[G];

    for each u Q

    key[u] = g;

    key[r] = 0;

    p[r] = NULL;

    while (Q not empty)

    u = ExtractMin(Q);for each v Adj[u]

    if (v Q and w(u,v) < key[v])

    p[v] = u;

    key[v] = w(u,v);

    14 g g

    0 8 g

    3

    g

    1410

    3

    6 4

    5

    2

    9

    15

    8u

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    17/32

    Prims AlgorithmMST-Prim(G, w, r)

    Q = V[G];

    for each u Q

    key[u] = g;

    key[r] = 0;

    p[r] = NULL;

    while (Q not empty)

    u = ExtractMin(Q);for each v Adj[u]

    if (v Q and w(u,v) < key[v])

    p[v] = u;

    key[v] = w(u,v);

    10 g g

    0 8 g

    3

    g

    1410

    3

    6 4

    5

    2

    9

    15

    8u

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    18/32

    Prims AlgorithmMST-Prim(G, w, r)

    Q = V[G];

    for each u Q

    key[u] = g;

    key[r] = 0;

    p[r] = NULL;

    while (Q not empty)

    u = ExtractMin(Q);for each v Adj[u]

    if (v Q and w(u,v) < key[v])

    p[v] = u;

    key[v] = w(u,v);

    10 g g

    0 8 g

    3

    g

    1410

    3

    6 4

    5

    2

    9

    15

    8

    u

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    19/32

    Prims AlgorithmMST-Prim(G, w, r)

    Q = V[G];

    for each u Q

    key[u] = g;

    key[r] = 0;

    p[r] = NULL;

    while (Q not empty)

    u = ExtractMin(Q);for each v Adj[u]

    if (v Q and w(u,v) < key[v])

    p[v] = u;

    key[v] = w(u,v);

    10 2 g

    0 8 g

    3

    g

    1410

    3

    6 4

    5

    2

    9

    15

    8

    u

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    20/32

    Prims AlgorithmMST-Prim(G, w, r)

    Q = V[G];

    for each u Q

    key[u] = g;

    key[r] = 0;

    p[r] = NULL;

    while (Q not empty)

    u = ExtractMin(Q);for each v Adj[u]

    if (v Q and w(u,v) < key[v])

    p[v] = u;

    key[v] = w(u,v);

    10 2 g

    0 8 15

    3

    g

    1410

    3

    6 4

    5

    2

    9

    15

    8

    u

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    21/32

    Prims AlgorithmMST-Prim(G, w, r)

    Q = V[G];

    for each u Q

    key[u] = g;

    key[r] = 0;

    p[r] = NULL;

    while (Q not empty)

    u = ExtractMin(Q);for each v Adj[u]

    if (v Q and w(u,v) < key[v])

    p[v] = u;

    key[v] = w(u,v);

    10 2 g

    0 8 15

    3

    g

    1410

    3

    6 4

    5

    2

    9

    15

    8

    u

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    22/32

    Prims AlgorithmMST-Prim(G, w, r)

    Q = V[G];

    for each u Q

    key[u] = g;

    key[r] = 0;

    p[r] = NULL;

    while (Q not empty)

    u = ExtractMin(Q);for each v Adj[u]

    if (v Q and w(u,v) < key[v])

    p[v] = u;

    key[v] = w(u,v);

    10 2 g

    0 8 15

    3

    4

    1410

    3

    6 4

    5

    2

    9

    15

    8

    u

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    23/32

    Prims AlgorithmMST-Prim(G, w, r)

    Q = V[G];

    for each u Q

    key[u] = g;

    key[r] = 0;

    p[r] = NULL;

    while (Q not empty)

    u = ExtractMin(Q);for each v Adj[u]

    if (v Q and w(u,v) < key[v])

    p[v] = u;

    key[v] = w(u,v);

    5 2 g

    0 8 15

    3

    4

    1410

    3

    6 4

    5

    2

    9

    15

    8

    u

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    24/32

    Prims AlgorithmMST-Prim(G, w, r)

    Q = V[G];

    for each u Q

    key[u] = g;

    key[r] = 0;

    p[r] = NULL;

    while (Q not empty)

    u = ExtractMin(Q);for each v Adj[u]

    if (v Q and w(u,v) < key[v])

    p[v] = u;

    key[v] = w(u,v);

    5 2 9

    0 8 15

    3

    4

    1410

    3

    6 4

    5

    2

    9

    15

    8

    u

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    25/32

    Prims AlgorithmMST-Prim(G, w, r)

    Q = V[G];

    for each u Q

    key[u] = g;

    key[r] = 0;

    p[r] = NULL;

    while (Q not empty)

    u = ExtractMin(Q);for each v Adj[u]

    if (v Q and w(u,v) < key[v])

    p[v] = u;

    key[v] = w(u,v);

    5 2 9

    0 8 15

    3

    4

    1410

    3

    6 4

    5

    2

    9

    15

    8

    u

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    26/32

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    27/32

    Prims AlgorithmMST-Prim(G, w, r)

    Q = V[G];

    for each u Q

    key[u] = g;

    key[r] = 0;

    p[r] = NULL;

    while (Q not empty)

    u = ExtractMin(Q);for each v Adj[u]

    if (v Q and w(u,v) < key[v])

    p[v] = u;

    key[v] = w(u,v);

    5 2 9

    0 8 15

    3

    4

    1410

    3

    6 4

    5

    2

    9

    15

    8

    u

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    28/32

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    29/32

    R

    eview: Prims AlgorithmMST-Prim(G, w, r)

    Q = V[G];

    for each u Q

    key[u] = g;

    key[r] = 0;

    p[r] = NULL;

    while (Q not empty)

    u = ExtractMin(Q);for each v Adj[u]

    if (v Q and w(u,v) < key[v])

    p[v] = u;

    key[v] = w(u,v);

    Whatis the hidden costin this code?

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    30/32

    Review: Prims Algorithm

    MST-Prim(G, w, r)

    Q = V[G];

    for each u Q

    key[u] = g;

    key[r] = 0;

    p[r] = NULL;

    while (Q not empty)

    u = ExtractMin(Q);for each v Adj[u]

    if (v Q and w(u,v) < key[v])

    p[v] = u;

    DecreaseKey(v, w(u,v));

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    31/32

    Review: Prims Algorithm

    MST-Prim(G, w, r)

    Q = V[G];

    for each u Q

    key[u] = g;

    key[r] = 0;

    p[r] = NULL;

    while (Q not empty)

    u = ExtractMin(Q);for each v Adj[u]

    if (v Q and w(u,v) < key[v])

    p[v] = u;

    DecreaseKey(v, w(u,v));

    How often is ExtractMin() called?

    How often is DecreaseKey() called?

  • 8/3/2019 Lecture-35 Minimum Spanning Tree

    32/32