#三角形權值之和並非是邊和弦之和,在這裡坑了我兩個小時。。。。
path =[[
0,2,
2,3,
1,4]
,[2,
0,1,
5,2,
3],[
2,1,
0,2,
1,4]
,[3,
5,2,
0,6,
2],[
1,2,
1,6,
0,1]
,[4,
3,4,
2,1,
0]]#鄰接矩陣
defw
(a,b,c)
:#劃分子多邊形的三角形權值
return path[a]
[b]+ path[b]
[c]+ path[a]
[c]#模擬矩陣最優乘法次序劃分問題,利用動態規劃解問題
defminweighttriangulation
(path)
: n =
len(path)-1
#邊數 table =
[(n+1)
*[0]
for i in
range
(n+1)]
#動態規劃邊表,table[i][j]代表從邊ai至邊aj的最優劃分解,即頂點i-1至j
for r in
range(1
,n):
#對角線垂直方向遍歷
for i in
range(1
,n-r+1)
:#對角線方向遍歷
j = i + r #對角線元素j座標
table[i]
[j]= table[i+1]
[j]+ w(i-
1,i,j)
#初始化邊ai至邊aj最優解(在邊ai末尾劃分)
for k in
range
(i+1
,j):
#依次在ai+1,ai+2...aj-1邊末尾劃分,尋找最優解
temp = table[i]
[k]+ table[k+1]
[j]+ w(i-
1,k,j)
if temp < table[i]
[j]:
table[i]
[j]= temp
print
('動態規劃矩陣:'
)for i in
range(1
,n+1):
for j in
range(1
,n+1):
print
(table[i]
[j],end =
' ')
print()
print
('最優解為:'
,table[1]
[n])
minweighttriangulation(path)
輸出:
動態規劃矩陣:
0 5 12 18 24
0 0 8 13 19
0 0 0 9 15
0 0 0 0 9
0 0 0 0 0
最優解為: 24
小黑演算法成長日記3 矩陣最優乘法順序
p 30 35,15 5,10 20,25 def function p n len p 1 m 0 n 1 for i in range n 1 動態規劃最優乘法次數記錄表 s 0 n 1 for i in range n 1 矩陣劃分位置記錄表 for r in range 1 n 對角線垂直方...
凸多邊形最優三角剖分
問題描述 使用動態規劃演算法解凸多邊形最優三角剖分問題,具體來說就是,依據遞迴式,按照順序求得子問題,使得該三角剖分中諸三角形上權之和為最小。輸入形式 在螢幕上輸入凸多邊形頂點個數和頂點座標。輸出形式 最優三角剖分後的三角形頂點。樣例輸入 8 26 0 20 0 10 10 0 22 12 27 2...
寒江雪 凸多邊形矩形裁切演算法
最近都在準備著考試,沒有寫部落格,今天忙裡偷閒,寫點關於裁切演算法的文字。這次要幹的事情是給定乙個凸多邊形的點描述和矩形的點描述,按著矩形來對多邊形區域進行裁切。大概如下圖所示 藍色矩形是裁剪框,相當於photoshop裡的選區,紅色多邊形是影象,裁剪後在紅色以外的部分被剪掉,相交邊用橙色線條表示。...