คำถามติดแท็ก near-neighbors

4
ค่าใช้จ่ายในการดำเนินการประมาณ ค้นหาเพื่อนบ้านที่ใกล้ที่สุดในข้าม quadtree
หมายเหตุ : คำถามได้รับการปรับปรุงใหม่ในคำตอบของฉัน: สมมติว่าตอนนี้เราสามารถหาบรรพบุรุษที่ต่ำที่สุดในเวลาแล้ว ANN สามารถทำได้ในหรือไม่O ( 1 )O(1)O(1)O ( บันทึกn )O(log⁡n)O(\log n) Quadtrees เป็นดัชนีเชิงพื้นที่ที่มีประสิทธิภาพ ฉันมีปริศนาที่มีการใช้การค้นหาเพื่อนบ้านที่ใกล้ที่สุดในโครงสร้างควอดทรีบีบอัดตามที่อธิบายไว้ใน [2] (โดยไม่ต้องลงรายละเอียดการค้นหาจะเลื่อนจากบนลงไปตามสี่เหลี่ยมจัตุรัสที่มีระยะเท่ากันซึ่งสิ้นสุดในโหนดหางของเส้นทางที่มีระยะเท่ากันในรูปภาพที่แนบนี้อาจเป็นโหนดใด ๆ ในภาคตะวันออกเฉียงใต้ที่เต็มไปด้วยจุด) สำหรับอัลกอริทึมในการทำงานเราจะต้องรักษาแต่ละโหนด - สี่เหลี่ยมจัตุรัสที่มี quadrants ไม่ว่างอย่างน้อยสองตัว - พอยน์เตอร์สำหรับแต่ละโหนดที่ต่ำที่สุด (ใกล้เคียงที่สุดในลำดับชั้น) โหนดบรรพบุรุษในแต่ละสี่ทิศทาง (ทิศเหนือทิศตะวันตกทิศใต้ ตะวันออก) ลูกศรสีเขียวเหล่านี้ถูกระบุด้วยลูกศรสีเขียวสำหรับโหนดบรรพบุรุษทางทิศตะวันตกของโหนด (ลูกศรชี้ไปที่ศูนย์กลางของจัตุรัสบรรพบุรุษ) กระดาษที่อ้างว่าตัวชี้เหล่านี้สามารถอัปเดตใน O (1) ระหว่างการแทรกจุดและการลบ อย่างไรก็ตามเมื่อดูที่การแทรกจุดสีเขียวดูเหมือนว่าฉันจำเป็นต้องอัปเดตพอยน์เตอร์จำนวนเท่าใดก็ได้ในกรณีนี้พวกเขาหกคน ฉันหวังว่าจะมีเคล็ดลับในการอัปเดตตัวชี้นี้ในเวลาที่แน่นอน อาจมีรูปแบบของการอ้อมที่สามารถใช้ประโยชน์ได้หรือไม่? แก้ไข: ส่วนที่เกี่ยวข้องจากกระดาษคือ 6.3 ที่อ่าน: "ถ้าเส้นทางมีโค้งแล้วนอกจากบรรพบุรุษที่ต่ำที่สุดของเราควรพิจารณาแต่ละทิศทางต่ำสุด บรรพบุรุษของที่ไปสู่ทิศทางนั้น [... ] การหาสี่เหลี่ยมเหล่านี้จากสามารถทำได้ในเวลาต่อหนึ่งตารางถ้าเราเชื่อมโยงพอยน์เตอร์เพิ่มเติมกับแต่ละตารางในชี้ไปที่บรรพบุรุษที่ใกล้ที่สุดสำหรับแต่ละทิศทาง ตัวชี้เหล่านี้ยังสามารถปรับปรุงได้ในเวลาในระหว่างการแทรกหรือการลบจุด …

2
คำนวณระยะทางไปยังเพื่อนบ้านที่ใกล้ที่สุด kth สำหรับทุกจุดในชุด
สำหรับแอปพลิเคชันการเรียนรู้ของเครื่องกลุ่มของฉันจำเป็นต้องคำนวณระยะทางแบบยุคลิดเพื่อ kkkเพื่อนบ้านที่ใกล้ที่สุดในชุด XXX แต่ละ x∈(X∪Y)⊂Rdx∈(X∪Y)⊂Rdx \in (X \cup Y) \subset \mathbb R^d (สำหรับ ddd ระหว่าง 5 ถึงประมาณ 100 และ |X|≈|Y||X|≈|Y||X| \approx |Y|ไม่กี่ร้อยถึงไม่กี่ล้าน) ขณะนี้เรากำลังใช้กำลังดุร้ายO(d|X||X∪Y|)O(d|X||X∪Y|)O(d \lvert X \rvert \lvert X \cup Y \rvert) เข้าใกล้หรือสิ่งที่ชัดเจนด้วยการเปิด kd-tree XXXซึ่งเมื่อใด ddd สูงและ |X||X||X|ค่อนข้างต่ำไม่เคยชนะ (ทุกอย่างอยู่ในหน่วยความจำ) ดูเหมือนว่าจะต้องมีวิธีที่ดีกว่ากำลังดุร้าย - อย่างน้อยหนึ่งที่ใช้ประโยชน์จากความไม่เท่าเทียมกันของสามเหลี่ยมหรืออาจมีแฮชที่มีความอ่อนไหว การประมาณที่สมเหตุสมผลพอสมควรก็อาจเป็นไปได้เช่นกัน การวิจัยที่ฉันสามารถค้นพบได้ดูเหมือนว่าจะมุ่งเน้นไปที่ปัญหาของการหาเพื่อนบ้านที่ใกล้ที่สุดคนเดียว (หรือที่ใกล้เคียงที่สุด) ปัญหาที่ฉันกำลังมองหาโดยใช้ชื่ออื่นหรือมีการเชื่อมต่อกับปัญหาที่เกี่ยวข้องที่ฉันไม่ได้คิด
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.