Separazione di un poliedro preelaborato e un piano


14

Ho seri problemi a capire un passo nel documento di Dobkin e Kirkpatrick sulla separazione dei poliedri. Sto cercando di capire questa versione: http://www.cs.princeton.edu/~dpd/Papers/SCG-09-invited/old%20papers/DPD+Kirk.pdf

Sostiene che dopo che conosciamo la migliore separazione di e S , realizzata da r i e s i , possiamo trovare la migliore separazione di P i - 1 e S in passi O ( 1 ) . Questo viene fatto nel modo seguente. Prendiamo il piano parallelo da S a re i e tagliamo P i - 1 in due parti con esso. Da un lato, il punto più vicino a S è r iPiSrisiPi1SO(1)SriPi1Sri e dall'altro abbiamo un poliedro `` elementare '' che possiamo controllare . Il mio problema è: come possiamo trovare questo poliedro elementare? Si noti che il grado di r i a P i - 1 potrebbe essere illimitato.O(1)riPi1

Nel pdf per dimostrare Thm 5.1 da pagina 9, usano Thm 3.1 da pagina 4, il che rende tutto più difficile da seguire.


Mi chiedo davvero che se offro una generosità nella descrizione di cui dico che la risposta di JeffE non mi è chiara e in un commento alla sua risposta specifico il mio problema, allora perché le persone continuano a votare la sua risposta senza rispondere alla mia domanda? Inoltre, mi chiedo, la sua risposta otterrebbe automaticamente la generosità?
domotorp,

un voto indica che la risposta fornisce qualcosa di valore, cosa che ha fatto! semplicemente non esattamente quello che volevi. in effetti, la risposta di cui avevi bisogno sembrava essere un affinamento del suggerimento generale. Inoltre, perché preoccuparsi dei voti di qualcun altro?
Suresh Venkat,

Risposte:


6

Risposta aggiornata e riscritta da zero.

Si sono dati un politopo . Eseguire la gerarchia Dobkin-Kirkpatric su P. Questo vi dà una sequenza di polytops P 1P 2... P k = P . Supponiamo che desideri trovare il punto più vicino su P a un punto di query q . L'algoritmo di base inizia calcolando il punto più vicino c 1 a q su P 1 , quindi considera tutte le nuove regioni (tende) adiacenti a c 1 , trova il punto più vicino c 2 a qPP1P2Pk=PPqc1qP1c1c2qin queste nuove regioni, e continuiamo in questo modo fino a raggiungere .Pk

Ora, se è su un bordo, allora non ci sono problemi: solo due tende potrebbero toccare questo bordo o solo una di esse potrebbe coprire il bordo. Pertanto, l'aggiornamento di c i + 1 da C i in questo caso richiede tempo costante.cici+1Ci

Quindi il problema è quando trova su un vertice di alto grado, perché quindi il numero di nuove tende adiacenti ad esso quando ci si sposta su P i + 1 potrebbe essere grande. Per ovviare a questo, simuleremo un vertice di grande grado come una raccolta di vertici di basso grado. In particolare, in ogni fase, se c i si trova su un vertice v , ricorderemo due bordi consecutivi e i , e i adiacenti a v , in modo tale che il punto più vicino a q in P i + 1ciPi+1civei,eivqPi+1giace su una tenda che è adiacente o copre uno di questi due bordi. Come tale, possiamo fare il calcolo richiesto in tempo costante.

Quindi rimaniamo con il problema di come tenere traccia di questi due bordi mentre saliamo.

Per fare ciò, pre-calcolare per ogni vertice di P una direzione tangente t v . Sia Q i ( v ) il poligono convesso che è la figura del vertice di v per il poligono P i (con il piano che definisce la figura del vertice ha normale nella direzione di t v ). Concettualmente, Q 1 ( v ) , Q 2 ( v ) , . . . , Q k ( v )vPtvQi(v)vPitvQ1(v),Q2(v),...,Qk(v)si comporta come una gerarchia DK 2d. Se il punto più vicino su a q si trova su un vertice w, allora questo corrisponde a v e un bordo adiacente e in P i , dove il bordo e interseca il piano della figura del vertice in w . Se il punto più vicino su Q i ( v ) a q si trova su un bordo e , allora si ricordano i due bordi adiacenti di P i che definiscono i due vertici di e (quiQi(v)qwvePiewQi(v)qePie appartiene a Q i ( v ) ).eQi(v)

E ora abbiamo finito ... In effetti, se è anche su Q i + 1 ( v ), allora possiamo aggiornarlo in tempo costante (poiché questa è solo una gerarchia DK 2d). Se d'altra parte c i + 1 non è più su Q i + 1 ( v ), allora deve appartenere a una nuova tenda adiacente o che copre il precedente punto c i . In entrambi i casi, possiamo aggiornarlo a tempo costante.ci+1Qi+1(v)ci+1Qi+1(v)ci


Risposta aggiornata. Vedi se ha senso adesso. Questo è il modo in cui penso a questa struttura di dati. Potrebbe non avere alcuna relazione con ciò che è nel documento.
Sariel Har-Peled,

Ora capisco, grazie! Quindi il trucco è che scegliamo le direzioni tangenti all'inizio e le manteniamo invariate per tutto il tempo! Ho eliminato i miei precedenti commenti relativi alla tua vecchia risposta. Grazie ancora!
domotorp,

Sì. Felice di aiutare!
Sariel Har-Peled,

8

Il teorema 3.1 richiede che la rappresentazione gerarchica di sia compatta . Uno dei requisiti di compattezza è che il grado di r i a P i - 1 è delimitata da una costante. Vedi il fondo di pagina 3.PriPi1

La definizione e la costruzione della gerarchia di Dobkin-Kirkpatrick è molto più esplicita nei loro articoli precedenti (riferimenti [9,10,11] nel documento che stai leggendo). Consiglio vivamente di leggerli prima.


I think that they guarantee that the degree of vertices in Pi1Pi is bounded. I do not see how you could make sure the degree of ri is bounded. If e.g. you have a polyhedron where two vertices are connected to every vertex, then how can you start?
domotorp

1
riPi1Pi.
Jeffε

So there is the misunderstanding. I think that ri is a vertex of Pi as well in the algorithm that I have described, notably the one closest to S. Am I wrong?
domotorp

This seems to be one of these standard but tedious general position assumption. If you do not care about running time, you can always replace a vertex of degree d by two extremely close vertices of degree d/2+3 (if you insist on triangular faces). Repeat this till all the vertices till all the degrees are smaller than 10.
Sariel Har-Peled

@Sariel: I was thinking the same but then why would the process end? Notice that when we delete a vertex, then its neighbors might not form a face, so we might have to add new edges, in fact, we might have to increase the degree of a vertex.
domotorp

1

In case somebody would still be interested by the question: the snag in the Dobkin Kirpatrick explanation has also been pointed out in Barba and Langerman's Optimal detection of intersections between convex polyhedra.

They observe in the paper (SODA 2015 version, not arxiv) that O'Rourke's Computational Geometry in C, chap 7 already details a workaround (which is essentially Sariel's answer). The SODA paper also introduces an alternative solution; defining a variant of the DK hierarchy in which each vertex has bounded degree.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.