Convex hulls Dynamic hull insertion - PowerPoint PPT Presentation

About This Presentation
Title:

Convex hulls Dynamic hull insertion

Description:

... requires finding the supporting lines from pi to Ci-1, ... pi. Left supporting line. Right supporting line ... varies between p and pi for the point ... – PowerPoint PPT presentation

Number of Views:228
Avg rating:3.0/5.0
Slides: 19
Provided by: mikeld
Learn more at: http://www.cs.ucf.edu
Category:
Tags: convex | dynamic | hull | hulls | insertion | pi

less

Transcript and Presenter's Notes

Title: Convex hulls Dynamic hull insertion


1
Convex hullsDynamic hull (insertion)
Hull maintenance during insertion, 1 Maintain
H(S) as points are added to S.
p1
0
1
3
2
p2
p3
2
Convex hullsDynamic hull (insertion)
Hull maintenance during insertion, 2 Maintain
H(S) as points are added to S.
p5
p4
4
5
7
6
p7
p6
3
Convex hullsDynamic hull (insertion)
Definitions Preparata static Set of object
remains fixed between operations (e.g., between
queries in repetitive mode). dynamic Set of
objects can change between operations. Insertion
s and deletions allowed in general, but
sometimes constrained. Implies S must be in
some updatable data structure. on-line Algorithm
cannot look ahead at input. off-line Algorithm
operates on all data collectively. Static or
batched dynamic. real-time Updates must be
completed during fixed interarrival time (often
O(log N)). Edelsbrunner static Set of objects
remains fixed between operations. dynamic Set of
objects can change between operations. on-line Se
quence of operations (insertions, deletions,
queries) not known in advance, algorithm cannot
look ahead. off-line Insertions and deletions
contrained to come from a prespecified and
usually small set. batched Sequence of
operations fully known in advance, algorithm
can look ahead. Chiang, Y.-J. and Tomassia, R.
(1992). Dynamic Algorithms in Computational
Geometry, Proceedings of the IEEE, Vol. 80, No.
9, September 1992, pp. 1412-1434.
4
Convex hullsDynamic hull (insertion)
Problem definitions ON-LINE CONVEX HULL INSTANCE
Sequence of N points in the plane p1, p2, ,
pN. QUESTION Find their convex hull in such a
way that after pi is processed we have H(p1, p2,
, pi). REAL-TIME CONVEX HULL INSTANCE
Sequence of N points in the plane p1, p2, ,
pN. QUESTION Find their convex hull on-line
assuming constant interarrival delay. The
algorithm must maintain some representation of
the hull and update it as points are inserted.
Can this be done and still achieve O(N log N)
time for the entire sequence? These are dynamic
problems, but note that both of these
problems are constrained to insertions only.
Generalizing, we have DYNAMIC CONVEX HULL (HULL
MAINTENANCE) INSTANCE An initially empty set S
and a sequence of N points in the plane p1, p2,
, pN, each of which corresponds to either
an insertion or deletion from S. (Only a
previously inserted point can be
deleted). QUESTION Maintain the convex hull
H(S). ON-LINE CONVEX HULL and REAL-TIME CONVEX
HULL covered today, DYNAMIC CONVEX HULL covered
Wednesday.
5
Convex hullsDynamic hull (insertion)
Algorithms Shamos (1978), mentioned in text p.
119, not covered. Preparata (1979), presented in
text pp. 119-124, covered. Latter is real-time
(hence is on-line). Key idea, 1 Assume the
points are inserted in sequence p1, p2, ,
pN. Let pi be the current point and Ci-1 H(p1,
p2, , pi-1). Finding Ci requires finding the
supporting lines from pi to Ci-1, if they exist
(i.e., pi is external to Ci-1). (If pi is
internal to Ci-1, then Ci Ci-1.)
r
Right supporting line
Ci-1
pi
Supporting vertices
l
Left supporting line
Left and right supporting lines are defined
looking from pi to Ci-1.
6
Convex hullsDynamic hull (insertion)
Key idea, 2 Finding Ci requires finding the
supporting lines from pi to Ci-1, if they exist
(i.e., pi is external to Ci-1). (If pi is
internal to Ci-1, then Ci Ci-1.) Another
example
7
Convex hullsDynamic hull (insertion)
Algorithm overview For each pi, If pi is
internal to Ci-1, then Ci Ci-1, and pi is
eliminated. If pi is external to Ci-1, then we
must 1. Find the supporting lines from pi to
Ci-1. 2. Ci pi r l / vertices of
Ci-1 from r to l /
The problem reduces to finding the supporting
lines, i.e., finding the supporting vertices l
and r. The data structure for the vertices of
Ci-1 will be given soon, once we know what
operations it must support. Note the text
varies between p and pi for the point and between
Ci-1, C, and even P for the hull.
8
Convex hullsDynamic hull (insertion)
Classifying a vertex We need to classify any
vertex v of Ci-1 w.r.t. pi (or w.r.t. the segment
piv).
v??
(a) Concave segment pv does intersect the
interior of Ci-1
v
pi
v?
(b) Supporting the two vertices adjacent to
v lie on the same side of line pv
v?
v??
pi
v
v?
(c) Reflex segment pv does not intersect the
interior of Ci-1
pi
v
v??
9
Convex hullsDynamic hull (insertion)
Searching for a supporting vertex Suppose we have
pi and v a vertex of Ci-1. Assume we seek l, the
left supporting vertex. 1. Classify v w.r.t. to
pi. 2. If v is supporting, l v, return. 3. If v
is concave, v v?, repeat. 4. If v is reflex, v
v??, repeat. This is advancing along Ci-1,
searching for l. Eventually the supporting vertex
l will be found. Finding r is analogous.
v??
v
pi
(a) Concave advance counterclockwise around Ci-1
v?
v?
pi
v
(c) Reflex advance clockwise around Ci-1
v??
This example shows the advance as single step. In
fact, we wish to advance multiple steps so as to
binary search.
10
Convex hullsDynamic hull (insertion)
Data structure for Ci-1 The data structure for
Ci-1 must support certain operations 1. SEARCH
an ordered string of items (the vertices of the
hull) to locate the supporting lines from
pi. 2. SPLIT a string of items into two
substrings. 3. CONCATENATE (or SPLICE) two
strings of items. 4. INSERT one item (e.g., the
current pi) in its ordered location. The
concatenable queue data structure supports these
operations, all in O(log N) time, where N is the
number of items stored. (For more information,
see Aho,1974 or Reingold,1977.) We assume the
operations are available.
11
Convex hullsDynamic hull (insertion)
Search tree for Ci-1 A concatenable queue is a
height balanced search tree, call it T. It stores
the vertices of Ci-1 in (counterclockwise) order.
Each node of T corresponds to a vertex of Ci-1.
In T, the cycle of vertices of Ci-1 appears as a
chain, in order. The first and last items are
considered to be adjacent. Vertex M is the vertex
of the root of T. Vertex m is the vertex of the
leftmost (first) node of T. Angle ? is angle
mpiM ? may be convex (? ?) or reflex ( ?).
12
Convex hullsDynamic hull (insertion)
Search combinations If we examine the
classifications of m, M, and ?, there are 18
possible combinations. Vertex m is concave,
supporting, or reflex. Vertex M is concave,
supporting, or reflex. Angle ? is convex or
reflex.
The action to take to find l and r depends on the
combination.
13
Convex hullsDynamic hull (insertion)
Search cases The 18 possible combinations reduce
to 8 cases where distinct actions are required.
Figure 3.16, text p. 122, illustrates the
cases. In Figure 3.16 The circle on which
vertices m and M lie represents the convex hull
Ci-1 (text says polygon P, p. 121). The ordered
sequence of vertices starts at m and
runs counterclockwise on the circle. L(M) and
R(M) are the vertex sequences stored in the left
and right subtrees of the root of tree T.
14
Convex hullsDynamic hull (insertion)
Finding l and r, 1 A distinct action is required
to locate l and r in each of the 8
cases. Consider cases 2, 4, 6, and 8. Vertices l
and r are known to exist, because pi cannot be
internal. (Point pi can be internal only if m and
M are both concave.) In these cases, l and r are
in separate subtrees of the root of T (one of the
subtrees is extended to include the root in each
case). Thus l and r can be found be analogous
searches of the two subtrees. For example, l is
found by the following function 1 procedure
LEFTSEARCH(T) 2 begin 3 c ROOT(T) / c is
current vertex / 4 if (line pic is
supporting) 5 l c 6 else 7 if (c is
reflex) 8 T LTREE(c) / Root of left
subtree / 9 else / c is concave /10 T
RTREE(c) / Root of right subtree
/ 11 endif 12 l LEFTSEARCH(T) /
Bisecting search on tree / 13 endif 14 return
l 15 end Vertex r is found by an analogous
RIGHTSEARCH function.
15
Convex hullsDynamic hull (insertion)
Finding l and r, 2 A distinct action is required
to locate l and r in each of the 8
cases. Consider cases 1, 3, 5, and 7. Vertices l
and r may not exist, because pi could be internal
in cases 1 and 7. In these cases, if they exist l
and r are in the same subtree of the root of T
(the circled subtree in Figure 3.16). Case Subtree
(1) R(M) (3) L(M) (5) R(M) (7) L(M) The search
calls itself recursively on that subtree until
one of cases 2, 4, 6, 8 occurs, i.e., l and r are
in different subtrees of the current vertex. At
that point the search proceeds as for those
cases, i.e., two separate searches (LEFTSEARCH
and RIGHTSEARCH) are used to find l and r
respectively. If a leaf of T is reached with
finding any of cases 2, 4, 6, or 8, then pi is
internal to Ci-1.
16
Convex hullsDynamic hull (insertion)
Finding l and r, 3 In general, finding l and r
for pi involves tracing a single path in T from
the root to the node where l and r must be in
separate subtrees, and then following two paths
to find l and r from there. T contains O(N)
nodes (actually it has N). Since T is balanced and therefore has O(log
N) levels, and O(1) time is expended at each node
on the two paths, the entire search requires
O(log N) time.
17
Convex hullsDynamic hull (insertion)
Inserting pi into the hull If pi is external to
Ci-1, it must be added, and possibly some other
vertices removed, to produce Ci. Put another way,
the (possibly empty) chain of vertices between l
and r must be replaced with pi. Vertex l may
either precede or follow vertex r in the
vertex order of Ci-1. The splicing in step
requires a different set of operations for each
case.
Split
Split
Splice
Vertex sequence
m
l
r
Delete
Case l precedes r. Operations (1) Split
(2) Split (3) Splice
Split
Split
Vertex sequence
m
r
l
Delete
Delete
Case r precedes l. Operations (1) Split
(2) Split
In either case, the operations all require O(N)
time in the concatenable queue, so the entire
splicing in step requires O(log N) time.
18
Convex hullsDynamic hull (insertion)
Analysis Each insertion requires O(log N)
time 1. O(log N) to find l and r 2. O(log N)
to splice in pi For N insertions, the overall
time is O(N log N). The storage required is O(N)
for T.
Write a Comment
User Comments (0)
About PowerShow.com