关于Bitonic旅行路线问题

欧几里德货郎担问题是对平面给定的n个点确定一条连结各点的、闭合的游历路线问题。Bitonic旅行路线问题是欧几里德货郎担问题的简化,这种旅行路线先从最左边开始,严格地由左至右到最右边的点,然后再严格地由右至左到出发点,求路程最短的路径长度。

注意到这个问题对线路上点的有一个单调性要求(从左到右或从右到左),因此首先对这些点从左到右进行sorting,编号为1…n。根据动态规划的常见思路,定义F(i)为从第1点到第i点的最短bitonic TSP,考虑F(i+1)和F(i)的关系。当加入第i+1点时,必然存在这样一条线路从1点经过i点最后到达i+1 点:1…p,i,q,…i+1。根据旅行线路点的单调性质,i+1 >=q > i,因此q = i + 1,i+1点和i点必然有连线,F(i+1) = Dist(i+1, i) + G(i+1, i),这里引入G(i, j)表示从第i点到第一点然后返回第j点的最短bitonic线路长度。

现在关注新引入函数G(i, j)的性质,当j + 1 < i的时候,对于点j+1, j+2, … i,这些点不可能出现在从1点到j点的路线上,否则就存在这样一条路1…k…j (k > j),和botonic单调性质相悖。因此这些点都存在于从1点到i点的路线上,而根据点相连的单调性质,这些点肯定只能以这样的顺序相连j+1, j+2, … i。因此,G(i, j) = G(j – 1, j) + Dist(j-1, j+1) + Dist(j+1, j+2) + … + Dist(i-1, i)。定义函数J(i) = G(i – 1, i),则G(i, j) = J(i) + sum(Dist(from j-1, j+1, … to i))

再来关注J(i)的性质,J(i)的意义是从点i出发由右至左直到1点后再由左至右到达点i-1的最短距离。这里和i相连接的点存在多种可能,candidate set包括1, 2, …, i-2。因此J(i) = min(G(i-1, k) + Dist(k, i)), 1<=k<=i-2,这里将G用J替换,我们得到
J(i) = min(G(k-1, k) + Dist(from k + 1 to i) + Dist(k, i)) = min(J(k) + Dist(from k + 1 to i) + Dist(k, i)), 1<=k<=i-2

于是我们得到函数J的递推关系
For i > 2, J(i) = min(J(k) + Dist(from k + 1 to i) + Dist(k, i)), 1<=k<=i-2
For i = 2, J(2) = G(2, 1) = Dist(2, 1)
For i = 1, J(1) = 0
最终,问题的解F(i) = J(i) + Dist(i, i-1),时间复杂度为O(n^2)

    原文作者:旅游交通路线问题
    原文地址: https://blog.csdn.net/krrrr/article/details/5898345
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞