3

jgrapht が提供するさまざまなタイプの有向および無向グラフ クラスを使用して、グラフの色付けアルゴリズムを作成することに興味があります。それらのどれも、グラフ クラス自体の中でこれを行う簡単な機能を持っていないようです (例: DirectedSimpleGraph)。

私の目標は、オブジェクト自体の外部に頂点情報を保存する必要なく、グラフ オブジェクトをトラバースし、さまざまなラベルや色を頂点に追加/変更できるようにすることです。つまり、「DirectedSimpleGraph」などのメソッドを使用または作成したいと考えています。 .setColorToVertex(v, c), ここで、v は頂点で、c はおそらく整数として定義される色です.リードまたはベストプラクティスのアドバイスは大歓迎です.

4

3 に答える 3

2

頂点に色を付けたり、ラベルを付けたりする一般的な方法は、必要なものを格納する jgrapht に独自の Vertex クラスを提供することです。例えば、

public class MyVertex {
  public String colour;
}

SimpleGraph<MyVertex, DefaultEdge> g = 
    new SimpleGraph<MyVertex,DefaultEdge>(DefaultEdge.class);
MyVertex v1 = new MyVertex();
MyVertex v2 = new MyVertex();

g.addVertex(v1);
g.addVertex(v2);

DefaultEdge edge = g.addEdge(v1, v2);

//traverse graph
Graphs.getOppositeVertex(g, edge, v1).colour = "red";

このように、頂点の色/ラベルを追跡するために外部メカニズム (ハッシュ マップなど) を使用する必要はありません。

于 2015-10-14T04:19:33.570 に答える