0

我正在使用 Google Guava Graph API 实现 Kosaraju 的算法,但目前坚持MutableValueGraph使用标准 guava API 获得转置。

下面是我的代码:

MutableValueGraph<GraphNode,Integer> graph = ValueGraphBuilder.directed()
    .allowsSelfLoops(true)
    .build();

有人可以建议一种将图形转换为其转置保持底层接口相同(MutableValueGraph)的好方法吗?有没有办法做到这一点?如果没有,我很乐意更改底层接口。

4

1 回答 1

2

您应该查看Graphs包含一组transpose方法的辅助类,具体来说Graphs#transpose(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); 
于 2018-03-22T09:35:22.240 回答