filter-kruskal mst...

33
Filter-Kruskal MST Algorithm Vitaly Osipov, Peter Sanders, Johannes Singler Universit ¨ at Karlsruhe (TH) Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Upload: others

Post on 20-Aug-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Filter-Kruskal MST AlgorithmVitaly Osipov, Peter Sanders, Johannes Singler

Universitat Karlsruhe (TH)

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 2: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Motivation

What is the best (practical) algorithm for Minimum Spanning Trees?

◮ Kruskal?

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 3: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Motivation

What is the best (practical) algorithm for Minimum Spanning Trees?

◮ Kruskal? for very sparse graphs

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 4: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Motivation

What is the best (practical) algorithm for Minimum Spanning Trees?

◮ Kruskal? for very sparse graphs◮ Jarnık–Prim?

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 5: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Motivation

What is the best (practical) algorithm for Minimum Spanning Trees?

◮ Kruskal? for very sparse graphs◮ Jarnık–Prim? else

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 6: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Motivation

What is the best (practical) algorithm for Minimum Spanning Trees?

◮ Kruskal? for very sparse graphs◮ Jarnık–Prim? else◮ Karger–Klein–Tarjan, Chazelle, Pettie–Ramachandran,. . . ?

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 7: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Motivation

What is the best (practical) algorithm for Minimum Spanning Trees?

◮ Kruskal? for very sparse graphs◮ Jarnık–Prim? else◮ Karger–Klein–Tarjan, Chazelle, Pettie–Ramachandran,. . . ?

too complicated

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 8: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Kruskal’s Algorithm

Procedure kruskal(E ,T : Sequence of Edge,P : UnionFind)sort E by increasing edge weightforeach {u, v} ∈ E do

if u and v are in different components of P thenadd edge {u, v} to Tjoin the partitions of u and v in P

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 9: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Kruskal’s Algorithm

Procedure kruskal(E ,T : Sequence of Edge,P : UnionFind)sort E by increasing edge weightforeach {u, v} ∈ E do

if u and v are in different components of P thenadd edge {u, v} to Tjoin the partitions of u and v in P

◮ Time O ((n + m) log m)

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 10: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Quick-Kruskal

Procedure qKruskal(E ,T : Sequence of Edge,P : UnionFind)if m ≤ kruskalThreshold(n, |E |, |T |)

then kruskal(E ,T ,P)else

pick a pivot p ∈ EE≤:= 〈e ∈ E : e ≤ p〉; E>:= 〈e ∈ E : e > p〉qKruskal(E≤,T ,P)qKruskal(E>,T ,P)

p

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 11: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Quick-Kruskal

Procedure qKruskal(E ,T : Sequence of Edge,P : UnionFind)if m ≤ kruskalThreshold(n, |E |, |T |)

then kruskal(E ,T ,P)else

pick a pivot p ∈ EE≤:= 〈e ∈ E : e ≤ p〉; E>:= 〈e ∈ E : e > p〉qKruskal(E≤,T ,P)qKruskal(E>,T ,P)

p

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 12: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Quick-Kruskal

Procedure qKruskal(E ,T : Sequence of Edge,P : UnionFind)if m ≤ kruskalThreshold(n, |E |, |T |)

then kruskal(E ,T ,P)else

pick a pivot p ∈ EE≤:= 〈e ∈ E : e ≤ p〉; E>:= 〈e ∈ E : e > p〉qKruskal(E≤,T ,P)qKruskal(E>,T ,P)

◮ O(

m + n log2 n)

– random graphs, random edge weights

◮ Θ((n + m) log m) if there is any heavy MST edge,e.g., Lollipop graph with random edge weights

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 13: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Filter-Kruskal

Procedure filterKruskal(E ,T : Sequence of Edge,P : UnionFind)if m ≤ kruskalThreshold(n, |E |, |T |)

then kruskal(E ,T ,P)else

pick a pivot p ∈ EE≤:= 〈e ∈ E : e ≤ p〉; E>:= 〈e ∈ E : e > p〉filterKruskal(E≤,T ,P)E>:= filter(E>,P)filterKruskal(E>,T ,P)

Function filter(E)return 〈{u, v} ∈ E : u, v are in different components of P〉

p

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 14: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Filter-Kruskal

Procedure filterKruskal(E ,T : Sequence of Edge,P : UnionFind)if m ≤ kruskalThreshold(n, |E |, |T |)

then kruskal(E ,T ,P)else

pick a pivot p ∈ EE≤:= 〈e ∈ E : e ≤ p〉; E>:= 〈e ∈ E : e > p〉filterKruskal(E≤,T ,P)E>:= filter(E>,P)filterKruskal(E>,T ,P)

Function filter(E)return 〈{u, v} ∈ E : u, v are in different components of P〉

p

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 15: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Filter-Kruskal

Procedure filterKruskal(E ,T : Sequence of Edge,P : UnionFind)if m ≤ kruskalThreshold(n, |E |, |T |)

then kruskal(E ,T ,P)else

pick a pivot p ∈ EE≤:= 〈e ∈ E : e ≤ p〉; E>:= 〈e ∈ E : e > p〉filterKruskal(E≤,T ,P)E>:= filter(E>,P)filterKruskal(E>,T ,P)

Function filter(E)return 〈{u, v} ∈ E : u, v are in different components of P〉

p

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 16: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Filter-Kruskal

Procedure filterKruskal(E ,T : Sequence of Edge,P : UnionFind)if m ≤ kruskalThreshold(n, |E |, |T |)

then kruskal(E ,T ,P)else

pick a pivot p ∈ EE≤:= 〈e ∈ E : e ≤ p〉; E>:= 〈e ∈ E : e > p〉filterKruskal(E≤,T ,P)E>:= filter(E>,P)filterKruskal(E>,T ,P)

Function filter(E)return 〈{u, v} ∈ E : u, v are in different components of P〉

◮ For random edge weights

Time - O(m + n log n logmn)

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 17: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Filter-Kruskal , Parallelization

Procedure filterKruskal(E ,T : Sequence of Edge,P : UnionFind)if m ≤ kruskalThreshold(n, |E |, |T |)

then kruskal(E ,T ,P) parallelelse

pick a pivot p ∈ EE≤:= 〈e ∈ E : e ≤ p〉; E>:= 〈e ∈ E : e > p〉 parallelfilterKruskal(E≤,T ,P)E>:= filter(E>,P) parallelfilterKruskal(E>,T ,P)

Function filter(E)return 〈{u, v} ∈ E : u, v are in different components of P〉

◮ For random edge weights

Time - O(m + n log n logmn)

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 18: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Filter-Kruskal , ParallelizationUse STL algorithms from libstdc++ parallel mode

Procedure filterKruskal(E ,T : Sequence of Edge,P : UnionFind)if m ≤ kruskalThreshold(n, |E |, |T |)

then kruskal(E ,T ,P) sortelse

pick a pivot p ∈ EE≤:= 〈e ∈ E : e ≤ p〉; E>:= 〈e ∈ E : e > p〉 partitionfilterKruskal(E≤,T ,P)E>:= filter(E>,P) remove iffilterKruskal(E>,T ,P)

Function filter(E)return 〈{u, v} ∈ E : u, v are in different components of P〉

◮ For random edge weights

Time - O(m + n log n logmn)

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 19: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Getting rid of the log m/n? E.g., random graphs

2

2.5

3

3.5

4

4.5

32 64 27 28 29 210211212213214215216217218219220221222

com

paris

ons

/ edg

es m

= n

log(

n)

number of nodes n

filterKruskallog(log(x))

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 20: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Filter-Kruskal+

Function filter+(E ,T ,P)E ′:= 〈{u, v} ∈ E : u, v are in different components of P〉T ′:= 〈{u, v} ∈ E ′ : u or v have degree one in comp. graph 〉T := T ∪ T ′

return E ′ \ T ′

p

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 21: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Linear Time? E.g., random graphs

5

10

15

20

210 211 212 213 214 215 216 217 218 219 220 221 222 223 224

num

ber

of c

ompa

rison

s / n

number of nodes n

m=n m=2n m=4n

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 22: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Running Time: Random graph with 216 nodes

10

100

1000

1 4 16 64 256 1024

time

/ m [n

s]Kruskal

qKruskalKruskal8

filterKruskal+

filterKruskalfilterKruskal8

qJPpJP

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 23: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Conversion time, random graphs

10

100

1000

2 4 8 16 32 64 27 28 29 210211212213214215216

time

/ m [n

s]

number of edges m / number of nodes n

n=216, Edges -> Adj. Arrayn=222, Edges -> Adj. Arrayn=216, Adj. Array -> Edgesn=222, Adj. Array -> Edges

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 24: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Conclusions

filterKruskal improves on Kruskal and Jarnık–Prim◮ very simple◮ often faster◮ parallelizable◮ needs only edge sequence

Todo: More real world inputs, tight analysis,. . .

Open Problem: What about filterKruskal+◮ provably linear time?◮ scalable parallelization? Sequential component O

(

n0.6)

?◮ more efficient implementation

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 25: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Thank you!

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 26: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Random graph with 210 nodes

10

100

1 2 4 8 16 32 64 128 256

time

/ m [n

s]

KruskalqKruskalKruskal8filterKruskal+filterKruskalfilterKruskal8qJPpJP

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 27: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Random graph with 222 nodes

100

1000

1 2 4 8 16

time

/ m [n

s]

number of edges m / number of nodes n

KruskalqKruskalKruskal8filterKruskal+filterKruskalfilterKruskal8qJPpJP

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 28: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Random graph, n = 216, anti-Prim weights

10

100

1000

10000

100000

1 2 4 8 16 32 64 128 256

time

/ m [n

s]

number of edges m / number of nodes n

KruskalqKruskalKruskal8

qJPpJP

filterKruskal

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 29: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Random geometric graph with 216 nodes

10

100

4 8 16 32 64 128 256

time

/ m [n

s]

number of edges m / number of nodes n

KruskalqKruskalKruskal8filterKruskal+filterKruskalfilterKruskal8qJPpJP

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 30: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Lollipop graph with 210 nodes

10

100

1000

1 2 4 8 16 32 64 128

time

/ m [n

s]

number of edges m / number of nodes n

KruskalqKruskalKruskal8

filterKruskal+

filterKruskalfilterKruskal8

qJPpJP

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 31: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Lollipop graph with 216 nodes

10

100

1 4 16 64 256 1024

time

/ m [n

s]

number of edges m / number of nodes n

KruskalqKruskalKruskal8filterKruskal+filterKruskalfilterKruskal8qJPpJP

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 32: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Lollipop graph with 222 nodes

100

1000

1 2 4 8 16

time

/ m [n

s]

number of edges m / number of nodes n

KruskalqKruskalKruskal8filterKruskal+filterKruskalfilterKruskal8qJPpJP

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm

Page 33: Filter-Kruskal MST Algorithmalgo2.iti.kit.edu/documents/algo1-2014/alenex09filterkruskal.pdfMotivation What is the best (practical) algorithm for Minimum Spanning Trees? Kruskal? for

Image Segmentation Application

4 8 16tim

e / m

[ns]

m / nKruskal

qKruskalKruskal8

filterKruskal+

10

100

4 8 16

m / nfilterKruskal

filterKruskal8qJPpJP

Vitaly Osipov, Johannes Singler, Peter Sanders Filter-Kruskal MST Algorithm