まず、素朴な質問を申し訳ありません。最適な検索ツリーPythonを使用して - コード分析
:しかし、私は二つのリスト(一連のキーと周波数のセット)を受け取り、2つの答えを返すPythonで動的計画法を使用して、私は最適な検索ツリーを作成しようとしている他の場所助ける見つけることができませんでした
1 - 最小パスコスト。
2 - その最小コストで生成されたツリー。
私は基本的に、最もアクセスされたアイテム(最もアクセスされたアイテムはルートです)によって編成されたツリーを作成し、そのダイナミックプログラミングソリューションを使用してそのツリーから最小のパスコストを返します。
私は、Pythonを使用して、次の実装コードました:私はその木の最小コスト1.答えは142(マトリックス位置に格納された値[0にしてください出力しようとしている
def optimalSearchTree(keys, freq, n):
#Create an auxiliary 2D matrix to store results of subproblems
cost = [[0 for x in xrange(n)] for y in xrange(n)]
#For a single key, cost is equal to frequency of the key
#for i in xrange (0,n):
# cost[i][i] = freq[i]
# Now we need to consider chains of length 2, 3, ... .
# L is chain length.
for L in xrange (2,n):
for i in xrange(0,n-L+1):
j = i+L-1
cost[i][j] = sys.maxint
for r in xrange (i,j):
if (r > i):
c = cost[i][r-1] + sum(freq, i, j)
elif (r < j):
c = cost[r+1][j] + sum(freq, i, j)
elif (c < cost[i][j]):
cost[i][j] = c
return cost[0][n-1]
def sum(freq, i, j):
s = 0
k = i
for k in xrange (k,j):
s += freq[k]
return s
keys = [10,12,20]
freq = [34,8,50]
n=sys.getsizeof(keys)/sys.getsizeof(keys[0])
print(optimalSearchTree(keys, freq, n))
を] [n-1]、ダイナミックプログラミングソリューションに従って)。しかし、残念ながらそれは0を返しています。私はそのコードで問題を見つけることができませんでした。何がうまくいかないの?
のelif上の任意の提案(R
paulovlobato