กล่องที่เรียงแนวแกนที่เล็กที่สุดที่มีจุด


11

การป้อนข้อมูล: ชุดของคะแนนในและจำนวนเต็มnnR3kn

เอาท์พุท: กล่องขอบเขตแนวแกนเสียงที่เล็กที่สุดที่มีอย่างน้อยของจุดเหล่านี้kn

ฉันสงสัยว่าขั้นตอนวิธีใดเป็นที่รู้จักสำหรับปัญหานี้หรือไม่ สิ่งที่ดีที่สุดที่ฉันนึกได้ก็คือเวลาอย่างอิสระดังนี้: กำลังเดรัจฉานเหนือขอบเขตบนและล่างที่เป็นไปได้ทั้งหมดสำหรับสองมิติ สำหรับความเป็นไปได้เราสามารถแก้ไขปัญหามิติในเวลาโดยใช้อัลกอริทึมหน้าต่างแบบเลื่อนO(n5)O(n4)1O(n)


เราไม่สามารถคำนวณตารางที่มีขนาดสำหรับจำนวนคะแนนด้วยหรือไม่ การคำนวณจำนวนคะแนนและปริมาณสามารถทำได้ด้วยจำนวนการดำเนินการ const และเราสามารถใช้การเขียนโปรแกรมแบบไดนามิกด้วยตารางขนาดและควรจะได้รับอัลกอริทึมn3pp.x<x,p.y<y,p.z<zkn3O(kn3)
Kaveh

ตกลง. ในกรณีนี้ที่คุณไม่สามารถจริงๆหวังว่าจะทำดีกว่า 5 เนื่องจากมีกล่องที่แตกต่างกันแตกต่างกันและโดยค่าเฉลี่ยอาร์กิวเมนต์ (บนค่าสุ่มของ k) มี กล่องที่มีจุด k อย่างแน่นอน เว้นแต่คุณจะสามารถใช้วอลลุ่มอย่างใดเพื่อทำให้พื้นที่การค้นหามีขนาดเล็กลง แต่อย่างใดดูเหมือนว่าจะเป็นแง่ดี ...k=Θ(n)n5n6n5
Sariel Har-Peled

BTW ในกรณีของคุณคุณจะได้รับกล่องที่มีของคะแนนและมีขนาดเล็กกว่ากล่องที่ดีที่สุดที่มีคะแนนในเวลา สำหรับนี่คือเวลาโพลิlogเป็นหลัก, ..(1ϵ)kkO(((n/k)/ϵ2logn)O(1))k=Θ(n)
Sariel Har-Peled

คำตอบ:


11

สำหรับจุดมีช่องว่างดูการแนะนำของบทความนี้http://www.cs.uwm.edu/faculty/ad/maximal.pdf เราสามารถคำนวณกล่องเหล่านี้ได้ในเวลานี้โดยประมาณ (ดูช่วงแนะนำสำหรับการอ้างอิง)nO(n3)

สำหรับปัญหาของคุณใช้ตัวอย่างที่สุ่มจากจุดที่ทุกจุดจะเลือกด้วย porbability k ตัวอย่างแบบสุ่มนั้นมีขนาด (ตามความคาดหมาย) [และเพื่อความขัดแย้งถือว่าเป็น] มีกล่องเปล่ามีคะแนนจากด้านข้างโดยด้านบน สำหรับแต่ละกล่องดังกล่าวให้ใช้ช่วงโครงสร้างมุมฉากค้นหาข้อมูลโครงสร้างเพื่อคำนวณจำนวนจุดที่มีอยู่ ทำซ้ำกระบวนการนี้ครั้ง ด้วยความน่าจะเป็นสูงกล่องใดกล่องหนึ่งที่คุณได้ลองคือกล่องที่ต้องการ1/kn/kO((n/k)3)RO(k6logn)

โดยรวม, เวลาการทำงานของที่นี่คือn)O((n/k)3k6polylogn)=O(n3k3logO(1)n)

หากต้องการดูว่าทำไมงานนี้ให้พิจารณากล่องที่เหมาะสมที่สุด มันมี 6 คะแนนของ P บนขอบเขตของมัน ความน่าจะเป็นที่กลุ่มตัวอย่างสุ่มเลือกหกจุดและไม่มีจุดภายในกล่องอย่างน้อยp ดังนั้นหากคุณทำซ้ำขั้นตอนครั้งด้วยความน่าจะเป็นสูงหนึ่งในตัวอย่างแบบสุ่มจะชักนำให้กล่องที่ต้องการเป็นกล่องเปล่า1k6(11/k)k61/k6=pO((1/p)logn)

เนื่องจากมีจำนวน จำกัด สำหรับกล่องที่ว่างเปล่า (ดูหน้ากระดาษข้างต้นสำหรับการอ้างอิงที่เกี่ยวข้อง) จึงไม่น่าเป็นไปได้ที่อัลกอริธึมที่เร็วกว่าΘ(n3)

[ในการอ้างอิงที่ฉันให้พวกเขาพูดถึงว่า [17] ให้อัลกอริทึมที่แจกแจงกล่องเปล่าสูงสุดทั้งหมดระหว่างจุดใน 3d ในเวลาซึ่งเป็นกล่องดำที่คุณต้องการสำหรับข้างต้น .]O(n3log2n)


ขอบคุณ - นี่ยอดเยี่ยมมาก! รายละเอียดที่ผมควรจะได้กล่าวถึง (ขออภัย!) คือสำหรับวัตถุประสงค์ของฉันดังนั้นเป็นเพียงเกี่ยวกับการเป็นดีเป็น6) แต่ถึงกระนั้นมีความคิดดีๆมากมายที่นี่ซึ่งอาจเป็นประโยชน์สำหรับรุ่นขนาดใหญ่...k=Θ(n)O(n3k3)O(n6)k
GMB
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.