การหาระนาบการตัดที่แยกรูปทรงหลายเหลี่ยมอย่างเท่าเทียมกัน


10

สมมติว่าเรามีรูปทรงหลายเหลี่ยมในรูปแบบมาตรฐาน:

Ax=bx0

มีวิธีการใด ๆ ที่รู้จักกันในการหาไฮเปอร์เพลนที่แยกโพลีเฮดตรอนในลักษณะที่จำนวนจุดยอดในแต่ละด้านของไฮเปอร์เพลนนั้นเท่ากันหรือไม่? (นั่นคืออัลกอริธึมที่ลดความแตกต่างที่แน่นอนของจุดสุดยอดด้านที่สองด้านของการแยก)dx+d0=0

นอกจากนี้ยังมีผลลัพธ์ใด ๆ ที่ทราบเกี่ยวกับความซับซ้อนของปัญหานี้หรือไม่

ภาคผนวก: การ จำกัด ประเภทของการตัด:

นี่คือการเปลี่ยนแปลงของปัญหาดั้งเดิมด้วยความหวังว่ามันจะง่ายต่อการแก้ปัญหากว่าเดิม:

มีวิธีการได้อย่างมีประสิทธิภาพหรือคำนวณประมาณการที่ประสานงานไฮเปอร์เพลนของรูปแบบd ฉันx ฉัน + d 0 = 0จะให้ผลผลิตแตกต่างแน่นอนต่ำสุดของ cardinalities จุดสุดยอดทั้งสองด้านของการแยกหรือไม่ โดยการที่มีประสิทธิภาพฉันหมายถึงสิ่งใดที่มีประสิทธิภาพมากกว่าการนับอย่างละเอียดของความเป็นหัวใจเชิงยอดสำหรับการแยกดังกล่าวที่เป็นไปได้ทั้งหมดidixi+d0=0

หมายเหตุ:หลังจากไม่กี่วันของความคืบหน้าเล็กน้อยฉันโพสต์คำถามนี้ที่MathOverflowด้วย


ไม่ควรที่จะพิสูจน์ได้ว่านี่เป็นปัญหา NP-hard หรือไม่?
Peter Shor

ขอบคุณ @ Peter หลักฐานจะดีมาก ที่กล่าวว่าฉันคิดว่าปัญหาเป็นเรื่องยากและฉันคิดว่าฉันสนใจฮิวริสติกหรืออัลกอริทึมการประมาณ แรงบันดาลใจที่อยู่เบื้องหลังแนวคิดในการ จำกัด ประเภทของการตัดนั้นเป็นส่วนหนึ่งเพื่อดูว่ามีปัญหาทั่วไปที่เปลี่ยนแปลงได้ง่ายขึ้นซึ่งเราได้รู้จักวิธีการแก้ปัญหาหรืออัลกอริทึมการประมาณ
Amelio Vazquez-Reina

สิ่งที่เกี่ยวกับบางสิ่งบางอย่างตามสายเหล่านี้ (ไม่แน่ใจว่ามันทำงาน) - เรารู้ว่าการนับจำนวนการจับคู่สองฝ่ายสูงสุดคือ # P-hard นอกจากนี้เรายังทราบว่าโปรแกรมเชิงเส้นเพื่อค้นหาการจับคู่สองฝ่ายที่สูงสุดนั้นไม่มีการเปลี่ยนแปลงใด ๆ ทั้งสิ้นดังนั้นการแก้จุดที่เป็นไปได้ / มุมที่เป็นไปได้ขั้นพื้นฐานนั้นเป็นสิ่งสำคัญ สำหรับปัญหาการจับคู่สองฝ่ายสูงสุดให้ค้นหาค่าของการจับคู่ สร้างโปรแกรมเชิงเส้นด้วยข้อ จำกัด ที่โซลูชันใด ๆ จะต้องมีค่าที่เหมาะสมที่สุด จากนั้นทุกมุมของจุดคือการจับคู่ ความสามารถในการหารซ้ำ ๆ อย่างสม่ำเสมอหมายความว่าคุณควรนับจำนวนการแข่งขัน
เลือก

ไม่เป็นไร. เราจะต้องสามารถนับจำนวนจุดยอดที่เพิ่มเข้ามาด้วยระนาบการตัดได้เช่นกัน
เลือก

คำตอบ:


-2

ฉันจำวิธีวิเคราะห์ไม่ได้!

แต่นี่เป็นปัญหาคลาสสิกสำหรับการเขียนโปรแกรมทางพันธุกรรม! หากคุณคุ้นเคยกับมันคุณสามารถใช้เวกเตอร์ที่ทำให้เป็นมาตรฐานได้ที่กึ่งกลางของรูปทรงหลายเหลี่ยมที่อธิบายระนาบการตัด

ดังนั้นประชากรของคุณคือชุดของเวกเตอร์ที่ได้รับการทำให้เป็นมาตรฐาน [x, y, z, ... ] และเป็นฟังก์ชั่นที่เหมาะสมคุณใช้ความแตกต่างระหว่างปริมาตรที่แบ่ง 2 อัน!

ดังนั้นหากความแตกต่างมีแนวโน้มที่จะ "พอดี" มากกว่าศูนย์คือเวกเตอร์ / ระนาบของคุณ!


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