小黑演算法成長日記7 凸多邊形最優剖分

2021-10-06 10:42:48 字數 1617 閱讀 7944

#三角形權值之和並非是邊和弦之和,在這裡坑了我兩個小時。。。。

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裡的選區,紅色多邊形是影象,裁剪後在紅色以外的部分被剪掉,相交邊用橙色線條表示。...