解答:题目中顶点坐标编号从1开始,为了方便编程,将顶点从0开始,顶点的编号变为0到7。定义t[i][j],0=<i<j<n为凸多边形{Vi,Vi,…Vj}的最优三角剖分所对应的权函数值,退化的两点多边形{Vi,Vi+1}的权值为0。要计算凸n边形的最优权值为t[0][n-1]。
由于退化的两点多边形{Vi,Vi+1}的权值为0,t[i][i]=0。最优子结构的性质,t[i][j]的值是t[i][k]的值加上t[k][j]的值,再加上三角形ViVkVj的权值,其中,i<k<=j-1。K的位置有j-i-1个。因此可以再这j-i-1个未知中选出使t[i][j]值达到最小的位置,递归式为: t[i][j]=0 (j-i<=1)
t[i][j]=t[i][k]+t[k][j]+w(i,k,j) (j-i>=2)

本文介绍了如何使用动态规划解决凸多边形最优三角剖分问题。定义t[i][j]表示顶点 Vi 到 Vj 的凸多边形最优三角剖分的权值,并通过递归公式 t[i][j]=t[i][k]+t[k][j]+w(i,k,j),其中 i<k<=j-1,找到最小权值。最终算法的时间复杂度为 O(n^3)。"
113632197,5560791,C++对象内存占用与this指针解析,"['C++', '内存管理', '面向对象']
最低0.47元/天 解锁文章

1086

被折叠的 条评论
为什么被折叠?



