在matlab中的加权图中找到K-farthest邻居

时间:2012-11-07 15:02:23

标签: matlab graph neighbours

我想在给定的无向加权图中找到K-最远的邻居(该图是作为稀疏权重矩阵给出的,但我可以使用建议的表示)。 只是为了确保问题得到明确定义:我想找到彼此距离最大的k个节点。 接近最佳设置的解决方案也可以 - 我只是需要它来找到网格中的一些最远点:)

1 个答案:

答案 0 :(得分:1)

假设您正在寻找一个不错的解决方案,我会推荐一个简单的解决方案,类似于旅行商问题的“最远插入”起始位置:

  • 向空集添加1个点,最好是在角落或边缘添加1个点(当然,您可以尝试所有这些)
  • 将最远点添加到集合中(从集合中的当前点增加最多距离)
  • 继续重复上一步,直到集合中有k个点

它不是最佳的,但可能不是很糟糕。

如果您想对此进行改进,可以使用启发式方法来改进结果,例如:

  • 考虑点1到j的集合,j
  • 尝试所有可能的点来替换这些j点
  • 记录最佳解决方案
  • 考虑点2到j + 1的集合

诸如此类

此外,如果k不是太大,比如小于5,并且总点数不是太大,比如说小于100,那么计算所有可能的组合可能会更容易。这假设可以有效地进行标准计算。

编辑:

一旦你知道你想要实现这个,常规的方法是找到类似的东西并编辑一下以满足你的需要。如果您在此页面上向下滚动,您应该找到最远插入的示例。编辑它以遵循“远”的度量应该是可管理的。

http://snipplr.com/view/4064/shortest-path-heuristics-nearest-neighborhood-2-opt-farthest-and-arbitrary-insertion-for-travelling-salesman-problem/