Javaでグラフを扱うライブラリーであるJGraphTのメモ。
JGraphTはJavaでグラフを扱うライブラリー。
ここでいう「グラフ」はグラフ理論のグラフであって、棒グラフや円グラフ等のグラフではない。
頂点(vertex)同士を辺(edge)で結んだもの。フローチャートやER図みたいな感じのやつ。
DAG(有向非巡回グラフ)が有名。→DirectedAcyclicGraphクラス
JGraphTはMavenリポジトリーから取得できる。
plugins { id 'java' id 'eclipse' } java { sourceCompatibility = JavaVersion.VERSION_18 targetCompatibility = JavaVersion.VERSION_18 } compileJava { options.encoding = 'UTF-8' } compileTestJava { options.encoding = 'UTF-8' } repositories { mavenCentral() } dependencies { // https://mvnrepository.com/artifact/org.jgrapht/jgrapht-core implementation group: 'org.jgrapht', name: 'jgrapht-core', version: '1.5.1' implementation group: 'org.jgrapht', name: 'jgrapht-io', version: '1.5.1' }
基本となるのがjgrapht-core。
Graphvizのdotファイルを出力したい(DOTExporterを使いたい)ような場合はjgrapht-ioも入れる。
JGraphTでは、グラフをGraphインターフェースの具象クラスで扱う。
import org.jgrapht.Graph; import org.jgrapht.graph.DefaultEdge;
Graph(の具象クラス)は型引数が<V, E>で、頂点(vertex)を扱うクラスと辺(edge)を扱うクラスが指定できる。
頂点はユーザーによって色々なクラスを使うが(単純な例ならStringとか)、辺は基本的にDefaultEdgeクラスにしておけばよい。