POJ2677 Tour(DP:双调巡游)

poj 2677 dp双调巡游 题意:双调巡游(bitonic tours)旅行商问题(算法导论中文第三版15-3题) 思路:dp。对巡游线路的两个部分分别维护可能的最优解。 dp[i][j]代表走的快的人到达j,走的慢的人到达i时的最小距离。怎么得到dp[i][j]呢,这要分情况。如果i #include #include #include #include using namespace std; #def 阅读详情

题意:

算法导论上的一道习题,给出一系列点的的坐标,现在从最左端出发,到达最右端的点,再返回原点,要求遍历所有点并且路程最短。

要点:

出发又返回可以看成两个人同时从左往右走,其中一个人走的快一个人走的慢。重点是因为一个点只能走一次,所以可以想出最优子结构,假设现在用dp[i][j]表示两个人分别走到点i和j的最短路径,下一步是走到i+1这个点,那么可能是位置为i的人走到,又或者是位置为j的人走到。可以写出状态转移方程:

dp[i + 1][i] = min(dp[i + 1][i], dp[i][j] + dis[i + 1][j]);i+1分配给位置为j的人

dp[i + 1][j] = min(dp[i + 1][j], dp[i][j] + dis[i][i + 1]);i+1分配给位置为i的人

我们最后要求的dp[n][n]一定是从dp[n][n-1]而来的,所以最后直接dp[n][n-1]+dis[n-1][n]就是答案。下面两个图可以方便理解。我写的时候用memset直接数组赋值,非常容易出错。



15903855
双调欧几里得旅行商问题”详解 双调欧几里得旅行商问题”详解 (“双调欧几里得旅行商问题”是《算法导论》(第三版)第15章“动态规划”下第3道思考题)   问题描述:给定平面上n个点,求出连接所有n个点的最短巡游路线,巡游路线限制为双调巡游,即从最左边的点开始,严格向右前进,直至最右边的点,然后头严格向左前进,直至回到起始点。(假定任何两个点的x坐标均不相同,点1,2,…,n按x坐标增序排列。)设计一个O(n^2) 阅读详情

相关推荐

Protobuf 枚举设计规范:3 个最佳实践与 2 个版本兼容性案例

本文详细介绍了Protobuf枚举设计的3个最佳实践与2个版本兼容性案例,包括必须声明零值作为默认项、枚举项的命名与值分配规范以及作用域与复用策略。通过实际案例展示了如何安全添加新枚举值和弃用与删除枚举值,确保系统扩展性和兼容性。

HJ921004的博客 429

双调欧几里得旅行商

算法导论15-1思考题:双调欧几里得旅行商问题,时间复杂度O(N^2)

100道动态规划——1 UVA 1347 Tour 算法导论书后习题 双调巡游

这道题目实际上是算法导论动态规划那一章的一个书后习题,那个习题是说TSP是一个NP难问题,但是加上一个限制的话就可以利用动态规划把这个问题在多项式内解出来,也就是这道题目了。                  限制了旅行的方式,让这个人向左一直走到底,然后一直向右走,这就不是随便的走了。                 这是紫书上的一个练习题,在当初没有看紫书的时候,直接对算法导论想了许久没有

Sion 1278

动态规划100例

动态规划100例,绝对找不到比这还全的了!

【Algorithm】双调欧几里得旅行商问题

在欧几里得旅行商问题中,给定平面上的n个点作为输入,希望求出所有n个点的最短巡游路线。下图中给出了一个7点TSP问题的解。TSP问题属于NP-hard问题,同时也是NPC问题,我们在[P-NP-NPC关系简述]中介绍过。所以人们大多认为TSP没有多项式时间的算法,虽然这一点并没有被证明。倘若是证明了TSP确实没有多项式时间解法,那么P与NP的关系问题也就迎刃而解了。

Esperanto.的博客 2358

双调欧几里得旅行商问题的最优算法设计与实现

在解决双调欧几里得旅行商问题(Double Bitonic TSP)时,我们的目标是找到一条从最左边的点开始,严格向右前进至最右边的点,然后严格向左返回起始点的最短路径。这个问题的一个关键特点是,路径的第一部分是递增的(向右),第二部分是递减的(向左)。这种特殊的路径要求使得问题可以通过一种相对简单的动态规划方法来解决,其时间复杂度为O()

笔者从事电信媒体开发多年,愿意将多年的开发经验分享给同行 1469

UVa 1347 Tour

题目:Tour   题意: 来自luogu—— John Doe想用最小的路程游览完所有目的地。每个目的地都用坐标xi,yi表示。任何两目的地的xi都不相同。两目的地之间的路程是两点之间的直线距离。John是这样走的:他从最左边的点开始,然后只能向右走,走到最右边的点,然后他只能向左走,回到最开始的点。每个点都要走到,并且除了出发点以外每个点只能经过一次。 请写出一个程序求符合要求的最小...

iwi 211

ZOJ2581 POJ2677 Tour双调DP

传说中的双调DP问题。 要走完全部的点,且要来回的话,我们可以简化为有两个小人,都是从最右边出发的。 我们假设小人中有快的小人和慢的小人,如果慢的小人在一步中超过快的小人,则只是交换了角色。 dp[i][j]指的就是快的人走到i,慢的人走到j的最短距离。 假如现在快的小人走到i-1,慢的小人走到j,则此时就只有两种情况 1. 快的小人走到i,则有dp[i][j]=min(dp[i][j]

Neo Fung的专栏 2005

双调欧几里得旅行商问题【sicily 1163 && poj 2677.Tour

题目链接:http://soj.me/1163 问题描述:由于旅行商问题是NP问题,所有J.L.Bentley建议只考虑双调旅程来简化问题。这种旅程即为从最左点开始,严格地从左到右直至最右点,然后严格地从右到左直至出发点。 分析:由于旅行商问题都是要求访问所有的点一遍而不重复,这里又对路径有个双调的约束,所以其实可以把问题看成是两个人同时从第一个点出发,中间分别经过不同的点(路径没有交集,但是

2030

双调巡游

问题 给定平面上n个点作为输入,求出连接所有n个点的最短巡游路线。 J.L.Bentley建议将问题简化,限制巡游路线为双调巡游,即从最左边的点开始,严格向右前进,直至最右边的点,然后头严格向右前进,直至回到起始点。 设计一个O(n^2)时间的最优双调巡游路线算法,可以认为任何两点的x坐标均不同,且所有实数运算都花费单位时间(提示:从左至右扫描,对巡游路线的两个部分分别维护可能的最优解...

weixin_33958585的博客 784

双调旅行商问题

欧氏旅行售货员问题是对给定的平面上 n 个点确定一条连接这 n 个点的长度最短的哈密顿回路。由于欧氏距离满足三角不等式,所以欧氏旅行售货员问题是一个特殊的具有三角不等式性质的旅行售货员问题。它仍是一个 NP 完全问题。最短双调 TSP 回路是欧氏旅行售货员问题的特殊情况。平面上 n 个点的双调 TSP 回路是从最左点开始,严格地由左至右直到最右点,然后严格地由右至左直至最左点,且连接每一个点恰好一次的一条闭合回路。

[POJ 2677] Tour 双调旅行商

http://poj.org/problem?id=2677 题意:给你 n 个二维坐标上的点,你需要经过所有的点然后走回原地,求最短路径。 思路:我们先给所有的点按照 x 坐标升序排列, 因为要走成环我们可以看成两个人同时从第一个点开始走, 定义 dp[i][k] 表示第一个人走到第 i 个点第二个人走到第 k 个点的最短距离(走在前面的人是 i )。 对于任意一个点i来说,有两种连接方法...

AcmHonor的专栏 1981

【算法学习】双调欧几里得旅行商问题(动态规划)

双调欧几里得旅行商问题是一个经典动态规划问题。《算法导论(第二版)》思考题15-1和北京大学OJ2677都出现了这个题目。 旅行商问题描述:平面上n个点,确定一条连接各点的最短闭合旅程。这个解的一般形式为NP的(在多项式时间内可以求出) J.L. Bentley 建议通过只考虑双调旅程(bitonictour)来简化问题,这种旅程即为从最左点开始,严格地从左到右直至最右点,然后严格地从右到左直

程序狗的成长之路 1786

双调旅程(bitonic tour)问题

J.L. Bentley 建议通过只考虑双调旅程(bitonic tour)来简化TSP问题。,这种旅程即为从最左点开始,严格地从左到右直至最右点,然后严格地从右到左直至出发点。       线性DP。 将一个人从最左端走到最右端,然后从最右端走到最左端等价成两个人同时从最左端不重复的走过中间的点并且到最右端。 我们不妨设这两个人为A和B,且总是假定走在前

老李2009 1735

算法导论第十五章15-3双调欧几里得旅行商问题

虽然知道这道题要用动态规划,但是自己还是参考了别人的想法才做出来。知道一个算法和深刻理解并能熟练运用一个算法果然不是同一件事。思路:P0,P1,.....Pn-1为按x坐标从小到大排列的n个点(从下标0开始),get_dis(Pi,Pj)表示这两个点之间的距离。规定i分为以下三种情况:1.i = ji到j的最优解,Pj可能直接与P0~Pi-1中任何一个点相连,所以:dist[i][j] = min

copbint 1121

手机端子裁切落料弯折CCD检测入包自动包装机.rar

手机端子裁切落料弯折CCD检测入包自动包装机.rar

上一篇: POJ1971 Parallelogram Counting(hash)
下一篇: POJ2184 Cow Exhibition(DP:变种01背包)
SeasonJoe
博客等级 码龄11年 34粉丝 347原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值