带有n个顶点的图形 - 如何打印所有可能的图形组合

时间:2012-06-07 04:58:48

标签: algorithm graph-algorithm

假设我们将图中的顶点数设置为n。 (我们可以通过用户输入等设置它。)

我想打印使用边连接顶点的所有可能情况。 (所以,我想打印n个顶点的所有可能(简单)连通图。)

另外,对于每种情况,我都想在每种情况下打印每个顶点的度数。

1 个答案:

答案 0 :(得分:2)

一个天真但简单的解决方案是创建所有可能的图形,并过滤掉未连接的图形。

创建一组所有可能的边。有n(n-1)/2个,这将是集合的大小。

找到所需集合的power set。此幂集表示可以创建的所有可能的图形。

维基百科文章还提供algorithm来计算集合的幂集。 This post也讨论了这个问题(java)

对于创建的每个子集 - 检查它是否已连接。可以使用诸如BFS之类的发现算法来完成。当且仅当BFS从单个(随机)源开始时才发现所有顶点时,图形才被连接。