Алгоритм швидкої оболонкиАлгоритм швидкої оболонки — метод обчислення опуклої оболонки скінченної множини точок на площині. Використовує підхід «розділяй та володарюй», який полягає в тому, що задача розбивається на підзадачі приблизно однакового розміру. Аналогічний метод, використовується в алгоритмі швидкого сортування, звідси така назва. Складність алгоритму буде , якщо кількість елементів підзадач буде лінійно зменшуватись зі сталим коефіцієнтом k<1. В найгіршому випадку швидкість буде O(n2) (квадратична). АлгоритмАлгоритм можна розбити на наступні етапи:
Переваги
Недоліки
Псевдокодprocedure otochka(tochky)
begin
A := крайня ліва точка
B := крайня права точка
s1 := множина точок з правої сторони AB
s2 := множина точок з лівої сторони AB
return [A] + QuickHull(A, B, s1) + [B] + QuickHull(B, A, s2);
end;
procedure QuickHull(A, B, tochky)
begin
C := найбільш віддалена точка від прямої AB
s1 := множина точок, яка знаходиться на праворуч від відрізка AC
s2 := множина точок, яка знаходиться на праворуч від відрізка CB
return QuickHull(A, C, s1) + [C] + QuickHull(C, B, s2);
end;
Див. такожПосилання
|