Page cover

⌛ Divide & Conquer

In computer sciencearrow-up-right, divide and conquer is an algorithm design paradigmarrow-up-right. A divide-and-conquer algorithmarrow-up-right recursivelyarrow-up-right breaks down a problem into two or more sub-problems of the same or related type, until these become simple enough to be solved directly. The solutions to the sub-problems are then combined to give a solution to the original problem

The divide-and-conquer technique is the basis of efficient algorithms for many problems, such as sortingarrow-up-right (e.g., quicksortarrow-up-right, merge sortarrow-up-right), multiplying large numbersarrow-up-right (e.g., the Karatsuba algorithmarrow-up-right), finding the closest pair of pointsarrow-up-right, syntactic analysisarrow-up-right (e.g., top-down parsersarrow-up-right), and computing the discrete Fourier transformarrow-up-right (FFTarrow-up-right).[1]arrow-up-right

Designing efficient divide-and-conquer algorithms can be difficult. As in mathematical inductionarrow-up-right, it is often necessary to generalize the problem to make it amenable to a recursive solution. The correctness of a divide-and-conquer algorithm is usually proved by mathematical induction, and its computational cost is often determined by solving recurrence relationsarrow-up-right.

Related

circle-info

Learning Material (understanding classic instances of Divide & Conquer)

Practices

Graduation Challenge

Last updated