logo

Алгоритм розділяй і володарюй

Алгоритм розділяй і володарюй це стратегія вирішення проблем, яка передбачає розбиття складної проблеми на більш дрібні, легші частини, вирішення кожної частини окремо, а потім комбінування рішень для вирішення вихідної проблеми. Це широко використовувана алгоритмічна техніка в інформатиці та математиці.

приклад: В Сортування злиттям алгоритм, в Розділяй і володарюй Стратегія використовується для сортування списку елементів. На зображенні нижче показано стани поділу та об’єднання для сортування масиву Сортування злиттям .



Зміст

Що таке алгоритм «Розділяй і володарюй»?

«Розділяй і володарюй» — це техніка вирішення проблем, яка передбачає розбиття більшої проблеми на підпроблеми, розв’язання підпроблем незалежно та комбінування розв’язків цих підпроблем, щоб отримати рішення більшої проблеми.



Етапи алгоритму «Розділяй і володарюй»:

Алгоритм «Розділяй і володарюй» можна розділити на три етапи: Розділити , завоювати і Об’єднати .

1. Розділіть:

  • Розбийте вихідну проблему на менші підпроблеми.
  • Кожна підпроблема повинна представляти частину загальної проблеми.
  • Мета полягає в тому, щоб розділити проблему, доки подальший поділ не стане можливим.

2. Перемагай:

  • Розв’яжіть кожну меншу підзадачу окремо.
  • Якщо підпроблема досить мала (їх часто називають базовим варіантом), ми вирішуємо її безпосередньо без подальшої рекурсії.
  • Мета полягає в тому, щоб самостійно знайти рішення цих підпроблем.

3. Об'єднати:

  • Об’єднайте підпроблеми, щоб отримати остаточне рішення всієї проблеми.
  • Коли менші підпроблеми розв’язані, ми рекурсивно комбінуємо їхні розв’язки, щоб отримати розв’язок більшої проблеми.
  • Мета полягає в тому, щоб сформулювати рішення вихідної проблеми шляхом об’єднання результатів підпроблем.

Застосування алгоритму «Розділяй і володарюй»:

  • Сортування злиттям: Сортування злиттям є класичним прикладом алгоритму сортування «розділяй і володарюй». Він розбиває масив на менші підмасиви, сортує їх окремо, а потім об’єднує, щоб отримати відсортований масив.
  • Середній результат: Медіану набору чисел можна знайти за допомогою підходу «розділяй і володарюй». Шляхом рекурсивного поділу набору на менші підмножини можна ефективно визначити медіану.
  • Мінімальний і максимальний висновок: Алгоритм «Розділяй і володарюй» можна використовувати для одночасного знаходження мінімального та максимального елементів у масиві. Розділивши масив навпіл і порівнявши пари min-max з кожної половини, загальні min і max можна визначити в логарифмічній часовій складності.
  • Матричне множення: Алгоритм Штрассена для множення матриць — це техніка «розділяй і володарюй», яка зменшує кількість множень, необхідних для великих матриць, розбиваючи матриці на менші підматриці та об’єднуючи їхні продукти.
  • Проблема найближчої пари: Проблема найближчої пари передбачає пошук двох найближчих точок у наборі точок у багатовимірному просторі. Алгоритм розділяй і володарюй, такий як алгоритм найближчої пари розділяй і володарюй, може ефективно вирішити цю проблему шляхом рекурсивного поділу точок і об’єднання розв’язків із підпроблем.

Основи алгоритму «Розділяй і володарюй»:

Стандартні алгоритми включені Алгоритм розділяй і володарюй :

Проблеми на основі бінарного пошуку:

  • Знайдіть піковий елемент у заданому масиві
  • Перевірити елемент більшості у відсортованому масиві
  • K-й елемент двох відсортованих масивів
  • Знайдіть кількість нулів
  • Знайдіть кількість обертів у масиві Rotated Sorted
  • Знайдіть точку, де монотонно зростаюча функція вперше стає додатною
  • Медіана двох відсортованих масивів
  • Медіана двох відсортованих масивів різного розміру
  • Проблема розділу художника за допомогою бінарного пошуку

Тренувальні задачі на Алгоритм розділяй і володарюй :

  • Квадратний корінь із цілого числа
  • Максимум і мінімум масиву з використанням мінімальної кількості порівнянь
  • Знайдіть частоту кожного елемента в масиві з обмеженим діапазоном за час, менший ніж O(n).
  • Проблема плитки
  • Лічити інверсії
  • Проблема Skyline
  • Пошук у двовимірному масиві, відсортованому по рядках і стовпцях
  • Виділіть мінімальну кількість сторінок
  • Модульне піднесення до степеня (потужність у модульній арифметиці)

Швидкі посилання:

  • Вивчіть структуру даних і алгоритми | Підручник DSA
  • «Практичні завдання» на тему «Розділяй і володарюй».
  • «Вікторини» на тему «Розділяй і володарюй».