代码之家  ›  专栏  ›  技术社区  ›  Debapriya Biswas

使用Google Guava Graph API进行图形转置

  •  0
  • Debapriya Biswas  · 技术社区  · 7 年前

    我正在使用Google Guava Graph API实现Kosaraju的算法,但目前仍无法获得 MutableValueGraph 使用标准番石榴API。

    下面是我的代码:

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

    有人能提出一个好方法来将图形转换为转置,保持底层接口不变吗( 可变值图 )?有什么办法吗?如果没有,我很乐意更改底层接口。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Grzegorz Rożniecki    7 年前

    你应该看看 Graphs helper类,其中包含 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); 
    
    推荐文章