Fast Node Overlap Removal Tim Dwyer¹ Kim Marriott¹ Peter J. Stuckey² ¹Monash University ²The University of Melbourne Victoria, Australia
Overlap removal by layout adjustment
“Mental Map” Model (Misue et al. 1995) Orthogonal Ordering Proximity Relations Topology
Past work – “Force” methods Force Scan Algorithm – Misue et al (Improved) Push Force Scan – Hayashi et al Others – Huang and Lai 2002, Li et al Derivation of “Overlap Force” by Misue et al. 1995
Past work – “Cluster busting” Voronoi “Cluster Busting” – Lyons et al Applied to node overlap removal by Gansner and North 1998 Voronoi Diagram Overlap removal by neato (
Constrained optimization approach He and Marriott 1998 Cost of modifying original layout: Non-overlap constraints: (x 0,y 0 )
Quadratic programming heuristic 1. Generate horizontal no-overlap constraints 3. Generate vertical no-overlap constraints 2. Minimise subject to 4. Minimise subject to
Our contribution New constraint generation algorithm – O(n) constraints – O(n log n) time New solver algorithm – High quality near optimal solution O(n log n) time – Optimal solution with simple extension
d Generating non-overlap constraints Sweep algorithm c a b a c b b a c b d Vertical sweep to create horizontal constraints
d Generating non-overlap constraints Sweep algorithm c a b Vertical sweep to create horizontal constraints If nodes overlap more horizontally than vertically skip Remaining overlaps handled by vertical constraints
Generating non-overlap constraints Two strategies for checking neighbours 1. Immediate neighbours only Two strategies for checking neighbours 1. Immediate neighbours only 2. List of all overlapping neighbours
Generating non-overlap constraints Open list uses red-black tree – O(log n) insert, remove, next_left, next_right operations Up to k·n constraints in x -dimension, 2n constraints in y -dimension O(n log n) time assuming k is bounded
Solving separation constraints Objective function: minimize subject to C where each c ∈ C has form left(c) + gap(c) ≤ right(c) where gap(c) = ½ (left(c).size + right(c).size) Separation constraints form DAG over variables b d a c e a b c d e
Approximate feasible solution Create “blocks” by merging across violated constraints b d a c b d a c b d a c
Approximate feasible solution May need to merge backwards b d a c b d a c b d a c b d a c
Merge complexity Significant costs: – Initial total order O(|V|+|C|) by depth-first search – Maintaining block in and out constraint priority queues We use pairing heaps: – O(1) insert, findMax, merge – O(log n) deleteMax (amortised) – Cost of copying variables between blocks We always copy the smaller block to the larger We assume: – |C| prop. to k|V| – bounded k O(n log n).
Approximate feasible solution Solution after merging may not be optimal b d a c b d a c b d a c b d a c
Optimal solution Need to “split” blocks to improve solution Within blocks we have a tree of “active” constraints b d a c Do the sub-blocks on either side of each constraint want to move apart?
Optimal solution By placing blocks at their weighted average position we minimize such that So summing partial derivatives to one side of each constraint c gives us the Lagrange multiplier λ c λ c < 0 means we can split across c
Optimal solution Splitting may trigger further merging in each direction b d a c b d a c Optimal solution when for all active c, λ c ≥ 0
Results
size Running Time (seconds) SAT SOL QP SAT_OO SOL_OO QP_OO FSA 2000