Graph 如何在给定最大度的情况下构造一棵树?
我有一个图顶点的“最大”度序列。现在我想构造一棵树,其中每个节点都有“最多”对应的最大度 例如,如果我的最大度数序列是A=[3,4,2,1,4,3],那么我想创建一个由6个顶点组成的树,每个顶点都有对应于其在A中的值的“最大度数”Graph 如何在给定最大度的情况下构造一棵树?,graph,Graph,我有一个图顶点的“最大”度序列。现在我想构造一棵树,其中每个节点都有“最多”对应的最大度 例如,如果我的最大度数序列是A=[3,4,2,1,4,3],那么我想创建一个由6个顶点组成的树,每个顶点都有对应于其在A中的值的“最大度数” 到目前为止,我尝试了顶点着色,但无法得到一棵树,有时我会得到一个有一个循环的图。首先,让我们回顾一个关于具有n顶点的树的度的重要事实:度的总和总是2*(n-1)。反之亦然,如果图的度和是2*(n-1),则图是树。实际上,任何给出2*(n-1)的自然数序列都可以表示树的
到目前为止,我尝试了顶点着色,但无法得到一棵树,有时我会得到一个有一个循环的图。首先,让我们回顾一个关于具有
n
顶点的树的度的重要事实:度的总和总是2*(n-1)
。反之亦然,如果图的度和是2*(n-1)
,则图是树。实际上,任何给出2*(n-1)
的自然数序列都可以表示树的度数
因此,您的问题的一般算法应该如下所示:
(n-1)*一个边缘的成本,无论结果树是什么
例如:
取序列A=[3,4,2,1,4,3]。总数是17。我们应该有10棵树
让我们把每一个大于一的度减少一
它给出:B=[2,3,1,1,3,2]。总数是12
让我们将第一次下降的2度减少1,我们发现:
它给出:C=[1,2,1,1,3,2]。总数是10。这是树的度列表
我们来画吧
从阶数为1的顶点开始(必须至少有2个顶点),然后通过增加阶数进行附加:
1--
1--
1--
1--2--
1--2--
1--
1--2--\
1--2---3
1-----/
对不起,我的艺术技能不是最好的
更具体地说:我们可以尝试将图右侧的n-1个顶点“贪婪地”链接到阶数为n的任何左顶点。最后一个例外,它应该链接剩余的内容
[3,3,3,1,1,1,1,1,1]的示例
1--
1--
1--
1--
1--
1---3
1--/
1---3
1--/
1--
1---3-\
1--/ \
1---3---3
1--/ /
1-----/
顶点具有某种精确的给定阶数(与其连接的边数),但没有“最大阶数”。或者你的意思是你可以把“4”解释成2度的顶点?列表中的顺序对你这一代人有影响吗?我的意思是,如果给出序列[4,4,3,3,2,1],而不是示例[3,4,2,1,4,3],它会给你相同的树吗?@Pac0我知道节点的度是定义的,不能有最大值或最小值。我的意思是,在构建树时,任何特定节点的度数都不应“超过”其最大允许度数。例如,节点0的度数不能超过[0],节点3的度数不能超过[3]。顺序很重要,因为它们定义了每个节点各自允许的最大次数。但如果我将其理解为“必须有两个节点的最大次数为4,两个节点的最大次数为3,一个节点的最大次数为2,一个节点的最大次数为1”“-->无论给定序列的顺序如何,这种解释都是正确的,对吗?@Pac0存在顺序约束。这就是为什么我感觉被卡住了。