29
KRUSKAL’S ALGORITHM

KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

KRUSKAL’S ALGORITHM

Page 2: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Kruskal’s Algorithm

4|a

1|c

1|f 1|g

2|e

2|j2|h

2|b3|d

3|i

5|k

1. Sort edges by weight; E′ := ∅; j := 1;

2. if (V, E′ ∪ {ej}) acyclic then E′ := E′ ∪ {ej}: end;

3. If (j = |V | − 1 or j = m) then END

else j := j + 1; goto 2;end;

Page 3: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Kruskal’s Algorithm

4|a

1|c

1|f 1|g

2|e

2|j2|h

2|b3|d

3|i

5|k

E = {c, f, g, b, e, h, j, d, i, a, k}E′ = ∅j = 1

1. Sort edges by weight; E′ := ∅; j := 1;

2. if (V, E′ ∪ {ej}) acyclic then E′ := E′ ∪ {ej}: end;

3. If (j = |V | − 1 or j = m) then END

else j := j + 1; goto 2;end;

Page 4: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Kruskal’s Algorithm

4|a

1|c

1|f 1|g

2|e

2|j2|h

2|b3|d

3|i

5|k

E = {c, f, g, b, e, h, j, d, i, a, k}E′ = {c}j = 1

1. Sort edges by weight; E′ := ∅; j := 1;

2. if (V, E′ ∪ {ej}) acyclic then E′ := E′ ∪ {ej}: end;

3. If (j = |V | − 1 or j = m) then END

else j := j + 1; goto 2;end;

Page 5: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Kruskal’s Algorithm

4|a

1|c

1|f 1|g

2|e

2|j2|h

2|b3|d

3|i

5|k

E = {c, f, g, b, e, h, j, d, i, a, k}E′ = {c}j = 2

1. Sort edges by weight; E′ := ∅; j := 1;

2. if (V, E′ ∪ {ej}) acyclic then E′ := E′ ∪ {ej}: end;

3. If (j = |V | − 1 or j = m) then END

else j := j + 1; goto 2;end;

Page 6: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Kruskal’s Algorithm

4|a

1|c

1|f 1|g

2|e

2|j2|h

2|b3|d

3|i

5|k

E = {c, f, g, b, e, h, j, d, i, a, k}E′ = {c, f}j = 2

1. Sort edges by weight; E′ := ∅; j := 1;

2. if (V, E′ ∪ {ej}) acyclic then E′ := E′ ∪ {ej}: end;

3. If (j = |V | − 1 or j = m) then END

else j := j + 1; goto 2;end;

Page 7: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Kruskal’s Algorithm

4|a

1|c

1|f 1|g

2|e

2|j2|h

2|b3|d

3|i

5|k

E = {c, f, g, b, e, h, j, d, i, a, k}E′ = {c, f}j = 3

1. Sort edges by weight; E′ := ∅; j := 1;

2. if (V, E′ ∪ {ej}) acyclic then E′ := E′ ∪ {ej}: end;

3. If (j = |V | − 1 or j = m) then END

else j := j + 1; goto 2;end;

Page 8: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Kruskal’s Algorithm

4|a

1|c

1|f 1|g

2|e

2|j2|h

2|b3|d

3|i

5|k

E = {c, f, g, b, e, h, j, d, i, a, k}E′ = {c, f, g}j = 3

1. Sort edges by weight; E′ := ∅; j := 1;

2. if (V, E′ ∪ {ej}) acyclic then E′ := E′ ∪ {ej}: end;

3. If (j = |V | − 1 or j = m) then END

else j := j + 1; goto 2;end;

Page 9: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Kruskal’s Algorithm

4|a

1|c

1|f 1|g

2|e

2|j2|h

2|b3|d

3|i

5|k

E = {c, f, g, b, e, h, j, d, i, a, k}E′ = {c, f, g}j = 4

1. Sort edges by weight; E′ := ∅; j := 1;

2. if (V, E′ ∪ {ej}) acyclic then E′ := E′ ∪ {ej}: end;

3. If (j = |V | − 1 or j = m) then END

else j := j + 1; goto 2;end;

Page 10: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Kruskal’s Algorithm

4|a

1|c

1|f 1|g

2|e

2|j2|h

2|b3|d

3|i

5|k

E = {c, f, g, b, e, h, j, d, i, a, k}E′ = {c, f, g}j = 4

1. Sort edges by weight; E′ := ∅; j := 1;

2. if (V, E′ ∪ {ej}) acyclic then E′ := E′ ∪ {ej}: end;

3. If (j = |V | − 1 or j = m) then END

else j := j + 1; goto 2;end;

Page 11: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Kruskal’s Algorithm

4|a

1|c

1|f 1|g

2|e

2|j2|h

2|b3|d

3|i

5|k

E = {c, f, g, b, e, h, j, d, i, a, k}E′ = {c, f, g}j = 5

1. Sort edges by weight; E′ := ∅; j := 1;

2. if (V, E′ ∪ {ej}) acyclic then E′ := E′ ∪ {ej}: end;

3. If (j = |V | − 1 or j = m) then END

else j := j + 1; goto 2;end;

Page 12: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Kruskal’s Algorithm

4|a

1|c

1|f 1|g

2|e

2|j2|h

2|b3|d

3|i

5|k

E = {c, f, g, b, e, h, j, d, i, a, k}E′ = {c, f, g, e}j = 5

1. Sort edges by weight; E′ := ∅; j := 1;

2. if (V, E′ ∪ {ej}) acyclic then E′ := E′ ∪ {ej}: end;

3. If (j = |V | − 1 or j = m) then END

else j := j + 1; goto 2;end;

Page 13: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Kruskal’s Algorithm

4|a

1|c

1|f 1|g

2|e

2|j2|h

2|b3|d

3|i

5|k

E = {c, f, g, b, e, h, j, d, i, a, k}E′ = {c, f, g, e}j = 6

1. Sort edges by weight; E′ := ∅; j := 1;

2. if (V, E′ ∪ {ej}) acyclic then E′ := E′ ∪ {ej}: end;

3. If (j = |V | − 1 or j = m) then END

else j := j + 1; goto 2;end;

Page 14: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Kruskal’s Algorithm

4|a

1|c

1|f 1|g

2|e

2|j2|h

2|b3|d

3|i

5|k

E = {c, f, g, b, e, h, j, d, i, a, k}E′ = {c, f, g, e, h}j = 6

1. Sort edges by weight; E′ := ∅; j := 1;

2. if (V, E′ ∪ {ej}) acyclic then E′ := E′ ∪ {ej}: end;

3. If (j = |V | − 1 or j = m) then END

else j := j + 1; goto 2;end;

Page 15: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Kruskal’s Algorithm

4|a

1|c

1|f 1|g

2|e

2|j2|h

2|b3|d

3|i

5|k

E = {c, f, g, b, e, h, j, d, i, a, k}E′ = {c, f, g, e, h}j = 7

1. Sort edges by weight; E′ := ∅; j := 1;

2. if (V, E′ ∪ {ej}) acyclic then E′ := E′ ∪ {ej}: end;

3. If (j = |V | − 1 or j = m) then END

else j := j + 1; goto 2;end;

Page 16: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Kruskal’s Algorithm

4|a

1|c

1|f 1|g

2|e

2|j2|h

2|b3|d

3|i

5|k

E = {c, f, g, b, e, h, j, d, i, a, k}E′ = {c, f, g, e, h, j}j = 7

1. Sort edges by weight; E′ := ∅; j := 1;

2. if (V, E′ ∪ {ej}) acyclic then E′ := E′ ∪ {ej}: end;

3. If (j = |V | − 1 or j = m) then END

else j := j + 1; goto 2;end;

Page 17: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Kruskal’s Algorithm

4|a

1|c

1|f 1|g

2|e

2|j2|h

2|b3|d

3|i

5|k

E = {c, f, g, b, e, h, j, d, i, a, k}E′ = {c, f, g, e, h, j}j = 7

|E′| = 6 END

1. Sort edges by weight; E′ := ∅; j := 1;

2. if (V, E′ ∪ {ej}) acyclic then E′ := E′ ∪ {ej}: end;

3. If (j = |V | − 1 or j = m) then END

else j := j + 1; goto 2;end;

Page 18: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

PRIM’S ALGORITHM

Page 19: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Prim’s Algorithm

1. g(v1) := 1; S := ∅; T := ∅;

2. for i = 2 to n do: g(vi) := ∞: end;

3. while S 6= V do:

choose vi ∈ V \ S such that g(vi) minimal;

S := S ∪ {vi};if i 6= 1 then T := T ∪ {ei}: end;for vj ∈ Ai ∩ (V \ S) do:

if g(vj) > w(vivj) then g(vj) := w(vivj): ej := vivj: end

end;

end;

Page 20: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Prim’s Algorithm

16

4 5

3

2

3

5

v1

v6 v

5 v4

v3v

2

g(v2) g(v3) g(v4) g(v5) g(v6)

v1

Page 21: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Prim’s Algorithm

16

4 5

3

2

3

5

v1

v6 v

5 v4

v3v

2

g(v2) g(v3) g(v4) g(v5) g(v6)

v1 3 ∞ 2 ∞ 1

Page 22: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Prim’s Algorithm

16

4 5

3

2

3

5

v1

v6 v

5 v4

v3v

2

g(v2) g(v3) g(v4) g(v5) g(v6)

v1 3 ∞ 2 ∞ 1

v6 –

Page 23: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Prim’s Algorithm

16

4 5

3

2

3

5

v1

v6 v

5 v4

v3v

2

g(v2) g(v3) g(v4) g(v5) g(v6)

v1 3 ∞ 2 ∞ 1

v6 3 ∞ 2 4 –

Page 24: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Prim’s Algorithm

16

4 5

3

2

3

5

v1

v6 v

5 v4

v3v

2

g(v2) g(v3) g(v4) g(v5) g(v6)

v1 3 ∞ 2 ∞ 1

v6 3 ∞ 2 4 –

v4 – –

Page 25: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Prim’s Algorithm

16

4 5

3

2

3

5

v1

v6 v

5 v4

v3v

2

g(v2) g(v3) g(v4) g(v5) g(v6)

v1 3 ∞ 2 ∞ 1

v6 3 ∞ 2 4 –

v4 3 5 – 4 –

Page 26: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Prim’s Algorithm

16

4 5

3

2

3

5

v1

v6 v

5 v4

v3v

2

g(v2) g(v3) g(v4) g(v5) g(v6)

v1 3 ∞ 2 ∞ 1

v6 3 ∞ 2 4 –

v4 3 5 – 4 –

v2 – – –

Page 27: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Prim’s Algorithm

16

4 5

3

2

3

5

v1

v6 v

5 v4

v3v

2

g(v2) g(v3) g(v4) g(v5) g(v6)

v1 3 ∞ 2 ∞ 1

v6 3 ∞ 2 4 –

v4 3 5 – 4 –

v2 – 3 – 4 –

Page 28: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Prim’s Algorithm

16

4 5

3

2

3

5

v1

v6 v

5 v4

v3v

2

g(v2) g(v3) g(v4) g(v5) g(v6)

v1 3 ∞ 2 ∞ 1

v6 3 ∞ 2 4 –

v4 3 5 – 4 –

v2 – 3 – 4 –

v3 – 3 – –

Page 29: KRUSKAL’S ALGORITHM - dmg.tuwien.ac.at · Kruskal’s Algorithm 4|a 1|c 1|f 1|g 2|e 2|h 2|j 2|b 3|d 3|i 5|k E = {c,f,g,b,e,h,j,d,i,a,k} E0 = ∅ j = 1 1. Sort edges by weight; E0:=

Prim’s Algorithm

16

4 5

3

2

3

5

v1

v6 v

5 v4

v3v

2

g(v2) g(v3) g(v4) g(v5) g(v6)

v1 3 ∞ 2 ∞ 1

v6 3 ∞ 2 4 –

v4 3 5 – 4 –

v2 – 3 – 4 –

v3 – 3 – –