最優三角部分:
幾個概念:
凸多邊形不相鄰的兩個頂點的連線稱為凸多邊形的弦
凸多邊形的三角部分是將乙個凸多邊形分割互不相交的三角形的弦的集合
三角形上權值之和是指三角形的三條邊上權值之和
w(vi vk vj) = |vivk|+|vkvj|+|vivj|
最優三角形部分就是劃分的各三角形上權函式之和最小的三角部分
解題步驟:
分析最優子結構:假設在第k個頂點會得到最優解,那麼原問題就變成了兩個子問題和三角形
子問題分別是和;
建立遞迴表示式:
m[i][j]表示凸多邊形三角形部分的最優值,那麼兩個子問題的最優值為
m[i][k],m[k][j];
當 i = j時,只是乙個線段,m[i][j] = 0;
當 i < j時, m[i][j] = min , i<= k < j
自底向上計算並記錄最優值;
int n;
int s[
100]
[100];
double m[
100]
[100];
double g[
100]
[100];
void
convex()
for(d =
2; d <= n; d++
)//問題的規模}}
}}void
print
(int i,
int j)
"<< endl;}if
(j > s[i]
[j]+1)
"<< endl;
}print
(i, s[i]
[j])
;print
(s[i]
[j]+
1, j);}
intmain()
}convex()
; cout <<
"最小值:"
<[n]<< endl;
print(1
, n)
;system
("pause");
return0;
}
凸三角形最優三角剖分
1 凸多邊形的三角剖分 將凸多邊形分割成互不相交的三角形的弦的集合t。2 最優剖分 給定凸多邊形p,以及定義在由多邊形的邊和弦組成的三角形上的權函式w。要求確定該凸多邊形的三角剖分,使得該三角剖分中諸三角形上權之和為最小。下圖為剖分案例。若凸 n 1 邊形p 的最優三角剖分t包含三角形v0vkvn,...
dp 最優三角剖分問題
額,基本和演算法分析上的差不多,只是更加了解dp的狀態吧 include include include include include includeusing namespace std define max 100 int n int t max max s max max int value...
區間DP 最優三角剖分
最優三角剖分有很多種型別,如 求讓所有三角形權值和最大的方案 所有三角形權值和最小的方案 所有三角形最大三角形面積最小的方案.但是不論怎麼變化,他們的解題思路都是相同的,只是狀態轉移方程有些許的差別而已,首先我們先看第三種情況.栗子 uva 1331 在乙個任意多邊形中進行三角形剖分,求使得三角形中...