การเลือกจุดที่กระจัดกระจายส่วนใหญ่จากชุดของคะแนน


15

มีอัลกอริทึมใด ๆ (ที่มีประสิทธิภาพ) ในการเลือกเซตย่อยของ points จากชุดของ points ( ) ที่พวกเขา "ครอบคลุม" พื้นที่ส่วนใหญ่ (เหนือทุกเซตย่อยของขนาด ) หรือไม่?MNM<NM

ฉันถือว่าคะแนนอยู่ในระนาบ 2D

อัลกอริธึมไร้เดียงสานั้นง่าย แต่มีข้อห้ามในแง่ของความซับซ้อนของเวลา:

for each subset of N points
    sum distance between each pair of points in the subset
    remember subset with the maximum sum

ฉันกำลังมองหาวิธีที่มีประสิทธิภาพมากขึ้นหรือแม้แต่ประมาณ

ตัวอย่างนี่คือเครื่องบินที่มีจุดสุ่มอยู่ในนั้น:

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

สำหรับฉันคาดหวังว่าจะได้รับคะแนนจากการเลือกดังนี้:M=5

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

หมายเหตุจุดที่เลือก (สีแดง) จะกระจายอยู่ทั่วระนาบ

ฉันพบบทความ "การเลือกอย่างมีประสิทธิภาพการกระจาย SPATIALLY KEYPOINTS KEYENCE สำหรับการติดตามด้วยสายตา " ซึ่งเกี่ยวข้องกับปัญหานี้ อย่างไรก็ตามสิ่งนี้ถือว่าเป็นคะแนนที่มีน้ำหนัก



น่าเสียดายที่มักมีประมาณ 1,500-5,000 และมีค่าประมาณ 10-50 NM
Libor

กำลังและทั้งแบบคงที่หรือคุณจะแตกต่างกันเช่นกัน (เช่นเพราะคุณต้องการที่จะเพิ่มค่าเฉลี่ยของระยะทางซึ่งในกรณีนี้ที่เพิ่มขึ้นMต่อไปอาจให้ผลผลิตลดลง) N MMNMM
Wolfgang Bangerth

1
ฉันสงสัยอย่างยิ่งว่าสิ่งนี้คือ NP-hard มันคล้ายกับปัญหากลุ่มน้ำหนักสูงสุดซึ่งน้ำหนักของขอบระหว่างจุดยอดสองจุดคือระยะทางแบบยุคลิดระหว่างพวกเขา (ฉันเชื่อว่ามีวิธีแก้ปัญหาเชิงปฏิบัติที่มีประสิทธิภาพที่รู้จักกันดีสำหรับกลุ่มสูงสุดฉันไม่แน่ใจว่าพวกเขาเป็นใคร)
tmyklebu

1
@hardmath ขออภัยนั่นเป็นคำที่พิมพ์ผิด ฉันพยายามอธิบายสิ่งที่ฉันต้องทำให้สำเร็จ ปัญหามาจากการดึงคุณสมบัติของภาพที่ฉันต้องได้รับเพียงไม่กี่จุดคุณสมบัติ แต่พวกเขากระจัดกระจายไปทั่วทุกภาพเพราะพวกเขาจะใช้สำหรับการประมาณค่าการแปลงและเมื่อพวกเขากระจัดกระจาย spatially การประมาณมีเสถียรภาพมากขึ้น บางที "เอนโทรปี" เป็นตัวชี้วัดที่ดีกว่า - ฉันต้องการเลือก points เพื่อให้พวกเขาอยู่ทั่วสถานที่เช่นแก๊สในสถานะเอนโทรปี ในทางกลับกันฉันพยายามหลีกเลี่ยงจุดที่เลือกที่จะทำคลัสเตอร์ M
Libor

คำตอบ:


11

นี่คือวิธีแก้ปัญหาโดยประมาณ เนื่องจากNมีขนาดใหญ่มากและMมีขนาดเล็กดังนั้นวิธีการต่อไปนี้:

  1. คำนวณฮัลล์นูนของN
  2. เลือกสูงสุดMจุดจากตัวถังที่ตรงกับเกณฑ์ระยะทางสูงสุดของคุณ
  3. หากขั้นตอนที่ 2 ทำให้คุณมีคะแนนน้อยกว่าMให้เลือก 1 จุดจากด้านในเพื่อเพิ่มระยะห่างจากจุดที่เลือกไว้ก่อนหน้านี้
  4. ทำซ้ำขั้นตอนที่ 3 จนกระทั่งจำนวนคะแนนที่เลือกคือM

สัญชาตญาณด้านหลังก็คือตั้งแต่N >> Mและคุณต้องการให้คะแนนอยู่ห่างจากกันมากที่สุดเท่าที่จะเป็นไปได้พวกมันจะอยู่ใกล้กับขอบของข้อมูลดังนั้นคุณอาจเริ่มด้วยตัวเรือแล้วเริ่มซ้ำ ทำงานในแบบของคุณจากที่นั่น

นอกจากนี้โดยเริ่มต้นด้วยเรือที่คุณลดค้นหาเริ่มต้นของคุณจาก N เพื่อ N 1/2


UPDATE

หากขั้นตอนที่ 3 และ 4 ข้างต้นใช้เวลานานเกินไป (เนื่องจากคุณกำลังทดสอบชุดข้อมูลภายในของคุณซ้ำ ๆ ) มีแนวคิดอีกสองข้อที่เกิดขึ้นกับฉันเพื่อให้ปัญหาของคุณเร็วขึ้น

  1. ค้นหาแบบสุ่ม : สมมติว่าคุณพบคะแนนPบนตัวถังในขั้นตอนที่ 2 จากนั้นให้สุ่มเลือกจุดM - Pจากภายใน เลือกชุดที่ดีที่สุดหลังจากการทดลอง X
  2. การจำลองการหลอม : คำนวณกล่องขอบที่เล็กที่สุดที่ครอบคลุมชุดข้อมูลของคุณ (ไม่จำเป็นต้องจัดแนวกับแกนสามารถเอียงได้) จากนั้นกำหนดชุดของจุดกริดM แบบกระจายอย่างสม่ำเสมอบนกล่องขอบ หมายเหตุจุดเหล่านี้ไม่จำเป็นต้องตรงกับจุดชุดข้อมูลใด ๆ ของคุณ จากนั้นจุดตารางแต่ละพบว่าkเพื่อนบ้าน -nearest ในชุดข้อมูลของคุณ วิ่งผ่านชุดค่าผสมM x k ทุกชุดและเลือกชุดที่สอดคล้องกับเกณฑ์ระยะทางสูงสุดของคุณ คุณกำลังใช้กริดเริ่มต้นเป็นบูตสแตรปเพื่อค้นหาโซลูชันเริ่มต้นที่ดี

ขอบคุณ อาจเป็นคำถามที่ตั้งสูตรผิด ฉันตั้งเป้าที่จะทำแต้มให้มากที่สุด ฉันคิดว่าแค่เกณฑ์ระยะทางก็เพียงพอแล้ว แต่ดูเหมือนว่าต้องมีการเพิ่มเติม
Libor

M

1
บางทีวิธีที่เป็นทางการมากขึ้นในการระบุปัญหาของคุณคือคุณต้องการให้ Tessellation ขนาดMที่ครอบคลุมNและลดพื้นที่การทำ tessellation เฉลี่ยให้เหลือน้อยที่สุด? การลดพื้นที่ด้านที่ดูเหมือนจะเป็นวิธีการกระจายจุดรอบ ๆ และทำให้แน่ใจว่าพวกเขาจะไม่รวมกันเป็นก้อน
dpmcmlxxvi

ใช่. ฉันต้องการหลีกเลี่ยงการใช้กริดเพราะถ้าคะแนนสามารถรวมกลุ่มโดยไม่ตั้งใจกับเส้นกริดและจากนั้นพวกเขาจะถูกรวมกลุ่มในการเลือก
Libor

ปัญหาหนึ่งที่อัลกอริทึมโลภที่คุณพูดถึงคือมันจะไวต่อจุดเริ่มต้นมาก อัลกอริธึมที่เพิ่มมากขึ้น (ซึ่งคุณเริ่มจากด้านใน) มีปัญหานั้น วิธีการตัวถังที่ฉันพูดถึงอาจจะเสถียรกว่าเพราะมันทำงานจากภายนอก
dpmcmlxxvi

6

NM

MM

M1M=3,4,5

M=31M=4M=51

หากเราต้องการหลีกเลี่ยงการเลือกจุดที่บริเวณรอบนอกวัตถุประสงค์ที่แตกต่างกันคือมีแนวโน้มที่จะพิสูจน์ว่ามีประโยชน์ การเพิ่มระยะห่างต่ำสุดระหว่างจุดสูงสุดเป็นเกณฑ์ ปัญหาที่เกี่ยวข้องได้รับการทาบทามที่StackOverflowที่วิทยาการคอมพิวเตอร์ SEที่Math.SEและMathOverflow

MDMD


1

ตกลงดังนั้นคุณต้องการเลือกจุด M จากชุดของจุด N ที่กำหนดในระนาบแบบยุคลิดดังนั้นผลรวมของระยะทางคู่ของจุดที่เลือกนั้นถูกต้องสูงสุดหรือไม่?

อัลกอริทึมการค้นหาในท้องถิ่นมาตรฐานนั้นค่อนข้างรวดเร็วและให้การประมาณที่ดีพอสมควร รันไทม์เป็นแบบเชิงเส้นใน N และกำลังสองใน M อัตราการประมาณคือ 1 - 4 / M ซึ่งหมายความว่าอัตราส่วนจะดีขึ้นเมื่อ M เพิ่มขึ้น ตัวอย่างเช่นสำหรับ M = 10 จะได้รับค่าที่ดีที่สุด 60% และสำหรับ M = 50 จะได้รับค่าที่ดีที่สุด 92%

อัลกอริธึมใช้ได้กับปริภูมิแบบยุคลิดของมิติทั่วไปด้วย ในกรณีนี้ปัญหาคือ NP-hard แต่บนเครื่องบินไม่มีใครรู้ว่ามันเป็น NP-hard

แหล่งที่มาเป็นกระดาษนี้ หวังว่านี่จะช่วยได้! สุดยอดอัลฟองโซ



1
ฉันได้แก้ไขสิ่งนี้แล้วโดยใช้อัลกอริทึม "การปราบปรามผ่านการปิดดิสก์" จากกระดาษ "การเลือกจุดกระจายที่สำคัญเชิงพื้นที่สำหรับการติดตามด้วยภาพ" การประชุมนานาชาติ IEEE ครั้งที่ 18 ในการประมวลผลภาพ IEEE, 2011
Libor

1
อัลฟองโซโปรดระบุความร่วมมือของคุณสำหรับเอกสารที่แนะนำ
nicoguaro

0

ทางออกหนึ่งคือ:

  • O(n)

  • ทำให้Mประดิษฐ์แม้กระทั่งจุดกระจายภายในสี่เหลี่ยมที่ล้อมรอบนี้บางMนั้นยากกว่าจุดอื่น ในกรณีของคุณสี่ในมุมของสี่เหลี่ยมและหนึ่งในศูนย์

  • O(n(log(n)))

  • O(m(log(n)))

O(n(log(n)))MN

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