好的,这更像是一个后续问题:如何计算旅行商双调旅行的最佳路径?
首先,对于旅行商问题的双调旅行,我有以下递归关系:
(a) When i = 1 and j = 2, l(i; j) = dist(pi; pj )
(b) When i < j - 1; l(i; j) = l(i; j - 1) + dist(pj-1; pj)
(c) When i = j - 1 and j > 2, min 1<=k<i (l(k; i) + dist(pk; pj ))
l
是以前结果的表格。我的问题是 C 部分:假设l(k,i)
和dist(pk,pj)
已定义,我将如何在 Java 中实现 C 部分?k
我最初的想法是我从1
to迭代i
并存储 的最小结果(l(k,i) + dist(pk,pj))
,但我认为这是不对的。
例如:
for (int k = 1; k < i; ++k) {
tmp = l(k,i) + dist(pk,pj);
if (tmp < min) {
min = tmp;
}
}
// min is the result
这似乎是一个愚蠢的问题(可能是,我严重缺乏睡眠),但我希望有人能帮忙。