เส้นแบ่งคะแนนสองชุด


19

หากมีวิธีการระบุว่าจุดสองชุดสามารถคั่นด้วยเส้นได้หรือไม่?

เรามีสองชุดของจุดAและBหากมีเส้นที่แยกAและBเช่นนั้นจุดทั้งหมดของAและเท่านั้นAที่ด้านหนึ่งของเส้นและจุดทั้งหมดของBและเพียงBด้านอื่น ๆ

อัลกอริธึมที่ไร้เดียงสาที่สุดที่ฉันพบคือการสร้างรูปหลายเหลี่ยมนูนสำหรับAและBและทดสอบเพื่อหาจุดตัด ดูเวลาที่ความซับซ้อนของเวลาสำหรับสิ่งนี้ควรเป็นO(nlogh)สำหรับการสร้างรูปหลายเหลี่ยมนูน จริงๆแล้วฉันไม่ได้คาดหวังการปรับปรุงใด ๆ ในเรื่องความซับซ้อนของเวลาฉันไม่แน่ใจว่ามันจะสามารถปรับปรุงได้เลย แต่อย่างน้อยก็ควรมีวิธีที่สวยงามกว่านี้ในการพิจารณาว่ามีเส้นดังกล่าวหรือไม่

คำตอบ:


19

ทั้ง uli และ Dave Clarke สังเกตได้อย่างถูกต้องว่านี่เป็นปัญหาการโปรแกรมเชิงเส้นแม้ในมิติที่สูงกว่า (ชุดจุดสองจุดนี้สามารถคั่นด้วยไฮเปอร์เพลนได้หรือไม่) และดังนั้นจึงสามารถแก้ไขได้ในเวลาพหุนาม แต่เนื่องจากคะแนนของคุณอยู่บนระนาบปัญหาของคุณสามารถแก้ไขได้ในเวลาโดยที่nคือจำนวนคะแนนทั้งหมดO(n)n

ทางออกที่ง่ายที่สุดน่าจะเป็นอัลกอริทึมแบบสุ่มของ Seidel เลือกจุดเชื่อมต่ออินพุตสม่ำเสมอที่สุ่มและซ้ำคำนวณเป็นเส้นแยกสำหรับทุกจุดยกเว้นพีp p

  • หากไม่มีบรรทัดดังกล่าวแสดงว่าจุดเริ่มต้นนั้นไม่สามารถแยกได้

  • ถ้าอยู่บนด้านที่ถูกต้องของแล้วℓจะแยกจุดเดิมp

  • ถ้าอยู่ผิดด้านของจุดใดจุดหนึ่งสามารถคั่นด้วยเส้นผ่านpหรือจุดดั้งเดิมนั้นไม่สามารถแยกออกได้เลย เงื่อนไขนี้ง่ายต่อการตรวจสอบในเวลาO ( n ) [การออกกำลังกาย]ppO(n)

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


ขอบคุณมากฉันจะเจาะลึกลงไปในบทความนี้
com

ในกรณีที่สามของคุณคุณระบุว่าอาจเป็นไปได้ว่าเส้นจะผ่านมันจะช่วยให้รู้ได้อย่างไร p
Tarrasch

10

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

ขณะที่คุณกำลังพูดถึงเส้นฉันจะสมมติว่าคะแนนของคุณอยู่ในระนาบ สิ่งที่คุณต้องการทำคือค้นหาค่า , w 2และw 3เช่นนั้นสำหรับทุกจุด( a 1 , a 2 )ในเซตA , w 1 a 1 + w 2 a 2w 3และสำหรับทุกจุด( b 1 , b 2 )ในB , w 1 b 1 +w1w2w3(a1,a2)Aw1a1+w2a2w3(b1,b2)B 3 ดังนั้นอสมการ W 1 x + W 2ปีW 3สามารถมองเห็นเป็นลักษณนามสำหรับชุดw1b1+w2b2<w3w1x+w2yw3A

มีอัลกอริทึมการเรียนรู้ของเครื่องมากมายสำหรับการกำหนดเส้นที่เหมาะสม (การถดถอยเชิงเส้นการถดถอยโลจิสติกและอื่น ๆ ) สิ่งเหล่านี้จะค้นหาค่าสำหรับตามเมตริกข้อผิดพลาดบางอย่าง จากนั้นคุณสามารถทดสอบได้ว่าคะแนนทั้งหมดจำแนกอย่างถูกต้องหรือไม่ นั่นคือไม่ว่าค่าทั้งหมดในA จะเป็นไปตามสมการข้างต้นและคล้ายกันสำหรับBหรือไม่w1,w2,w3AB

ในขณะที่คุณสนใจเพียงแค่ว่าบรรทัดนั้นมีอยู่หรือไม่คุณจำเป็นต้องใช้เทคนิคที่มีอยู่ (แม้ว่าอาจจะง่ายกว่า) เพียงแค่ติดตั้งคอลเลกชันต่อไปนี้ equalities ในแง่ของตัวแปรฟรี 3w1,w2,w3

สำหรับแต่ละฉัน= 1 , . , | A | ที่ = { ( 1 1 , 1 2 ) , ... , ( | | 1 , | | 2 ) }w1a1i+w2a2iw3i=1,..,|A|A={(a11,a21),,(a1|A|,a2|A|)}

สำหรับแต่ละ J = 1 , . , | B | ที่ B = { ( 1 1 , 1 2 ) , ... , ( | B | 1 , | B | 2 ) }w1b1j+w2b2j<w3j=1,..,|B|B={(b11,b21),,(b1|B|,b2|B|)}

หากข้อ จำกัด เหล่านี้สอดคล้องกันจะมีบรรทัดอยู่


5

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

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