Алгоритм швидкої оболонки — метод обчислення опуклої оболонки скінченної множини точок на площині. Використовує підхід «розділяй та володарюй», який полягає в тому, що задача розбивається на підзадачі приблизно однакового розміру. Аналогічний метод, використовується в алгоритмі швидкого сортування, звідси така назва.
Складність алгоритму буде , якщо кількість елементів підзадач буде лінійно зменшуватись зі сталим коефіцієнтом k<1. В найгіршому випадку швидкість буде O(n2) (квадратична).
Кроки 1-2: Через крайні ліву та праві точки проводимо лінію, яка поділить точки на дві множиниКроки 3-5: Знаходження максимальної відстані до точки, яка знаходиться не всередині трикутника та не на його межіКроки 6: Рекурсія, поки жодної точки, що задовольняє умовам, не залишиться
Алгоритм можна розбити на наступні етапи:
Знайти точки з мінімальною і максимальною координатою, вони зобов'язані бути частиною опуклої оболонки.
Використовуючи лінію, утворену двома точками розділити всю множину точок на дві підмножини, які будуть оброблятися рекурсивно.
Визначити точку, на одній стороні лінії, з максимальною відстанню від лінії. Знайдені до цього дві точки утворюють з цією точкою трикутник з найбільшою площею.
Точки, що лежать всередині цього трикутника не може бути частиною опуклої оболонки і, отже, можуть бути проігноровані в наступних кроках.
Повторіть попередні два кроки для двох ліній, утвореного трикутника (окрім початкової лінії).
Продовжуйте робити так доти, поки більше точок не залишиться, у кінці рекурсії, вибрані точки, складуть опуклу оболонку.