P. 1
ALGORITHMS DESIGN TECHNIQUES AND ANALYSIS

ALGORITHMS DESIGN TECHNIQUES AND ANALYSIS

|Views: 9,685|Likes:
Published by Meena Bhagavathula

More info:

Published by: Meena Bhagavathula on Mar 12, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

05/05/2013

pdf

text

original

In geometric algorithms, the main objects considered are usually points,
line segments, polygons and others in two-dimensional, three-dimensional
and higher dimensional spaces. Sometimes, a solution to a problem calls
for “sweeping” over the given input objects to collect information in order
to find a feasible solution. This technique is called plane sweep in the
two-dimensional plane and space sweep in the three-dimensional space. In
its simplest form, a vertical line sweeps from left to right in the plane
stopping at each object, say a point, starting from the leftmost object to
the rightmost object. We illustrate the method in connection with a simple
problem in computational geometry.

Definition 18.1 Let p1 = (x1,y1) and p2 = (x2,y2) be two points in
the plane. p2 is said to dominate p1, denoted by p1 p2, if x1 ≤ x2 and

y1 ≤ y2.

Definition 18.2 Let S be a set of points in the plane. A point p ∈ S is
a maximal point or a maximum if there does not exist a point q ∈ S such
that p = q and p q.

The following problem has a simple algorithm, which is a good example
of a geometric sweeping algorithm.

maximal points: Given a set S of n points in the plane, determine the

maximal points in S.

This problem can easily be solved as follows. First, we sort all the points
in S in nonincreasing order of their x-coordinates. The rightmost point (the

463

464

Geometric Sweeping

one with maximum x-value) is clearly a maximum. The algorithm sweeps
the points from right to left and for each point p it determines whether it
is dominated on the y-coordinate by any of the previously scanned points.
The algorithm is given as Algorithm maxima.

Algorithm 18.1 maxima

Input: A set S of n points in the plane.

Output: The set M of maximal points in S.

1. Let A be The points in S sorted in nonincreasing order of their x-

coordinates. If two points have the same x-coordinate then the one

with larger y-coordinate appears first in the ordering.

2. M←{A[1]}
3. maxy←y-coordinate of A[1]
4. for j←2 to n
5. (x,y)←A[j]
6. if y > maxy then
7.

M←M ∪{A[j]}

8.

maxy←y

9. end if
10. end for

Figure 18.1 illustrates the behavior of the algorithm on a set of points.
As shown in the figure, the set of maxima {a,b,c,d} forms a staircase.
Note that, for example, e is dominated by a only, whereas f is dominated
by both a and b, and g is dominated by c only.

x

y

The sweep line

a

b

c

d

e

f

g

Fig. 18.1 A set of points with their maxima.

Geometric Preliminaries

465

It is easy to see that the running time of the Algorithm maxima is
dominated by the sorting step, and hence is O(nlogn).

The above example reveals the two basic components of a plane sweep
algorithm. First, there is the event point schedule, which is a sequence of the

x-coordinates ordered from right to left. These points define the “stopping”
positions of the sweeping line, which is in this case a vertical line. Unlike
the case in the previous example, in some plane sweep algorithms, the event
point schedule may be updated dynamically, and thus data structures that
are more complex than a simple array or a queue may be required for
efficient implementation.
The other component in the plane sweep method is the sweep line status.
This is an appropriate description of the geometric objects at the sweeping
line. In the above example, the sweep line status consists of a “description”
of the most recent maximal point detected. This description is simply the
value of its y-coordinate. In other geometric algorithms, the sweep line
status may require storing the relevant information needed in the form of
a stack, a queue, a heap, etc.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->