Jawaban diperbarui dan ditulis ulang dari awal.
Anda diberi polytope . Jalankan hirarki Dobkin-Kirkpatric di P. Ini memberi Anda urutan polytops P 1 ⊆ P 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 qPP1⊆P2⊆…⊆Pk=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,e′ivqPi+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)qe′Pie′ milik Q i ( v ) ).e′Qi(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