对于作业,我必须实现一些搜索算法以解决旅行商问题,我理解问题并且我理解算法如何工作,我根本不知道如何实现它(我的Java不是很棒)但这应该是最简单的部分,但遗憾的是我对Java的了解还不足以应用我对算法的了解。
因此,我想知道是否有人可以提供一些关于如何开始使用这个或甚至一些好的链接来阅读的提示或提示,如果有一个更容易的开始,我也必须实现其他一些算法我很乐意和那个一起去!我已经看过这里,但似乎找不到任何相关的东西:/
非常感谢任何帮助!谢谢
答案 0 :(得分:0)
我不是专家,但我不认为A *可以用来解决旅行商问题。我相信你知道TSP是NP难的,所以确切的解决方案非常复杂,并不适用于所有情况。我知道(并且已经使用过)近似解决方案的最简单的方法是什么称为“模拟退火”,这是一种随机方法(即随机!)。
这个想法非常简单。您将点组织成一个列表,该列表表示所有节点之间的路径(这称为“游览”)。计算游览的时间并保存长度。然后,您选择一个随机子列表,然后将其反转。计算新长度。如果新列表较短,则保留它,否则丢弃它。只需重复这些步骤100 / 1,000 / 10,000,000次(取决于点数),您就可以得到合理的近似值。
例如,假设有5个点(伪代码)...
List tour = [e, b, a, d, c]
int len = tourLength(tour)
List newTour = [e, b] + [d, a] + [c] // a and d have been reversed
int newLen = tourLength(newTour)
if(newLen < len) {
tour = newTour
}
对于10分,100次迭代应该会产生良好的结果。