จะลดจำนวนจุดตัดขอบในไดอะแกรมได้อย่างไร?


10

ฉันกำลังทำงานกับโปรแกรมแก้ไขไดอะแกรม ไดอะแกรมแสดงรูปร่าง 2D ( โหนด ) ที่เชื่อมต่อกับตัวเชื่อมต่อ ( ขอบ )

ฉันต้องการที่จะเพิ่มการดำเนินการที่ได้รับการเลือกโหนด"disentangles"พวกเขามัน repositions พวกเขาเพื่อลดจำนวนของการข้ามขอบถ้าเป็นไปได้ (และมันก็โอเคถ้าจะต้องวาดด้วยจุดโค้ง) .

ดังนั้นฉันต้องการอัลกอริธึมกราฟที่ให้กราฟ( ทอพอโลยี ) การฝังและเซตย่อยของโหนดของมันปรับเปลี่ยนการฝัง ( โทโพโลยีของมัน) บนโหนดเหล่านั้นเท่านั้นเพื่อลดจำนวนของการข้ามขอบ

จากการอ่านเกี่ยวกับกราฟยอดและการเรียกดูCabello และ Mohar (2013)ฉันคิดว่าปัญหานี้เป็นปัญหาที่ยาก ดังนั้นฉันจะมีความสุขกับอัลกอริทึม parametrized (เช่นจำนวนข้ามขอบ) ที่มีความซับซ้อนรู้จักพหุนามเวลาที่ซับซ้อนสำหรับค่าพารามิเตอร์ที่กำหนด ดูเหมือนว่าจะเป็นไปได้ แต่ฉันคิดว่ามันไม่ง่ายเลยที่จะคิดอัลกอริธึมด้วยตัวเอง

คำถาม:

  • ฉันจะหาอัลกอรึทึมได้ที่ไหน
  • มันมีอยู่หรือไม่
  • ในซอฟต์แวร์ที่มีอยู่
  • มีประสบการณ์ในทางปฏิบัติที่สำคัญกับการปฏิบัติการเช่นนี้หรือไม่ (สิ่งที่ดูดีในทางทฤษฎีอาจไม่ดีในทางปฏิบัติหรือในทางกลับกัน)

(ฉันไม่แน่ใจว่าจะถามคำถามนี้ที่ไหนดีที่สุด: ที่นี่ใน StackOverflow หรือ MathOverflow?)


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

มีการทำงานเชิงลึกมากที่นี่: complang.tuwien.ac.at/cd/ebner/ebner05da.pdf
Dschoni

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

คำตอบ:


9

คำนวณจำนวนน้อยที่สุดข้ามแน่นอนคือในขณะที่คุณสังเกต{NP-ยาก} ขั้นตอนการวาดกราฟควรอย่างน้อยที่สุดเท่าที่จะทำได้NP-hard

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

แหล่งข้อมูล:
คุณอาจสนใจแหล่งข้อมูลต่อไปนี้โดยเฉพาะอย่างยิ่งกับแหล่งแรก:

มีทรัพยากรอื่น ๆ อีกมากมายเช่นกัน สิ่งเหล่านี้จะช่วยคุณในการเริ่มต้น

ความคิดและข้อสังเกตเพิ่มเติม:

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

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


ฉันได้เพิ่มโทโพโลยีลงในคำถามของฉันโดยเฉพาะเพื่อหลีกเลี่ยงการอภิปรายเกี่ยวกับสุนทรียศาสตร์ เป็นสิ่งสำคัญ แต่ฉันไม่คิดว่าพวกเขาจะส่งผลกระทบต่อปัญหาพื้นฐานมากนัก - ฉันคิดว่าพวกเขาสามารถจัดการได้ในขั้นตอนแยกต่างหากหลังจากปรับโทโพโลยีของโหนด (เช่นโหนดใดที่ล้อมรอบด้วยโหนดอื่น)
reinierpost

ฉันใช้ Graphviz ครั้งแรกเมื่อ 15 ปีก่อน ฉันใช้มันประมาณสัปดาห์ละครั้งสำหรับกราฟทุกชนิด ฉันไม่ประทับใจกับผลลัพธ์ของมันมากนักและฉันเข้าใจว่ามันยากที่จะทำได้ดีกว่านี้มาก
reinierpost

ฉันมักจะไปที่ graphviz.org และฉันได้อ่านเอกสารบางอย่างที่พวกเขาอ้างถึง แต่ฉันยังไม่ได้พบคำตอบสำหรับคำถามเฉพาะนี้และมันไม่ได้อยู่ในรายละเอียดงานของฉันที่จะทำความคุ้นเคยกับวรรณกรรม นั่นเป็นเหตุผลที่ฉันถามมันที่นี่
reinierpost

ขอขอบคุณสำหรับการอ้างอิงแม้ว่า - ผมสังเกตเห็นนี้ยังคงมีการวิจัยในปัจจุบัน
reinierpost

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