我必须找出以下哪个值可以是具有 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
我发现的唯一方法是尝试在一张纸上绘制图表,然后检查是否可行。如果可能的话,我只需要一个提示来启动这个问题,而不是绘制每个图表。
以下算法决定是否可以使用给定的节点度构造一个简单的图:
按降序排列度数
如果第一个度数是 0(即所有度数都是 0),那么显然可以形成这样的图(没有边),你就完成了。
如果第一个度数具有值d
(> 0),则以下d
度数必须大于 0。如果不是,则完成:无法形成这样的图。
去掉第一个度数(值d
)并将以下d
度数减少一个(即,从度数最高的节点到其余节点中度数最高的节点绘制所请求的边数 - 请参阅下面的证明以了解该假设的正确性),然后继续第 1 步(现在少一个节点)
示例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
未连接到 A 的节点度数的节点连接。因为degree(B) > 0
我们知道degree(C) > 1
。因此有另一个节点D
连接到C
。所以我们有了边AB
,CD
我们可以用 eges 替换它,AC
而BD
不用改变节点的度数。
通过重复此过程足够多次,我们可以使具有次高度数的所有节点都连接到具有最高度数的节点。
在这种情况下,握手引理或度求和公式是充要条件,因为我们只关心它是否形成了一个无向图(边的方向无关紧要,但没有提到循环或平行边)。因此,选项 c 和选项 d 是有效的 6 顶点无向图。
如果问题要求简单的无向图(不允许循环和平行边),那么我们需要引入Havel/Hakimi的算法,如 @coproc 所述。