algorithm - 递归到迭代 - 还是优化?

标签 algorithm actionscript-3 optimization recursion iteration

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

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

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

最佳答案

一方面,您可以通过起始顶点对边进行排序。然后,遍历一个顶点的邻居将与该顶点的邻居数成正比(而现在它需要 O(M),其中 M 是边数对于整个图表)。

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

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

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

*大多数 - 读作“可能是大多数 (IMO)”。

关于algorithm - 递归到迭代 - 还是优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11023482/

相关文章:

c++ - 指针上的指针 - 性能损失的原因

Javascript - 更好地替代递归调用

SQL 优化 - 从历史表中获取两个不同日期的值

algorithm - 是否可以编写通用的桶排序?

actionscript-3 - 错误#2044:未处理的IOErrorEvent :。 text =错误#2032:流错误

algorithm - 排序算法的上下界

actionscript-3 - 将 Sprite 绘制到 bitmapData 上而不进行填充

actionscript-3 - Apache 中 Flex 的 future

arrays - 最小递增/递减操作,使所有长度为 k 的子数组之和相等

algorithm - 二维空间中点的秩发现算法