1
我试图解决的问题涉及大约5000个GPS点的数据集,以及在该数据集内找到导致总距离最大的5个点的任务。查找N点数据集中跨越5个点的最大总距离
(注意,开始和结束不一定在同一地点)
天真的解决办法是遍历所有的点数据集中,直到最大总距离为五个嵌套循环发现,但这是不切实际鉴于距离计算是有点慢:
for (i = 0; i < points.length; i++) {
pointA = points[i];
for (j = i; j < points.length; j++) {
pointB = points[j];
distanceAB = distance(pointA, pointB);
for (k = j; k < points.length; k++) {
pointC = points[k];
distanceBC = distance(pointB, pointC);
// ...
score = distanceAB + distanceBC + distanceCD + distanceDE;
if (score > winner.score) {
// save new winner
}
}
}
}
是否有这个问题,需要做的工作少的解决方案?
你需要找到一个最长的5个顶点的简单路径吗? – DAle
如果距离计算很慢,您可以缓存这些结果。它应该“仅”需要大约1250万个值。 –
@DAle这听起来大致就像我想要做的,是的 – TBieniek