The.Algorithm.Design.Manual.Springer-Verlag.1998
The.Algorithm.Design.Manual.Springer-Verlag.1998 The.Algorithm.Design.Manual.Springer-Verlag.1998
Maintaining Line Arrangements Next: Minkowski Sum Up: Computational Geometry Previous: Motion Planning Maintaining Line Arrangements Input description: A set of lines and line segments . Problem description: What is the decomposition of the plane defined by ? Discussion: One of the most fundamental problems in computational geometry is constructing arrangements of lines, that is, explicitly building the regions formed by the intersections of a set of n lines. Algorithms for a surprising number of problems are based on constructing and analyzing the arrangement of a specific set of lines: ● Degeneracy testing - Given a set of n lines in the plane, do any three of them pass through the same point? Brute-force testing of all triples takes time. Instead, we can construct the arrangement of the lines and then walk over each vertex and explicitly count its degree, all in quadratic time. ● Satisfying the maximum number of linear constraints - Suppose that we are given a set of n linear constraints, each of the form . Which point in the plane satisfies the largest number of them? Construct the arrangement of the lines. All points in any region or cell of this arrangement satisfy exactly the same set of constraints, so we need to test only one point per cell in order to find the global maximum. file:///E|/BOOK/BOOK5/NODE198.HTM (1 of 4) [19/1/2003 1:32:00]
Maintaining Line Arrangements Thinking of geometric problems in terms of the appropriate features in an arrangement can be very useful in formulating algorithms. Unfortunately, it must be admitted that arrangements are not as popular in practice as might be supposed. First, a certain depth of understanding is required to apply them correctly. Second, there have been few available implementations of the fundamental algorithms, a situation that is partially addressed below. ● What do you want to do with the arrangement? - Given an arrangement and a query point, we are often interested in identifying which cell of the arrangement contains the point. This is the problem of point location, discussed in Section . Given an arrangement of lines or line segments, we are often interested in computing all points of intersection of the lines. The problem of intersection detection is discussed in Section . ● How big will your arrangement be? - Algorithms for constructing arrangements are incremental. Beginning with an arrangement of one or two lines, subsequent lines are inserted into the arrangement one at a time, building larger and larger arrangements. To insert a new line, we start on the leftmost cell containing the line and walk over the arrangement to the right, moving from cell to neighboring cell and splitting into two pieces those cells that contain the new line. A geometric fact called the zone theorem implies that the kth line inserted cuts through k cells of the arrangement, and further that O(k) total edges form the boundary of these cells. This means that we can scan through each edge of every cell we encounter on our insertion walk, confident that linear total work will be performed while inserting the line into the arrangement. Therefore, the total time to insert all n lines in constructing the full arrangement is . ● Does your input consist of points instead of lines? - Although lines and points seem to be different geometric objects, such appearances can be misleading. Through the use of duality transformations, we can turn line L into point p and vice versa: Duality is important because we can now apply line arrangements to point problems, often with surprising results. For example, suppose we are given a set of n points, and we want to know whether any three of them all lie on the same line. This sounds similar to the degeneracy testing problem discussed above. Not only is it similar, it is exactly the same, with only the role of points and lines exchanged. The answer follows from taking our points, dualizing them into lines as above, constructing the arrangement as above, and then searching for a vertex with three lines passing through it. The dual of this vertex gives the line on which the three initial vertices lie. Once we have constructed an arrangement through incremental methods, it often becomes useful to traverse each face of the arrangement exactly once. Such traversals are called sweepline algorithms and file:///E|/BOOK/BOOK5/NODE198.HTM (2 of 4) [19/1/2003 1:32:00]
- Page 559 and 560: Robust Geometric Primitives Related
- Page 561 and 562: Convex Hull ● How many dimensions
- Page 563 and 564: Convex Hull http://www.cs.att.com/n
- Page 565 and 566: Triangulation Next: Voronoi Diagram
- Page 567 and 568: Triangulation GEOMPACK is a suite o
- Page 569 and 570: Voronoi Diagrams Next: Nearest Neig
- Page 571 and 572: Voronoi Diagrams McDonald's, the ti
- Page 573 and 574: Nearest Neighbor Search Next: Range
- Page 575 and 576: Nearest Neighbor Search Implementat
- Page 577 and 578: Range Search Next: Point Location U
- Page 579 and 580: Range Search subdivisions in C++. I
- Page 581 and 582: Point Location the n edges for inte
- Page 583 and 584: Point Location More recently, there
- Page 585 and 586: Intersection Detection ● Do you w
- Page 587 and 588: Intersection Detection Implementati
- Page 589 and 590: Bin Packing Next: Medial-Axis Trans
- Page 591 and 592: Bin Packing approach for general sh
- Page 593 and 594: Medial-Axis Transformation Next: Po
- Page 595 and 596: Medial-Axis Transformation Implemen
- Page 597 and 598: Polygon Partitioning number of piec
- Page 599 and 600: Simplifying Polygons Next: Shape Si
- Page 601 and 602: Simplifying Polygons vertices and o
- Page 603 and 604: Shape Similarity Next: Motion Plann
- Page 605 and 606: Shape Similarity or how close it is
- Page 607 and 608: Motion Planning There is a wide ran
- Page 609: Motion Planning often arise in the
- Page 613 and 614: Maintaining Line Arrangements Next:
- Page 615 and 616: Minkowski Sum where x+y is the vect
- Page 617 and 618: Set and String Problems Next: Set C
- Page 619 and 620: Set Cover Next: Set Packing Up: Set
- Page 621 and 622: Set Cover Figure: Hitting set is du
- Page 623 and 624: Set Packing Next: String Matching U
- Page 625 and 626: Set Packing Notes: An excellent exp
- Page 627 and 628: String Matching shouldn't try. Furt
- Page 629 and 630: String Matching and texts, I recomm
- Page 631 and 632: Approximate String Matching This sa
- Page 633 and 634: Approximate String Matching http://
- Page 635 and 636: Text Compression Next: Cryptography
- Page 637 and 638: Text Compression code string. ASCII
- Page 639 and 640: Cryptography Next: Finite State Mac
- Page 641 and 642: Cryptography ● How can I validate
- Page 643 and 644: Cryptography MD5 [Riv92] is the sec
- Page 645 and 646: Finite State Machine Minimization F
- Page 647 and 648: Finite State Machine Minimization S
- Page 649 and 650: Longest Common Substring than edit
- Page 651 and 652: Longest Common Substring include [A
- Page 653 and 654: Shortest Common Superstring Finding
- Page 655 and 656: Software systems Next: LEDA Up: Alg
- Page 657 and 658: LEDA Next: Netlib Up: Software syst
- Page 659 and 660: Netlib Algorithms Mon Jun 2 23:33:5
Maintaining Line Arrangements<br />
Thinking of geometric problems in terms of the appropriate features in an arrangement can be very useful<br />
in formulating algorithms. Unfortunately, it must be admitted that arrangements are not as popular in<br />
practice as might be supposed. First, a certain depth of understanding is required to apply them correctly.<br />
Second, there have been few available implementations of the fundamental algorithms, a situation that is<br />
partially addressed below.<br />
● What do you want to do with the arrangement? - Given an arrangement and a query point, we are<br />
often interested in identifying which cell of the arrangement contains the point. This is the<br />
problem of point location, discussed in Section . Given an arrangement of lines or line<br />
segments, we are often interested in computing all points of intersection of the lines. <strong>The</strong> problem<br />
of intersection detection is discussed in Section .<br />
● How big will your arrangement be? - <strong>Algorithm</strong>s for constructing arrangements are incremental.<br />
Beginning with an arrangement of one or two lines, subsequent lines are inserted into the<br />
arrangement one at a time, building larger and larger arrangements. To insert a new line, we start<br />
on the leftmost cell containing the line and walk over the arrangement to the right, moving from<br />
cell to neighboring cell and splitting into two pieces those cells that contain the new line.<br />
A geometric fact called the zone theorem implies that the kth line inserted cuts through k cells of<br />
the arrangement, and further that O(k) total edges form the boundary of these cells. This means<br />
that we can scan through each edge of every cell we encounter on our insertion walk, confident<br />
that linear total work will be performed while inserting the line into the arrangement. <strong>The</strong>refore,<br />
the total time to insert all n lines in constructing the full arrangement is .<br />
● Does your input consist of points instead of lines? - Although lines and points seem to be different<br />
geometric objects, such appearances can be misleading. Through the use of duality<br />
transformations, we can turn line L into point p and vice versa:<br />
Duality is important because we can now apply line arrangements to point problems, often with<br />
surprising results.<br />
For example, suppose we are given a set of n points, and we want to know whether any three of<br />
them all lie on the same line. This sounds similar to the degeneracy testing problem discussed<br />
above. Not only is it similar, it is exactly the same, with only the role of points and lines<br />
exchanged. <strong>The</strong> answer follows from taking our points, dualizing them into lines as above,<br />
constructing the arrangement as above, and then searching for a vertex with three lines passing<br />
through it. <strong>The</strong> dual of this vertex gives the line on which the three initial vertices lie.<br />
Once we have constructed an arrangement through incremental methods, it often becomes useful to<br />
traverse each face of the arrangement exactly once. Such traversals are called sweepline algorithms and<br />
file:///E|/BOOK/BOOK5/NODE198.HTM (2 of 4) [19/1/2003 1:32:00]