凸多邊形的最優三角剖分

2021-08-07 17:12:24 字數 1178 閱讀 1837

如圖所示,用頂點的逆時針序列表示凸多邊形,即p=表示具有n條邊的凸多邊形。

給定凸多邊形p,以及定義在由多邊形的邊和弦組成的三角形上的權函式w。如圖所示劃分,要求確定該凸多邊形的三角剖分,使得該三角形上的勸之和最小。

解析:若凸(n+1)邊形p=的最優剖分t包含三角形v0vkvn,1<=k<=n-1,則t的權為3個部分的和,三角形v0vkvn的權,子多邊形和的權之和。定義t[i][j],1<=i=1時,凸子多邊形至少有3個頂點,t[i][j]應為t[i][k]的值加上t[k+1][j]的值再加上vi-1vkvj的權值(這裡t[k+1][j]之所以為k+1這裡是以邊計數的)。至於權值w函式,定義為三角形三個頂點的權值乘積。

即w(vi-1vkvj

)=w[i-1]*w[k]*w[j].狀態轉移方程如下:

**實現:

# -*-coding:utf-8 -*-

while true:

try:

n=int(raw_input())

w=map(int,raw_input().split())

t=[[0 for i in range(n+1)] for j in range(n+1)]

for i in range(1,n+1):

for j in range(i+1,n+1):

for k in range(i,j):

if i-1!=k and k!=j:

r=w[i-1]*w[k]*w[j]

else:r=0

if t[i][j]==0:

t[i][j]=t[i][k]+t[k+1][j]+r

else:t[i][j]=min(t[i][j],t[i][k]+t[k+1][j]+r)

ans=t[1][n]

print t,ans

except:

break

凸多邊形最優三角剖分

問題描述 使用動態規劃演算法解凸多邊形最優三角剖分問題,具體來說就是,依據遞迴式,按照順序求得子問題,使得該三角剖分中諸三角形上權之和為最小。輸入形式 在螢幕上輸入凸多邊形頂點個數和頂點座標。輸出形式 最優三角剖分後的三角形頂點。樣例輸入 8 26 0 20 0 10 10 0 22 12 27 2...

4 5 凸多邊形最優三角剖分

動態規劃法解凸多邊形最優三角剖分 1 凸多邊形的三角剖分 將凸多邊形分割成互不相交的三角形的弦的集合t。2 最優剖分 給定凸多邊形p,以及定義在由多邊形的邊和弦組成的三角形上的權函式w。要求確定該凸多邊形的三角剖分,使得該三角剖分中諸三角形上權之和為最小。定義乙個頂點到其他頂點的權 weights ...

凸多邊形最優三角剖分問題

參考書籍 演算法設計與分析 王曉東 動態規劃 1.問題描述 注 是所有的三角形的權值之和,不是只計算邊和弦的權值之和 2.分析 3.編碼實現 author 胡家威 createtime 2011 11 10 下午12 31 16 description 凸多邊形的最優三角剖分 packageex2 ...