C ++生成适合TSP的随机图

时间:2014-11-10 17:39:24

标签: c++ random graph

我正在测试各种TSP模型/算法。现在我正在使用一个完整的邻接矩阵,填充了1到100之间的随机值,表示完整的有向图。

我正在寻找一种更严格的方法,允许我尝试不同类型的随机图,如鄂尔多斯 - 仁义,小世界网络和无标度网络。

我知道我可能必须切换到新图表的邻接列表。

我的方法是生成随机图,然后确保问题成为有效TSP实例所需的哈密尔顿路径。是否有可能,或者只是尝试解决无法解决的实例(假设所有方法都会在这样的实例上终止)更便宜?

顺便说一下,我正在考虑使用Boost Graph Library,但我对它并不熟悉,也许还有更合适的东西。欢迎提出替代方案的建议,但不应将其视为该问题的主要范围。

我不需要TSP求解器,我需要一些东西来帮助产生可接受的问题。

感谢。

2 个答案:

答案 0 :(得分:0)

您可以尝试单调格雷码,a.k.a希尔伯特曲线。它可以帮助找到哈密顿路径:http://en.m.wikipedia.org/wiki/Gray_code

答案 1 :(得分:0)

  

我正在寻找一种更加严谨的方法,让我尝试一下   不同种类的随机图,

检查Mathematica。它有一个内置的谓词来测试给定的图形是否具有哈密尔顿路径。它还有一个生成随机哈密顿图的谓词。

此外,如果您尚未尝试,TSBLIB包含(硬而简单)实例,您可能会发现它们很有用。