ตอบปรับปรุงและเขียนใหม่ตั้งแต่ต้น
คุณจะได้รับ polytope Pเรียกใช้ลำดับชั้น Dobkin-Kirkpatric บนพีนี้จะช่วยให้คุณลำดับของ polytops P 1 ⊆ P 2 ⊆ ... ⊆ P k = P อนุญาตสมมติว่าคุณต้องการที่จะหาจุดที่ใกล้ที่สุดบนPไปยังจุดแบบสอบถามQ อัลกอริทึมพื้นฐานเริ่มต้นด้วยการคำนวณจุดที่ใกล้ที่สุดc 1ถึงqบนP 1จากนั้นจะพิจารณาพื้นที่ใหม่ทั้งหมด (เต็นท์) ที่อยู่ติดกับc 1ค้นหาจุดที่ใกล้ที่สุดc 2ถึงqPP1⊆P2⊆…⊆Pk=PPqc1qP1c1c2qในภูมิภาคใหม่ ๆ เหล่านี้และดำเนินการต่อในแบบนี้จนกว่าเราจะเข้าถึง kPk
ทีนี้ถ้าอยู่บนขอบแล้วก็ไม่มีปัญหา - มีเพียงสองเต็นท์เท่านั้นที่อาจแตะที่ขอบนี้หรือมีเพียงหนึ่งในนั้นเท่านั้นที่สามารถครอบคลุมขอบ ดังนั้นการอัพเดตc i +ciจาก C iในกรณีนี้ต้องใช้เวลาคงที่ci+1Ci
ดังนั้นปัญหาคือเมื่ออยู่บนจุดสูงสุดของระดับสูงเพราะจากนั้นจำนวนเต็นท์ใหม่ที่อยู่ติดกันเมื่อย้ายไปที่P i + 1อาจมีขนาดใหญ่ เพื่อเอาชนะสิ่งนี้เราจะจำลองจุดสุดยอดขนาดใหญ่เพื่อรวบรวมจุดยอดที่มีระดับต่ำ โดยเฉพาะอย่างยิ่งในแต่ละขั้นตอนถ้าคฉันอยู่บนจุดสุดยอดวีเราจะต้องจำไว้ติดต่อกันสองขอบe ฉัน , E ' ฉันติดกับวีเช่นว่าจุดที่ใกล้ที่สุดที่จะถามในP ฉัน+ 1ciPi+1civei,e′ivqPi+1อยู่บนเต็นท์ที่อยู่ติดกันหรือครอบคลุมหนึ่งในสองขอบนี้ เช่นนี้เราสามารถทำการคำนวณที่จำเป็นในเวลาคงที่
ดังนั้นเราจึงยังคงมีปัญหาวิธีติดตามขอบทั้งสองนี้ในขณะที่เราปีนขึ้นไป
ต้องการทำเช่นนั้น precompute ทุกจุดสุดยอดของPทิศทางสัมผัสทีวี ให้Q i ( v )เป็นรูปหลายเหลี่ยมนูนที่เป็นรูปยอดของvสำหรับรูปหลายเหลี่ยมP i (โดยระนาบที่กำหนดรูปยอดมีปกติในทิศทางของt v ) แนวคิดQ 1 ( วี) , Q 2 ( วี) , . . , Q k ( v )vPtvQi(v)vPitvQ1(v),Q2(v),...,Qk(v)ทำงานเหมือนลำดับชั้น 2d DK หากจุดที่ใกล้ที่สุดในเพื่อ Qโกหกบนจุดสุดยอด Wแล้วตรงนี้เพื่อ โวลต์และขอบที่อยู่ติดกันอีใน P ฉันที่ขอบอีปริภูมิเครื่องบินของรูปจุดสุดยอดที่W หากจุดที่ใกล้ที่สุดบน Q i ( v )ถึง qอยู่บน edge e ′คุณก็จะจำขอบสองอันที่อยู่ติดกันของ P iที่กำหนดจุดยอดทั้งสองของ e ′ (ที่นี่Qi(v)qwvePiewQi(v)qe′Pie′เป็นของ Qe′ )Qi(v)
และตอนนี้เราก็ทำ ... แน่นอนถ้าอยู่ในQ i + 1 ( v )เราก็สามารถอัปเดตได้ในเวลาคงที่ (เนื่องจากนี่เป็นเพียงลำดับชั้น 2d DK) ถ้าในมืออื่น ๆคฉัน+ 1จะไม่มีอีกต่อไปในQ ฉัน+ 1 ( วี)จากนั้นจะต้องอยู่ในเต็นท์ใหม่ที่อยู่ติดหรือครอบคลุมจุดก่อนหน้านี้คฉัน ไม่ว่าในกรณีใดเราสามารถอัปเดตได้ในเวลาคงที่ci+1Qi+1(v)ci+1Qi+1(v)ci