Saya mencari algoritme untuk menggambar grafik gabungan / ketergantungan (untuk aplikasi linguistik). Grafik seperti itu akan memiliki dua jenis simpul yang berbeda (token, node), dan dua jenis tepi yang berbeda (hierarkis, non-hierarkis).
Saya baru mengenal teori grafik dan algoritma secara umum, dan saya harap pertanyaan ini tidak berbenturan misalnya dengan persyaratan tingkat penelitian situs ini. Namun umumnya harus dalam lingkup cerita .
Grafik harus ditarik dari bawah ke atas (saya pikir), karena semua token harus ditampilkan dengan koordinat y yang sama, dan koordinat y dari token pengelompokan node dan / atau simpul ke dalam konstituen harus dihitung secara dinamis, misalnya, melalui jalur terpanjang mereka ke token.
Tepi hierarkis (digunakan untuk mengelompokkan token / node ke dalam konstituen) harus memiliki jumlah titik bend minimum (idealnya 0), tetapi juga harus ada jumlah penyeberangan minimum, menimpa persyaratan sebelumnya jika perlu.
Tepi non-hierarkis (digunakan untuk dependensi) harus memiliki jumlah penyeberangan minimum, dan digambarkan sebagai kurva Bézier.
Hal terbaik berikutnya yang saya temui adalah algoritma yang dijelaskan oleh Buchheim et al. , meningkatkan algoritme Walker untuk berjalan dalam waktu linier.
Tolong beri tahu saya jika ada kebutuhan untuk meningkatkan pertanyaan saya, dan terima kasih banyak sebelumnya untuk petunjuk apa pun.
EDIT:
Seperti yang ditunjukkan dalam komentar, saya harus menyebutkan bahwa pada dasarnya saya ingin tata letak grafik default dengan suatu algoritma, yang saya - dalam jangka panjang - ingin mengedit dan merevisi dalam kemungkinan GEF Eclipse . Saya sebelumnya telah melihat opsi untuk membuat Graphviz bekerja dengan GEF, tetapi sepertinya tidak ada solusi yang berfungsi yang menjaga semua fungsi pengeditan yang diwarisi dari GEF.
Jawaban:
Anda sepertinya menginginkan yang berikut ini
re (1) perangkat lunak terdepan tampaknya graphviz . re (2) lihat misalnya pertanyaan ini "apa editor grafik terbaik" di mathoverflow .
menelusuri galeri graphviz, berikut adalah dua jenis grafik yang mirip dengan yang Anda inginkan.
Diagram ER dan lampu lalu lintas .
Anda mengatakan Anda memiliki dua jenis tepi. cara sederhana adalah dengan mengarahkan tepi "ke atau jauh" seperti pada contoh lampu lalu lintas. atau ujung-ujungnya dapat dilabeli dengan dua cara seperti pada diagram ER. kedua contoh menunjukkan dua tipe simpul yang berbeda menggunakan bentuk atau label yang berbeda, atau naungan dll. pendekatan lain adalah menggunakan pewarnaan.
sebagai mathoverflow T / As menunjukkan ada banyak editor grafik. yang pertama dengan graphviz adalah "dotty". lihat misalnya pdf "pengeditan grafik dengan dotty " oleh Koutsofious.
teknik lain untuk grafik, mungkin grafik besar, adalah dengan melihat komposisi struktural misalnya dekomposisi klik.
sumber