动态规划
编号 |
题目 |
1最短行驶路线 |
问题: 给定一个的矩形网络,设其左上角为起点S。一辆汽车从起点S出发驶向右下角终点T。网格边上的数字表示距离。在若干个网格点处设置了障碍,表示该网格点不可到达。试设计一个算法,求出汽车从起点S出发到达终点T的一条行驶路程最短的路线。 Floyd: 划分阶段: 阶段1:求所有点经过结点1到其他结点的最短距离 … 阶段n:求所有点经过节点n到其他结点的最短距离 状态迁移方程:d[i][j] = min{d[i][j] , d[i][k] + d[k][j]} 算法:
时间复杂度:O(n^3) 空间复杂度:O(n^2)
|
2最优旅行路线 |
问题: 给定一张航空图,图中顶点代表城市,边代表2城市间的直通航线。现要求找出一条满足下述限制条件的且途经城市最多的旅行线。 从最西端城市出发,单向从西向东途经若干城市到达最东端城市,然后再单向从东向西飞回起点(可途经若干城市); 除起点城市外,任何城市只能访问1次。 分析:从西向东依次编号1,2,…,n。保证正确方向:往东走,选择相邻编号大于自己的,往西走,选择相邻编号小于自己的。 子问题表示:P(Vi,NV_SET(j)),NV_SET为可访问的城市集合 最优子结构: 设最优解释P={V1,V2,…,Vm},选择V1作为下一个访问的城市后,原问题变为从P’={V2,V3,…,Vm}中进行访问,子问题的解最多访问的城市个数是m-1,而P’满足。 算法:
|
3 N色方柱 |
该算法采用回溯来做,不属于dp,这里不做讨论 |
4 租用游艇 |
问题: 长江游艇俱乐部在长江上设置了n 个游艇出租站1,2,...,n。游客可以在这些游艇出租站租用游艇,并在下游任意一个游艇出租站归还游艇。游艇出租站i 到游艇出租站j 之间的租金为r(i,j),1<=i<j<=n。试设计一个算法,计算出从游艇出 租站1到游艇出租站n所需的最少租金。 阶段划分:按照游艇出租站的个数划分。 阶段1:2个 阶段2:3个 … 阶段n-1:n个 状态:rent[i][j]表示i到j的最小花费 状态转移方程:rent[i][j] &# |