双调巡游

本文探讨了双调巡游问题,即寻找平面上n个点的最短巡游路线,要求路线从最左边点开始,向右前进,到达最右边点后再反向返回起点。J.L.Bentley建议限制路线为双调。提出一个O(n^2)时间复杂度的最优算法,首先对点按x坐标排序,然后通过维护PATH(i,j)表示从点i到点j的最短路径。算法详细步骤包括特殊情况处理和路径更新。" 77097818,6928120,3D空间旋转:矩阵变换与正交矩阵解析,"['三维几何', '线性代数', '计算机图形学', '矩阵运算', '向量数学']
摘要由CSDN通过智能技术生成

问题

给定平面上n个点作为输入,求出连接所有n个点的最短巡游路线。

J.L.Bentley建议将问题简化,限制巡游路线为双调巡游,即从最左边的点开始,严格向右前进,直至最右边的点,然后调头严格向右前进,直至回到起始点。

设计一个O(n^2)时间的最优双调巡游路线算法,可以认为任何两点的x坐标均不同,且所有实数运算都花费单位时间(提示:从左至右扫描,对巡游路线的两个部分分别维护可能的最优解)。

OJLD

  1. 将n个点按x坐标从小到大排序,时间复杂度为O(nlogn);
  2. 用PATH(i,j)表示从点i严格向左到点1,再严格向右到点j的最短路径,路径包括从点1到点max(i,j)的所有点,因为PATH(i,j)==PATH(j,i),所以只考虑i>=j时的情况;dir(i,j)表示从点i到点j的直接路径;
  3. 当i>j+1时,点i-1一定是小于i的最大节点,i-1>j,所以PATH(i,j)=PATH(i-1,j)+dir(i,i-1); i>j+1;
  4. 当i==j+1时,此时点i可能与小于i的所有节点相连,所以PATH(i,j)=min(PATH(k,j)+dir(i,k); k∈{x|x < i};<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值