【算法笔记】双调欧几里得旅行商问题

来源:互联网 发布:手机mac地址怎么查看 编辑:程序博客网 时间:2024/04/27 22:17

reference:
1)《算法导论》15-3
2)http://blog.sina.com.cn/s/blog_51cea4040100gkcq.html

将所有点按x坐标从小到大排序后(假设不存在重复)。从左至右标记为0, 1, 2…n-1
那么这问题的关键一个性质是,对于一点i(i > 0)和任意包含它的双调路径,i-1一定是i的前继或者后继。
如果我们假设一个环游的顺序,比如逆时针
f[i][j](i>j)表示从i到0,再从0到j
1)如果i-1是在(i, 0)上,f[i1][j]已经求出来了,再加上(i, i-1)就行了
那么f[i][j]=f[i1][j]+dist[i1][i]
2)如果i-1在(0, j)上,则j=i-1,否则不满足性质。
所以f[i][i1]=min(f[i1][k]+dist[k][i]),0<=k<i1(求最短的情况)
这意味着i向左走遇到的第一个点是k,然后走(k, 0),(0, i-1),这段路径就是f[i1][k]

例题:
poj 2677

0 0
原创粉丝点击