【问题标题】:Calculating total number of spanning trees containing a particular set of edges计算包含特定边集的生成树的总数
【发布时间】:2026-02-15 07:55:02
【问题描述】:

我尝试了以下方法:

首先我对给定边集中的所有边进行边收缩以形成修改后的图。

然后我使用矩阵树定理从修改后的图中计算生成树的总数。

我想知道这个方法是否正确,还有没有其他更好的方法。

【问题讨论】:

  • 应该没问题。正如 Adam Crume 指出的那样,您现在正在使用多重图。幸运的是,存在一个用于多重图的矩阵树定理的版本,它需要一个稍微不同的拉普拉斯矩阵
  • 谢谢。还有其他方法吗?我只是出于直觉想到了这种方法。

标签: algorithm data-structures graph directed-graph


【解决方案1】:

设 G 为图,设 e 为边,设 G/e 为同一个图,e 收缩。那么,

命题:G中包含e的生成树与G/e的生成树之间存在双射。

这个命题不难证明;您最好自己理解证明,而不是仅仅询问其他人是否正确。显然,如果你有一个包含 e 的 G 的生成 T 树,那么 T/e 是 G/e 的生成树。要考虑的是,你也可以倒退。

而且,正如 Adam 指出的那样,您必须小心正确处理具有平行边的图和边从顶点到自身的图。

【讨论】:

    【解决方案2】:

    我不知道它是否正确,但你必须小心边缘收缩会导致平行边缘的事实。您必须确保仅将使用的平行边不同的树计算为不同的。

    【讨论】: