มีอัลกอริทึมที่เหมาะสมในการวาดกราฟการเลือกตั้ง / การพึ่งพาแบบผสมในระบบพิกัดหรือไม่?


9

ฉันกำลังมองหาอัลกอริทึมในการวาดกราฟองค์ประกอบ / กราฟการพึ่งพา (สำหรับแอปพลิเคชันด้านภาษาศาสตร์) กราฟดังกล่าวจะมีจุดยอดสองประเภทที่แตกต่างกัน (โทเค็นโหนด) และขอบสองประเภทที่แตกต่างกัน (ลำดับชั้นไม่ใช่แบบลำดับชั้น)

ฉันยังใหม่กับทฤษฎีกราฟและอัลกอริทึมโดยทั่วไปและฉันหวังว่าคำถามนี้จะไม่ขัดแย้งกันเช่นกับข้อกำหนดระดับการวิจัยของไซต์นี้ มันควร แต่โดยทั่วไปจะอยู่ในขอบเขตของ cstheory

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

ขอบลำดับชั้น (ใช้สำหรับการจัดกลุ่มโทเค็น / โหนดในองค์ประกอบ) ควรมีจำนวนจุดดัดขั้นต่ำ (ตามอุดมคติ 0) แต่ควรมีจำนวนจุดข้ามขั้นต่ำโดยเขียนทับข้อกำหนดเดิมหากจำเป็น

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

สิ่งที่ดีที่สุดถัดไปที่ฉันเจอคืออัลกอริทึมที่อธิบายโดยBuchheim และคณะ ปรับปรุงอัลกอรึทึมของวอล์คเกอร์ให้ทำงานในเวลาเชิงเส้น

โปรดแจ้งให้เราทราบหากมีความจำเป็นต้องปรับปรุงคำถามของฉันและขอบคุณล่วงหน้าสำหรับคำแนะนำใด ๆ

แก้ไข:

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


คุณต้องการอัลกอริทึมหรือเครื่องมือที่มีอยู่หรือไม่? Graphviz ( graphviz.org ) สามารถทำได้ คุณระบุกราฟอาจเป็นตัวเลือกการจัดรูปแบบบางอย่าง (สำหรับโหนดและขอบชนิดต่าง ๆ ) และเครื่องมือจะแสดงผลกราฟที่แสดงผลอย่างสมเหตุสมผล
Dave Clarke

@DaveClarke: ขอบคุณ ฉันรู้ว่า Graphviz สามารถทำสิ่งนี้ได้ น่าเสียดายที่ดูเหมือนว่าในปัจจุบันไม่มีความเป็นไปได้ที่จะใช้ Graphviz กับเครื่องมือแก้ไขตาม [Eclipse Graphical Editing Framework] (www.eclipse.org/gef) ดังนั้นฉันกำลังมองหาอัลกอริทึมจริง แน่นอนว่าไม่มีใครรู้วิธีเสียบ / พอร์ต Graphviz ไปยัง GEF แน่นอน
sd

มันเสียงเหมือน OP ที่กำลังมองหาอัลกอริทึม (หรือการกำหนดปัญหาที่จับสเปค)
Suresh Venkat

@SureshVenkat: ใช่ขอบคุณสำหรับการชี้แจง
sd

1
Q ไม่มีการกล่าวถึงการแก้ไข & แต่ในความคิดเห็นคุณปิดกราฟวิซและดูเหมือนว่าคุณต้องการแก้ไขด้วย GEF GEF เป็นกรอบงานการแก้ไขภาพทั่วไป / API ที่ "ปลั๊กอิน" อื่นสามารถสร้างได้ ดูเหมือนว่าคุณต้องการรูปแบบกราฟเริ่มต้นโดยอัลกอริทึมที่คุณสามารถแก้ไขได้ ขอแนะนำให้คุณแก้ไขคำถามเพื่อแสดงว่า โดยวิธีการที่เชื่อว่ากราฟวิซสามารถนำมาใช้เพื่อสร้างพิกัดซึ่งสามารถป้อนเข้าไปในโปรแกรมแก้ไขกราฟ การแก้ไขกราฟของ GEF ดูตัวอย่างการจัดทำกราฟระดับมืออาชีพสำหรับ GEF
vzn

คำตอบ:


1

คุณดูเหมือนต้องการต่อไปนี้

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

re (1) ซอฟต์แวร์ระดับแนวหน้าน่าจะเป็นกราฟวิซ ดู (2) อีกครั้งเช่นคำถามนี้"ตัวแก้ไขกราฟที่ดีที่สุด" ใน mathoverflowคืออะไร

เรียกดูแกลเลอรี graphviz ต่อไปนี้เป็นกราฟสองประเภทที่คล้ายกับที่คุณต้องการ

แผนภาพ ERและสัญญาณไฟจราจร

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

ดังที่ mathoverflow Q / As ระบุว่ามีเครื่องมือแก้ไขกราฟจำนวนมาก มาตรฐานที่หนึ่งที่มี graphviz คือ "dotty" ดูตัวอย่าง pdf "กราฟการแก้ไขที่มีจุด"โดย Koutsofious

อีกเทคนิคสำหรับการทำกราฟอาจเป็นกราฟที่มีขนาดใหญ่คือการดูองค์ประกอบโครงสร้างเช่นการสลายตัวของกลุ่ม

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