gpt4 book ai didi

algorithm - 图中两个给定节点之间给定长度的所有路径

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:31:05 24 4
gpt4 key购买 nike

我遇到了这个问题:

http://www.iarcs.org.in/inoi/contests/oct2005/Advanced-2.php

问题基本上是关于图表的。给定一个最多包含 70 个节点的图,以及一个表示两个节点之间存在多少条边的邻接矩阵。每条边都是双向的。

现在问题要求您找出任意两个节点 N1 和 N2 之间的固定长度 N 的不同路径的数量。路径可以有重复。即,路径可以通过一个已经包含的节点。

最简单的算法是运行广度优先搜索并检查有多少 N2 出现在第 N 层中,BFS 树的根是 N1。但这行不通。

怎么办?

最佳答案

这个问题的解决方案很简单 - 将邻接矩阵提高到 N 次方,答案将位于单元格 (N1, N2) 中,每对 N1 和 N2 - 基本图理论。

您还可以使用 binary exponentiation矩阵以更快地计算答案。

要了解上述算法的原因,请尝试写下求幂的前几个步骤。您会注意到,在每次迭代中,矩阵都包含从 1 到 N 的给定固定长度的路径。如果您写下执行矩阵乘法时如何计算单元格,您还应该了解为什么会这样。

注意:关于如何计算长度最大固定长度的所有路径,还有一个非常酷的 hack - 只需在起始顶点添加一个“循环”,从而使其可以从自身访问.

关于algorithm - 图中两个给定节点之间给定长度的所有路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14237593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com