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