Lecture 9
Computational Geometry Algorithms: Divide and Conquer

In this lecture we continue our acquaintance with computational geometry algorithms. First, we look at a different way to compute the convex hull. We explore the Jarvis's march algorithm. This algorithm is output sensitive, i.e., its running time is expressed in terms of both the size of the input and the size of the output.

In the next part of the lecture we look at a divide-and-conquer algorithm to find a closest pair of points in a set of points. We also spend some time to remember how recurrences are solved, which is needed when analyzing running times of divide-and-conquer algorithms.

Goals of the lecture:
  - to understand the concept of output sensitive algorithms;
  - to be able to apply the divide-and-conquer algorithm design technique to geometric problems;
  - to remember how recurrences are used to analyze the divide-and-conquer algorithms;
  - to understand and be able to analyze the Jarvi's march algorithm and the divide-and-conquer algorithm for finding a closest pair.

Time and Location

Tuesday, 24th of October, 2006 at 10:10 in B2-104

Reading material

The remainder of Chapter 33. While reading, make sure you get answers to the following questions:
  - In which situations is the Jarvis's march more efficient than the Graham scan?
  - What are the subproblems in the closest-pair problem?
  - How are the solutions to subproblems combined in the closest-pair algorithm?
  - What is the complexity of combining solutions of the two subproblems in the closest-pair algorithm?
Background reading: If you feel that you need to refresh your knowledge about solving recurrences read CLRS chapter 4 or look at the slides from the AD&S course.

Lecture slides

[pdf]

Exercises

Solve CLRS 33.4-1, 33.4-2, 33.4-3.
Give a divide-and-conquer algorithm to compute a convex hull of a set of n two-dimensional points. Show that your algorithm works in worst-case O(n log n) time (if necessary, modify your algorithm to have this running time).
Describe an algorithm to find the k closest pairs of points in a set of n two-dimensional points. Note that one point is allowed to be paired with multiple other points. What is the worst-case running time of your algorithm? Express it in both n and k.

Last updated Oct 24, 2006, Simonas Saltenis