📜  加权完全图的生成树数

📅  最后修改于: 2021-10-25 05:09:21             🧑  作者: Mango

先决条件:图论基础,生成树。

完全加权图:其中一条边连接每对图顶点并且每条边都具有与其相关联的权重的图称为完全加权图。

具有 n 个顶点的完整加权图的生成树数为n (n-2)

证明:生成树是图 G 的子图,包含该图的所有顶点。因此,一个完整的加权图的生成树的数量与具有 n 个顶点的标记树(不必是二元的)的数量相同。

n 个顶点的标记树的 Prüfer 序列是与树相关的唯一长度 (n-2) 序列。此外,对于标签 1 到 n 上长度为 (n-2) 的给定 Prüfer 序列,存在具有给定 Prüfer 序列的唯一标记树。因此,我们在具有 n 个顶点的标记树的集合 A和标签 1 到 n 上大小为 n-2的 Prüfer 序列的集合 B之间存在双射。这可以证明如下——

设 T 是一棵标记树,顶点为 1,2,…,n,S 作为大小为 (n-2) 的 Prüfer 序列。因此,T 和 S 分别是集合 A 和 B 的元素。

(i) 标记树 (T) –> Prufer 序列 (S)

构建标记树的 Prüfer 序列

最初,让 S = NULL。

程序 –

  • 找到标签最小的 T 的叶节点 (L)。
  • 将 L 的邻居添加到 S。
  • 删除叶节点 L。
  • 重复以上步骤,直到树中只剩下两个节点(只能生成一棵生成树)。
  • 我们构建了与标记树 T 相关的 Prüfer 序列 S。

观察——

  • 没有叶节点附加到 S。
  • 树 T 的每个顶点 V 都添加到 S,总共度 (V)-1 次。
  • 树 T 有 n 个顶点,因此有 (n-1) 条边。
  • S 中的项数 = 属于树 T 的所有顶点 V 的 (度(V) – 1) 之和 T = 树 T 的所有顶点的度之和 – (1+1+…+1..n 次) = 2(边数) – n = 2*(n-1) – n = n-2。 (因为树的所有顶点的度数之和 = 2*树的边数)。
  • 因此,T 类似于长度为 (n-2) 的 Prüfer 序列 S。

(ii) Prufer 序列 (S) –> 标记树 (T)

从其 Pr ü fer 序列构建标记树

程序-

  • 令 L = {1, 2, …, n} 为标签集(T 的顶点)。
  • 令 S = {a 1 ,a 2 ,…,a (n-2) } 是大小为 (n-2) 的 Prüfer 序列,其中每个 a i属于 L。
  • 找出属于 L 但不在 S 中的最小元素 x。
  • 通过边连接 x 和 S (a 1 ) 的第一个元素。
  • 从 S 中删除一个1 ,从 L 中删除 x(因此,S:=S-{a 1 } 并且,L:=L-{x})。
  • 类似地,找到 y,属于 L 而不属于 S 的最小元素。
  • 连接 y 和 S(a 2 ) 的第一个元素。
  • 从 L 中删除 y,从 S 中删除 2 (因此,S:=S-{a 2 } 并且,L:=L-{y})。
  • 继续上述过程,直到L中剩下两项。
  • 连接到目前为止形成的树中的这两个项目。

从 S 得到的树与 T 相同。因此,大小为 (n-2) 的 Prüfer 序列 S 类似于 T ( S <–> T )。因此,在具有 n 个顶点的标记树集与标签 1 到 n 上大小为 (n-2) 的 Prüfer 序列集之间存在双射。

因此, n 个顶点的完整加权图的生成树数量= 具有 n 个顶点的标记树的数量 = 大小为 (n-2) = n (n-2)的 Prüfer 序列的数量。

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程。