Weight_polygon = [
[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]
Polygon_split = [[0 for Col in range (6)] for row in range (6)]
Print Polygon_split
split = [[0 for Col in range (6)] for row in range (6)]
def weight (A, B, c):
return weight_polygon[a][b] + weight_polygon[a][c] + weight_polygon[b][c]
def minimum (polygon, N):
For I in range (1, N):
Polygon_split[i][i] = 0
for R in range (2, n+1):
For I in range (1, n-r+1+1):
j = i + r-1
K = i + 1
if (K < N and J < N):
POLYGON_SPLIT[I][J] = Polygon_split[i+1][j] + \
Weight (i-1, I, J)
SPLIT[I][J] = i
while (K < J and J < N and K < n):
Cur_val = polygon_split[i][k] + \
POLYGON_SPLIT[K+1][J] + weight (i-1, K, J)
If Cur_val < Polygon_split[i][j]:
POLYGON_SPLIT[I][J] = Cur_val
SPLIT[I][J] = k
K = k + 1
return polygon_split[1][n-1]
def trace (I, J, s):
if i = = J:
Return
Trace (i, s[i][j], s)
Trace (S[i][j]+1, J, s)
Print I-1, J, S[i][j], weight (i-1, J, S[i][j])
Print minimum (Weight_polygon, 6)
Print Trace (1, 5, split)
Print Polygon_split
Dynamic Programming--triangle Splitting