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

2022-02-20 04:47:35 字數 2385 閱讀 7018

參考書籍《演算法設計與分析》  王曉東   動態規劃

1.問題描述

(注:是所有的三角形的權值之和,不是只計算邊和弦的權值之和)

2.分析

3.編碼實現:

/** 

* @author:胡家威  

* @createtime:2011-11-10 下午12:31:16

* @description:凸多邊形的最優三角剖分

*/packageex2;

publicclasstriangulation

publicstaticvoidmain(string args) 組成的多邊形的最優三角形剖分的權值

ints =

newint[n][n];// s[i][j]表示與vi-1和vj一起構成三角形的第三個頂點的位置

triangulation.minweighttriangulation2(triangulation.getn() -

1, t, s);

system.out.println(t[1][5]);

}// 初始化weight陣列的資訊

publicstaticvoidinittriangulation(triangulation triangulation) , , , 

, , };

triangulation.setweight(weight);

}// 得到最優的三角形剖分,n是總邊數-1

publicvoidminweighttriangulation(intn,intt,ints)

// 迴圈求解t[i][j]

for(intr =

2; r <

= n; r++) }}

}}// 我的寫法,在第二個迴圈這裡不同,沒有什麼差別,只是我易於我理解

publicvoidminweighttriangulation2(intn,intt,ints)

// 迴圈求解t[i][j]

for(intr =

1; r <

= n; r++) }}

}}// 計算乙個三角形的權值之和

publicintgetweight(inti,intj,intk)

publicintgetn()

publicvoidsetn(intn)

publicintgetweight()

publicvoidsetweight(intweight)

}資料:

結果是: 24

通過 wiz 發布

凸多邊形最優三角剖分

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

凸多邊形的最優三角剖分

如圖所示,用頂點的逆時針序列表示凸多邊形,即p 表示具有n條邊的凸多邊形。給定凸多邊形p,以及定義在由多邊形的邊和弦組成的三角形上的權函式w。如圖所示劃分,要求確定該凸多邊形的三角剖分,使得該三角形上的勸之和最小。解析 若凸 n 1 邊形p 的最優剖分t包含三角形v0vkvn,1 k n 1,則t的...

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

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