Sono interessato alla complessità di decidere se un determinato poligono non semplice è quasi semplice, in uno dei due diversi sensi formali: debolmente semplice o non auto-attraversante . Dato che questi termini non sono ampiamente conosciuti, vorrei iniziare con alcune definizioni.
Un poligono è semplice se tutti gli vertici sono distinti e gli spigoli si intersecano solo ai loro punti finali. Equivalentemente, un poligono è semplice se è omeomorfo a un cerchio e ogni bordo ha una lunghezza positiva. In generale, tuttavia, i vertici e gli spigoli di un poligono possono intersecarsi arbitrariamente o addirittura coincidere. 1
Considera due percorsi poligonali e cui intersezione è un sottotraccia comune di entrambi (possibilmente un singolo punto). Noi diciamo che e croce se i loro punti finali si alternano sul confine di un quartiere del comune sottotracciato . Un poligono è auto-attraversante se ha due sottotracciati incrociati e non auto-attraversante altrimenti. 2
Un poligono è debolmente semplice se è il limite di una sequenza di poligoni semplici, o equivalentemente, se c'è una perturbazione arbitrariamente piccola dei vertici che rende semplice il poligono. Ogni poligono debolmente semplice non è auto-attraversante; tuttavia, alcuni poligoni non auto-attraversanti non sono debolmente semplici.
Ad esempio, considera i sei punti mostrati di seguito.
Il poligono è semplice; vedi la figura a sinistra.
Il poligono è debolmente semplice; la figura centrale mostra un semplice poligono vicino. Tuttavia, questo poligono non è semplice, perché visita tre volte.
Il poligono è auto-attraversante, perché i sottotracciati e incrociano. Vedi la figura giusta per un po 'di intuizione.b p q z y q p a
Infine, il poligono (che avvolge due volte intorno al poligono centrale) è non-self-crossing, ma è non semplice debolmente. Intuitivamente, il numero di svolta di questo poligono è , mentre il numero di svolta di qualsiasi poligono semplice deve essere . (Una dimostrazione formale richiede un'analisi del caso, in parte perché il numero di svolta non è in realtà ben definito per i poligoni con angoli !)± 2 ± 1 0 ∘
Aggiornamento (13 settembre): Nella figura seguente, il poligono non è auto-attraversante e ha la svolta numero 1 , ma non è debolmente semplice. Il poligono ha probabilmente diversi passaggi secondari non semplici che attraversano , ma non ha percorsi secondari semplici che attraversano . (Dico "discutibilmente" perché non è chiaro come definire quando si incrociano due passeggiate non semplici!)
Quindi, finalmente, ecco le mie domande reali:
Con quale rapidità possiamo determinare se un determinato poligono non è auto-attraversante?
Quanto velocemente possiamo determinare se un determinato poligono è debolmente semplice?
Il primo problema può essere risolto in tempo come segue. Poiché ci sono vertici, ci sono sottopercorsi vertice a vertice; possiamo verificare se un particolare sottotracciato è semplice in tempo (con forza bruta). Per ogni coppia di semplici sottotracciati da vertice a vertice, possiamo verificare se si incrociano nel tempo . Ma questo non può essere il miglior algoritmo possibile.n
Non so se il secondo problema possa essere risolto in tempi polinomiali. Penso di poter calcolare rapidamente un numero di svolta ben definito per qualsiasi poligono non semplice (a meno che l'unione dei bordi del poligono non sia solo un percorso, nel qual caso il poligono deve essere debolmente semplice); vedi la mia risposta qui sotto. Tuttavia, il nuovo poligono di esempio sopra riportato implica che il non attraversamento automatico e la rotazione del numero 1 non implica debolmente semplice.
Possiamo determinare se un dato poligono è semplice in tempo il controllo di ciascuna coppia di bordi di intersezione, o tempo utilizzando un algoritmo sweepline normale, o anche in tempo usando l'algoritmo di triangolazione di Chazelle. (Se il poligono di input non è semplice, qualsiasi algoritmo di triangolazione genererà un'eccezione, un ciclo infinito o produrrà un output che non è una triangolazione valida.) Ma nessuno di questi algoritmi risolve i problemi di cui mi sto chiedendo. O ( n registro n ) O ( n )
1 Branko Grünbaum. Poligoni: Meister aveva ragione e Poinsot aveva torto ma ha prevalso . Beiträge zur Algebra und Geometrie 53 (1): 57–71, 2012.
2 Vedi, ad esempio: Erik D. Demaine e Joseph O'Rourke. Algoritmi pieghevoli geometrici: collegamenti, origami, poliedri . Cambridge University Press, 2007.