我正在使用Google Guava Graph API实现Kosaraju的算法,但目前仍无法获得 MutableValueGraph 使用标准番石榴API。
MutableValueGraph
下面是我的代码:
MutableValueGraph<GraphNode,Integer> graph = ValueGraphBuilder.directed() .allowsSelfLoops(true) .build();
有人能提出一个好方法来将图形转换为转置,保持底层接口不变吗( 可变值图 )?有什么办法吗?如果没有,我很乐意更改底层接口。
可变值图
你应该看看 Graphs helper类,其中包含 transpose 方法,特别是 Graphs#transpose(ValueGraph) 哪一个
Graphs
transpose
Graphs#transpose(ValueGraph)
返回每个边的方向(如果有)都反转的图形视图。所有其他属性保持不变,对图形的进一步更新将反映在视图中。
请注意,返回的视图本身是不可变的(它是 ValueGraph ),因此,如果要对转置图进行变异,则必须自己复制其值:
ValueGraph
// to obtain a transposed view: final ValueGraph<String, Integer> transposed = Graphs.transpose(graph); // to make a mutable copy of transposed graph: final MutableValueGraph<String, Integer> transposedMutable = Graphs.copyOf(transposed);