algorithm - 计算包含特定边集的生成树总数

标签 algorithm data-structures graph directed-graph

我尝试了以下方法:

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

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

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

最佳答案

设G是一个图,设e是一条边,设G/e是e收缩的同一个图。然后,

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

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

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

关于algorithm - 计算包含特定边集的生成树总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3172718/

相关文章:

python - 找出网格中的最大颜色数

python - 改进DNA比对去间隙的代码设计

java - 难以理解合并排序算法的合并部分

ruby-on-rails - 在 Ruby 数据库中存储使用自定义类的哈希值

graph - 科学数据处理(图形比较和解释)

c++ - 如何在 C++ 中读取 DIMACS 顶点着色图?

algorithm - 金字塔数算法

java - 信息检索系统的数据结构/算法

algorithm - 在 R-tree 中,我可以使用 x,y 坐标作为搜索关键字吗?

git - 从 Git 存储库生成统计信息