參考書籍《演算法設計與分析》 王曉東 動態規劃
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 ...