从给定的节点度构造图形

时间:2013-02-06 19:13:47

标签: algorithm graph

我必须找到以下哪个值可以是具有6个顶点的无向图的度数:

a)3 2 2 2 3 3
b)4 2 2 2 3 2
c)5 2 2 2 0 3
d)5 2 2 2 1 2

我发现的唯一方法是尝试在一张纸上绘制图形,然后检查是否可能。 我只是需要一个提示来启动这个问题,如果可能的话,除了绘制每个图之外。

2 个答案:

答案 0 :(得分:10)

以下算法决定是否可以使用给定的节点度数构建简单的图形:

  1. 按降序排列度数

  2. 如果第一个度数是0(即所有度数都是0),那么很明显可以形成这样的图形(没有边缘),你就完成了。

  3. 如果第一个度数具有值d(> 0),那么以下d度必须大于0.如果不是,则完成:不能形成这样的图形。< / p>

  4. 取走第一个度(值d)并将以下d度减一(即从具有最高度的节点绘制所请求的边数到具有最高度的节点其余部分之间的程度 - 请参见下面的证据以证明此假设的正确性),然后继续步骤1(现在减少一个节点)

  5. 示例a)(由于权重的奇数和可以被拒绝,但上述算法也有效)

    3 2 2 2 3 3
    3 3 3 2 2 2
      2 2 1 2 2
      2 2 2 2 1
        1 1 2 1
        2 1 1 1
          0 0 1
          1 0 0
            -1   not possible
    

    例子c)

    5 2 2 2 0 3
    5 3 2 2 2 0
      2 1 1 1 -1   not possible
    

    例子d)

    5 2 2 2 1 2 
    5 2 2 2 2 1
      1 1 1 1 0
        0 1 1 0
        1 1 0 0
          0 0 0  ok
    

    缺少的是证明如果可以使用给定的节点度绘制图形,则匹配图之一具有步骤4的此属性,即具有最高度的节点与具有次高度的节点连接。

    因此,我们假设A是度数最高的节点,并且它与节点B连接,节点C的度数小于未连接到的节点degree(B) > 0的度数答:自degree(C) > 1以来我们知道D。因此,有另一个节点C连接到AB。所以我们有边CDAC,我们可以用e BD和{{1}}代替它们而不改变节点的度数。

    通过重复此过程足够多次,我们可以使具有下一个最高度的所有节点连接到具有最高度数的节点。

答案 1 :(得分:2)

在这种情况下,handshaking lemma或度和公式是必要且充分的条件,因为我们只关心它形成无向图(边的方向无关紧要,但没有关于环或平行的说法)边缘)。因此,选项c和选项d是有效的6顶点无向图。

如果问题要求简单无向图(不允许循环和平行边),那么我们需要引入Havel/Hakimi算法,这是@coproc所描述的。 / p>