10.1
题目:
给定盒子和球组成的隐马尔可夫模型
λ
=
(
A
,
B
,
π
)
\lambda = (A,B,\pi)
λ=(A,B,π),其中,
A
=
[
0.5
0.2
0.3
0.3
0.5
0.2
0.2
0.3
0.5
]
,
B
=
[
0.5
0.5
0.4
0.6
0.7
0.3
]
,
π
=
(
0.2
,
0.4
,
0.4
)
T
A =\begin{bmatrix} 0.5 & 0.2 & 0.3\\ 0.3 & 0.5 & 0.2\\ 0.2 & 0.3 & 0.5 \end{bmatrix}, B=\begin{bmatrix} 0.5 & 0.5\\ 0.4 & 0.6\\ 0.7 & 0.3 \end{bmatrix}, \pi=(0.2, 0.4, 0.4)^T
A=⎣⎡0.50.30.20.20.50.30.30.20.5⎦⎤,B=⎣⎡0.50.40.70.50.60.3⎦⎤,π=(0.2,0.4,0.4)T
设
T
=
4
,
O
=
(
红
,
白
,
红
,
白
)
T = 4, O = (红,白, 红, 白)
T=4,O=(红,白,红,白),试用后向算法计算
P
(
O
∣
λ
)
P(O|\lambda)
P(O∣λ)
解答
按照算法10.3
(1)计算初值
β
4
(
i
)
=
1
i
=
1
,
2
,
3
\beta_4(i) = 1 \quad i=1,2,3
β4(i)=1i=1,2,3
(2)递推计算
β
3
(
1
)
=
∑
j
=
1
3
a
1
j
b
j
(
O
4
)
β
4
(
j
)
=
0.25
+
0.12
+
0.09
=
0.46
\beta_3(1)=\sum^3_{j=1}a_{1j}b_j(O_4)\beta_4(j)=0.25+0.12+0.09=0.46
β3(1)=∑j=13a1jbj(O4)β4(j)=0.25+0.12+0.09=0.46
β
3
(
2
)
=
∑
j
=
1
3
a
2
j
b
j
(
O
4
)
β
4
(
j
)
=
0.15
+
0.3
+
0.06
=
0.51
\beta_3(2)=\sum^3_{j=1}a_{2j}b_j(O_4)\beta_4(j)=0.15+0.3+0.06=0.51
β3(2)=∑j=13a2jbj(O4)β4(j)=0.15+0.3+0.06=0.51
β
3
(
3
)
=
∑
j
=
1
3
a
3
j
b
j
(
O
4
)
β
4
(
j
)
=
0.1
+
0.18
+
0.15
=
0.43
\beta_3(3)=\sum^3_{j=1}a_{3j}b_j(O_4)\beta_4(j)=0.1+0.18+0.15=0.43
β3(3)=∑j=13a3jbj(O4)β4(j)=0.1+0.18+0.15=0.43
β
2
(
1
)
=
∑
j
=
1
3
a
1
j
b
j
(
O
3
)
β
3
(
j
)
=
0.25
∗
0.46
+
0.08
∗
0.51
+
0.21
∗
0.43
=
0.2461
\beta_2(1)=\sum^3_{j=1}a_{1j}b_j(O_3)\beta_3(j)=0.25*0.46+0.08*0.51+0.21*0.43=0.2461
β2(1)=∑j=13a1jbj(O3)β3(j)=0.25∗0.46+0.08∗0.51+0.21∗0.43=0.2461
β
2
(
2
)
=
∑
j
=
1
3
a
2
j
b
j
(
O
3
)
β
3
(
j
)
=
0.15
∗
0.46
+
0.2
∗
0.51
+
0.14
∗
0.43
=
0.2312
\beta_2(2)=\sum^3_{j=1}a_{2j}b_j(O_3)\beta_3(j)=0.15*0.46+0.2*0.51+0.14*0.43=0.2312
β2(2)=∑j=13a2jbj(O3)β3(j)=0.15∗0.46+0.2∗0.51+0.14∗0.43=0.2312
β
2
(
3
)
=
∑
j
=
1
3
a
3
j
b
j
(
O
3
)
β
3
(
j
)
=
0.1
∗
0.46
+
0.12
∗
0.51
+
0.35
∗
0.43
=
0.2577
\beta_2(3)=\sum^3_{j=1}a_{3j}b_j(O_3)\beta_3(j)=0.1*0.46+0.12*0.51+0.35*0.43=0.2577
β2(3)=∑j=13a3jbj(O3)β3(j)=0.1∗0.46+0.12∗0.51+0.35∗0.43=0.2577
β
1
(
1
)
=
∑
j
=
1
3
a
1
j
b
j
(
O
2
)
β
2
(
j
)
=
0.25
∗
0.2461
+
0.12
∗
0.2312
+
0.09
∗
0.2577
=
0.112462
\beta_1(1)=\sum^3_{j=1}a_{1j}b_j(O_2)\beta_2(j)=0.25*0.2461+0.12*0.2312+0.09*0.2577 = 0.112462
β1(1)=∑j=13a1jbj(O2)β2(j)=0.25∗0.2461+0.12∗0.2312+0.09∗0.2577=0.112462
β
1
(
2
)
=
∑
j
=
1
3
a
2
j
b
j
(
O
2
)
β
2
(
j
)
=
0.15
∗
0.2461
+
0.3
∗
0.2312
+
0.06
∗
0.2577
=
0.121737
\beta_1(2)=\sum^3_{j=1}a_{2j}b_j(O_2)\beta_2(j)=0.15*0.2461+0.3*0.2312+0.06*0.2577 = 0.121737
β1(2)=∑j=13a2jbj(O2)β2(j)=0.15∗0.2461+0.3∗0.2312+0.06∗0.2577=0.121737
β
1
(
3
)
=
∑
j
=
1
3
a
3
j
b
j
(
O
2
)
β
2
(
j
)
=
0.1
∗
0.2461
+
0.18
∗
0.2312
+
0.15
∗
0.2577
=
0.104881
\beta_1(3)=\sum^3_{j=1}a_{3j}b_j(O_2)\beta_2(j)=0.1*0.2461+0.18*0.2312+0.15*0.2577 = 0.104881
β1(3)=∑j=13a3jbj(O2)β2(j)=0.1∗0.2461+0.18∗0.2312+0.15∗0.2577=0.104881
(3)终止
P
(
O
∣
λ
)
=
∑
i
=
1
3
π
i
b
i
(
O
1
)
β
1
(
i
)
=
0.2
∗
0.5
∗
0.112462
+
0.4
∗
0.4
∗
0.121737
+
0.4
∗
0.7
∗
0.104881
=
0.0600908
P(O|\lambda) = \sum^3_{i=1}\pi_{i}b_i(O_1)\beta_1(i) = 0.2*0.5*0.112462+0.4*0.4*0.121737+0.4*0.7*0.104881=0.0600908
P(O∣λ)=∑i=13πibi(O1)β1(i)=0.2∗0.5∗0.112462+0.4∗0.4∗0.121737+0.4∗0.7∗0.104881=0.0600908
10.2
题目
考虑盒子和球组成的隐马尔可夫模型
λ
=
(
A
,
B
,
π
)
\lambda = (A,B,\pi)
λ=(A,B,π),其中,
A
=
[
0.5
0.1
0.4
0.3
0.5
0.2
0.2
0.2
0.6
]
,
B
=
[
0.5
0.5
0.4
0.6
0.7
0.3
]
,
π
=
(
0.2
,
0.3
,
0.5
)
T
A =\begin{bmatrix} 0.5 & 0.1 & 0.4\\ 0.3 & 0.5 & 0.2\\ 0.2 & 0.2 & 0.6 \end{bmatrix}, B=\begin{bmatrix} 0.5 & 0.5\\ 0.4 & 0.6\\ 0.7 & 0.3 \end{bmatrix}, \pi=(0.2, 0.3, 0.5)^T
A=⎣⎡0.50.30.20.10.50.20.40.20.6⎦⎤,B=⎣⎡0.50.40.70.50.60.3⎦⎤,π=(0.2,0.3,0.5)T
设
T
=
8
,
O
=
(
红
,
白
,
红
,
红
,
白
,
红
,
白
,
白
)
T = 8, O = (红,白,红,红,白,红,白,白)
T=8,O=(红,白,红,红,白,红,白,白),试用前向后向算法计算
P
(
i
4
=
q
3
∣
O
,
λ
)
P(i_4=q_3|O,\lambda)
P(i4=q3∣O,λ)
解答
这题就偷个小懒,让python帮忙解决叭(╹▽╹)
代码:
import numpy as np
def fore_algorithm(A, B, p_i, o, T, N):
# 设初值,alpha_1(i) = pt_(i)b_i(o(i))
alpha = np.zeros((T, N))
for i in range(N):
h = o[0]
alpha[0][i] = p_i[i] * B[i][h]
#递推
for t in range(T-1):
h = o[t+1]
for i in range(N):
a = 0
for j in range(N):
a += (alpha[t][j] * A[j][i])
alpha[t+1][i] = a * B[i][h]
#终止
P = 0
for i in range(N):
P += alpha[T-1][i]
return P, alpha
def back_algorithm(A, B, p_i, o, T, N):
#设置初值,beta_t(i)=1
beta = np.ones((T, N))
#递推
for t in range(T-1):
t = T - t - 2
h = o[t + 1]
h = int(h)
for i in range(N):
beta[t][i] = 0
for j in range(N):
beta[t][i] += A[i][j] * B[j][h] * beta[t+1][j]
#终止
P = 0
for i in range(N):
h = o[0]
h = int(h)
P += p_i[i] * B[i][h] * beta[0][i]
return P, beta
if __name__ == "__main__":
T = 8
N = 3
A = [[0.5, 0.1, 0.4], [0.3, 0.5, 0.2], [0.2, 0.2, 0.6]]
B = [[0.5, 0.5], [0.4, 0.6], [0.7, 0.3]]
pi = [0.2, 0.3, 0.5]
O = ['红', '白', '红', '红', '白', '红', '白', '白']
o = np.zeros(T, np.int)
for i in range(T):
if O[i] == '白':
o[i] = 1
else:
o[i] = 0
PF, alpha = fore_algorithm(A, B, pi, o, T, N)
PB, beta = back_algorithm(A, B, pi, o, T, N)
print("PF:", PF, "PB:", PB)
#P(i_4=q_3|O,\lambda) = alpah_4(3)* beta_4(3)
P = alpha[4-1][3-1] * beta[4-1][3-1]
print("前向后向概率计算可得 P(i4=q3|O,lambda)=", P / PF)
运行结果:
PF为前向算法得到的
P
(
O
∣
λ
)
P(O|\lambda)
P(O∣λ)
PB为后向算法得到的
P
(
O
∣
λ
)
P(O|\lambda)
P(O∣λ)
(改一下main函数中的输出值,可以验算一下第一题的结果)
10.3
题目
在习题10.1中,试用维特比算法求最优路径
解答
(1)初始化
δ
1
(
1
)
=
π
1
∗
b
1
(
o
1
)
=
0.2
∗
0.5
=
0.1
\delta_1(1) = \pi_1*b_1(o_1)=0.2*0.5=0.1
δ1(1)=π1∗b1(o1)=0.2∗0.5=0.1
δ
1
(
2
)
=
π
2
∗
b
2
(
o
1
)
=
0.4
∗
0.4
=
0.16
\delta_1(2) = \pi_2*b_2(o_1)=0.4*0.4=0.16
δ1(2)=π2∗b2(o1)=0.4∗0.4=0.16
δ
1
(
3
)
=
π
3
∗
b
3
(
o
1
)
=
0.4
∗
0.7
=
0.28
\delta_1(3) = \pi_3*b_3(o_1)=0.4*0.7=0.28
δ1(3)=π3∗b3(o1)=0.4∗0.7=0.28
(2)递推
δ
t
(
i
)
=
m
a
x
1
≤
j
≤
N
[
δ
t
−
1
(
j
)
a
j
i
]
b
i
(
o
t
)
\delta_t(i) = max_{1\leq j\leq N}[\delta_{t-1}(j)a_{ji}]b_i(o_t)
δt(i)=max1≤j≤N[δt−1(j)aji]bi(ot)
t = 2
δ
2
(
1
)
=
m
a
x
{
0.1
∗
0.5
,
0.16
∗
0.3
,
0.28
∗
0.2
}
∗
0.5
=
0.028
;
ψ
2
(
1
)
=
3
\delta_2(1) = max\{0.1*0.5, 0.16*0.3, 0.28*0.2\}*0.5 = 0.028; \quad\psi_2(1) = 3
δ2(1)=max{0.1∗0.5,0.16∗0.3,0.28∗0.2}∗0.5=0.028;ψ2(1)=3
δ
2
(
2
)
=
m
a
x
{
0.1
∗
0.2
,
0.16
∗
0.5
,
0.28
∗
0.3
}
∗
0.6
=
0.0504
;
ψ
2
(
2
)
=
3
\delta_2(2) = max\{0.1*0.2, 0.16*0.5, 0.28*0.3\}*0.6 = 0.0504;\quad\psi_2(2) = 3
δ2(2)=max{0.1∗0.2,0.16∗0.5,0.28∗0.3}∗0.6=0.0504;ψ2(2)=3
δ
2
(
3
)
=
m
a
x
{
0.1
∗
0.3
,
0.16
∗
0.2
,
0.28
∗
0.5
}
∗
0.3
=
0.042
;
ψ
2
(
3
)
=
3
\delta_2(3) = max\{0.1*0.3, 0.16*0.2, 0.28*0.5\}*0.3 = 0.042;\quad\psi_2(3) = 3
δ2(3)=max{0.1∗0.3,0.16∗0.2,0.28∗0.5}∗0.3=0.042;ψ2(3)=3
t=3
δ
3
(
1
)
=
m
a
x
{
0.028
∗
0.5
,
0.0504
∗
0.3
,
0.042
∗
0.2
}
∗
0.5
=
0.00756
;
ψ
3
(
1
)
=
2
\delta_3(1) = max\{0.028*0.5, 0.0504*0.3, 0.042*0.2\}*0.5 = 0.00756; \quad\psi_3(1) = 2
δ3(1)=max{0.028∗0.5,0.0504∗0.3,0.042∗0.2}∗0.5=0.00756;ψ3(1)=2
δ
3
(
2
)
=
m
a
x
{
0.028
∗
0.2
,
0.0504
∗
0.5
,
0.042
∗
0.3
}
∗
0.4
=
0.01008
;
ψ
3
(
2
)
=
2
\delta_3(2) = max\{0.028*0.2, 0.0504*0.5, 0.042*0.3\}*0.4 = 0.01008; \quad\psi_3(2) = 2
δ3(2)=max{0.028∗0.2,0.0504∗0.5,0.042∗0.3}∗0.4=0.01008;ψ3(2)=2
δ
3
(
3
)
=
m
a
x
{
0.028
∗
0.3
,
0.0504
∗
0.2
,
0.042
∗
0.5
}
∗
0.7
=
0.0147
;
ψ
3
(
3
)
=
3
\delta_3(3) = max\{0.028*0.3, 0.0504*0.2, 0.042*0.5\}*0.7 = 0.0147; \quad\psi_3(3) = 3
δ3(3)=max{0.028∗0.3,0.0504∗0.2,0.042∗0.5}∗0.7=0.0147;ψ3(3)=3
t=4
δ
4
(
1
)
=
m
a
x
{
0.00756
∗
0.5
,
0.01008
∗
0.3
,
0.0147
∗
0.2
}
∗
0.5
=
0.00189
;
ψ
4
(
1
)
=
1
\delta_4(1) = max\{0.00756*0.5, 0.01008*0.3, 0.0147*0.2\}*0.5 = 0.00189; \quad\psi_4(1) = 1
δ4(1)=max{0.00756∗0.5,0.01008∗0.3,0.0147∗0.2}∗0.5=0.00189;ψ4(1)=1
δ
4
(
2
)
=
m
a
x
{
0.00756
∗
0.2
,
0.01008
∗
0.5
,
0.0147
∗
0.3
}
∗
0.6
=
0.003024
;
ψ
4
(
2
)
=
2
\delta_4(2) = max\{0.00756*0.2, 0.01008*0.5, 0.0147*0.3\}*0.6 = 0.003024;\quad\psi_4(2) = 2
δ4(2)=max{0.00756∗0.2,0.01008∗0.5,0.0147∗0.3}∗0.6=0.003024;ψ4(2)=2
δ
4
(
3
)
=
m
a
x
{
0.00756
∗
0.3
,
0.01008
∗
0.2
,
0.0147
∗
0.5
}
∗
0.3
=
0.002205
;
ψ
4
(
3
)
=
3
\delta_4(3) = max\{0.00756*0.3, 0.01008*0.2, 0.0147*0.5\}*0.3 = 0.002205;\quad\psi_4(3) = 3
δ4(3)=max{0.00756∗0.3,0.01008∗0.2,0.0147∗0.5}∗0.3=0.002205;ψ4(3)=3
(3)终止
P
∗
=
m
a
x
1
≤
i
≤
3
δ
4
(
i
)
=
0.003024
P^*=max_{1\leq i\leq 3}\delta_4(i) = 0.003024
P∗=max1≤i≤3δ4(i)=0.003024
i
4
∗
=
a
r
g
m
a
x
i
[
δ
4
(
i
)
]
=
2
i_4^*=argmax_i[\delta_4(i)] = 2
i4∗=argmaxi[δ4(i)]=2
(4)最优路径回溯
i
3
∗
=
ψ
4
(
i
4
∗
)
=
2
i_3^*=\psi_4(i_4^*) = 2
i3∗=ψ4(i4∗)=2
i
2
∗
=
ψ
3
(
i
3
∗
)
=
2
i_2^*=\psi_3(i_3^*) = 2
i2∗=ψ3(i3∗)=2
i
1
∗
=
ψ
2
(
i
2
∗
)
=
3
i_1^*=\psi_2(i_2^*) = 3
i1∗=ψ2(i2∗)=3
I
∗
=
(
i
1
∗
,
i
2
∗
,
i
3
∗
,
i
4
∗
)
=
(
3
,
2
,
2
,
2
)
I^*=(i_1^*,i_2^*,i_3^*,i_4^*)=(3,2,2,2)
I∗=(i1∗,i2∗,i3∗,i4∗)=(3,2,2,2)
用代码验算一下~~
import numpy as np
def viterbi(A, B, pai, o, T, N):
a = []
i_star = np.zeros(T, np.int)
# 初始化
delta = np.zeros((T, N))
psi = np.zeros((T, N), np.int)
for i in range(N):
delta[0][i] = pai[i] * B[i][o[0]]
psi[0][i] = 0
# 递推
for t in range(T-1):
t = t + 1
for i in range(N):
for j in range(N):
a.append(delta[t-1][j] * A[j][i])
delta[t][i] = np.max(a) * B[i][o[t]]
psi[t][i] = np.argmax(a, axis=0)
a = []
psi = psi + 1
# 终止
P_star = np.max(delta[T-1])
i_star[T-1] = np.argmax(delta[T-1], axis=0) +1
# 最优路径回溯
for t in range(T-1):
t = T - t - 2
a = t + 1
b = i_star[t+1]-1
i_star[t] = psi[a][b]
return i_star, P_star
if __name__ == "__main__":
T = 4
N = 3
O = ['红', '白', '红', '白']
A = [[0.5, 0.2, 0.3],
[0.3, 0.5, 0.2],
[0.2, 0.3, 0.5]]
B = [[0.5, 0.5],
[0.4, 0.6],
[0.7, 0.3]]
p_i = [0.2, 0.4, 0.4]
o = np.zeros(T, np.int)
for i in range(T):
if O[i] == '白':
o[i] = 1
else:
o[i] = 0
I, P = viterbi(A, B, p_i, o, T, N)
print('最优路径: ')
print(I)
print('最优路径的概率:')
print(P)
运行结果:
10.4
题目
试用前向概率和后向概率推导
P
(
O
∣
λ
)
=
∑
i
=
1
N
∑
j
=
1
N
α
t
(
i
)
a
i
j
b
j
(
o
t
+
1
)
β
t
+
1
(
j
)
,
t
=
1
,
2
,
.
.
.
,
T
−
1
P(O|\lambda) = \sum^N_{i=1}\sum^N_{j=1}\alpha_t(i)a_{ij}b_j(o_{t+1})\beta_{t+1}(j), t=1,2,...,T-1
P(O∣λ)=∑i=1N∑j=1Nαt(i)aijbj(ot+1)βt+1(j),t=1,2,...,T−1
这个式子是在书中的公式(10.21),书上是用前向概率和后向概率文字推导得出,
α
t
(
i
)
a
i
j
b
j
(
o
t
+
1
)
β
t
+
1
(
j
)
\alpha_t(i)a_{ij}b_j(o_{t+1})\beta_{t+1}(j)
αt(i)aijbj(ot+1)βt+1(j)等价于
p
(
o
1
,
o
2
,
.
.
.
,
o
T
,
i
t
=
q
i
,
i
t
+
1
=
q
j
∣
λ
)
p(o_1,o_2,...,o_T,i_t=q_i,i_{t+1}=q_j|\lambda)
p(o1,o2,...,oT,it=qi,it+1=qj∣λ),两次求和则
q
i
,
q
j
q_i,q_j
qi,qj取到所有可能的情况。
详细的数学证明可以参考:https://blog.csdn.net/weixin_35479108/article/details/87907429
这里补充一个数学归纳法的证明
(1)t = 1
P
(
O
∣
λ
)
=
∑
i
=
1
N
∑
i
=
1
N
α
1
(
i
)
a
i
j
b
j
(
o
2
)
β
2
(
j
)
=
∑
i
=
1
N
α
1
(
i
)
∑
i
=
1
N
a
i
j
b
j
(
o
2
)
β
2
(
j
)
=
∑
i
=
1
N
α
1
(
i
)
β
1
(
i
)
=
∑
i
=
1
N
π
i
b
i
(
o
1
)
β
1
(
i
)
P(O|\lambda)\\ = \sum^N_{i=1}\sum^N_{i=1}\alpha_1(i)a_{ij}b_j(o_2)\beta_{2}(j)\\=\sum^N_{i=1}\alpha_1(i)\sum^N_{i=1}a_{ij}b_j(o_2)\beta_{2}(j)\\=\sum^N_{i=1}\alpha_1(i)\beta_1(i)\\=\sum^N_{i=1}\pi_ib_i(o_1)\beta_1(i)
P(O∣λ)=∑i=1N∑i=1Nα1(i)aijbj(o2)β2(j)=∑i=1Nα1(i)∑i=1Naijbj(o2)β2(j)=∑i=1Nα1(i)β1(i)=∑i=1Nπibi(o1)β1(i)
这个即为公式(10.21),后向算法的定义式,满足条件
(2)假设t=k时等式成立(t = 1,2,…T-2)
即
P
(
O
∣
λ
)
=
∑
i
=
1
N
∑
j
=
1
N
α
k
(
i
)
a
i
j
b
j
(
o
k
+
1
)
β
k
+
1
(
j
)
P(O|\lambda) = \sum^N_{i=1}\sum^N_{j=1}\alpha_k(i)a_{ij}b_j(o_{k+1})\beta_{k+1}(j)
P(O∣λ)=∑i=1N∑j=1Nαk(i)aijbj(ok+1)βk+1(j)
那么对于t=k+1,有
∑
i
=
1
N
∑
j
=
1
N
α
k
+
1
(
i
)
a
i
j
b
j
(
o
k
+
2
)
β
k
+
2
(
j
)
=
∑
i
=
1
N
α
k
+
1
(
i
)
∑
j
=
1
N
a
i
j
b
j
(
o
k
+
2
)
β
k
+
2
(
j
)
=
∑
i
=
1
N
α
k
+
1
(
i
)
β
k
+
1
(
i
)
=
∑
i
=
1
N
β
k
+
1
(
i
)
[
∑
j
=
1
N
α
k
(
j
)
a
i
j
]
b
i
(
o
k
+
1
)
=
∑
i
=
1
N
∑
j
=
1
N
α
k
(
i
)
a
i
j
b
j
(
o
k
+
1
)
β
k
+
1
(
j
)
=
P
(
O
∣
λ
)
\sum^N_{i=1}\sum^N_{j=1}\alpha_{k+1}(i)a_{ij}b_j(o_{k+2})\beta_{k+2}(j)\\=\sum^N_{i=1}\alpha_{k+1}(i)\sum^N_{j=1}a_{ij}b_j(o_{k+2})\beta_{k+2}(j)\\=\sum^N_{i=1}\alpha_{k+1}(i)\beta_{k+1}(i)\\=\sum^N_{i=1}\beta_{k+1}(i)[\sum_{j=1}^N\alpha_k(j)a_{ij}]b_i(o_{k+1})\\=\sum^N_{i=1}\sum^N_{j=1}\alpha_k(i)a_{ij}b_j(o_{k+1})\beta_{k+1}(j)\\=P(O|\lambda)
∑i=1N∑j=1Nαk+1(i)aijbj(ok+2)βk+2(j)=∑i=1Nαk+1(i)∑j=1Naijbj(ok+2)βk+2(j)=∑i=1Nαk+1(i)βk+1(i)=∑i=1Nβk+1(i)[∑j=1Nαk(j)aij]bi(ok+1)=∑i=1N∑j=1Nαk(i)aijbj(ok+1)βk+1(j)=P(O∣λ)
得证
解答
10.5
题目
比较维特比算法中变量 δ \delta δ的计算和前向算法中变量 α \alpha α的计算的主要区别.
解答
计算变量 α \alpha α的时候直接对上个的结果进行数值计算,而计算变量 δ \delta δ需要在上个结果计算的基础上选择最大值。