我正在实现一种算法,该算法可以在有向图中找到最佳哈密顿路径。我已经实现了一个算法,似乎工作得很好,但我不完全确定在某些情况下是否存在细微的错误或其他问题。因此,我需要一些解决方案已知的不同网络,以检查我的实施是否也应该解决问题。测试Hamiltonian路径查找器实现
由于维基百科意味着哈密顿路径只是无向图的适当项,因此假设“哈密顿路径”是指在给定网络上定向或以其他方式访问每个节点一次且恰好一次的路径。为了简单起见,我们可以假定每个连接(或“边”)具有正整数值(或“长度”)。我们还可以假设没有节点连接到自身,并且在任何两个节点之间的每个方向上不能有多于一个边。
我碰巧对总长度最长的路径感兴趣,所以“最优”意味着最长,尽管如果我想要最短的总长度(如传统TSP)那么它可能没有什么区别。我也碰巧使用了贪婪算法。
我在哪里或如何获得TSP已解决的定向网络?如果实际解决方案和贪婪(或其他启发式)解决方案可用,那将会更好。网络应该足够大以提供信息丰富的测试,但对于我来说手动检查解决方案(如果解决方案最初是未知的)足够小。它们应该拓扑多样,足以涵盖“简单”和“有问题”的网络。
对于其他人寻找相同的;我有最好的是以下网络:
A B C D E
A 0 1 2 0 1
B 1 0 0 0 1
C 0 3 0 1 2
D 4 0 0 0 0
E 1 0 0 2 0
这是一个邻接列表,行是边缘起源和列是目的地。数字是每条边的长度,0表示“无边”。例如,图4示出了边缘的从 d 长度 A是4,并且没有来自甲到d(长度0)连接。
该网络中的最大长度路径是E-> D-> A-> C-> B。它的总长度是2 + 3 + 3 + 3 = 11。我相信贪婪算法能够在这种情况下找到最好的解决方案,并且它可能很明显是最好的解决方案。
我自己偶然发现了答案后不久:TSPLIB就是为这个特定目的而存在的。 – Superbest 2012-01-12 15:52:45