ค่าใช้จ่ายในการดำเนินการประมาณ ค้นหาเพื่อนบ้านที่ใกล้ที่สุดในข้าม quadtree


10

หมายเหตุ : คำถามได้รับการปรับปรุงใหม่ในคำตอบของฉัน: สมมติว่าตอนนี้เราสามารถหาบรรพบุรุษที่ต่ำที่สุดในเวลาแล้ว ANN สามารถทำได้ในหรือไม่O(1)O(logn)


Quadtrees เป็นดัชนีเชิงพื้นที่ที่มีประสิทธิภาพ ฉันมีปริศนาที่มีการใช้การค้นหาเพื่อนบ้านที่ใกล้ที่สุดในโครงสร้างควอดทรีบีบอัดตามที่อธิบายไว้ใน [2] (โดยไม่ต้องลงรายละเอียดการค้นหาจะเลื่อนจากบนลงไปตามสี่เหลี่ยมจัตุรัสที่มีระยะเท่ากันซึ่งสิ้นสุดในโหนดหางของเส้นทางที่มีระยะเท่ากันในรูปภาพที่แนบนี้อาจเป็นโหนดใด ๆ ในภาคตะวันออกเฉียงใต้ที่เต็มไปด้วยจุด)

สำหรับอัลกอริทึมในการทำงานเราจะต้องรักษาแต่ละโหนด - สี่เหลี่ยมจัตุรัสที่มี quadrants ไม่ว่างอย่างน้อยสองตัว - พอยน์เตอร์สำหรับแต่ละโหนดที่ต่ำที่สุด (ใกล้เคียงที่สุดในลำดับชั้น) โหนดบรรพบุรุษในแต่ละสี่ทิศทาง (ทิศเหนือทิศตะวันตกทิศใต้ ตะวันออก) ลูกศรสีเขียวเหล่านี้ถูกระบุด้วยลูกศรสีเขียวสำหรับโหนดบรรพบุรุษทางทิศตะวันตกของโหนด (ลูกศรชี้ไปที่ศูนย์กลางของจัตุรัสบรรพบุรุษ)

กระดาษที่อ้างว่าตัวชี้เหล่านี้สามารถอัปเดตใน O (1) ระหว่างการแทรกจุดและการลบ อย่างไรก็ตามเมื่อดูที่การแทรกจุดสีเขียวดูเหมือนว่าฉันจำเป็นต้องอัปเดตพอยน์เตอร์จำนวนเท่าใดก็ได้ในกรณีนี้พวกเขาหกคน

ฉันหวังว่าจะมีเคล็ดลับในการอัปเดตตัวชี้นี้ในเวลาที่แน่นอน อาจมีรูปแบบของการอ้อมที่สามารถใช้ประโยชน์ได้หรือไม่?

ควอดทรีก่อน (ซ้าย) และหลังการแทรกจุด (ขวา)

แก้ไข:

ส่วนที่เกี่ยวข้องจากกระดาษคือ 6.3 ที่อ่าน: "ถ้าเส้นทางมีโค้งแล้วนอกจากบรรพบุรุษที่ต่ำที่สุดของเราควรพิจารณาแต่ละทิศทางต่ำสุด บรรพบุรุษของที่ไปสู่ทิศทางนั้น [... ] การหาสี่เหลี่ยมเหล่านี้จากสามารถทำได้ในเวลาต่อหนึ่งตารางถ้าเราเชื่อมโยงพอยน์เตอร์เพิ่มเติมกับแต่ละตารางในชี้ไปที่บรรพบุรุษที่ใกล้ที่สุดสำหรับแต่ละทิศทาง ตัวชี้เหล่านี้ยังสามารถปรับปรุงได้ในเวลาในระหว่างการแทรกหรือการลบจุด "q 2 d q q O ( 1 ) 2 d Q 0 O ( 1 )log(c/ε)q2dqqO(1)2dQ0O(1)

[2]: Eppstein, D. และ Goodrich, MT และ Sun, JZ,“ The Quad Quadtree: โครงสร้างข้อมูลแบบไดนามิกอย่างง่ายสำหรับข้อมูลหลายมิติ,” ในการประชุมวิชาการประจำปีครั้งที่ยี่สิบเอ็ดเรื่องเรขาคณิตเชิงคำนวณ, หน้า 296–305 พ.ศ. 2548


2
เป็นเวลานานแล้วที่ฉันจำไม่ได้ แต่เมื่ออ่านบทความในเช้านี้ (ทั้งรุ่น arxiv และ journal) ฉันไม่สามารถหาที่ที่มันบอกว่าเรารักษาพอยน์เตอร์ที่คุณต้องการ ฉันคิดว่าเราเก็บพอยน์เตอร์พอยน์เตอร์และพอยน์เตอร์ตัวอย่าง ดังนั้นคุณอาจชี้ไปที่ข้อความในกระดาษที่ระบุสิ่งที่คุณพูดได้อย่างแม่นยำมากขึ้น
David Eppstein

2
สวัสดีเดวิดขอบคุณที่รับชม การค้นหา ANN เป็นส่วนสุดท้าย (6) ปัญหาถูกระบุในรูปที่ 7 (b) ซึ่งเป็นสิ่งที่ฉันมีกราฟในภาพด้านบนโดยประมาณถ้า q อยู่ที่ด้านล่างซ้าย ฉันได้แก้ไขคำถามเพื่อรวมส่วนเฉพาะของข้อความจากส่วนที่ 6.3 ฉันมีความคิดบางอย่างเกี่ยวกับวิธีที่ฉันจะผ่อนคลายด้วยคำจำกัดความของ equistabbing บางที แต่ฉันไม่แน่ใจว่าฉันสามารถพิสูจน์ได้ว่าการนับทางเลือกใด ๆ ไม่ละเมิดผลการปฏิบัติงานตามเป้าหมาย ...
0__

2
ตกลงว่าดูเหมือนปัญหา ฉันกำลังพูดคุยกับ Goodrich (เราไม่ได้ติดต่อกับ Sun ที่ทำรายละเอียดส่วนใหญ่ที่นี่) ความรู้สึกปัจจุบันของเราคือเราไม่ควรต้องการพอยน์เตอร์พิเศษเหล่านี้ (เราไม่ต้องการพวกมันสำหรับช่วงโดยประมาณทำไมประมาณเพื่อนบ้านถึงจะแตกต่างกันและเป็นไปได้ที่อัลกอริทึมการสืบค้นจะจดจำบรรพบุรุษที่เห็น เลื่อนลงแทนที่จะใช้พอยน์เตอร์เพื่อค้นหาพวกเขา) แต่เราจะติดต่อกลับไปหาคุณเมื่อเรามั่นใจในรายละเอียดเพิ่มเติมที่นี่
David Eppstein

2
เยี่ยมมากขอบคุณมาก ด้วยเหตุผลของการนับจำนวนตัวละครและเลย์เอาต์ฉันจะเพิ่มคำตอบที่ร่าง 'ความคิดที่เป็นธรรมชาติ' ของฉันซึ่งอาจเป็นจุดเริ่มต้น
0__

คำตอบ:


11

เช่นเดียวกับดาวิดฉันไม่รู้ว่าทำไมโจนาธานพูดถึงเรื่องพอยน์เตอร์ 2 ^ d พวกเขาไม่ต้องการ ดังที่ David ได้กล่าวไว้ข้างต้นคุณสมบัติที่สำคัญคือเมื่อเราทำตำแหน่งชี้ไปที่ leaf v ใน Q_0 มันก็เพียงพอที่จะจำโหนด sibling (และกล่องของพวกเขา) ใน skip quadtree เมื่อเราประมวลผลกล่องจาก P เราทำตำแหน่งจุดสำหรับกล่องใบไม้ใกล้กับจุดสอบถามของเราแทรกกล่องพี่น้องเมื่อเราลงไป ดูเหมือนว่าจะมีคำตอบของคุณไม่มากก็น้อย นอกจากนี้ขั้นตอนนี้คล้ายกันมากตัวอย่างเช่นวิธีการระบุตำแหน่งโดยประมาณในบทความต่อไปนี้: อารี, นิลและเมา, เดวิดเอ็มและเนทันยาฮู, นาธานเอสและซิลเวอร์แมน, รู ธ และวู, แองเจลาวาย "อัลกอริธึมที่เหมาะสมที่สุดสำหรับการประมาณเพื่อนบ้านที่ใกล้เคียงกับการค้นหามิติที่คงที่", JACM, 1998. อันที่จริง,


นั่นเป็นข่าวดี! ฉันไม่แน่ใจว่าการเพิ่มพี่น้องในระหว่างขั้นตอนการลงจะเปลี่ยนขอบเขตของต้นทุนกรณีเลวร้ายที่สุดโดยรวมหรือไม่ แต่ฉันคิดว่าไม่มี ฉันได้ดูบทความโดย Arya et al. แต่ฉันพบว่ามันสามารถเข้าถึงได้น้อยกว่ากระดาษ
Quadtree

5
ว้าว! ยินดีต้อนรับสู่ cstheory.SE!
Hsien-Chih Chang 張顯之

5

ใคร ๆ ก็นึกถึงการข้าม quadtree เป็นการนำข้ามรายการโครงสร้างข้อมูลที่เก็บคะแนนตามลำดับ z ของพวกเขา มันคือ (arguably) อย่างน้อย conceptually ง่าย ...

ดูบทที่ 2 ที่นี่: http://goo.gl/pLiEO

และใช่สมมติว่าคุณสามารถดำเนินการตามคำสั่ง z พื้นฐานในเวลาคงที่คุณสามารถทำ ANN ในเวลาลอการิทึมแน่นอน บทที่กล่าวมานี้ยังแสดงให้เห็นว่าไม่มีทางที่จะหลีกเลี่ยงการทำงานที่แปลกประหลาดหากต้องการควอดทรีอัด โปรดทราบว่าการดำเนินการ LCA นั้นไม่จำเป็น ...


3
ใช่และตัวแปรที่กำหนดขึ้นมีความเหมือนต้นไม้ 2-3 ต้นสำหรับการเรียง z แบบเดียวกัน
David Eppstein

ขอบคุณสำหรับลิงค์ที่ฉันเคยเห็นกระดาษของคุณมาก่อนแน่นอน ไม่ว่าในกรณีใดฉันไม่สามารถยืนยันขอบเขตที่แน่นอนด้วยอัลกอริทึมที่กำหนดได้ ฉันรู้สึกว่าการอ้างอิงถึง Lemma 7 ซึ่งใช้เพื่อ จำกัด จำนวนรอบในทฤษฎีบท 13 อาจไม่ถูกต้องเพราะมันถือว่ารัศมีคงที่ในขณะที่รัศมีการค้นหาใน ANN เปลี่ยนแปลงเพิ่มขึ้นและ ชุดสี่เหลี่ยมที่สำคัญ ? r
0__

รัศมีที่แน่นอนลดขนาดลงในระหว่างกระบวนการค้นหา ฉันมีเหตุผลในแง่ดีข้อโต้แย้งที่ถูกต้อง
Sariel Har-Peled

1

ฉันรู้สึกอย่างสังหรณ์ใจว่าใคร ๆ ก็สามารถมีชีวิตอยู่ได้โดยปราศจากพอยน์เตอร์เหล่านั้นและในขณะที่ฉันต้องคงโหนดทั้งหมดไว้ในฮาร์ดดิสก์ในบางจุดการลดพอยน์เตอร์ใด ๆ ก็ยอดเยี่ยม

ความคิดของฉันคือประมาณดังนี้นอกเหนือจากจุดที่ผู้สมัครที่ดีที่สุด (ใบ)เรายังติดตามของระยะทางที่เลวร้ายที่สุดในแต่ละรอบ{} ระยะทางที่แย่ที่สุดจะเป็นระยะทางสูงสุดของทุกมุมของโหนดไปยังจุดสอบถามไม่ว่าถ้าอยู่ภายในสี่เหลี่ยมหรือนอก r m a x d i s t ( v , q ) q v vlbestrmaxdist(v,q)qvv

รอบเป็นเช่นนี้: ถ้าว่างเปล่าให้ส่งคืนถ้ามี มิฉะนั้นลบนาทีให้ปัจจุบันในQ_0เตรียมข้อมูลถึง (หรือตั้งค่าเป็นหากยังไม่พบผู้สมัครที่ดีที่สุด) ครั้งแรกที่ทดสอบเด็กแต่ละคนไม่ว่างเปล่าของในQ_0หาก child นี้เป็น leaf ให้อัพเดตและหากจำเป็น ถ้าเป็นโหนดให้คำนวณและซึ่งระยะหลังเป็นระยะทางที่ดีที่สุด: ทั้งศูนย์ถ้าl b e s t p 0 Q 0 r m a x l b e s tp 0 Q 0 q l b e s t r m a x q d ฉันs t ( q , v ) d i s t ( q , v ) v q q vPlbestp0Q0rmaxlbestp0Q0qlbestrmaxqdist(q,v)dist(q,v)vอยู่ภายในหรือระยะทางที่สั้นที่สุดของทุกมุมของที่จะวีqqv

หากลืมหรือเก็บไว้ ถ้าจำนวนโหนดที่เก็บรักษาไว้เป็นดันโหนดเหล่านั้นเข้าสู่Pจบรอบ q 2 Pdist(q,v)>rmaxq2P

มิฉะนั้นดำเนินการคล้ายกับการค้นหาดั้งเดิม: ค้นหา , โหนดที่สอดคล้องกับในสูงที่สุดที่เป็นไปได้และเริ่มจากที่นั่น: อีกครั้งแทนที่จะขอให้เด็กที่มีระยะเท่ากันลงไปทดสอบเด็กทั้งหมดตามขั้นตอนก่อนหน้า , ที่อยู่, ข้ามผู้ที่มีระยะทางที่ดีที่สุดเกิน{} หากหลังจากการทดสอบนี้เด็กยังคงลงไปและทำซ้ำ หากไม่มีเด็กอยู่ให้ไปที่แล้วทำซ้ำ หากการทดสอบดำเนินการเป็นรอบจะเสร็จสิ้นp 0 Q j r m a x Q j - 1 Q 0qp0QjrmaxQj1Q0

ในขณะนี้ฉันรู้ว่าถ้าสิ่งนี้รับประกันว่าจะหาเพื่อนบ้านที่ใกล้ที่สุดในทุกกรณีที่เป็นไปได้หรือว่ามันทำงานได้ดีเท่ากับอัลกอริทึมดั้งเดิม นอกจากนี้หากการเริ่มต้นของเพียงพอหรือไม่ และสิ่งที่ควรให้ความสำคัญใน - ยังคงเป็นระยะทางที่ดีที่สุด? PrmaxP


แก้ไข (เมษายน 2013)

ตอนนี้ฉันได้ทำการทดลองเพิ่มเติมกับการอธิบายอัลกอริธึมด้านบนซึ่งใช้คำนิยามของโหนด 'equipotent' แทนโหนด equistabbing ตามคุณสมบัติที่ลงไปยังโหนดดังกล่าวจะไม่เปลี่ยนพื้นที่ที่ครอบคลุมโดยรูปร่างแบบสอบถามปัจจุบันขอบเขต{}rmax

น่าเสียดายที่เราสามารถสร้างกรณีทางพยาธิวิทยา (ดูภาพด้านล่างจุดสอบถามอยู่ตรงกลางด้านล่าง) ที่ประสิทธิภาพลดลงเป็นรอบO(n)

ป้อนคำอธิบายรูปภาพที่นี่


0

ตอนนี้ฉันได้นำอัลกอริธึมที่ใช้ Equistabbing มาใช้แล้วซึ่งบรรพบุรุษที่เป็นพี่น้องน้อยที่สุดกำลังค้นหา brute-force (ก่อนที่จะพยายามหาตัวแปร O (1)) เพื่อตรวจสอบจำนวนรอบสูงสุดที่อ้างในทฤษฎีบท 13:1}))O(ϵ1d(logn+logϵ1))

ฉันใช้ตัวอย่าง "พยาธิวิทยา" จากคำตอบก่อนหน้าของฉัน รูทสแควร์รูต 2 มิติมีความยาวด้านข้าง 512 ซึ่งพิกัดกลางคือ (256, 256) พิกัดจะได้รับในจำนวนเต็มนำไปสู่ตรงไปข้างหน้า1 จุดจะถูกวางระยะห่างเท่ากันในแนวนอนข้ามรูตสแควร์และจุดสอบถามอยู่ที่ (256, 511) (โปรดทราบว่า 512 อยู่นอกรูทสแควร์แล้ว)vϵ=1v

ในรูปด้านล่างต้นไม้เต็มจะปรากฏขึ้นและจำนวนคะแนนในตัวอย่างนี้คือ 16 โครงร่างสีน้ำเงินสี่เหลี่ยมระบุสี่เหลี่ยมที่น่าสนใจซึ่งจะถูกผลักไปยังคิวลำดับความสำคัญและตัวเลขที่อยู่ตรงกลางระบุตัวเลขใน ซึ่งพวกเขาถูกผลัก จุดที่ค้นพบใบไม้จะถูกระบุด้วยหมายเลขรอบที่พวกเขาจะคิด วงกลมสีน้ำเงินโปร่งใสสามวงแสดงรัศมี NN ที่รู้จักหลังจากรอบที่ 1, 2 และรอบที่ 7 (เพื่อนบ้านที่ใกล้ที่สุดจะเห็นเป็นครั้งแรกในรอบที่ 7) มีทั้งหมด 12 รอบ (6 ป๊อปอัพสแควร์ล่าสุดเท่านั้นจากคิว แต่ไม่ต้องเพิ่มสแควร์สใหม่)Q0

ฉันใช้ตัวอย่างนี้กับชุดของรูทสแควร์รูทขนาดใหญ่ขึ้นเรื่อย ๆ และจำนวนจุดซึ่งระยะห่างของคะแนนยังคงเท่าเดิม (32) นี่เป็นการยืนยันสิ่งที่เห็นได้จากสัญชาตญาณจากภาพ: อัลกอรึทึมต้องการรอบในขณะที่ทฤษฎีบท 13 ที่มีและระบุว่าต้องมีเพียงรอบเท่านั้นd=2ϵ=1O(บันทึกn)O(n)d=2ϵ=1O(logn)

ดังนั้นหากฉันขาดสิ่งที่สำคัญไปแล้วอัลกอริทึมก็ไม่สามารถบรรลุความเร็วที่ระบุไว้ได้ ความคิดเห็นหรือความคิดใด ๆ

สำรวจเส้นทาง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.