Convex hulls in R
3S´ andor Kisfaludi-Bak
Computaional Geometry Summer semester 2020
Overview
• Computaitonal model, input and output
Overview
• Computaitonal model, input and output
• Preparata–Hong divide&conquer algorithm (1977)
Overview
• Computaitonal model, input and output
• Preparata–Hong divide&conquer algorithm (1977)
• Clarkson–Shor randomized incremental construction (1989)
Overview
• Computaitonal model, input and output
• Chan’s algorithm in R
3(1996)
• Preparata–Hong divide&conquer algorithm (1977)
• Clarkson–Shor randomized incremental construction (1989)
Overview
• Computaitonal model, input and output
• Chan’s algorithm in R
3(1996)
• Preparata–Hong divide&conquer algorithm (1977)
• Clarkson–Shor randomized incremental construction (1989)
• Higher-dimensional convex hulls
Convex hull: input and output
Input: Points with coordianate pairs (x, y, z ) ∈ R
3(e, π, 1), (3, 3, √
5), (2.95, 2.9, 2
1.2), ( √
11, 3.05, √
33)
Convex hull: input and output
Input: Points with coordianate pairs (x, y, z ) ∈ R
3(e, π, 1), (3, 3, √
5), (2.95, 2.9, 2
1.2), ( √
11, 3.05, √
33)
Output: planar graph of the vertices and edges of conv(P )
Convex hull: input and output
Input: Points with coordianate pairs (x, y, z ) ∈ R
3(e, π, 1), (3, 3, √
5), (2.95, 2.9, 2
1.2), ( √
11, 3.05, √
33)
Output: planar graph of the vertices and edges of conv(P )
p
1p
2p
3p
4p
1p
2p
3p
4Doubly connected edge list, facets are ccw cycles from outside arcs know: opposite, next, prev arc
e
Opp(e) N ext(e)
P rev(e)
Convex hull: complexity
Convex hull: complexity
• Euler’s formula: h − #(edges) + #(f aces) = 2.
Claim A convex hull with h vertices has complexity O(h).
Convex hull: complexity
• Euler’s formula: h − #(edges) + #(f aces) = 2.
• Each face has ≥ 3 incident edges.
Each edge is incident to 2 faces.
2 · #(edges) ≥ 3 · #(f aces)
Claim A convex hull with h vertices has complexity O(h).
Convex hull: complexity
• Euler’s formula: h − #(edges) + #(f aces) = 2.
• Each face has ≥ 3 incident edges.
Each edge is incident to 2 faces.
2 · #(edges) ≥ 3 · #(f aces)
⇒ #(edges) = h + #(f aces) − 2
≤ h + 2
3 #(edges) − 2
Claim A convex hull with h vertices has complexity O(h).
Convex hull: complexity
• Euler’s formula: h − #(edges) + #(f aces) = 2.
• Each face has ≥ 3 incident edges.
Each edge is incident to 2 faces.
2 · #(edges) ≥ 3 · #(f aces)
⇒ #(edges) = h + #(f aces) − 2
≤ h + 2
3 #(edges) − 2
⇒ #(edges) ≤ 3h − 6
Claim A convex hull with h vertices has complexity O(h).
Convex hull: complexity
• Euler’s formula: h − #(edges) + #(f aces) = 2.
• Each face has ≥ 3 incident edges.
Each edge is incident to 2 faces.
2 · #(edges) ≥ 3 · #(f aces)
⇒ #(edges) = h + #(f aces) − 2
≤ h + 2
3 #(edges) − 2
⇒ #(edges) ≤ 3h − 6
Total complexity (vertices+edges): ≤ 4h − 6 = O(h).
Claim A convex hull with h vertices has complexity O(h).
Basic operation and naive approach
Suppose no 3 pts on one line, no 4 pts in one plane.
p
00Basic operation and naive approach
Suppose no 3 pts on one line, no 4 pts in one plane.
p p
0q
In O(1) time, decide if q is above/below/on plane pp
0p
00p
00Basic operation and naive approach
Suppose no 3 pts on one line, no 4 pts in one plane.
p p
0q
In O(1) time, decide if q is above/below/on plane pp
0p
00p
1p
2p
31 p
01p
02p
031 p
001p
002p
0031 q
1q
2q
31
p
00Basic operation and naive approach
Suppose no 3 pts on one line, no 4 pts in one plane.
p p
0q
In O(1) time, decide if q is above/below/on plane pp
0p
00Running time:
n3· (n − 3) · O(1) = O(n
4) Naive Convex Hull in R
3For each p, p
0, p
00∈ P ,
check if all q ∈ P \ {p, p
0, p
00} is on same side of plane pp
0p
00. If yes, then pp
0p
00is a face.
p
1p
2p
31 p
01p
02p
031 p
001p
002p
0031 q
1q
2q
31
R 3 convex hull with divide and conquer
(Preparata–Hong, 1977)
Divide and conquer
(p
1, . . . , p
n) = LexicographicSort (P ) H = Hull3dim ((p
1, . . . , p
n)
function Hull3dim ((p
1, . . . , p
n)) if n ≤ 4 then
return NaiveHull ((p
1, . . . , p
n)) H
1= Hull3dim ((p
1, . . . , p
bn/2c)) H
2= Hull3dim ((p
bn/2c+1, . . . , p
n)) H = Merge (H
1, H
2)
return H
Divide and conquer
(p
1, . . . , p
n) = LexicographicSort (P ) H = Hull3dim ((p
1, . . . , p
n)
function Hull3dim ((p
1, . . . , p
n)) if n ≤ 4 then
return NaiveHull ((p
1, . . . , p
n)) H
1= Hull3dim ((p
1, . . . , p
bn/2c)) H
2= Hull3dim ((p
bn/2c+1, . . . , p
n)) H = Merge (H
1, H
2)
return H
O(n log n)
Divide and conquer
(p
1, . . . , p
n) = LexicographicSort (P ) H = Hull3dim ((p
1, . . . , p
n)
function Hull3dim ((p
1, . . . , p
n)) if n ≤ 4 then
return NaiveHull ((p
1, . . . , p
n)) H
1= Hull3dim ((p
1, . . . , p
bn/2c)) H
2= Hull3dim ((p
bn/2c+1, . . . , p
n)) H = Merge (H
1, H
2)
return H
O(n log n)
T (n) = 2T (n/2) + O(n)
Recursion depth= O(log n) ⇒ T (n) = O(n log n)
Divide and conquer
(p
1, . . . , p
n) = LexicographicSort (P ) H = Hull3dim ((p
1, . . . , p
n)
function Hull3dim ((p
1, . . . , p
n)) if n ≤ 4 then
return NaiveHull ((p
1, . . . , p
n)) H
1= Hull3dim ((p
1, . . . , p
bn/2c)) H
2= Hull3dim ((p
bn/2c+1, . . . , p
n)) H = Merge (H
1, H
2)
return H
O(n log n)
T (n) = 2T (n/2) + O(n)
Recursion depth= O(log n) ⇒ T (n) = O(n log n)
We need to merge in O(n) time!
Starting the merge
H
1H
2x y
z
Starting the merge
H
1H
2x y
z
Project H
1and H
2to xy plane
Get common tangents (as in Assignment 1/7) → O(n)
Starting the merge
H
1H
2x y
z
Project H
1and H
2to xy plane
Get common tangents (as in Assignment 1/7) → O(n)
π(pi) π(pj)
π(p
i)π(p
j) is segment of π(conv(H
1)) ∪ π(conv(H
2))
⇒ p
ip
jis a segment of conv(P ).
pi
pj
Merging naively
p0
Find q ∈ P s.t. plane pp0q has smallest angle with plane pp0π(p).
p
Merging naively
p0
Find q ∈ P s.t. plane pp0q has smallest angle with plane pp0π(p).
p
q
Merging naively
p0
Find q ∈ P s.t. plane pp0q has smallest angle with plane pp0π(p).
Last face found:Fi, last edge found: ei Repeat: Find p ∈ P maximizing ^
(plane eip), (plane Fi) p
Fi q ei
Merging naively
p0
Find q ∈ P s.t. plane pp0q has smallest angle with plane pp0π(p).
Last face found:Fi, last edge found: ei Repeat: Find p ∈ P maximizing ^
(plane eip), (plane Fi) p
q
Merging naively
p0
Find q ∈ P s.t. plane pp0q has smallest angle with plane pp0π(p).
Last face found:Fi, last edge found: ei Repeat: Find p ∈ P maximizing ^
(plane eip), (plane Fi) p
q
Merging naively
p0
Find q ∈ P s.t. plane pp0q has smallest angle with plane pp0π(p).
Last face found:Fi, last edge found: ei Repeat: Find p ∈ P maximizing ^
(plane eip), (plane Fi) p
q
Merging naively
p0
Find q ∈ P s.t. plane pp0q has smallest angle with plane pp0π(p).
Last face found:Fi, last edge found: ei Repeat: Find p ∈ P maximizing ^
(plane eip), (plane Fi) p
q
→ O(n)
Naive runtime: O(n2)
The result is a “cylinder”.
ei
Smart merge idea
maxp∈P ^
(plane uvp), (plane Fi)
→ p must be neighbor of u or v u
Fi v
ei
Smart merge idea
maxp∈P ^
(plane uvp), (plane Fi)
→ p must be neighbor of u or v u
Fi v
Maximize in N(u) and N(v) separately.
Let p0 ∈ N(v) s.t. vp0 ∈ conv(P) is already known
v
p
0= v
1v
2v
3v
4v
5ei
Smart merge idea
maxp∈P ^
(plane uvp), (plane Fi)
→ p must be neighbor of u or v u
Fi v
Maximize in N(u) and N(v) separately.
Let p0 ∈ N(v) s.t. vp0 ∈ conv(P) is already known
v
p
0= v
1v
2v
3v
4v
5Check angles of N (v ) in cw order.
ei
Smart merge idea
maxp∈P ^
(plane uvp), (plane Fi)
→ p must be neighbor of u or v u
Fi v
Maximize in N(u) and N(v) separately.
Let p0 ∈ N(v) s.t. vp0 ∈ conv(P) is already known
v
p
0= v
1v
2v
3v
4v
5Check angles of N (v ) in cw order.
If v
i∈ p has largest angle
⇒ v
2, . . . , v
i−1are inside conv(P )!
= p
Smart merge
function Merge(H1, H2)
uv = starting edge (form common tangent of π(H1) and π(H2)) ˆ
u = argmaxu0∈N(u) ^ uvu0, uvπ(u) ˆ
v = argmaxv0∈N(v) ^ uvv0, uvπ(u) repeat
if vˆ has larger angle than uˆ then vprev = v, v = ˆv
Add face F = uvvprev to H
If F is coplanar with previous face, merge.
for i = 2 to |N(v)| do . in cw order if ^ uvvi, uvvprev
> ^ uvvi−1, uvvprev
then Remove edge vvi−1 from H2
else ˆ
v = vi−1, Break else
(same, but swap v and u, H2 and H1, cw and ccw) until uv = starting edge
return merge of cylinder H with H1 and H2
Smart merge
function Merge(H1, H2)
uv = starting edge (form common tangent of π(H1) and π(H2)) ˆ
u = argmaxu0∈N(u) ^ uvu0, uvπ(u) ˆ
v = argmaxv0∈N(v) ^ uvv0, uvπ(u) repeat
if vˆ has larger angle than uˆ then vprev = v, v = ˆv
Add face F = uvvprev to H
If F is coplanar with previous face, merge.
for i = 2 to |N(v)| do . in cw order if ^ uvvi, uvvprev
> ^ uvvi−1, uvvprev
then Remove edge vvi−1 from H2
else ˆ
v = vi−1, Break else
(same, but swap v and u, H2 and H1, cw and ccw) until uv = starting edge
return merge of cylinder H with H1 and H2
init
Step Face add
Cylinder merge
Smart merge analysis
Init: O(n)
Face add: O (1) (overall O(n))
Smart merge analysis
Init: O(n)
Face add: O (1) (overall O(n))
Step: Each comparison results in either
→ deleting an edge
→ making the step
Smart merge analysis
Init: O(n)
Face add: O (1) (overall O(n))
Step: Each comparison results in either
→ deleting an edge
→ making the step
H
1, H
2have O(n) edges Final cylinder has size O(n)
⇒ Amortized O (1) (overall O(n)) time.
Smart merge analysis
Init: O(n)
Face add: O (1) (overall O(n))
Step: Each comparison results in either
→ deleting an edge
→ making the step
H
1, H
2have O(n) edges Final cylinder has size O(n)
⇒ Amortized O (1) (overall O(n)) time.
Cylinder merge: O(1) time per cylinder boundary edge.
Boundary has size O(n).
Smart merge analysis
Init: O(n)
Face add: O (1) (overall O(n))
Step: Each comparison results in either
→ deleting an edge
→ making the step
H
1, H
2have O(n) edges Final cylinder has size O(n)
⇒ Amortized O (1) (overall O(n)) time.
Cylinder merge: O(1) time per cylinder boundary edge.
Boundary has size O(n).
⇒ Merge takes O(n) time.
Smart merge analysis
Init: O(n)
Face add: O (1) (overall O(n))
Step: Each comparison results in either
→ deleting an edge
→ making the step
H
1, H
2have O(n) edges Final cylinder has size O(n)
⇒ Amortized O (1) (overall O(n)) time.
Cylinder merge: O(1) time per cylinder boundary edge.
Boundary has size O(n).
⇒ Merge takes O(n) time.
Preparata–Hong divide&conquer takes O(n log n) time.
R
3Convex hull with rand. incremental construction
(Clarkson and Shor 1989)
Ideas
• Add points one at a time, update
H
i= planar graph for conv(p
1, . . . , p
i).
Ideas
• Add points one at a time, update
H
i= planar graph for conv(p
1, . . . , p
i).
• Maintain a conflict graph: C
ip
i+1p
nunprocessed pts
faces of H
iIdeas
• Add points one at a time, update
H
i= planar graph for conv(p
1, . . . , p
i).
• Maintain a conflict graph: C
ip
i+1p
nunprocessed pts
faces of H
iConflict edge from p
i+jto face F of H
iiff plane of F separates p
i+jfrom conv(p
1, . . . , p
i) p
i+jF
Ideas
• Add points one at a time, update
H
i= planar graph for conv(p
1, . . . , p
i).
• Maintain a conflict graph: C
ip
i+1p
nunprocessed pts
faces of H
iConflict edge from p
i+jto face F of H
iiff plane of F separates p
i+jfrom conv(p
1, . . . , p
i) p
i+jF
⇒ if we add p
i+j, we must delete F
Algorithm overview
Find 4 points forming a tetrahedron, set up H
4Algorithm overview
Find 4 points forming a tetrahedron, set up H
4Randomly permute the other points: p
4, . . . , p
n, and set up C
4n − 4 unproc. pts 4 faces ⇒ O(n)
Algorithm overview
Find 4 points forming a tetrahedron, set up H
4Randomly permute the other points: p
4, . . . , p
n, and set up C
4n − 4 unproc. pts 4 faces ⇒ O(n)
”Randomized incremental construction”
Algorithm overview
Find 4 points forming a tetrahedron, set up H
4Randomly permute the other points: p
4, . . . , p
n, and set up C
4n − 4 unproc. pts 4 faces ⇒ O(n)
”Randomized incremental construction”
p
iAdding p
i:
horizon
Algorithm overview
Find 4 points forming a tetrahedron, set up H
4Randomly permute the other points: p
4, . . . , p
n, and set up C
4n − 4 unproc. pts 4 faces ⇒ O(n)
”Randomized incremental construction”
p
iAdding p
i:
horizon
conflicting faces
new faces to add
Algorithm overview
Find 4 points forming a tetrahedron, set up H
4Randomly permute the other points: p
4, . . . , p
n, and set up C
4n − 4 unproc. pts 4 faces ⇒ O(n)
”Randomized incremental construction”
p
iAdding p
i:
horizon
conflicting faces
new faces to add → remove conflicting faces
using conflict graph
Algorithm overview
Find 4 points forming a tetrahedron, set up H
4Randomly permute the other points: p
4, . . . , p
n, and set up C
4n − 4 unproc. pts 4 faces ⇒ O(n)
”Randomized incremental construction”
p
iAdding p
i:
horizon
conflicting faces
new faces to add → remove conflicting faces using conflict graph
→ walk horizon and
add new faces
Algorithm overview
Find 4 points forming a tetrahedron, set up H
4Randomly permute the other points: p
4, . . . , p
n, and set up C
4n − 4 unproc. pts 4 faces ⇒ O(n)
”Randomized incremental construction”
p
iAdding p
i:
horizon
conflicting faces
new faces to add → remove conflicting faces using conflict graph
→ walk horizon and add new faces
→
if coplanar face:
merge faces.
same conflict list!
Updating conflict lists
• Remove p
ifrom conflict graph
Updating conflict lists
• Remove p
ifrom conflict graph
• Add new face F :
F p
ihorizon edge F
1F
2Conf (F ) ⊆ Conf (F
1) ∪ Conf (F
2)
e
Updating conflict lists
• Remove p
ifrom conflict graph
• Add new face F :
F p
ihorizon edge F
1F
2Conf (F ) ⊆ Conf (F
1) ∪ Conf (F
2)
For each p ⊆ U
iethat sees F , add conflict edge (F, p)
e
Running time analysis - lemmas
Theorem The Clarkson-Shor 3d convex hull algorithm works
in O(n log n) time.
Running time analysis - lemmas
Theorem The Clarkson-Shor 3d convex hull algorithm works in O(n log n) time.
Lemma The algo. creates at most 6n − 20 faces in
expectation.
Running time analysis - lemmas
Lemma We have
E
n
X
i=5
X
e∈horizon(i)
|U
ie|
= O(n log n).
Theorem The Clarkson-Shor 3d convex hull algorithm works in O(n log n) time.
Lemma The algo. creates at most 6n − 20 faces in
expectation.
Running time analysis - lemmas
Lemma We have
E
n
X
i=5
X
e∈horizon(i)
|U
ie|
= O(n log n).
Theorem The Clarkson-Shor 3d convex hull algorithm works in O(n log n) time.
Lemma The algo. creates at most 6n − 20 faces in expectation.
Long proof, see Dutch book
Lemma The algo. creates at most 6n − 20 faces in expectation.
Backwards analysis
Lemma The algo. creates at most 6n − 20 faces in expectation.
Backwards analysis
Imagine removing p
n, then p
n−1, . . . , p
5from conv(P ). Fix i.
deg
i(p) := degree of p in the convex hull of p
1, . . . , p
iLemma The algo. creates at most 6n − 20 faces in expectation.
Backwards analysis
Imagine removing p
n, then p
n−1, . . . , p
5from conv(P ). Fix i.
deg
i(p) := degree of p in the convex hull of p
1, . . . , p
i• conv(p
1, . . . , p
i) has ≤ 3i − 6 edges
⇒ P
ij=1
deg
i(p
j) ≤ 6i − 12.
Lemma The algo. creates at most 6n − 20 faces in expectation.
Backwards analysis
Imagine removing p
n, then p
n−1, . . . , p
5from conv(P ). Fix i.
deg
i(p) := degree of p in the convex hull of p
1, . . . , p
i• conv(p
1, . . . , p
i) has ≤ 3i − 6 edges
⇒ P
ij=1
deg
i(p
j) ≤ 6i − 12.
• deg(p
1) + deg(p
2) + deg(p
3) + deg(p
4) ≥ 12
Lemma The algo. creates at most 6n − 20 faces in expectation.
Backwards analysis
Imagine removing p
n, then p
n−1, . . . , p
5from conv(P ). Fix i.
deg
i(p) := degree of p in the convex hull of p
1, . . . , p
i• conv(p
1, . . . , p
i) has ≤ 3i − 6 edges
⇒ P
ij=1
deg
i(p
j) ≤ 6i − 12.
• deg(p
1) + deg(p
2) + deg(p
3) + deg(p
4) ≥ 12
• p
iis a random element of {p
5, . . . , p
i}
E (deg
i(p
i)) =
P
ij=5
deg(p
j)
i − 4 ≤ 6i − 12 − 12
i − 4 = 6
Lemma The algo. creates at most 6n − 20 faces in expectation.
Backwards analysis
Imagine removing p
n, then p
n−1, . . . , p
5from conv(P ). Fix i.
deg
i(p) := degree of p in the convex hull of p
1, . . . , p
i• conv(p
1, . . . , p
i) has ≤ 3i − 6 edges
⇒ P
ij=1
deg
i(p
j) ≤ 6i − 12.
• deg(p
1) + deg(p
2) + deg(p
3) + deg(p
4) ≥ 12
• p
iis a random element of {p
5, . . . , p
i}
E (deg
i(p
i)) =
P
ij=5
deg(p
j)
i − 4 ≤ 6i − 12 − 12
i − 4 = 6
⇒ E (total #created faces) = 4 +
n
X
j=5
E (deg
j(p
j)) ≤ 6n − 20.
Chan’s algorithm in R 3
Chan’s algorithm recap and changes
P into size m groups P
j(j = 1, . . . , dn/me)
Precompute each conv(P
j) in O(m log m)
Chan’s algorithm recap and changes
P into size m groups P
j(j = 1, . . . , dn/me) Precompute each conv(P
j) in O(m log m) Run modified gift wrapping for m steps:
Find tangent q
jin each P
jin O(log m)
Wrap to largest angle tangent among q
jChan’s algorithm recap and changes
P into size m groups P
j(j = 1, . . . , dn/me) Precompute each conv(P
j) in O(m log m) Run modified gift wrapping for m steps:
Find tangent q
jin each P
jin O(log m) Wrap to largest angle tangent among q
ji = 1, . . . , dlog log ne m = 22i
Chan’s algorithm recap and changes
P into size m groups P
j(j = 1, . . . , dn/me) Precompute each conv(P
j) in O(m log m) Run modified gift wrapping for m steps:
Find tangent q
jin each P
jin O(log m) Wrap to largest angle tangent among q
ji = 1, . . . , dlog log ne m = 22i
Graham’s scan
Preparata–Hong
Chan’s algorithm recap and changes
P into size m groups P
j(j = 1, . . . , dn/me) Precompute each conv(P
j) in O(m log m) Run modified gift wrapping for m steps:
Find tangent q
jin each P
jin O(log m) Wrap to largest angle tangent among q
ji = 1, . . . , dlog log ne m = 22i
Graham’s scan Preparata–Hong
Wrap done on edge e as in cylinder of Preparata–Hong BFS on faces: new face → find neighboring edges
BFS has |E (H
∗)| = |E (H )| ≤ 3h − 6 steps
Chan’s algorithm recap and changes
P into size m groups P
j(j = 1, . . . , dn/me) Precompute each conv(P
j) in O(m log m) Run modified gift wrapping for m steps:
Find tangent q
jin each P
jin O(log m) Wrap to largest angle tangent among q
ji = 1, . . . , dlog log ne m = 22i
Graham’s scan Preparata–Hong
Wrap done on edge e as in cylinder of Preparata–Hong BFS on faces: new face → find neighboring edges
BFS has |E (H
∗)| = |E (H )| ≤ 3h − 6 steps
Needs Dobkin–Kirkpatrick hierarchical representation for P
j→ computing in O(n) coming up!
Chan’s algorithm recap and changes
P into size m groups P
j(j = 1, . . . , dn/me) Precompute each conv(P
j) in O(m log m) Run modified gift wrapping for m steps:
Find tangent q
jin each P
jin O(log m) Wrap to largest angle tangent among q
ji = 1, . . . , dlog log ne m = 22i
Graham’s scan Preparata–Hong
Wrap done on edge e as in cylinder of Preparata–Hong BFS on faces: new face → find neighboring edges
BFS has |E (H
∗)| = |E (H )| ≤ 3h − 6 steps
Needs Dobkin–Kirkpatrick hierarchical representation for P
j→ computing in O(n) coming up!
3n − 6
Chan’s algorithm recap and changes
P into size m groups P
j(j = 1, . . . , dn/me) Precompute each conv(P
j) in O(m log m) Run modified gift wrapping for m steps:
Find tangent q
jin each P
jin O(log m) Wrap to largest angle tangent among q
ji = 1, . . . , dlog log ne m = 22i
Graham’s scan Preparata–Hong
Wrap done on edge e as in cylinder of Preparata–Hong BFS on faces: new face → find neighboring edges
BFS has |E (H
∗)| = |E (H )| ≤ 3h − 6 steps
Needs Dobkin–Kirkpatrick hierarchical representation for P
j→ computing in O(n) coming up!
3n − 6
Running time analysis remains unchanged. O(n log h)
Dobkin–Kirkpatrick hierarchy
Given convex polytope Q in R
3, a polytope sequence Q
1, Q
2, . . . , Q
kis a DK hierarchy of Q if
1. Q
1= Q and Q
kis a tetrahedron 2. Q
i⊃ Q
i+1and V (Q
i) ⊃ V (Q
i+1)
3. V (Q
i) \ V (Q
i+1) is an independent set in G(Q
i).
Dobkin–Kirkpatrick hierarchy
Given convex polytope Q in R
3, a polytope sequence Q
1, Q
2, . . . , Q
kis a DK hierarchy of Q if
1. Q
1= Q and Q
kis a tetrahedron 2. Q
i⊃ Q
i+1and V (Q
i) ⊃ V (Q
i+1)
3. V (Q
i) \ V (Q
i+1) is an independent set in G(Q
i).
Q = Q
1Dobkin–Kirkpatrick hierarchy
Given convex polytope Q in R
3, a polytope sequence Q
1, Q
2, . . . , Q
kis a DK hierarchy of Q if
1. Q
1= Q and Q
kis a tetrahedron 2. Q
i⊃ Q
i+1and V (Q
i) ⊃ V (Q
i+1)
3. V (Q
i) \ V (Q
i+1) is an independent set in G(Q
i).
Q = Q
1Dobkin–Kirkpatrick hierarchy
Given convex polytope Q in R
3, a polytope sequence Q
1, Q
2, . . . , Q
kis a DK hierarchy of Q if
1. Q
1= Q and Q
kis a tetrahedron 2. Q
i⊃ Q
i+1and V (Q
i) ⊃ V (Q
i+1)
3. V (Q
i) \ V (Q
i+1) is an independent set in G(Q
i).
Q
2Dobkin–Kirkpatrick hierarchy
Given convex polytope Q in R
3, a polytope sequence Q
1, Q
2, . . . , Q
kis a DK hierarchy of Q if
1. Q
1= Q and Q
kis a tetrahedron 2. Q
i⊃ Q
i+1and V (Q
i) ⊃ V (Q
i+1)
3. V (Q
i) \ V (Q
i+1) is an independent set in G(Q
i).
Q
2Dobkin–Kirkpatrick hierarchy
Given convex polytope Q in R
3, a polytope sequence Q
1, Q
2, . . . , Q
kis a DK hierarchy of Q if
1. Q
1= Q and Q
kis a tetrahedron 2. Q
i⊃ Q
i+1and V (Q
i) ⊃ V (Q
i+1)
3. V (Q
i) \ V (Q
i+1) is an independent set in G(Q
i).
Q
3Dobkin–Kirkpatrick hierarchy
Given convex polytope Q in R
3, a polytope sequence Q
1, Q
2, . . . , Q
kis a DK hierarchy of Q if
1. Q
1= Q and Q
kis a tetrahedron 2. Q
i⊃ Q
i+1and V (Q
i) ⊃ V (Q
i+1)
3. V (Q
i) \ V (Q
i+1) is an independent set in G(Q
i).
Q
3Dobkin–Kirkpatrick hierarchy
Given convex polytope Q in R
3, a polytope sequence Q
1, Q
2, . . . , Q
kis a DK hierarchy of Q if
1. Q
1= Q and Q
kis a tetrahedron 2. Q
i⊃ Q
i+1and V (Q
i) ⊃ V (Q
i+1)
3. V (Q
i) \ V (Q
i+1) is an independent set in G(Q
i).
Q
4Dobkin–Kirkpatrick hierarchy
Given convex polytope Q in R
3, a polytope sequence Q
1, Q
2, . . . , Q
kis a DK hierarchy of Q if
1. Q
1= Q and Q
kis a tetrahedron 2. Q
i⊃ Q
i+1and V (Q
i) ⊃ V (Q
i+1)
3. V (Q
i) \ V (Q
i+1) is an independent set in G(Q
i).
Q
4Dobkin–Kirkpatrick hierarchy
Given convex polytope Q in R
3, a polytope sequence Q
1, Q
2, . . . , Q
kis a DK hierarchy of Q if
1. Q
1= Q and Q
kis a tetrahedron 2. Q
i⊃ Q
i+1and V (Q
i) ⊃ V (Q
i+1)
3. V (Q
i) \ V (Q
i+1) is an independent set in G(Q
i).
Q
5Theorem Given Q, a DK hierarchy with k = O(log n), size P
ki=1
(|V (Q
i)|) = O(n) and degree max
imax{deg
G(Qi)
(v ) | v ∈ V (Q
i) \ V (Q
i+1)} ≤ 11 can be computed in O (n) time.
Constructing the DK hierarchy
Theorem Given Q, a DK hierarchy with k = O(log n), size P
ki=1
(|V (Q
i)|) = O(n) and degree max
imax{deg
G(Qi)
(v ) | v ∈ V (Q
i) \ V (Q
i+1)} ≤ 11 can be computed in O (n) time.
Proof. Iteratively remove set S , a greedy maximal independent set among vertices of degree ≤ 11.
Claim: |S | ≥ |V (Q)|/24.
Suppose not: |S | < |V (Q)|/24
⇒ S
s∈S
N [s] < |V (Q)|/2
⇒ G(Q) has ≥ |V (Q)|/2 vertices of degree ≥ 12
⇒ G(Q) has ≥ (|V (Q)|/2) · 12/2 = 3|V (Q)| edges
Constructing the DK hierarchy
Theorem Given Q, a DK hierarchy with k = O(log n), size P
ki=1
(|V (Q
i)|) = O(n) and degree max
imax{deg
G(Qi)
(v ) | v ∈ V (Q
i) \ V (Q
i+1)} ≤ 11 can be computed in O (n) time.
Proof. Iteratively remove set S , a greedy maximal independent set among vertices of degree ≤ 11.
Claim: |S | ≥ |V (Q)|/24.
Suppose not: |S | < |V (Q)|/24
⇒ S
s∈S