Мене цікавить складність вирішення питання про те, чи є даний непростий багатокутник майже простим, в будь-якому з двох різних формальних почуттів: слабко простий або несамокретний . Оскільки ці терміни не широко відомі, дозвольте розпочати з деяких визначень.
Багатокутник простий, якщо всі вершин є чіткими, а краї перетинаються лише в їх кінцевих точках. Рівнозначно, багатокутник простий, якщо він гомеоморфний колу і кожен край має позитивну довжину. Однак, як правило, вершини та краї багатокутника можуть перетинатися довільно або навіть збігатися. 1
Розглянемо два полігональних шляху і , перетин яких є загальним підпутком обох (можливо, однієї точки). Ми говоримо , що і хрест , якщо їх кінцеві точки чергуються на кордоні околиці загальної подпуть . Багатокутник є самопересічним, якщо він має два перехрестя, і в протилежному випадку не перетинається . 2
Багатокутник є дуже простим, якщо це межа послідовності простих багатокутників, або рівнозначно, якщо існує довільно невелике збурення вершин, що робить багатокутник простим. Кожен слабо простий багатокутник не є самопересічним; однак деякі непересічні багатокутники не є надто простими.
Наприклад, розглянемо шість точок показаних нижче.
Багатокутник простий; дивіться ліву фігуру.
Багатокутник слабо простий; на середній фігурі зображений поблизу простий багатокутник. Однак цей багатокутник не простий, оскільки він відвідує тричі.
Багатокутник є самопересічним, тому що та перетинаються. Подивіться на потрібну фігуру для деякої інтуїції.b p q z y q p a
Нарешті, багатокутник (який два рази обертається навколо середнього багатокутника) не є самопересічним, але це не дуже просто. Інтуїтивно, номер повороту цього многокутника дорівнює , тоді як число повороту будь-якого простого многокутника повинно бути . (Офіційний доказ вимагає певного аналізу випадків, частково тому, що поворотне число насправді не визначено для полігонів з кутами !)± 2 ± 1 0 ∘
Оновлення (13 вересня): На малюнку нижче полігон не є самопересічним та має поворот №1 , але це не дуже просто. Полігон, мабуть, має кілька пересічних непростих підземних ділянок , але він не має пересічних простих підвузлів . (Я кажу "певно", тому що незрозуміло, як визначити, коли перетинаються дві непрості прогулянки!)
Отже, ось мої актуальні питання:
Як швидко ми можемо визначити, чи не є певний багатокутник неперехідним?
Як швидко ми можемо визначити, чи даний багатокутник слабко простий?
Першу задачу можна вирішити за час наступним чином. Оскільки існує вершин, то є підряди вершин до вершин; ми можемо перевірити, чи який-небудь конкретний субпатій простий за час (грубою силою). Для кожної пари простих підрядок вершина до вершини ми можемо перевірити, чи вони перетинаються за час. Але це не може бути найкращим можливим алгоритмом.n O ( n 2 ) O ( n 2 ) O ( n )
Я не знаю, чи можна вирішити другу проблему за багаточлен. Я думаю, що я можу швидко обчислити чітко визначене число повороту для будь-якого не простого багатокутника (якщо тільки об'єднання країв полігону не є лише контуром; в цьому випадку полігон повинен бути слабко простим); дивіться мою відповідь нижче. Однак з нового прикладу багатокутника вище випливає, що неперехід і поворот №1 не означають, що це просто просто.
Ми можемо визначити, чи даний багатокутник простий за час , перевіривши кожну пару ребер на перетин, або за час за допомогою стандартного алгоритму швидкої лінії чи навіть за часу використовуючи алгоритм тріангуляції Chazelle. (Якщо введення багатокутника не є простим, будь-який алгоритм тріангуляції буде або кидати виняток, нескінченний цикл, або видавати висновок, який не є дійсною тріангуляцією.) Але жоден з цих алгоритмів не вирішує проблем, про які я задаю питання. O ( n log n ) O ( n )
1 Бранко Грюнбаум. Полігони: Майстер мав рацію, а Пуансот помилявся, але переважав . Beiträge zur Algebra und Geometrie 53 (1): 57–71, 2012.
2 Див., Наприклад: Ерік Д. Демейн та Джозеф О'Рурк. Геометричні алгоритми складання: зв'язки, орігамі, багатогранники . Cambridge University Press, 2007.