[英]Get all subgraphs in JGraphT
如何在List<MyGraph>
或Set<MyGraph>
集合中获取 JGraphT 中图形的所有可能子图? 我已经阅读了 JGraphT 的文档,但是我找不到任何可以帮助我解决这个特定问题的东西。
这个问题的答案取决于 OP 是想要顶点诱导子图还是边诱导子图。 要在 JGraphT 中创建顶点或边诱导子图,请使用AsSubgraph class。 没有一种方法可以简单地生成所有可能的子图,因为这是一个非常不常见的过程,但您自己很容易实现。 请注意,有2^n
可能的顶点诱导子图,其中n
是顶点数。 所以子图的数量是巨大的。
AsSubgraph
生成一个诱导子图。粗略地说,代码如下所示:
//Initiate some graph. The vertex/edge type is irrelevant for this question
Graph<Integer,DefaultEdge> graph = new SimpleGraph<>(DefaultEdge.class);
...
//Generate powerset
List<Set<Integer>> powerSet = powerSet(graph.vertexSet());
//Create subgraphs:
for(Set<Integer> subset : powerSet)
Graph<Integer,DefaultEdge> subGraph = new AsSubgraph(graph, subset);
要实现 powerSet function,可以在 SO 上找到许多示例。 要计算边诱导子图,请重复上述步骤,但使用 graph.edgeSet() 代替 graph.vertexSet();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.