TSP 的聚类分析算法
Clustering algorithm for a TSP
我正在尝试解决一个拥有大约 10,000 个城市的非常大的 TSP。为了并行完成我的任务,我想将这些城市划分为集群,并解决每个集群的 TSP。
我想要一种方法,可以将我的城市分成集群(基于城市密度/该集群中每个城市之间的距离)。
有谁知道这样做的有效顺序?
有一个简单的近似算法,它承诺解决方案最多是最佳解决方案的 2 倍(如果我没记错的话,至少在欧几里得度量中)。算法是:获取最小生成树。使用树边进行旅行。
我会研究更好的近似算法,而不是自己发明一个。
要分离到集群,如果你想这样做,有 K 均值和其他算法(在同一篇文章中)
有几种基于密度的聚类算法正是您正在寻找的工具,无论如何都可以将点分隔成聚类。
DBSCAN是派生其他的主要版本。 OPTICS 是 DBSCAN 的扩展,它本身不会生成聚类,但会绘制一个点图,您可以检查这些点以提取聚类(算法的另一部分也可以自动提取聚类。 DBSCAN更简单,光学更灵活。 使用适当的索引结构(如 R 树)会更好地满足这两种情况。 在 ELKI、scikit 和 WEKA 等工具包中都有实现。
(而且,正如j_random_hacker所说,这样做并不能保证TSP的全局最优性)
相关文章:
- K 均值聚类 R 树提升
- C++中的聚类示例
- 两个数组之间的数据聚类和比较
- 两种算法的Big-O分析
- TSP 的聚类分析算法
- 如何使用opencv c++的聚类来根据面积和高度对连接的组件进行分类
- 用于聚集层次聚类的OpenCV机器学习库
- K 表示视频所有帧的直方图聚类
- OpenCV 聚类袋的单词 k 表示
- 用自适应MeanShift对特征空间-SURF描述符进行聚类
- 在std::list中合并(将两个项目融合在一起,用融合替换)项目的算法(即破坏性聚类)
- 使用OpenCV的Kmeans聚类中的mahalanobis距离
- (C++)K-Means聚类问题
- 使用Kmean找到具有最高数量元素的聚类
- C++使用算法过滤类向量
- 算法运行时间分析
- 利用反演距离进行K-means聚类
- 从给定的点云数据中提取一组特征和聚类数据
- 如何为聚类分析创建n维测试数据
- 具有每个聚类大小的上限要求的聚类算法