Перейти к содержанию

12.5   Резюме

1.   Ключевые выводы

  • Divide and conquer - это распространенная стратегия проектирования алгоритмов, которая включает два этапа: разделение (декомпозицию) и решение (объединение), и обычно реализуется с помощью рекурсии.
  • Критерии применимости этой стратегии к задаче включают: возможность разложения задачи, независимость подзадач и возможность объединения их решений.
  • Сортировка слиянием является типичным применением divide and conquer: она рекурсивно делит массив на два равных по длине подмассива, пока не останется массив из одного элемента, после чего начинает поэтапное объединение.
  • Введение стратегии divide and conquer часто позволяет повысить эффективность алгоритма. С одной стороны, стратегия уменьшает число операций; с другой - после разбиения она способствует параллельной оптимизации на уровне системы.
  • Divide and conquer не только помогает решать многие алгоритмические задачи, но и широко используется при проектировании структур данных и алгоритмов, поэтому его можно встретить буквально повсюду.
  • По сравнению с полным перебором адаптивный поиск работает эффективнее. Алгоритмы поиска со сложностью \(O(\log n)\) обычно реализуются на основе стратегии divide and conquer.
  • Двоичный поиск - еще одно типичное применение divide and conquer, в котором отсутствует шаг объединения решений подзадач. Мы можем реализовать двоичный поиск рекурсивно, через divide and conquer.
  • В задаче построения двоичного дерева исходная задача построения дерева может быть разбита на две подзадачи: построение левого и правого поддеревьев, а реализуется это через разбиение индексных интервалов прямого и симметричного обходов.
  • В задаче о Ханойской башне задача размера \(n\) разбивается на две подзадачи размера \(n-1\) и одну подзадачу размера \(1\) . После последовательного решения этих трех подзадач исходная задача также оказывается решенной.
Оставляйте свои идеи, вопросы и предложения в комментариях