解答:題目中頂點座標編號從1開始,為了方便程式設計,將頂點從0開始,頂點的編號變為0到7。定義t[i][j],0=由於退化的兩點多邊形的權值為0,t[i][i]=0。最優子結構的性質,t[i][j]的值是t[i][k]的值加上t[k][j]的值,再加上三角形vivkvj的權值,其中,it[i][j]=t[i][k]+t[k][j]+w(i,k,j) (j-i>=2)
演算法的時間複雜度為o(n3)!
程式**如下:
#include#include#include#include#include#include#include #define ll long long
#define inf 0x7fffffff
#define e 1e-9
#define m 100
#define n 105
using namespace std;
int n,k,h,m;
int graph[8][8]=
;int t[n][n],s[n][n];
int w(int i,int j,int k)
void printv(int v,int u)//輸出新增的邊!
if(u-s[v][u]>=2)
}void print2(int ma[n],int n,int m)
{ for (int i=0; i<=n ; i++ )
{printf("%3d",ma[i][0]);
for (int j=1; j<=m ; j++)
printf(" %3d",ma[i][j]);
cout<
凸多邊形最優三角剖分 動態規劃
凸多邊形最優分割是典型的動態規劃問題 凸多邊形最優剖分 給定凸多邊形,以及定義在由多邊形的邊和弦上的權函式,使得該多邊形三角剖分後所有三角形權值之和最小。思路 先將多邊形三角剖分 2 三角剖分 最優子結構性質 若n 1邊形的最優三角剖分包含三角形v0vkvn 1 k n 則t的權為三個部分權之和 三...
動態規劃 凸多邊形最優三角剖分
在這裡,權值可以是任何和弦長,邊長有關的權函式,一般來說,我們使用三角形的邊長作為權值。在這個問題中,是具有最優子結構的。設一共有n邊的凸多邊形點的集合為,在以v0和vn 1為底的情況下,求k 0,n 1 使v0,vn 1,vk組成的三角形權值最小。這樣,剩下的兩個點集和就可以組成新的凸多邊形。在其...
動態規劃DP 凸多邊形最優三角剖分
我們可以把披薩餅看作是乙個凸多邊形,凸多邊形是指多邊形的任意兩點的連線均落在多邊形的內部或邊界上。1 什麼是凸多邊形?如下圖所示,是乙個凸多邊形 如下圖所示,不是乙個凸多邊,因為v1v3連線落在了多邊形的外部 凸多邊形不相鄰的兩個頂點的連線稱為凸多邊形的弦 2 什麼是凸多邊形的三角剖分?凸多邊形的三...