Алгоритм Чена — алгоритм побудови опуклої оболонки скінченної множини точок на площині. Виконується за час , де — кількість точок опуклої оболонки. Є комбінацією алгоритму, що обчислює опуклу оболонку за час (наприклад, алгоритм Грехема) з алгоритмом загортання за Джарвісом, який виконується за час .
Алгоритм широко використовується, так як є найшвидшим алгоритмом для обчислення опуклої оболонки, так і тому, що є суттєво простішим ніж алгоритм Кіркпатрика-Зейделя, який працює з такою ж швидкістю. Також узагальнюється на випадок обчислення опуклої оболонки в тривимірному просторі.
Алгоритм названий на честь [en].
Опис алгоритму
Ідея алгоритму Чена полягає у початковому поділі всіх точок на групи по штук в кожній. Відповідно, кількість груп дорівнює . Для кожної з груп будується опукла оболонка скануванням за Грехемом, або якимось іншим, що працює зі швидкістю , таким чином, час витрачений для всіх груп точок складе .
Далі, починаючи з найнижчої точки (як що таких декілька, то обираємо з них крайню ліву), для отриманих в результаті розбиття оболонок будується спільна опукла оболонка за алгоритмом Джарвіса. При цьому наступна точка опуклої оболонки точка знаходиться за час , так як для того, щоб знайти точку з максимальним тангенсом по відношенню до точки, що розглядається, в -кутнику достатньо затратити . Логарифмічний час на пошук, витрачається тому, що точки в -кутнику вже впорядковані за полярним кутом під час виконання алгоритму сканування за Грехемом. У підсумку, на обхід потрібно часу.
Тобто алгоритм Чена працює за , при цьому, якщо отримати , то за .
Hull(P, m) 1)взяти . Розділити на диз'юнктивних підмножин потужності не більше ; 2)for i = 1 to r do: (a) обчислити опуклу оболонку Graham(), зберегти вершини в відсортованому за полярним кутом масиві; 3)як взяти нижню найлівішу точку з ; 4)for k = 1 to m do (a) for i = 1 to r do знайти та запам'ятати точку з з максимальним кутом ; (b) взяти як точку з с максимальним кутом ; (c) if return ; 5) return маленьке, спробуйте ще;
Вибір числа точок m
Зрозуміло, що обхід за Джарвісом, а отже і весь алгоритм, буде коректно працювати, тільки якщо , але як заздалегідь дізнатися, скільки точок буде в опуклій оболонці? Треба запускати алгоритм декілька разів, підбираючи та, якщо , то алгоритм буде повертати помилку. Якщо робити підбір бінарним пошуком за , то у підсумку вийде час , що достатньо довго.
Процес можна прискорити, якщо почати з маленького значення m і далі значно його збільшувати, доки не вийде . З іншого боку, якщо m буде збільшуватись занадто швидко, то є ризик що m буде набагато більше h і буде виконана зайва робота, яка збільшить час роботи алгоритму. Ітерація на кроці з номером буде . При цьому -а ітерація займе . Процес пошуку завершиться, коли , тобто ( — бінарний логарифм).
У підсумку .
ChanHull(P) for t = 1 to n do: (a) взяти ; (b) L = Hull(P, m); (c) if L != « маленьке, спробуйте ще» return L;
Реалізація
Стаття Чена містить декілька пропозицій, які можуть підвищити ефективність практичного використання алгоритму, наприклад:
- Після обчислення опуклих оболонок підмножин, треба виключати з подальшого розгляду точки, що не належать цім опуклим оболонкам, тому що вони не належать шуканій опуклій оболонці.
- Опуклі оболонки більших множин точок можуть бути отримані об'єднанням вже обчислених опуклих оболонок. Це суттєво прискорить знаходження більшої опуклої оболонки, тому що опукла оболонка, об'єднання двох опуклих багатокутників, може бути знайдена за час, пропорційній сумарній кількості вершин.
Посилання
- Препарата Ф., Шеймос М. Вычислительная геометрия: введение. — Москва: Мир, 1989. (с. 142)
Джерела
- David M. Mount. Computational Geometry. — University of Maryland, 2002. — С. 122.
- Timothy M. Chan. "Optimal output-sensitive convex hull algorithms in two and three dimensions [ 21 лютого 2008 у Wayback Machine.]". [en], Vol. 16, pp.361–368. 1996.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Algoritm Chena algoritm pobudovi opukloyi obolonki skinchennoyi mnozhini tochok na ploshini Vikonuyetsya za chas O nlog h displaystyle O n log h de h displaystyle h kilkist tochok opukloyi obolonki Ye kombinaciyeyu algoritmu sho obchislyuye opuklu obolonku za chas O nlog n displaystyle O n log n napriklad algoritm Grehema z algoritmom zagortannya za Dzharvisom yakij vikonuyetsya za chas O nh displaystyle O nh Algoritm Chena pobudovi opukloyi obolonki Trudomistkist O nlog h displaystyle O n log h h displaystyle h kilkist tochok u opuklij obolonci Algoritm shiroko vikoristovuyetsya tak yak ye najshvidshim algoritmom dlya obchislennya opukloyi obolonki tak i tomu sho ye suttyevo prostishim nizh algoritm Kirkpatrika Zejdelya yakij pracyuye z takoyu zh shvidkistyu Takozh uzagalnyuyetsya na vipadok obchislennya opukloyi obolonki v trivimirnomu prostori Algoritm nazvanij na chest en Opis algoritmuIdeya algoritmu Chena polyagaye u pochatkovomu podili vsih tochok na grupi po m displaystyle m shtuk v kozhnij Vidpovidno kilkist grup dorivnyuye r n m displaystyle r left lceil n m right rceil Dlya kozhnoyi z grup buduyetsya opukla obolonka skanuvannyam za Grehemom abo yakimos inshim sho pracyuye zi shvidkistyu O mlog m displaystyle O m log m takim chinom chas vitrachenij dlya vsih grup tochok sklade O rmlog m O nlog m displaystyle O rm log m O n log m Dali pochinayuchi z najnizhchoyi tochki yak sho takih dekilka to obirayemo z nih krajnyu livu dlya otrimanih v rezultati rozbittya obolonok buduyetsya spilna opukla obolonka za algoritmom Dzharvisa Pri comu nastupna tochka opukloyi obolonki tochka znahoditsya za chas O rlog m displaystyle O r log m tak yak dlya togo shob znajti tochku z maksimalnim tangensom po vidnoshennyu do tochki sho rozglyadayetsya v m displaystyle m kutniku dostatno zatratiti O log m displaystyle O log m Logarifmichnij chas na poshuk vitrachayetsya tomu sho tochki v m displaystyle m kutniku vzhe vporyadkovani za polyarnim kutom pid chas vikonannya algoritmu skanuvannya za Grehemom U pidsumku na obhid potribno O hrlog m O hn m log m displaystyle O hr log m O left left hn m right log m right chasu Tobto algoritm Chena pracyuye za O n hn m log m displaystyle O left left n hn m right log m right pri comu yaksho otrimati m h displaystyle m h to za O nlog h displaystyle O n log h Hull P m 1 vzyati r n m displaystyle r left lceil n m right rceil Rozdiliti P displaystyle P na r displaystyle r diz yunktivnih pidmnozhin P1 P2 Pr displaystyle P 1 P 2 ldots P r potuzhnosti ne bilshe m displaystyle m 2 for i 1 to r do a obchisliti opuklu obolonku Graham Pi displaystyle P i zberegti vershini v vidsortovanomu za polyarnim kutom masivi 3 yak p1 displaystyle p 1 vzyati nizhnyu najlivishu tochku z P displaystyle P 4 for k 1 to m do a for i 1 to r do znajti ta zapam yatati tochku qi displaystyle q i z Pi displaystyle P i z maksimalnim kutom pk 1pkqi displaystyle p k 1 p k q i b vzyati yak pk 1 displaystyle p k 1 tochku q displaystyle q z q1 q2 qr displaystyle q 1 q 2 ldots q r s maksimalnim kutom pk 1pkq displaystyle p k 1 p k q c if pk 1 p1 displaystyle p k 1 p 1 return p1 pk displaystyle p 1 ldots p k 5 return m displaystyle m malenke sprobujte she Vibir chisla tochok mZrozumilo sho obhid za Dzharvisom a otzhe i ves algoritm bude korektno pracyuvati tilki yaksho m h displaystyle m geqslant h ale yak zazdalegid diznatisya skilki tochok bude v opuklij obolonci Treba zapuskati algoritm dekilka raziv pidbirayuchi m displaystyle m ta yaksho m lt h displaystyle m lt h to algoritm bude povertati pomilku Yaksho robiti pidbir binarnim poshukom za n displaystyle n to u pidsumku vijde chas O nlog h log n O nlog n displaystyle O n log h log n O n log n sho dostatno dovgo Proces mozhna priskoriti yaksho pochati z malenkogo znachennya m i dali znachno jogo zbilshuvati doki ne vijde m h displaystyle m geqslant h Z inshogo boku yaksho m bude zbilshuvatis zanadto shvidko to ye rizik sho m bude nabagato bilshe h i bude vikonana zajva robota yaka zbilshit chas roboti algoritmu Iteraciya na kroci z nomerom t displaystyle t bude m min n 22t displaystyle m min n 2 2 t Pri comu t displaystyle t a iteraciya zajme O nlog 22t O n2t displaystyle O n log 2 2 t O n2 t Proces poshuku zavershitsya koli 22t h displaystyle 2 2 t geqslant h tobto t loglogh displaystyle t lceil mathrm log mathrm log h rceil log displaystyle log binarnij logarifm U pidsumku t 1logloghn2t n t 1log log h2t n21 log log h 2nlog h O nlog h displaystyle sum t 1 mathrm log mathrm log h n2 t n sum t 1 log log h 2 t leqslant n2 1 log log h 2n log h O n log h ChanHull P for t 1 to n do a vzyati m min 22t n displaystyle m min 2 2 t n b L Hull P m c if L m displaystyle m malenke sprobujte she return L RealizaciyaStattya Chena mistit dekilka propozicij yaki mozhut pidvishiti efektivnist praktichnogo vikoristannya algoritmu napriklad Pislya obchislennya opuklih obolonok pidmnozhin treba viklyuchati z podalshogo rozglyadu tochki sho ne nalezhat cim opuklim obolonkam tomu sho voni ne nalezhat shukanij opuklij obolonci Opukli obolonki bilshih mnozhin tochok mozhut buti otrimani ob yednannyam vzhe obchislenih opuklih obolonok Ce suttyevo priskorit znahodzhennya bilshoyi opukloyi obolonki tomu sho opukla obolonka ob yednannya dvoh opuklih bagatokutnikiv mozhe buti znajdena za chas proporcijnij sumarnij kilkosti vershin PosilannyaPreparata F Shejmos M Vychislitelnaya geometriya vvedenie Moskva Mir 1989 s 142 DzherelaDavid M Mount Computational Geometry University of Maryland 2002 S 122 Timothy M Chan Optimal output sensitive convex hull algorithms in two and three dimensions 21 lyutogo 2008 u Wayback Machine en Vol 16 pp 361 368 1996