使用Neo4j解决TSP问题

时间:2014-09-29 12:52:36

标签: neo4j

是否可以使用Neo4j解决旅行商问题或Multi-TSP?

我必须找到覆盖所有节点的最佳路径。我已经尝试找到所有可能的路径,然后找到最小距离。随着节点数量的增加,执行时间呈指数增长。

1 个答案:

答案 0 :(得分:1)

旅行商问题是quintessential example of an NP-hard problem。因此执行时间不会指数增加,因为如果确实如此,它将是多项式的。它实际上可能比这更糟糕。 :)

默认情况下,这些算法不在neo4j中。你能用java和cypher来做吗?是的,当然。你应该这样做吗?我看到的实用建议是,一旦你到达大约100个城市,这样做开始变得不切实际。拥有最佳算法的研究系统正在为30,000 - 50,000个城市解决TSP问题。就个人而言,我不建议现在在研究系统的两个数量级内尝试它,除非你有很多硬件和计算可以投入(例如,通过租用的EC2计算)。

就算法而言,Held-Karp algorithm为O(n ^ 2 * 2 ^ n)。哎哟。 Wikipedia has other suggestions as well

所以,我认为从理论计算机科学的角度来看,是的,这是可行的,你必须自己编写,算法非常复杂(从某种意义上说,执行和快速增长需要很长时间)。从实际工程的角度来看,它对于少于100个城市来说是完全可行的,并且在n> = 10,000左右的情况下尝试它会非常困难和昂贵。

另见this related stack overflow question