Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ TSP问题的聚类算法_C++_Algorithm_Visual C++ - Fatal编程技术网

C++ TSP问题的聚类算法

C++ TSP问题的聚类算法,c++,algorithm,visual-c++,C++,Algorithm,Visual C++,我正试图解决一个有大约10000个城市的非常大的TSP问题。为了并行化我的任务,我想将这些城市划分为集群,并解决每个集群的TSP问题 我希望有一种方法可以将我的城市划分为集群(基于城市密度/集群中每个城市之间的距离) 有人知道这样做的有效顺序吗?有一种简单的近似算法,它保证解的最差程度是最优解的2倍(如果我没记错的话,至少是欧几里德度量)。 算法是:得到一个最小生成树。使用树的边缘进行移动 我会研究更好的近似算法,而不是自己发明 要分离到集群,如果你想这样做,有一些算法和其他算法(在同一篇文章中

我正试图解决一个有大约10000个城市的非常大的TSP问题。为了并行化我的任务,我想将这些城市划分为集群,并解决每个集群的TSP问题

我希望有一种方法可以将我的城市划分为集群(基于城市密度/集群中每个城市之间的距离)


有人知道这样做的有效顺序吗?

有一种简单的近似算法,它保证解的最差程度是最优解的2倍(如果我没记错的话,至少是欧几里德度量)。 算法是:得到一个最小生成树。使用树的边缘进行移动

我会研究更好的近似算法,而不是自己发明


要分离到集群,如果你想这样做,有一些算法和其他算法(在同一篇文章中)

有一个简单的近似算法,它保证解决方案最多比最佳解决方案差2倍(至少在欧几里德度量中,如果我记得正确的话)。 算法是:得到一个最小生成树。使用树的边缘进行移动

我会研究更好的近似算法,而不是自己发明


要分离到簇,如果你想这样做,有一些和其他算法(在同一篇文章中)

有几种基于密度的聚类算法,它们正是你要寻找的工具,用于将点分离到簇中

DBSCAN是派生其他数据库的主要数据库。光学是DBSCAN的一个扩展,它本身不产生群集,但绘制一个点图,您可以通过检查来提取群集(算法的另一部分也可以自动提取群集)。DBSCAN更简单,光学更灵活。使用适当的索引结构(如R-tree),这两种方法都会变得更好。工具包中有一些实现,如ELKI、scikit和WEKA


(而且,正如j_random_hacker所说,这样做并不能保证TSP的全局最优)

有几种基于密度的聚类算法,它们正是您要寻找的工具,用于将点分割成簇

DBSCAN是派生其他数据库的主要数据库。光学是DBSCAN的一个扩展,它本身不产生群集,但绘制一个点图,您可以通过检查来提取群集(算法的另一部分也可以自动提取群集)。DBSCAN更简单,光学更灵活。使用适当的索引结构(如R-tree),这两种方法都会变得更好。工具包中有一些实现,如ELKI、scikit和WEKA


(正如j_random_hacker所说,这样做并不能保证TSP的全局最优)

这是一个非常忙碌的推销员。祝你好运。你是否意识到,仅使用每个集群的TSP解决方案无法以最佳方式解决TSP问题?所有顶点上的最优TSP可能会访问簇1中的一些顶点,然后访问簇2中的一些顶点,然后再次访问簇1中的更多顶点,依此类推。即使对于每个簇中的每一对点,找到连接该对点并访问簇中所有顶点的最短路径,通过将这些路径缝合在一起可以构建的最佳TSP也可能远远不是最优的。这是一个非常忙碌的推销员。祝你好运。你是否意识到,仅使用每个集群的TSP解决方案无法以最佳方式解决TSP问题?所有顶点上的最优TSP可能会访问簇1中的一些顶点,然后访问簇2中的一些顶点,然后再次访问簇1中的更多顶点,依此类推。即使对于每个簇中的每一对点,找到连接该对点并访问簇中所有顶点的最短路径,通过将这些路径缝合在一起可以构建的最佳TSP也可能远远不是最优的。