【发布时间】:2019-07-31 02:15:45
【问题描述】:
我正在完成我的教科书(Ex 4.7)中的一个练习,并正在用 Python 实现代码来练习动态编程。我在实际执行算法 4.8 时遇到了一些麻烦。我明白发生了什么,直到我得到“否则范围 s 从 1 到 t-1 并设置 s 以最小化 f(s)。为什么本书在 for 循环中使用s 并将其设置为函数f(s)?应该如何在 Python 中实现这一行?
[当前代码在底部]
到目前为止,我当前的代码是这样的:
x = [1,2,5,6,10]
k = 3
n = 5
r = [[0 for x in range(k)] for x in range(n)]
c = [[0 for x in range(k)] for x in range(n)]
def Union(lst1, lst2):
final_list = lst1 + lst2
return final_list
for j in range(k):
for t in range(n):
if j == 0:
r[t][j] = (x[t]-x[0])/2
c[t][j] = [(x[t]+x[0])/2]
else:
for s in range(t-1):
f = max(r[s][j-1], (x[t]-x[s+1])/2)
#set s to minimize f??
r[t][j] = f
w = []
w.append((x[t]+x[s+1])/2)
if c[s][j-1] == 0:
c[t][j] = w
else:
c[t][j] = Union(c[s][j - 1], w)
print(r)
print(c)
非常感谢任何帮助!
【问题讨论】:
标签: python algorithm cluster-analysis dynamic-programming