Зіркоподібний многокутникЗіркоподібний многокутник — многокутна зірчата область на площині. Тобто, вона містить точку, з якої всі точки многокутника видимі. Формально многокутник P є зіркоподібним, якщо існує така точка z, що для кожної точки p з P відрізок zp цілком лежить у межах P.[1] Множина усіх точок z з цією властивістю (тобто множина точок, з яких P видно повністю) називається ядром або душею P. ПрикладБудь-який опуклий многокутник буде зірчастим. Опуклий многокутник є тотожнім зі своїм ядром. Правильні зірки будуть зіркоподібними, їх центри належать ядру. Антипаралелограми та шестикутники Лемуана[en] з самоперетинами будуть зіркоподібними, ядром буде лише одна точка. Многокутники видимості є зіркоподібними за визначенням, оскільки кожну точку всередині них повинно бути видно з центру за визначенням. АлгоритмиПеревірка многокутника на зіркоподібність, і пошук однієї точки ядра, можна виконати за лінійний час, як задачу лінійного програмування з застосуванням методів лінійного програмування для невеликої кількості вимірів (див. http://www.inf.ethz.ch/personal/emo/PublFiles/SubexLinProg_ALG16_96.pdf [Архівовано 12 серпня 2017 у Wayback Machine.], стор. 16). Кожне ребро многокутника визначає внутрішність півплощини, границя якої містить це ребро, а сама півплощина містить внутрішні точки багатокутника, які належать околу внутрішніх точок цього ребра. Ядром многокутника буде перетин усіх внутрішностей півплощин. Перетин довільної множини N півплощин можна знайти за час Θ(N log N) за допомогою методу розділяй та володарюй.[1] Однак, є більш швидкі способи пошуку ядра багатокутника: Лі та Препарата, (1979)[2] розробили алгоритм знаходження ядра за лінійний час. Примітки
Див. також |