words = ['', 'the', 'aged', 'bottle', 'flies', 'fast', '']
k = len(words)
T = ['', 'adj', 'adv', 'det', 'n', 'v', '']
cardT = len(T)
a = [[0.0, 0.4, 0.2, 0.2, 0.1, 0.1, 0.0],
[0.0, 0.2, 0.1, 0.0, 0.3, 0.2, 0.2],
[0.0, 0.2, 0.2, 0.1, 0.1, 0.2, 0.2],
[0.0, 0.3, 0.1, 0.0, 0.5, 0.1, 0.0],
[0.0, 0.1, 0.1, 0.1, 0.2, 0.3, 0.2],
[0.0, 0.2, 0.3, 0.1, 0.2, 0.0, 0.2],
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]
b = [[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0],
[0.0, 0.1, 0.0, 0.0, 0.0, 0.01, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.1, 0.1, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.1, 0.2, 0.0],
[0.0, 0.1, 0.3, 0.0, 0.01, 0.1,0.0],
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]
b = dict(zip(words,b))
alpha = [None for _ in range(k)]
alpha[0] = b[""]
for t in range(1,k):
alpha[t] = [sum([alpha[t-1][i] * a[i][j] for i in range(cardT)])*b[words[t]][j] for j in range(cardT)]
for group in alpha:
print group