根据wiki,它将需要(N-1)!计算 N 个城市的旅行。我找到了一种更好的方法,但我无法通过数学计算我改进了多少。我可以告诉你,在我的家用电脑上,我能够在不到 1 小时的时间内解决 20 个城市的地图。20!= 2.43290200e+18。这是我所做的:
当使用 brout 算法搜索 N 个城市的路线(让它们命名:City(1)、City(2)、City(3)...City(N))时,您将首先执行此测试:City( 1), City(2), City(3), City(4)... City(N) 一段时间后,这个:City(1), City(3), City(2), City(4 )... 城市 (N)。我声称第二次计算是不必要的。如果我只计算一次 City(4) ... City(N) 的最短路线,我可以将其用于第二次计算并确定哪条路线更好。
使用这个技巧,我可以通过以下方式减少我为 K 城市所做的计算次数: (N - k) 这是我可以选择的第一个城市的选项数量,乘以 (N - K - 1) !这是我必须选择其余城市的选项数量,减去第一次,我需要执行完整计算。所以它将是(N - K)!。您需要对从 k = 3 到 k = N - 2 的所有 K 求和。
这是我所到之处,(不远)......我希望你能帮我计算一下。