-1

すべてのエッジを保持しながら頂点の内容を変更する方法はありますか? 見つけられませんでしたが、提供されるもののようです。

4

2 に答える 2

1

JGraphT には、頂点を置き換えるメソッドがありません。これを使用して、必要なことを行うことができます。

public static <V, E> void replaceVertex(Graph<V, E> graph, V vertex, V replace) {
    graph.addVertex(replace);
    for (E edge : graph.outgoingEdgesOf(vertex)) graph.addEdge(replace, graph.getEdgeTarget(edge), edge);
    for (E edge : graph.incomingEdgesOf(vertex)) graph.addEdge(graph.getEdgeSource(edge), replace, edge);
    graph.removeVertex(vertex);
}
于 2018-01-15T01:43:45.180 に答える
0

頂点の内容を変更するとはどういう意味ですか? 頂点はジェネリックで作成されます。つまり、そこに任意のオブジェクトを配置できます。つまり、不変でない場合、このオブジェクトのコンテンツを置き換えるメソッドを提供するのはあなた次第です。それとも、完全に新しいオブジェクト (完全に新しい頂点) をそこに置き、古いオブジェクトのすべての関係を保存しますか? 次に、おそらくこの頂点を含むエッジを見つけ ( java.util.Set<E> edgesOf(V vertex))、それらを削除し ( boolean removeEdge(E e))、新しい頂点を含む新しいエッジに置き換える ( E addEdge(V sourceVertex, V targetVertex)) 必要があります。

于 2012-01-07T09:17:23.560 に答える