Adakah yang punya pengalaman baik dengan perpustakaan Java untuk algoritma Graph. Saya sudah mencoba JGraph dan menemukannya ok, dan ada banyak yang berbeda di google. Apakah ada orang yang benar-benar berhasil menggunakan kode produksi atau akan merekomendasikan?
Untuk memperjelas, saya tidak mencari perpustakaan yang menghasilkan grafik / grafik, saya sedang mencari perpustakaan yang membantu dengan algoritma Grafik, misalnya pohon rentang minimum, algoritma Algoritma Kruskal, Tepi, dll. Idealnya satu dengan beberapa algoritma / data yang baik struktur dalam Java OO API yang bagus.
Ringkasan:
sumber
Lihat JGraphT untuk pustaka grafik Java yang sangat sederhana dan kuat yang dilakukan dengan cukup baik dan, untuk menghilangkan kebingungan, berbeda dari JGraph . Beberapa kode contoh :
sumber
JUNG adalah pilihan yang baik untuk visualisasi, dan juga memiliki serangkaian algoritma grafik yang cukup baik, termasuk beberapa mekanisme berbeda untuk pembuatan grafik acak, rewiring, dll. Saya juga menemukan bahwa secara umum cukup mudah untuk memperluas dan beradaptasi jika perlu .
sumber
Apache Commons menawarkan commons-graph . Di bawah http://svn.apache.org/viewvc/commons/sandbox/graph/trunk/ orang dapat memeriksa sumbernya. Contoh penggunaan API juga ada di SVN . Lihat https://issues.apache.org/jira/browse/SANDBOX-458 untuk daftar algoritma yang diimplementasikan, juga dibandingkan dengan Jung, GraphT, Prefuse, jBPT
Google Guava jika Anda hanya membutuhkan struktur data yang bagus.
JGraphT adalah perpustakaan grafik dengan banyak Algoritma yang diimplementasikan dan memiliki (menurut pendapat saya) model grafik yang baik. Contoh Helloworld . Lisensi: LGPL + EPL.
JUNG2 juga merupakan perpustakaan berlisensi BSD dengan struktur data yang mirip dengan JGraphT. Ini menawarkan algoritma tata letak, yang saat ini hilang di JGraphT. Komit terbaru berasal dari 2010 dan paket
hep.aida.*
- paketnya adalah LGPL (via colt library , yang diimpor oleh JUNG ). Ini mencegah JUNG dari digunakan dalam proyek-proyek di bawah payung ASF dan ESF. Mungkin kita harus menggunakan garpu github dan menghapus ketergantungan itu. Commit f4ca0cd mencerminkan mirror CVS terakhir. Komit saat ini tampaknya menghapus fungsi visualisasi. Commit d0fb491c menambahkan a.gitignore
.Prefuse menyimpan grafik menggunakan struktur matriks, yang tidak efisien memori untuk grafik jarang. Lisensi: BSD
Eclipse Zest telah membangun algoritma tata letak grafik, yang dapat digunakan secara independen dari SWT. Lihat org.eclipse.zest.layouts.algorithms . Struktur grafik yang digunakan adalah salah satu dari Eclipse Draw2d , di mana Nodes adalah objek eksplisit dan tidak disuntikkan melalui Generics (seperti yang terjadi di Apache Commons Graph, JGraphT, dan JUNG2).
sumber
http://neo4j.org/ adalah basis data grafik yang berisi banyak algoritma grafik dan skala yang lebih baik daripada kebanyakan perpustakaan di memori.
sumber
Dalam sebuah proyek universitas, saya bermain-main dengan yFiles oleh yWorks dan menemukan itu memiliki API yang cukup bagus.
sumber
lihat Cetak Biru :
Blueprints adalah kumpulan antarmuka, implementasi, ouplementasi, dan suite uji untuk model data grafik properti. Cetak biru analog dengan JDBC, tetapi untuk basis data grafik. Di dalam tumpukan perangkat lunak sumber terbuka TinkerPop, Blueprints berfungsi sebagai teknologi dasar untuk:
Pipes : Kerangka kerja aliran data yang malas
GREMLIN : Bahasa traversal grafik
Bingkai : Mapper objek-ke-grafik
Tungku : Paket algoritma grafik
Rexster : Server grafik
sumber
http://incubator.apache.org/hama/ adalah paket ilmiah terdistribusi di Hadoop untuk data matriks dan grafik yang masif.
sumber
JDSL (Pustaka Struktur Data di Jawa) harus cukup baik jika Anda menyukai algoritma grafik - http://www.cs.brown.edu/cgc/jdsl/
sumber
Untuk visualisasi, kelompok kami berhasil dengan prefuse . Kami memperluasnya untuk menangani pelat lantai arsitektur dan diagram bubble, dan itu tidak banyak mengeluh. Mereka memiliki toolkit Flex baru yang disebut Flare yang menggunakan API yang sangat mirip.
UPDATE: Saya harus setuju dengan komentar, kami akhirnya menulis banyak fungsi khusus / bekerja di sekitar batasan prefuse. Saya tidak bisa mengatakan bahwa mulai dari awal akan lebih baik karena kami dapat menunjukkan kemajuan dari hari 1 dengan menggunakan prefuse. Di sisi lain jika kita melakukan implementasi kedua dari hal yang sama, saya mungkin melewatkan prefuse karena kita akan memahami persyaratan jauh lebih baik.
sumber
Coba Annas ini adalah paket grafik sumber terbuka yang mudah dijangkau
http://annas.googlecode.com
sumber
Juga bagus untuk diyakinkan bahwa Grafik dapat direpresentasikan sesederhana:
dan terapkan sebagian besar algoritma yang menurut Anda menarik untuk Anda sendiri. Jika Anda jatuh pada pertanyaan ini di tengah-tengah beberapa sesi latihan / pembelajaran pada grafik, itu lib terbaik untuk dipertimbangkan. ;)
Anda juga dapat memilih matriks kedekatan untuk sebagian besar algoritma umum:
atau matriks untuk beberapa operasi:
sumber
Saya tidak tahu apakah saya akan menyebutnya siap produksi, tapi ada jGABL .
sumber
Jika Anda membutuhkan kinerja, Anda mungkin melihat Grph. Perpustakaan dikembangkan di Universitas Perancis dan CNRS / Inria.
http://www.i3s.unice.fr/~hogie/grph/
Proyek ini aktif dan dukungan reaktif disediakan!
sumber
Implementasi algoritme grafik instruksional di java dapat ditemukan di sini (oleh prof. Sedgewick et al.): Http://algs4.cs.princeton.edu/code/
Saya diperkenalkan kepada mereka ketika menghadiri kursus algoritma luar biasa ini tentang coursera (juga diajarkan oleh Prof. Sedgewick):
https://www.coursera.org/course/algs4partI
https://www.coursera.org/course/algs4partII
sumber
Jika Anda benar-benar mencari perpustakaan Charting dan bukan untuk perpustakaan Node / Edge Graph saya akan menyarankan splurging di Big Graph Grafik berwajah ( BFG ). Ini cara yang lebih mudah digunakan daripada JFreeChart, terlihat lebih bagus, berjalan lebih cepat, memiliki lebih banyak opsi keluaran, benar-benar tidak ada perbandingan.
sumber
JGraph dari http://mmengineer.blogspot.com/2009/10/java-graph-floyd-class.html
Menyediakan perangkat lunak yang kuat untuk bekerja dengan grafik (langsung atau tidak langsung). Juga menghasilkan kode Graphivz, Anda dapat melihat representasi grafik. Anda dapat memasukkan algoritma kode Anda sendiri ke dalam pakage, misalnya: kode backtracking. Paket ini menyediakan beberapa algoritme: Dijkstra, melacak biaya jalur minimun, dll.
sumber