S-JIS[2022-10-06] 変更履歴

JGraphT

Javaでグラフを扱うライブラリーであるJGraphTのメモ。


概要

JGraphTはJavaでグラフを扱うライブラリー。

ここでいう「グラフ」はグラフ理論のグラフであって、棒グラフや円グラフ等のグラフではない。
頂点(vertex)同士を辺(edge)で結んだもの。フローチャートやER図みたいな感じのやつ。
DAG(有向非巡回グラフ)が有名。→DirectedAcyclicGraphクラス


インストール

JGraphTはMavenリポジトリーから取得できる。

build.gradleの例:

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も入れる。


Graph

JGraphTでは、グラフをGraphインターフェースの具象クラスで扱う。

import org.jgrapht.Graph;
import org.jgrapht.graph.DefaultEdge;

Graph(の具象クラス)は型引数が<V, E>で、頂点(vertex)を扱うクラス辺(edge)を扱うクラスが指定できる。
頂点はユーザーによって色々なクラスを使うが(単純な例ならStringとか)、辺は基本的にDefaultEdgeクラスにしておけばよい。


Javaへ戻る / 技術メモへ戻る
メールの送信先:ひしだま