- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法基础-8
Chapter 8 DYNAMIC PROGRAMMING 8.9 凸多边形三角剖分 问题: n+1凸边形 P(0,1,2,3,…,n) 三角剖分,如图-1 剖分边总长度最小的 Chapter 8 DYNAMIC PROGRAMMING 最优子性质: 设 T(0,n)是n+1凸边形的最优值 T(0,n)=min{T(0,k)+T(k,n) +Δ(0,k,n)} 证明: (1)= :T(0,n)是最优的,则T(0,k)和T(k,n)是最优的。 反正,设T(0,k)或T(k,n)不是最优的,则用最优的替换其后T(0,n)会更小,矛盾; 0 n k Chapter 8 DYNAMIC PROGRAMMING (2)= :若对k=2,3,4,…,n-1都有 T(0,k)和T(k,n)是最优的,显然T(0.n)是最优的; 递归定义最优值: 设 子问题 A(i,j)是P(i,i+1,…,j),其最优值记为t[i][j]; t[i][j]=0; i=j-1 t[i][j]=min{t[i][k]+t[k][j]+w(ikj)} ij-1 自底向上计算子解最优值: Chapter 8 DYNAMIC PROGRAMMING 自底向上计算子解最优值: 例: t[1][5]=min t[1][2]+t[2][5]+w(025) t[1][3]+t[3][5]+w(035) t[1][4]+t[4][5]+w(045) 填表顺序: for (i==n-1; i=1, i--) for (j==i+1; jn) calculate(t[i][j]) 0 0 0 o 0 o 0 o 0 o o o T 0 1 2 3 4 5 6 j i 6 5 4 3 2 1 Chapter 8 DYNAMIC PROGRAMMING 自底向上计算子解最优值: PROCEDURE calculate(i,j) t[i][j]=s[i][j]=Max for (k==i+1; kj; k++) v=t[i][k]+t[k][j]+ w(ikj); if (vt[i][j]) { t[i][j]=v; s[i][j]=k } 0 0 0 o 0 o 0 o 0 o o o T 0 1 2 3 4 5 6 j i 6 5 4 3 2 1 Chapter 8 DYNAMIC PROGRAMMING 构造最优解: S[0][n]=k S[0][k] S[k][n] 可递归求得。 0 n k Chapter 8 DYNAMIC PROGRAMMING 作业: A和B是两个字符串,用最少的字符操作将A转换为B,操作包括:删除1个字符、插入1个字符、替换1个字符。 一个n阶正整数矩阵,给定一个整数k,求出最长的一条线(子行,子列,子斜线),其和小于等于k。 选做一题; Chapter 8 DYNAMIC PROGRAMMING 当ij时,m[i][j]=min{m[i][k]+m[k+1][j]+pi-1*pk*pj} (i=kj)。 除此之外,若将对应于m[i][j]的断开位置记为s[i][j],在计算出最优值m[i][j]后,可以递归地由s[i][j]构造出相应的最优解 Chapter 8 DYNAMIC PROGRAMMING (3)计算最优值。 如果直接套用m[i][j]的计算公式,进行简单的递归计算需要耗费指数计算时间。然而,实际上不同的子问题的个数只是n的平方项级(对于1=i=j=n不同的有序对(i,j)对应于不同的子问题)。用动态规划解决此问题,可依据其递归式以自底向上的方式进行计算。在计算过程中,保存已解决的子问题答案。每个子问题只计算一次,而在后面需要时只要简单查一下,从而避免大量的重复计算,最终得到多项式时间的算法。 Chapter 8 DYNAMIC PROGRAMMING 态规划算法: void matrixChain (int * p, int n, int * * m, int * * s) {? for ( int i=1;i=n;i++)??????? m[i][i]=0; ??? for ( int r=2;r=n;r++) //链长度控制
您可能关注的文档
最近下载
- 高级日语(三)第08課 携帯上司 8課内容理解1.ppt VIP
- 全麻术后导尿管相关膀胱刺激征的管理.pptx VIP
- 精选洗车场租赁协议2024年通用.docx VIP
- 国家中小学智慧教育平台的应用培训(OCR).pdf VIP
- 鲁宾逊漂流记:英汉对照版-英DanielDefoe.pdf VIP
- 伤口造口护理.pptx VIP
- UFDEV_PHASE_1_5_5_项目客户化开发推进计划.xls VIP
- 2024-2025学年高一数学必修一《第一章 集合与常用逻辑用语》测试卷附答案解析.pdf VIP
- 某电厂引风机拆除安装实施方案.doc VIP
- 口语交际--有趣的动物及口语交际《有趣的动物》教案.doc VIP
文档评论(0)