算法导论15

您所在的位置:网站首页 audeze欧几里得 算法导论15

算法导论15

2023-06-09 03:20| 来源: 网络整理| 查看: 265

CLRS 15-1 双调欧几里得旅行商问题

欧几里得旅行商问题是对平面上给定的n个点确定一条连接各点的最短闭合旅程的问题。如图(a)给出了一个7个点问题的解。这个问题的一般形式是NP完全的,故其解需要多于多项式的时间。J. L. Bentley建议通过只考虑双调旅程来简化问题,这种旅程即为从最左点开始,严格地从左到右直至最右点,然后严格地从右到左直至出发点。下图(b)显示了同样的7个点的最短双调路线。在这种情况下,多项式的算法是可能的。事实上,存在确定的最优双调路线的O(n2)时间的算法。描述一个确定最优双调路线的O(n2)时间的算法。可以假设任何两点的x坐标都不相同。(提示:从左到右扫描,保持路线两部分的最优概率)。

       a)最短闭合路线,长度大约是24.89。这个路线不是双调的。                                  b)相同点的集合上的最短双调闭合路线。长度大约是25.58

解题思路:

1.题目所求的结果就是最左端点到最右端点的两条线路,对于这两条线路,线路上的点的x坐标是递增的(第i个点一定比i-1个点的x坐标大)

2.从左端点开始,有两条线路出发,用d(i, k)表示两条线路分别到达i点和k点的距离之后,这里指的是最短距离之和,两条线路无相同点(除去起点和终点)。在这里,由于两条线在意义上是等价的,因而我们规定i0                      当j == n,且remain[i, j] >= 0 (其实这里表示的就是最后一行)

                 |------>(remain[i, j])3     非上述两种情况时

定义所有立方之和sum[i],假设sum[j]表示的是1,...,j这j个单词的最优排列(即所求立方和最小),那么在最后一行,假设是i,...,j这些单词,那么sum[j] = sum[i-1] + cube[i, j]。

             |------>0                                                 if j == 0

sum[j] = |

             |------>min(sum[i - 1] + cube[i - 1, j]       if j > 0,其中1



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3