Pemisahan polyhedron dan pesawat yang diproses sebelumnya

14

Saya memiliki masalah serius dalam memahami satu langkah di koran Dobkin dan Kirkpatrick tentang pemisahan polyhedra. Saya mencoba memahami versi ini: http://www.cs.princeton.edu/~dpd/Papers/SCG-09-invited/old%20papers/DPD+Kirk.pdf

Dikatakan bahwa setelah kita mengetahui pemisahan terbaik dari dan S , disadari oleh r i dan s i , kita dapat menemukan pemisahan terbaik dari P i - 1 dan S dalam langkah O ( 1 ) . Ini dilakukan dengan cara berikut. Kami mengambil bidang sejajar dengan S sampai r i dan memotong P i - 1 menjadi dua bagian dengannya. Di satu sisi, titik terdekat dengan S adalah r iPiSrisiPi1SO(1)SriPi1Sridan di sisi lain kita memiliki polyhedron `elementer 'yang dapat kita periksa di waktu. Masalah saya adalah - bagaimana kita menemukan polyhedron dasar ini? Perhatikan bahwa tingkat r i di P i - 1 mungkin tidak terbatas.O(1)riPi1

Dalam pdf untuk membuktikan Thm 5.1 dari halaman 9, mereka menggunakan Thm 3.1 dari halaman 4, yang membuat semuanya lebih sulit untuk diikuti.

domotorp
sumber
Saya benar-benar bertanya-tanya bahwa jika saya menawarkan hadiah dalam uraian yang saya katakan bahwa jawaban JeffE tidak jelas bagi saya dan dalam komentar atas jawabannya saya tentukan masalah saya dengan itu, lalu mengapa orang terus mengangkat jawaban tanpa menjawab saya pertanyaan? Juga, saya bertanya-tanya, apakah jawabannya akan mendapatkan hadiah secara otomatis?
domotorp
Suara positif menunjukkan bahwa jawabannya memberikan sesuatu yang bernilai, yang ternyata berhasil! tidak persis apa yang Anda inginkan. memang, jawaban yang Anda butuhkan tampaknya merupakan penyempurnaan dari saran umum. Juga, mengapa khawatir tentang gangguan orang lain?
Suresh Venkat

Jawaban:

6

Jawaban diperbarui dan ditulis ulang dari awal.

Anda diberi polytope . Jalankan hirarki Dobkin-Kirkpatric di P. Ini memberi Anda urutan polytops P 1P 2... P k = P . Anggap Anda ingin menemukan titik terdekat pada P ke titik kueri q . Algoritma dasar dimulai dengan menghitung titik terdekat c 1 ke q pada P 1 , kemudian mempertimbangkan semua wilayah baru (tenda) yang berdekatan dengan c 1 , menemukan titik terdekat c 2 hingga qPP1P2Pk=PPqc1qP1c1c2qdi daerah baru ini, dan lanjutkan dengan cara ini sampai kita mencapai .Pk

Sekarang, jika berada di tepi, maka tidak ada masalah - hanya dua tenda yang bisa menyentuh tepi ini, atau hanya satu yang menutupi tepi. Dengan demikian, memperbarui c i + 1 dari C i dalam hal ini membutuhkan waktu yang konstan.cici+1Ci

Jadi masalahnya adalah ketika terletak pada sudut derajat tinggi, karena kemudian jumlah tenda baru yang berdekatan ketika pindah ke P i + 1 mungkin besar. Untuk mengatasinya, kita akan mensimulasikan simpul derajat besar sebagai kumpulan simpul yang memiliki derajat rendah. Secara khusus, pada setiap tahap, jika c i terletak pada vertex v , kita akan mengingat dua sisi berurutan e i , e i bersebelahan dengan v , sedemikian sehingga titik terdekat ke q di P i + 1ciPi+1civei,eivqPi+1terletak di tenda yang berdekatan atau menutupi salah satu dari kedua tepi ini. Dengan demikian, kita dapat melakukan perhitungan yang diperlukan dalam waktu yang konstan.

Jadi kita tetap dengan masalah bagaimana melacak kedua sisi ini saat kita memanjat.

Untuk melakukan itu, precompute untuk setiap simpul dari P ke arah singgung t v . Biarkan Q i ( v ) menjadi poligon cembung yang adalah sosok vertex dari v untuk poligon P i (dengan pesawat mendefinisikan sosok vertex telah normal dalam arah t v ). Secara konseptual, Q 1 ( v ) , Q 2 ( v ) , . . . , Q k ( v )vPtvQi(v)vPitvQ1(v),Q2(v),...,Qk(v)berperilaku seperti hierarki DK 2d. Jika titik terdekat pada ke q terletak pada titik w maka ini sesuai dengan v dan tepi yang berdekatan e di P i , di mana ujung e memotong bidang gambar titik di w . Jika titik terdekat pada Q i ( v ) ke q terletak di tepi e , maka Anda ingat dua tepi P i yang berdekatan yang menentukan dua simpul e (di siniQi(v)qwvePiewQi(v)qePie milik Q i ( v ) ).eQi(v)

Dan sekarang kita sudah selesai ... Memang, jika juga pada Q i + 1 ( v ) maka kita dapat memperbaruinya dalam waktu yang konstan (karena ini hanya hirarki DK 2d). Jika di sisi lain c i + 1 tidak lagi pada Q i + 1 ( v ) maka itu harus milik tenda baru yang berdekatan atau mencakup titik sebelumnya c i . Dalam kedua kasus, kita dapat memperbaruinya dalam waktu yang konstan.ci+1Qi+1(v)ci+1Qi+1(v)ci

Sariel Har-Peled
sumber
Jawaban yang diperbarui. Lihat apakah itu masuk akal sekarang. Ini adalah cara saya berpikir tentang struktur data ini. Mungkin tidak ada hubungannya dengan apa yang ada di koran.
Sariel Har-Peled
Saya mengerti sekarang, terima kasih! Jadi triknya adalah kita memilih arah garis singgung di awal dan menjaga mereka tidak berubah sepanjang waktu! Saya telah menghapus komentar saya sebelumnya yang terkait dengan jawaban lama Anda. Sekali lagi terima kasih!
domotorp
Iya. Saya senang bisa membantu!
Sariel Har-Peled
8

Teorema 3.1 mensyaratkan bahwa representasi hierarkis adalah kompak . Salah satu persyaratan untuk kekompakan adalah bahwa derajat r i dalam P i - 1 dibatasi oleh konstanta. Lihat bagian bawah halaman 3.PriPi1

Definisi dan konstruksi hierarki Dobkin-Kirkpatrick jauh lebih eksplisit dalam makalah mereka sebelumnya (referensi [9,10,11] dalam makalah yang Anda baca). Saya sangat merekomendasikan membacanya terlebih dahulu.

Jeffε
sumber
Saya pikir mereka menjamin bahwa derajat simpul dalam terikat. Saya tidak melihat bagaimana Anda bisa memastikan tingkat r i dibatasi. Jika misalnya Anda memiliki polyhedron di mana dua simpul terhubung ke setiap simpul, lalu bagaimana Anda bisa memulai? Pi1Piri
domotorp
1
Dengan salah satu dari simpul lainnya, yang semuanya memiliki derajat 4. (Faktanya, dengan subset independen dari simpul derajat-4.) Titik adalah simpul P i - 1 tetapi bukan simpul P i . riPi1Pi
Jeff
Jadi ada kesalahpahaman. Saya berpikir bahwa adalah simpul dari P i juga dalam algoritma yang telah saya uraikan, terutama yang paling dekat dengan S . Apakah aku salah? riPiS
domotorp
Ini tampaknya menjadi salah satu dari asumsi posisi standar yang umum tetapi membosankan ini. Jika Anda tidak peduli tentang waktu berlari, Anda selalu dapat mengganti titik sudut derajat dengan dua titik sudut derajat d / 2 + 3 yang sangat dekat (jika Anda bersikeras pada wajah segitiga). Ulangi ini sampai semua simpul sampai semua derajat lebih kecil dari 10.dd/2+3
Sariel Har-Peled
@ Sariel: Saya memikirkan hal yang sama tetapi kemudian mengapa prosesnya akan berakhir? Perhatikan bahwa ketika kita menghapus titik, maka tetangga-tetangganya mungkin tidak membentuk wajah, jadi kita mungkin harus menambahkan tepi baru, pada kenyataannya, kita mungkin harus meningkatkan derajat suatu titik.
domotorp
1

Dalam kasus seseorang masih akan tertarik dengan pertanyaan: hambatan dalam penjelasan Dobkin Kirpatrick juga telah ditunjukkan dalam Barba dan Langerman's Deteksi optimal persimpangan antara cembung polihedra .

Mereka mengamati di koran (versi SODA 2015, bukan arxiv) bahwa Geometri Komputasi O'Rourke dalam C , bab 7 sudah merinci penyelesaiannya (yang pada dasarnya adalah jawaban Sariel). Makalah SODA juga memperkenalkan solusi alternatif; mendefinisikan varian dari hirarki DK di mana setiap titik memiliki tingkat yang terikat.

Joseph Stack
sumber