【问题标题】:A graph with n vertexes- how to print all possible graph combinations具有 n 个顶点的图 - 如何打印所有可能的图组合
【发布时间】:2012-06-07 17:39:12
【问题描述】:

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

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

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

【问题讨论】:

  • 顶点的顺序重要吗?循环 1 -> 2 -> 3 -> 1 和 1 -> 3 -> 2 -> 1 算作两个不同的图吗?
  • @OpDeCirkel, AFAIU simple graph
  • 糟糕。我的例子是错误的。但是图 (1-2,2-3) 和 (1-3,2-3) 又是两个不同的图?
  • @defaultlocale 是的。即使某些图与某些图同构,它们也会被视为独立的。
  • 图是有向的吗?如果是这样 - 您是在寻找连接图还是强连接图?这是两个不同的东西。

标签: algorithm graph-algorithm


【解决方案1】:

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

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

找到所需集的power set。这个幂集代表了所有可以创建的图。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    • 2016-09-02
    • 2018-09-25
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多