Rozdzielenie wstępnie przetworzonego wielościanu i płaszczyzny


14

Mam poważne problemy ze zrozumieniem jednego kroku w pracy Dobkina i Kirkpatricka o rozdzieleniu wielościanów. Próbuję zrozumieć tę wersję: http://www.cs.princeton.edu/~dpd/Papers/SCG-09-invited/old%20papers/DPD+Kirk.pdf

Twierdzi się, że gdy znamy najlepsze oddzielenie Pi i S , realizowanego przez ri i si , można znaleźć oddzielenie Pi1 i S w O(1) schodów. Odbywa się to w następujący sposób. Bierzemy płaszczyznę równoległą do S przez ri przecinamy nią Pi1 na dwie części. Z jednej strony najbliższym punktem S jest ria z drugiej mamy `` elementarny '' wielościan, który możemy sprawdzić w czasie . Mój problem polega na tym - jak znaleźć ten elementarny wielościan? Należy pamiętać, że stopień r I w P í - 1 może być nieograniczona.O(1)riPi1

W pliku pdf, aby udowodnić Thm 5.1 ze strony 9, używają Thm 3.1 ze strony 4, co utrudnia śledzenie całej sprawy.


Naprawdę zastanawiam się, czy jeśli zaoferuję nagrodę, w opisie której mówię, że odpowiedź Jeffa nie jest dla mnie jasna, a w komentarzu do jego odpowiedzi określam mój problem z nią, to dlaczego ludzie wciąż go głosują, nie odpowiadając na moje pytanie? Zastanawiam się też, czy jego odpowiedź automatycznie otrzyma nagrodę?
domotorp,

entuzjazm wskazuje, że odpowiedź ma coś wartościowego, co zrobiła! po prostu nie dokładnie to, czego chciałeś. rzeczywiście potrzebna odpowiedź wydawała się udoskonaleniem ogólnej sugestii. Ponadto, po co martwić się opiniami innych osób?
Suresh Venkat,

Odpowiedzi:


6

Odpowiedz zaktualizowane i przepisane od nowa.

Dostaniesz Polytope . Uruchom Dobkin-Kirkpatric hierarchię na P. To daje sekwencję polytops P 1P 2... P k = P . Załóżmy, że chcesz znaleźć punkt P najbliższy punkt kwerendy q . Podstawowy algorytm zaczyna się od obliczenia najbliższego punktu c 1 do q na P 1 , a następnie uwzględnia wszystkie nowe regiony (namioty) przylegające do c 1 , znajduje najbliższy punkt c 2 do qPP1P2Pk=PPqc1qP1c1c2qw tych nowych regionów, a dalej w ten sposób, aż docieramy .Pk

Teraz, jeśli jest na krawędzi, nie ma problemu - tylko dwa namioty mogą dotykać tej krawędzi lub tylko jeden z nich może zakrywać krawędź. W związku z tym aktualizacja c i + 1 z C i w tym przypadku zajmuje stały czas.cici+1Ci

Problem pojawia się wtedy, gdy leży na wierzchołku wysokiego stopnia, ponieważ wtedy liczba nowych namiotów przylegających do niego przy przejściu do P i + 1 może być duża. Aby temu zaradzić, będziemy symulować wierzchołek dużego stopnia jako zbiór wierzchołków o niskim stopniu. W szczególności na każdym etapie, jeżeli c i leży na wierzchołku v , będziemy pamiętać dwie kolejne krawędzie e i , e ' i przylegające do v , tak że najbliższy punkt dociPi+1civei,eiv w P i + 1qPi+1leży na namiocie, który jest przyległy lub zakrywa jedną z tych dwóch krawędzi. W związku z tym możemy wykonać wymagane obliczenia w stałym czasie.

Pozostaje nam więc problem śledzenia tych dwóch krawędzi podczas wspinania się.

W tym celu wcześniej obliczyć dla każdego wierzchołka o P kierunek stycznej t v . Niech Q i ( v ) będzie wypukłym wielokątem, który jest figurą wierzchołka v dla wielokąta P i (z płaszczyzną definiującą figurę wierzchołka ma normalną w kierunku t v ). Koncepcyjnie, P 1 ( V ) , P 2 ( V ) , . . . , Q k ( v )vPtvQi(v)vPitvQ1(v),Q2(v),...,Qk(v)zachowuje się jak hierarchia 2d DK. Jeśli najbliższy punkt na do q spoczywa na wierzchołku wag następnie odpowiada v a sąsiednią krawędzią e w P ı , gdzie krawędź e przecina płaszczyznę rysunku na wierzchołek wag . Jeśli najbliższy punkt na Q i ( v ) do q leży na krawędzi e , pamiętasz, że dwie sąsiednie krawędzie P iQi(v)qwvePiewQi(v)qePi , które określają dwa wierzchołki (tutaje należy do Q i ( v ) ).eQi(v)

A teraz skończymy ... Rzeczywiście, jeśli jest również na Q i + 1 ( v ), możemy go aktualizować w stałym czasie (ponieważ jest to tylko hierarchia 2d DK). Jeśli z drugiej strony c i + 1 nie jest już na Q i + 1 ( v ), to musi należeć do nowego namiotu, który sąsiaduje lub obejmuje poprzedni punkt c i . W obu przypadkach możemy go aktualizować w stałym czasie.ci+1Qi+1(v)ci+1Qi+1(v)ci


Zaktualizowana odpowiedź. Sprawdź, czy ma to teraz sens. Tak myślę o tej strukturze danych. Może nie mieć związku z tym, co jest w gazecie.
Sariel Har-Peled,

Rozumiem teraz, dziękuję! Sztuka polega na tym, że wybieramy styczne kierunki na początku i utrzymujemy je bez zmian przez cały czas! Usunąłem moje poprzednie komentarze, które były związane z twoją starą odpowiedzią. Jeszcze raz dziękuję!
domotorp

Tak. Chętnie pomoże!
Sariel Har-Peled,

8

Twierdzenie 3.1 wymaga, aby hierarchiczna reprezentacja była zwarta . Jednym z wymagań dla zwięzłości, że stopień r I w P ı - 1 jest ograniczona przez stałą. Zobacz dół strony 3.PriPi1

Definicja i konstrukcja hierarchii Dobkina-Kirkpatricka jest o wiele bardziej wyraźna we wcześniejszych artykułach (odniesienia [9,10,11] w czytanym dokumencie). Zdecydowanie polecam je najpierw przeczytać.


Pi1Piri

1
With one of the other vertices, which all have degree 4. (In fact, with an independent subset of the degree-4 vertices.) The point ri is a vertex of Pi1 but not a vertex of Pi.
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

Wydaje się, że jest to jedno z tych standardowych, ale żmudnych ogólnych założeń. Jeśli nie zależy Ci na czasie działania, zawsze możesz zamienić wierzchołek stopniare 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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.