# 路径展示角度defbrute_force_algorithm( target = [] ,path = '' ,prob ='' , pre = -1):
ret = []
path_tmp = ''
prob_tmp = ''for k,v inenumerate(Q):
path_tmp = '{}/{}'.format(path , v)
if prob == '':
prob_tmp = '{}/{},{}'.format(prob , Pi[k] , B[k][target[0]] )
else:
prob_tmp = '{}/{},{}'.format( prob , A[pre][k] , B[k][target[0]] )
iflen(target) > 1:
tmp = brute_force_algorithm(target[1:] , path_tmp ,prob_tmp , pre = k )
ret.extend( tmp )
eliflen(target) == 1:
ret.append([path_tmp , prob_tmp])
return ret
# 总概率展示角度defbrute_force_algorithm( target = [] ,path = '' ,prob = 0 , pre = -1):
ret = 0for k,v inenumerate(Q):
prob_tmp = prob
path_tmp = '{}/{}'.format(path , v)
if pre == -1 :
prob_tmp += Pi[k] * B[k][target[0]] # joint 联合概率局部else:
prob_tmp *= A[pre][k] * B[k][target[0]]
iflen(target) > 1:
ret += brute_force_algorithm(target[1:] , path_tmp ,prob_tmp , pre = k )
eliflen(target) == 1:
ret += prob_tmp
return ret
Forward 前向算法,时间复杂度:
defforward_algorithm( target = [] ):
prob = [ [ 0for i in Q] for j in target ]
for t ,o inenumerate(target):
if t == 0 :
for i inrange( len(Q) ):
prob[0][i] = Pi[i] * B[i][o]
else:
forid , q inenumerate(Q):
for k,v inenumerate(prob[t-1]):
print( v , A[k][id] , prob , prob[t][id] )
prob[t][id] += (v * A[k][id] * B[id][o] )
print(prob)
return prob
Backend后向算法,计算复杂度:
defbackend_algorithm( target = [] ):
prob = [ [ 0.0for i in Q] for j in target ]
length = len(target)
for t inrange( length-1 , -1 , -1):
if t == length-1 :
for i inrange( len(Q) ): # 后向计算有点问题
prob[t][i] = 1else:
o = target[t+1]
forid , q inenumerate(Q):
if t == 0:
for k,v inenumerate(prob[t+1]):
prob[t][id] *= 1000
prob[t][id] += ( v * A[id][k] * B[k][o] ) * 1000
prob[t][id] /= 1000else:
for k,v inenumerate(prob[t+1]):
prob[t][id] += v * A[id][k] * B[k][o]
for k,v inenumerate(prob[0]):
prob[0][k] = v * Pi[k] * B[k][target[0]]
return prob
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人