0

我有一个算法可以搜索图中两个节点之间的所有可能路径,但我选择的路径不重复节点并且具有我指定的路径长度。
它在 ActionScript3 中,我需要将我的算法更改为迭代或优化它(如果可能的话)。
我不知道该怎么做,我不确定更改为迭代是否会为该函数带来更好的执行时间。可能无法优化。我不知道。

这是我的功能: http: //pastebin.com/nMN2kkpu

如果有人可以就如何解决这个问题提供一些提示,那就太好了。

4

1 回答 1

1

一方面,您可以通过开始顶点对边进行排序。然后,遍历一个顶点的邻居将与该顶点的邻居数成正比(而现在它正在采用,整个图的边数在O(M)哪里)。M

如果您放宽不重复顶点的条件,我相信问题可以在更好的时间解决。

但是,如果您需要它,恐怕没有简单的更改可以使您的代码更快。不过,我不能保证这一点。

此外,如果我是正确的,代码片段会测试是否已经使用了边缘,而不是是否使用了顶点。我注意到的另一件事是,一旦找到这样的路径,就不会停止递归。由于在大多数*图中,对于 的合理值,都会存在这样的路径length,我想说如果您只需要一个这样的路径,那么在找到一个这样的路径后,您可能会浪费大量的 CPU 时间。

* 大多数 - 读作“也许是大多数(IMO)”。

于 2012-06-13T23:31:53.530 回答