计算所有比特路径

时间:2012-02-16 18:01:41

标签: algorithm traveling-salesman

我正在尝试计算给定点集的所有比特路径。

给出N分。

我的猜测是有O(n!)个可能的路径。

推理

您可以从起始位置选择n分。从那里你有n-1分,然后是n-2分......这似乎等于n!。

这种推理是否正确?

1 个答案:

答案 0 :(得分:1)

您可以通过良好的旧动态编程来解决它。

让Count(顶部,底部)为未完成游览的数量,使得top是最右边的顶行点,bottom是最右边的点,而top的左边所有点都已经在底部。

现在,Count(i,j)= Count(k,j)其中k = {i-1} U {l:l

这是O(n ^ 3)的复杂性。

如果你想枚举所有的比特小径,那么Count也跟踪所有的路径。在更新步骤中适当地追加路径。这需要大量的内存。如果你不想使用大量的内存使用递归(同样的想法。排序点。在每个递归点或者把新点放在顶部叉子或底部叉子并检查是否有任何交叉点)