1 minimum spanning trees - kitalgo2.iti.kit.edu/sanders/courses/algen08/graph.pdfmst: overview...
TRANSCRIPT
Sanders: Algorithm Engineering4. Juli 2007 1
1 Minimum Spanning Trees
undirected GraphG = (V,E).
nodesV , n = |V |, e.g.,V = 1, . . . ,nedgese ∈ E, m = |E|, two-element subsets ofV .
edge weightc(e), c(e) ∈ R+.
G is connected, i.e.,∃ path between any two nodes.4
2
3
1
792
5
Find a tree(V,T ) with minimumweight∑e∈T c(e) that connects
all nodes.
Sanders: Algorithm Engineering4. Juli 2007 2
MST: Overview
Basics: Edge property and cycle property
Jarník-Prim Algorithm
Kruskals Algorithm
Some tricks and comparison
Advanced algorithms using the cycle property
External MST
Applications: Clustering; subroutine in combinatorial
optimization, e.g., Held-Karp lower bound for TSP. Challenging
real world instances???
Anyway: almost ideal“fruit fly” problem
Sanders: Algorithm Engineering4. Juli 2007 3
Selecting and Discarding MST Edges
The Cut Property
For anyS ⊂V consider the cut edges
C = u,v ∈ E : u ∈ S,v ∈V \SThelightestedge inC can be used in an MST. 4
2
3
1
72
59
The Cycle Property
Theheaviestedge on a cycle is not needed for an MST4
2
3
1
792
5
Sanders: Algorithm Engineering4. Juli 2007 4
The Jarník-Prim Algorithm [Jarník 1930, Prim
1957]
Idea: grow a tree
T := /0S:= s for arbitrary start nodes
repeat n−1 times
find (u,v) fulfilling the cut property forS
S:= S∪vT := T ∪(u,v)
4
2
3
1
792
5
Sanders: Algorithm Engineering4. Juli 2007 5
Implementation Using Priority Queues
Function jpMST(V, E, w) : Setof Edge
dist=[∞, . . . ,∞] : Array [1..n]// dist[v] is distance ofv from the tree
pred: Array of Edge// pred[v] is shortest edge betweenS andv
q : PriorityQueueof Node withdist[·] as priority
dist[s] := 0; q.insert(s) for anys ∈V
for i := 1 to n−1 do dou := q.deleteMin() // new node forS
dist[u] := 0
foreach (u,v) ∈ E doif c((u,v)) < dist[v] then
dist[v] := c((u,v)); pred[v] := (u,v)
if v ∈ q then q.decreaseKey(v) elseq.insert(v)
return pred[v] : v ∈V \s
4
2
3
1
792
5
Sanders: Algorithm Engineering4. Juli 2007 6
Graph Representation for Jarník-Prim
We need node→ incident edges
4
2
3
1
792
5
m 8=m+1
V
E
1 3 5 7 91 n 5=n+1
4 1 3 2 4 1 3c 9 5 7 7 2 2 95
2
1
+ fast (cache efficient)
+ more compact than linked lists
− difficult to change
− Edges are stored twice
Sanders: Algorithm Engineering4. Juli 2007 7
Analysis
O (m+n) time outside priority queue
n deleteMin (timeO (n logn))
O (m) decreaseKey (timeO (1) amortized)
O (m+n logn) usingFibonacci Heaps
practical implementation using simplerpairing heaps.
But analysis is still partlyopen!
Sanders: Algorithm Engineering4. Juli 2007 8
Kruskal’s Algorithm [1956]
T := /0 // subforest of the MST
foreach (u,v) ∈ E in ascending order of weightdoif u andv are indifferent subtrees ofT then
T := T ∪(u,v) // Join two subtrees
return T
Sanders: Algorithm Engineering4. Juli 2007 9
The Union-Find Data Structure
ClassUnionFind(n : N) // Maintain a partition of 1..n
parent=[n+1, . . . ,n+1] : Array [1..n] of 1..n+⌈logn⌉Function find(i : 1..n) : 1..n
if parent[i] > n then return i
elsei′ := find(parent[i])
parent[i] := i′
return i′
Procedure link(i, j : 1..n)
asserti and j are leaders of different subsets
if parent[i] < parent[ j] then parent[i] := j
else ifparent[i] > parent[ j] then parent[ j] := i
elseparent[ j] := i; parent[i]++ // nextgeneration
Procedureunion(i, j) if find(i) 6= find( j) then link(find(i), find( j))
3 421
556 1
5 6
rank
1
rank
2
4
1 2
3
parent:
Sanders: Algorithm Engineering4. Juli 2007 10
Kruskal Using Union Find
T : UnionFind(n)
sortE in ascending order of weight
kruskal(E)
Procedurekruskal(E)
foreach (u,v) ∈ E dou′:= T.find(u)
v′:= T.find(v)
if u′ 6= v′ thenoutput(u,v)
T.link(u′,v′)
Sanders: Algorithm Engineering4. Juli 2007 11
Graph Representation for Kruskal
Just an edge sequence (array) !
+ very fast (cache efficient)
+ Edges are stored only once
more compact than adjacency array
Sanders: Algorithm Engineering4. Juli 2007 12
Analysis
O (sort(m)+mα(m,n)) = O (m logm) whereα is the inverse
Ackermann function
Sanders: Algorithm Engineering4. Juli 2007 13
Kruskal versus Jarník-Prim I
Kruskal wins for very sparse graphs
Prim seems to win for denser graphs
Switching point isunclear
– How is the inputrepresented?
– How manydecreaseKeys are performed by JP?
(average case:n log mn [Noshita 85])
– Experimental studies are quiteold [?],
useslow graphrepresentationfor both algs,
andartificial inputs
Sanders: Algorithm Engineering4. Juli 2007 14
Better Version For Dense Graphs ?
ProcedurequickKruskal(E : Sequence of Edge)
if m ≤ βn then kruskal(E) // for some constantβelse
pick apivot p∈ E
E≤:= 〈e ∈ E : e ≤ E〉 // partitioning a la
E>:= 〈e ∈ E : e > E〉 // quicksort
quickKruskal(E≤)
E ′>:= filter(E>)
quickKruskal(E ′>)
Function filter(E)
make sure that leader[i] gives the leader of nodei // O (n)!
return 〈(u,v) ∈ E : leader[u] 6= leader[v]〉
Sanders: Algorithm Engineering4. Juli 2007 15
1.1 Attempted Average-Case Analysis
Assumedifferent random edge weights, arbitrary graphs
Assume pivotp has median weight
Let T (m) denote the expected execution time form edges
m ≤ βn: O (n logn)
Partitioning, Filtering:O (m+n)
m > βn: T (m) = Ω(m)+T(m/2)+T(2n)[Chan 98]
Solves toO(
m+n log(n) · logmn
)
≤ O (m+n log(n) · log logn)
Open Problem: I know of no graph family with
T (n) = ω(m+n log(n))
Sanders: Algorithm Engineering4. Juli 2007 16
Kruskal versus Jarník-Prim II
Things are even less clear.
Kruskal may be better even for dense graphs
Experiments would be interesting.
Even for artificial graphs.
Sanders: Algorithm Engineering4. Juli 2007 17
1.2 Filtering by Sampling Rather Than Sorting
R:= random sample ofr edges fromE
F :=MST(R) // Wlog assume thatF spansV
L:= /0 // “light edges” with respect toR
foreach e ∈ E do // Filter
C := the unique cycle ine∪F
if e is not heaviest inC thenL:= L∪e
return MST((L∪F))
Sanders: Algorithm Engineering4. Juli 2007 18
1.2.1 Analysis
[Chan 98, KKK 95]
Observation:e ∈ L only if e ∈ MST(R∪e).(Otherwisee could replace some heavier edge inF).
Lemma 1. E[|L∪F|] ≤ mnr
Sanders: Algorithm Engineering4. Juli 2007 19
MST Verification by Interval Maxima
Number the nodes by the order they were added to the MST
by Prim’s algorithm.
wi = weight of the edge that inserted nodei.
Largest weight on path(u,v) = maxw j‖u < j ≤ v.
14
3
5
8
0 1 84 3 5
14
8
3
5
0 1 4 3 5 8
Sanders: Algorithm Engineering4. Juli 2007 20
Interval Maxima
Preprocessing: build
n logn size array
PreSuf.
Level 0
Level 3
Level 2
Level 1
88 56 30 56 52 74 76
88 88 30 65 65 52 52 77 77 74 74 76 80
98 98 98 15 65 75 77 77 77 41 62 76 80
98 98 75 75 75 56 52 77 77 77 77 77 80
98 15 65 75 34 77 41 62 80
757598
98 75 74
98 3498
2 6To find maxa[i.. j]:
Find the level of the LCA: ℓ = ⌊log2(i⊕ j)⌋.
Returnmax(PreSuf[ℓ][i],PreSuf[ℓ][ j]).
Example: 2⊕6 = 010⊕110= 100:ℓ = 2
Sanders: Algorithm Engineering4. Juli 2007 21
A Simple Filter Based Algorithm
Chooser =√
mn.
We get expected time
TPrim(√
mn)+O (n logn+m)+TPrim( mn√mn) = O (n logn+m)
The constant factor in front of them is very small.
Sanders: Algorithm Engineering4. Juli 2007 22
Results10 000 nodes, SUN-Fire-15000, 900 MHz UltraSPARC-III+
Worst Case Graph
0
100
200
300
400
500
600
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Tim
e pe
r ed
ge [n
s]
Edge density
PrimFilter
Sanders: Algorithm Engineering4. Juli 2007 23
Results10 000 nodes, SUN-Fire-15000, 900 MHz UltraSPARC-III+
Random Graph
0
100
200
300
400
500
600
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Tim
e pe
r ed
ge [n
s]
Edge density
PrimFilter
Sanders: Algorithm Engineering4. Juli 2007 24
Results10 000 nodes,
NEC SX-5Vector Machine
“worst case”
0
200
400
600
800
1000
1200
1400
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Tim
e pe
r ed
ge [n
s]
Edge density
Prim (Scalar)I-Max (Scalar)
Prim (Vectorized)I-Max (Vectorized)
Sanders: Algorithm Engineering4. Juli 2007 25
Edge Contraction
Let u,v denote an MST edge.
Eliminatev:
forall (w,v) ∈ E doE := E \ (w,v)∪(w,u) // but remember orignal terminals
4
1
4 3
1
792
59
2
7 (was 2,3)2
3
Sanders: Algorithm Engineering4. Juli 2007 26
Boruvka’s Node Reduction Algorithm
For each node find the lightest incident edge.
Include them into the MST (cut property)
contract these edges,
TimeO (m)
At least halves the number of remaining nodes
4
1
5
792
5 2
33
Sanders: Algorithm Engineering4. Juli 2007 27
External Implementation of Boruvka’s Reduction
1. SortE by first incident vertex. (16m/B I/Os.)
2. Scan the result and output the lightest edge(C(v),v) incident to each vertexv. The graphG′
d = (V,L = (C(v),v) : v ∈V).
3. Remove one of the cycle-edges in each tree: Sort the edges(u,v) in L lexicographically by(min(u,v),max(u,v)).(8n/B I/Os.) ScanL. When two antiparallel edges(u,v), (v,u) are found, remove(u,v). Now v is the root of a tree andshould become the representative for all nodes in its tree.
4. Make two copies of each edge inL — anA-copy and aB-copy.
5. Sort the resulting list of 2n edges such thatA-copies are sorted by their first incident node andB-copies are sorted bytheir second incident node. (16n/B I/Os.) Scan the resulting list and form objects consisting of oneA-edge(u,v)followed by consecutiveB-edges of the form(v,w).
6. Sort the resulting object list by increasing weight of theA-edge generating listL′ . (16n/B I/Os.)
7. Set up a priority queueQ storing triples(c,v,v′) of edge weights, node-ids, and their new name.Q initialized byinserting triples(c,w,v) for B-vertices(v,w) that are not preceded by anA-edge of the form(u,v).ScanL′ . For anA-edge(u,v) with weightc in L′ find a matching entry(c,v,v′) and output the pair(v,v′) recording thatv′ is the newname ofv. Enqueue triples(c′,w,v′) for all B-edges of the form(v,w) associated with theA-edge(u,v). (6n/B I/Os.)
8. Sort the resulting renaming sequenceR by their first component. (4n/B I/Os.)
9. Scan the edge listE andR simultaneously and rename the first component of each edge inE. This costs 8m/B I/Os forreading the sorted list of 2m 4-tuples and we have to account another 8m/B I/Os for explicitly storingE in in step 1.
10. SortE by the second component. (16m/B I/Os.)
11. ScanE andR renaming the second component of each edge. (4n/B I/Os).
Sanders: Algorithm Engineering4. Juli 2007 28
1.3 Cost of reducing the number of nodes by 2
need 6 pipelined sorters+ priority queue
three different data types (edges, PQ entries, renaming
pairs)
(48m+54n)/B I/Os to halve the node set
Sanders: Algorithm Engineering4. Juli 2007 29
1.4 Simpler and Faster Node Reduction
for i := n downto n′ +1 dopick a random nodev
find thelightestedge(u,v) out of v and output it
contract(u,v)
E[degree(v)] ≤ 2m/i
∑n′<i≤n
2mi
= 2m
(
∑0<i≤n
1i− ∑
0<i≤n′
1i
)
≈2m(lnn− lnn′)= 2m lnnn′
4
1
4 3
1
4
1
792
59
2
7 (was 2,3)
output 2,3
2
3 7output 1,2
5
9 2 (was 4,3)
Sanders: Algorithm Engineering4. Juli 2007 30
1.5 Randomized Linear Time Algorithm
1. Factor 8 node reduction (3× Boruvka or sweep algorithm)
O (m+n).
2. R ⇐ m/2 random edges.O (m+n).
3. F ⇐ MST (R) [Recursively].
4. Find light edgesL (edge reduction). O (m+n)
E[|L|] ≤ mn/8m/2 = n/4.
5. T ⇐ MST (L∪F) [Recursively].
T (n,m) ≤ T (n/8,m/2)+T (n/8,n/4)+ c(n+m)
T (n,m) ≤ 2c(n+m) fulfills this recurrence.
Sanders: Algorithm Engineering4. Juli 2007 31
1.6 External MSTs
Semiexternal Algorithms
Assumen ≤ M−2B:
runKruskal’s algorithmusingexternal sorting
Sanders: Algorithm Engineering4. Juli 2007 32
Streaming MSTs
If M is yet a bit larger we can even do it withm/B I/Os:
T := /0 // currentapproximation of MST
while there are any unprocessed edgesdoload anyΘ(M) unprocessed edgesE ′
T := MST(T ∪E ′) // for any internal MST alg.
Corollary: we can do it withlinearexpectedinternal work
Disadvantages to Kruskal:
Slower in practice
Smaller max.n
Sanders: Algorithm Engineering4. Juli 2007 33
General External MST
while n > M−2B doperform some node reduction
use semi-external Kruskal
n’<M
m/nn
Theory:O (sort(m)) expected I/Os by externalizing the linear
time algorithm.
(i.e., node reduction+ edge reduction)
Sanders: Algorithm Engineering4. Juli 2007 34
External Implementation I: Sweeping
π : random permutationV →V
sortedges(u,v) by min(π(u),π(v))
for i := n downto n′ +1 dopick the nodev with π(v) = i
find thelightestedge(u,v) out of v and output it
contract(u,v)
u v...
relink
relink
outputsweep line
Sanders: Algorithm Engineering4. Juli 2007 35
Fast Random Permutations (no I/O)
π : 0..n−1→ 0..n−1
Feistelpermutations:
assume nodei can be represented as a pair(a,b) with
i = a+b√
n
π f ((a,b)) = (b,a+ f (b) mod√
n) for random mapping
f : 0..√
n−1→ 0..√
n−1
√
n is small implementf as a lookup table (forn = 232
needonly 128 kB)
π(x) = π f (πg(πh(πl(x)))) is good even for cryptography
we useπ(x) = π f (πg(x)))
Sanders: Algorithm Engineering4. Juli 2007 36
External Implementation I: Sweeping
π : random permutationV →V
sortedges(u,v) by min(π(u),π(v))
for i := n downto n′ +1 dopick the nodev with π(v) = i
find thelightestedge(u,v) out of v and output it
contract(u,v)
u v...
relink
relink
outputsweep line
Problem: how to implement relinking?
Sanders: Algorithm Engineering4. Juli 2007 37
Relinking Using Priority Queues
Q: priority queue // Order:max node, thenmin edge weight
foreach (u,v ,c) ∈ E do Q.insert((π(u),π(v) ,c,u,v))current :=n+1
loop(u,v ,c,u0,v0) := Q.deleteMin()
if current6= maxu,vthenif current= M +1 then returnoutputu0,v0 ,c
current := maxu,vconnect := minu,v
elseQ.insert((minu,v ,connect ,c,u0,v0))
≈ sort(10m ln nM ) I/Os with opt. priority queues [Sanders 00]
Problem:Computebound
u v...
relink
relink
outputsweep line
Sanders: Algorithm Engineering4. Juli 2007 38
Sweeping with linear internal work
Assumem = O(
M2/B)
k = Θ(M/B) external bucketswith n/k nodes each
M nodes for last“semiexternal”bucket
split currentbucket into
internalbuckets for eachnode
Sweeping:
Scan current internal bucket twice:
1. Find minimum
2. Relink
New external bucket: scan and put ininternalbuckets
Large degree nodes: move tosemiexternalbucket
...
externalexternal
internal
current semiexternal
Sanders: Algorithm Engineering4. Juli 2007 39
Experiments
Instances from “classical” MST study[Moret Shapiro 1994]
sparse random graphs
random geometric graphs
grids
O (sort(m)) I/Os
for planar graphs by
removing parallel edges!
Other instances are rather dense
or designed to fool specific algorithms.
PCI−Busses
Controller
Channels
2x64x66 Mb/s
4 Threads2x Xeon
128
E75001 GBDDRRAM
8x45
4x2x100MB/s
400x64 Mb/s
8x80GBMB/s
Chipset
Intel
Sanders: Algorithm Engineering4. Juli 2007 40
m ≈ 2n
1
2
3
4
5
6
5 10 20 40 80 160 320 640 1280 2560
t / m
[µs]
m / 1 000 000
KruskalPrim
randomgeometric
grid
Sanders: Algorithm Engineering4. Juli 2007 41
m ≈ 4n
1
2
3
4
5
6
5 10 20 40 80 160 320 640 1280 2560
t / m
[µs]
m / 1 000 000
KruskalPrim
randomgeometric
Sanders: Algorithm Engineering4. Juli 2007 42
m ≈ 8n
1
2
3
4
5
6
5 10 20 40 80 160 320 640 1280 2560
t / m
[µs]
m / 1 000 000
KruskalPrim
randomgeometric
Sanders: Algorithm Engineering4. Juli 2007 43
MST Summary
Edge reduction helps for very dense, “hard” graphs
A fast and simplenode reductionalgorithm:
(48m+54n)/B vs. ln(2) ·16m/B ≈ 11.1m/B I/Os for
2-reduction
4× less I/Os than previous algorithms
Refined semiexternal MST, use asbase case
Simple pseudo random permutations (no I/Os)
A fast implementation
Experiments with huge graphs (up ton = 4·109 nodes)
External MST is feasible
Sanders: Algorithm Engineering4. Juli 2007 44
Open Problems
New experiments for (improved) Kruskal versus
Jarník-Prim
Realistic (huge) inputs
Parallel external algorithms
Implementations for other graph problems
Sanders: Algorithm Engineering4. Juli 2007 45
Conclusions
Even fundamental, “simple” algorithmic problems
still raise interesting questions
Implementation and experiments are important and were
neglected by parts of the algorithms community
Theoryan (at least) equally important, essential component
of the algorithm design process
Sanders: Algorithm Engineering4. Juli 2007 46
More Algorithm Engineering on Graphs
Count triangles in very large graphs. Interesting as a
measure of clusteredness. (Cooperation with AG Wagner)
External BFS (Master thesis Deepak Ajwani)
Maximum flows: Is the theoretical best algorithm any
good? (Jein)
Approximate max. weighted matching (Studienarbeit Jens
Maue)
Sanders: Algorithm Engineering4. Juli 2007 47
Maximal Flows
Theory: O(
mΛ log(n2/m) logU)
binary blocking
flow-algorithm mitΛ = minm1/2,n2/3 [Goldberg-Rao-97].
Problem: best case≈ worst case
[Hagerup Sanders Träff WAE 98]:
Implementable generalization
best case≪ worst case
best algorithms for some “difficult” instances
Sanders: Algorithm Engineering4. Juli 2007 48
Ergebnis
u v...
relink
relink
outputsweep line
Einfach extern implementierbar
n′ = M semiexterner Kruskal Algorithmus
InsgesamtO(
sort(mln nm))
erwartete I/Os
Für realistische Eingaben mindestens4× besserals bisher
bekannte Algorithmen
Implementierung in<stxxl> mit bis zu96 GBytegro/3en
Graphen läuft „über Nacht“
Sanders: Algorithm Engineering4. Juli 2007 49
Presenting Data from Experiments in
Algorithmics
Restrictions
black and white easy and cheap printing
2D (stay tuned)
no animation
no realism desired
Sanders: Algorithm Engineering4. Juli 2007 50
Not here
ensuring reproducibility
describing the setup
finding sources of measurement errors
reducing measuremnt errors (averaging, median,unloaded
machine. . . )
measurements in thecreativephase of experimental
algorithmics.
Sanders: Algorithm Engineering4. Juli 2007 51
The Starting Point
(Several) Algorithm(s)
A few quantities to be measured: time, space, solution
quality, comparisons, cache faults,. . . There may also be
measurement errors.
An unlimited number of potential inputs. condense to a
few characteristic ones (size,|V |, |E|, . . . or problem
instances from applications)
Usually there is not a lack but anabundanceof data6= many
other sciences
Sanders: Algorithm Engineering4. Juli 2007 52
The Process
Waterfall model?
1. Design
2. Measurement
3. Interpretation
Perhaps the paper should at least look like that.
Sanders: Algorithm Engineering4. Juli 2007 53
The Process
Eventually stop asking questions (Advisors/Referees listen
!)
build measurement tools
automate (re)measurements
Choice of Experments driven by risk and opportunity
Distinguish mode
explorative: many different parameter settings, interactive,
short turnaround times
consolidating:many large instances, standardized
measurement conditions, batch mode, many machines
Sanders: Algorithm Engineering4. Juli 2007 54
Of Risks and Opportunities
Example: Hypothesis= my algorithm is the best
big risk: untried main competitor
small risk: tuning of a subroutine that takes 20 % of the time.
big opportunity: use algorithm for a new application
new input instances
Sanders: Algorithm Engineering4. Juli 2007 55
Basic Principles
Minimize nondata ink
(form follows function, not a beauty contest,. . . )
Letter size≈ surrounding text
Avoid clutter and overwhelming complexity
Avoid boredom (too little data perm2.
Make the conclusions evident
Sanders: Algorithm Engineering4. Juli 2007 56
Tables
+ easy
− easy overuse
+ accurate values (6= 3D)
+ more compact than bar chart
+ good for unrelated instances (e.g. solution quality)
− boring
− no visual processing
rule of thumb that “tables usually outperform a graph for smalldata sets of 20 numbers or less”[Tufte 83]
Curves in main paper, tables in appendix?
Sanders: Algorithm Engineering4. Juli 2007 57
2D Figures
default:x = input size, y = f (execution time)
Sanders: Algorithm Engineering4. Juli 2007 58
x AxisChoose unit to eliminate a parameter?
1
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
10 100 1000 10000 100000 1e+06
impr
ovem
ent m
in(T
* 1,T
* ∞)/
T* *
k/t0
P=64P=1024P=16384
lengthk fractional tree broadcasting. latencyt0 + k
Sanders: Algorithm Engineering4. Juli 2007 59
x Axislogarithmic scale?
1
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
10 100 1000 10000 100000 1e+06
impr
ovem
ent m
in(T
* 1,T
* ∞)/
T* *
k/t0
P=64P=1024P=16384
yes if x range is wide
Sanders: Algorithm Engineering4. Juli 2007 60
x Axislogarithmic scale, powers of two (or
√2)
0
50
100
150
1024 4096 16384 65536 218 220 222 223
(T(d
elet
eMin
) +
T(in
sert
))/lo
g N
[ns
]
N
bottom up binary heapbottom up aligned 4-ary heapsequence heap
with tic marks, (plus a few small ones)
Sanders: Algorithm Engineering4. Juli 2007 61
gnuplotset xlabel "N"
set ylabel "(time per operation)/log N [ns]"
set xtics (256, 1024, 4096, 16384, 65536, "2^18" 262144,
set size 0.66, 0.33
set logscale x 2
set data style linespoints
set key left
set terminal postscript portrait enhanced 10
set output "r10000timenew.eps"
plot [1024:10000000][0:220]\
"h2r10000new.log" using 1:3 title "bottom up binary heap"
"h4r10000new.log" using 1:3 title "bottom up aligned 4-ary
"knr10000new.log" using 1:3 title "sequence heap" with linespoints
Sanders: Algorithm Engineering4. Juli 2007 62
Data File256 703.125 87.8906
512 729.167 81.0185
1024 768.229 76.8229
2048 830.078 75.4616
4096 846.354 70.5295
8192 878.906 67.6082
16384 915.527 65.3948
32768 925.7 61.7133
65536 946.045 59.1278
131072 971.476 57.1457
262144 1009.62 56.0902
524288 1035.69 54.51
1048576 1055.08 52.7541
2097152 1113.73 53.0349
4194304 1150.29 52.2859
8388608 1172.62 50.9836
Sanders: Algorithm Engineering4. Juli 2007 63
x Axislinear scale for ratios or small ranges (#processor,. . . )
0
100
200
300
400
500
600
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Tim
e pe
r ed
ge [n
s]
Edge density
PrimFilter
Sanders: Algorithm Engineering4. Juli 2007 64
x AxisAn exotic scale: arrival rate 1− ε of saturation point
1
2
3
4
5
6
7
8
2 4 6 8 10 12 14 16 18 20
aver
age
dela
y
1/ε
nonredundantmirrorring shortest queuering with matchingshortest queue
Sanders: Algorithm Engineering4. Juli 2007 65
y AxisAvoid log scale ! scale such that theory gives≈ horizontal lines
0
50
100
150
1024 4096 16384 65536 218 220 222 223
(T(d
elet
eMin
) +
T(in
sert
))/lo
g N
[ns
]
N
bottom up binary heapbottom up aligned 4-ary heapsequence heap
but give easy interpretation of the scaling function
Sanders: Algorithm Engineering4. Juli 2007 66
y Axisgive units
0
50
100
150
1024 4096 16384 65536 218 220 222 223
(T(d
elet
eMin
) +
T(in
sert
))/lo
g N
[ns
]
N
bottom up binary heapbottom up aligned 4-ary heapsequence heap
Sanders: Algorithm Engineering4. Juli 2007 67
y Axisstart from 0if this does not waste too much space
0
50
100
150
1024 4096 16384 65536 218 220 222 223
(T(d
elet
eMin
) +
T(in
sert
))/lo
g N
[ns
]
N
bottom up binary heapbottom up aligned 4-ary heapsequence heap
you may assume readers to be out of Kindergarten
Sanders: Algorithm Engineering4. Juli 2007 68
y Axisclip outclassed algorithms
1
2
3
4
5
6
7
8
2 4 6 8 10 12 14 16 18 20
aver
age
dela
y
1/ε
nonredundantmirrorring shortest queuering with matchingshortest queue
Sanders: Algorithm Engineering4. Juli 2007 69
y Axisvertical size: weighted average of the slants of the line segments
in the figure should be about45[Cleveland 94]
1
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
10 100 1000 10000 100000 1e+06
impr
ovem
ent m
in(T
* 1,T
* ∞)/
T* *
k/t0
P=64P=1024P=16384
Sanders: Algorithm Engineering4. Juli 2007 70
y Axisgraph a bit wider than high, e.g., golden ratio[Tufte 83]
1
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
10 100 1000 10000 100000 1e+06
impr
ovem
ent m
in(T
* 1,T
* ∞)/
T* *
k/t0
P=64P=1024P=16384
Sanders: Algorithm Engineering4. Juli 2007 71
Multiple Curves
+ high information density
+ better than 3D (reading off values)
− Easily overdone
≤ 7 smoothcurves
Sanders: Algorithm Engineering4. Juli 2007 72
Reducing the Number of Curves
use ratios
1
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
10 100 1000 10000 100000 1e+06
impr
ovem
ent m
in(T
* 1,T
* ∞)/
T* *
k/t0
P=64P=1024P=16384
Sanders: Algorithm Engineering4. Juli 2007 73
Reducing the Number of Curves
omit curves
outclassed algorithms (for case shown)
equivalent algorithms (for case shown)
Sanders: Algorithm Engineering4. Juli 2007 74
Reducing the Number of Curves
split into two graphs
1
2
3
4
5
6
7
8
2 4 6 8 10 12 14 16 18 20
aver
age
dela
y
1/ε
nonredundantmirrorring shortest queuering with matchingshortest queue
Sanders: Algorithm Engineering4. Juli 2007 75
Reducing the Number of Curvessplit into two graphs
1
1.2
1.4
1.6
1.8
2
2 4 6 8 10 12 14 16 18 20
aver
age
dela
y
1/ε
shortest queuehybridlazy sharingmatching
Sanders: Algorithm Engineering4. Juli 2007 76
Keeping Curves apart: log y scale
0
200
400
600
800
1000
1200
1400
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Tim
e pe
r ed
ge [n
s]
Edge density
Prim (Scalar)I-Max (Scalar)
Prim (Vectorized)I-Max (Vectorized)
Sanders: Algorithm Engineering4. Juli 2007 77
Keeping Curves apart: smoothing
1
2
3
4
5
6
7
8
2 4 6 8 10 12 14 16 18 20
aver
age
dela
y
1/ε
nonredundantmirrorring shortest queuering with matchingshortest queue
Sanders: Algorithm Engineering4. Juli 2007 78
Keys
1
2
3
4
5
6
7
8
2 4 6 8 10 12 14 16 18 20
aver
age
dela
y
1/ε
nonredundantmirrorring shortest queuering with matchingshortest queue
same order as curves
Sanders: Algorithm Engineering4. Juli 2007 79
Keysplace in white space
1
1.2
1.4
1.6
1.8
2
2 4 6 8 10 12 14 16 18 20
aver
age
dela
y
1/ε
shortest queuehybridlazy sharingmatching
consistent in different figures
Sanders: Algorithm Engineering4. Juli 2007 80
Todsünden1. forget explaining theaxes
2. connecting unrelatedpoints
by lines
3. mindless use/overinterpretation
of double-log plot
4. crypticabbreviations
5. microscopiclettering
6. excessivecomplexity
7. pie charts
Sanders: Algorithm Engineering4. Juli 2007 81
Arranging Instances
bar charts
stack components of execution time
careful with shading
postprocessing
phase 2
phase 1
preprocessing
Sanders: Algorithm Engineering4. Juli 2007 82
Arranging Instancesscatter plots
1
10
100
1000
1 10 100 1000
n / a
ctiv
e se
t siz
e
n/m
Sanders: Algorithm Engineering4. Juli 2007 83
Measurements and Connections
straight line between points do not imply claim of linear
interpolation
different with higher order curves
no points imply an even stronger claim. Good for very
dense smooth measurements.
Sanders: Algorithm Engineering4. Juli 2007 84
Grids and Ticks
Avoid grids or make it light gray
usually round numbers for tic marks!
sometimes plot important values on the axis
usually avoidable for randomized algorithms. median6=average,. . .
Sanders: Algorithm Engineering4. Juli 2007 85
0
5
10
15
20
32 1024 32768n
Measurementlog n + log ln n + 1log n
errors maynot be of statistical nature!
Sanders: Algorithm Engineering4. Juli 2007 86
3D
− you cannot read off absolute values
− interesting parts may be hidden
− only one surface
+ good impression of shape
Sanders: Algorithm Engineering4. Juli 2007 87
Caption
what is displayed
how has the date been obtained
surrounding text has more.
Sanders: Algorithm Engineering4. Juli 2007 88
Check List
Should the experimental setup from the exploratory phase
be redesigned to increase conciseness or accuracy?
What parameters should be varied? What variables should
be measured? How are parameters chosen that cannot be
varied?
Can tables be converted into curves, bar charts, scatter plots
or any other useful graphics?
Should tables be added in an appendix or on a web page?
Should a 3D-plot be replaced by collections of 2D-curves?
Can we reduce the number of curves to be displayed?
How many figures are needed?
Sanders: Algorithm Engineering4. Juli 2007 89
Scale thex-axis to makey-values independent of some
parameters?
Should thex-axis have a logarithmic scale? If so, do the
x-values used for measuring have the same basis as the tick
marks?
Should thex-axis be transformed to magnify interesting
subranges?
Is the range ofx-values adequate?
Do we have measurements for the rightx-values, i.e.,
nowhere too dense or too sparse?
Should they-axis be transformed to make the interesting
part of the data more visible?
Should they-axis have a logarithmic scale?
Sanders: Algorithm Engineering4. Juli 2007 90
Is it be misleading to start they-range at the smallest
measured value?
Clip the range ofy-values to exclude useless parts of
curves?
Can we use banking to 45?
Are all curves sufficiently well separated?
Can noise be reduced using more accurate measurements?
Are error bars needed? If so, what should they indicate?
Remember that measurement errors are usuallynot random
variables.
Use points to indicate for whichx-values actual data is
available.
Connect points belonging to the same curve.
Sanders: Algorithm Engineering4. Juli 2007 91
Only use splines for connecting points if interpolation is
sensible.
Do not connect points belonging to unrelated problem
instances.
Use different point and line styles for different curves.
Use the same styles for corresponding curves in different
graphs.
Place labels defining point and line styles in the right order
and without concealing the curves.
Captions should make figures self contained.
Give enough information to make experiments
reproducible.