Handouts:

10/2/08: Chapter 2: More on intersections, DCEL; review of LP

See the lecture 7 powerpoint slides from last week (second half of the slides, starting with DCEL) and the lecture 8 powerpoint slides

  • Remarks/leftovers on intersection detection.
    Review: Bentley-Ottmann plane sweep paradigm: Sweep a vertical line from left to right (or a horizontal line from top to bottom, etc). Maintain two data structures: Event Queue (EQ) and the Sweep Line Status (SLS).
  • Apply to arbitrary segments in the plane: O(n log n) to DETECT if there is ANY intersection, using O(n) space. Events at segment endpoints (EQ does not change).
  • O((k + n) log n) to REPORT all k intersections. Memory usage: Naively O(n+k); Pach-Sharir prove an upper bound (using extremal graph theory): O(n log^2 n); simple modification of sweep: O(n) space
  • Space bound in Bentley-Ottmann sweep to report: how to get O(n) space
  • Note that Chazelle-Edelsbrunner does the REPORT in optimal time O(k+ n log n), using O(k) space. Balaban (1995) improved the space complexity to O(n) working storage. These are the bounds you should know when asked "How efficiently can one do...."
  • Plane sweep paradigm in a special case: Apply to axis-parallel segments in the plane: O(n log n) to detect/count; O(k + n log n) to report all k intersections.
  • Mention of Clarkson-Shor and Mulmuley results on randomized incremental construction. Note: Their methods apply also to curved segments.
  • Brief discussion of other topics: computing an overlay of subdivisions, computing union/intersection/set difference (see Cor 2.7), simplicity testing, checking two convex or simple polygons for intersection, etc.
  • Practical methods: grid-based methods, bounding volume trees (QuickCD)
  • DCEL data structure
  • Brief review/recap of Linear Programming (history, etc)