日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python写dnf游戏脚本辅助_HMM-维特比算法明白与实现(python)_dnf辅助,r6辅助

發(fā)布時(shí)間:2023/12/15 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python写dnf游戏脚本辅助_HMM-维特比算法明白与实现(python)_dnf辅助,r6辅助 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

基于ELK搭建MySQL日志平臺(tái)的要點(diǎn)和常見錯(cuò)誤絕地求生卡盟

解碼問題

給定觀察序列 (O=O_1O_2...O_T),模子 (lambda (A,B,pi)),找到最可能的狀態(tài)序列 (I^?={i^?_1,i^?_2,...i^?_T})

近似算法

在每個(gè)時(shí)刻 (t) 選擇最可能的狀態(tài),獲得對(duì)應(yīng)的狀態(tài)序列

憑據(jù)HMM-前向后向算法盤算時(shí)刻 (t) 處于狀態(tài) (i^*_t) 的概率:

[i^?_t=argmax[gamma_t(i)],t=1,2,...T gamma_t(i) = frac{alpha_{i}(t) beta_{i}(t)}{sum_{i=1}^{N} alpha_{i}(t) beta_{i}(t)} ]

然則無法保證獲得的解是全局最優(yōu)解

維特比算法

維特比算法的基礎(chǔ)可以歸納綜合為下面三點(diǎn)(來源于吳軍:數(shù)學(xué)之美):

若是概率最大的路徑經(jīng)由籬笆網(wǎng)絡(luò)的某點(diǎn),則從起始點(diǎn)到該點(diǎn)的子路徑也一定是從最先到該點(diǎn)路徑中概率最大的。

假定第 t 時(shí)刻有 k 個(gè)狀態(tài),從最先到 t 時(shí)刻的 k 個(gè)狀態(tài)有 k 條最短路徑,而最終的最短路徑一定經(jīng)由其中的一條。

憑據(jù)上述性子,在盤算第 t 1 時(shí)刻的最短路徑時(shí),只需要思量從最先到當(dāng)前的k個(gè)狀態(tài)值的最短路徑和當(dāng)前狀態(tài)值到第 t 1 時(shí)刻的最短路徑即可。如求t=3時(shí)的最短路徑,即是求t=2時(shí),從起點(diǎn)到當(dāng)前時(shí)刻的所有狀態(tài)結(jié)點(diǎn)的最短路徑加上t=2到t=3的各節(jié)點(diǎn)的最短路徑。

通俗明白維特比算法,對(duì)上面三點(diǎn)加深明白

如果你從S和E之間找一條最短的路徑,最簡樸的方式就是列出所有可能的路徑 ((O(T^N))),選出最小的,顯然時(shí)間復(fù)雜度太高。怎么辦?(摘自[3])

使用維特比算法

S到A列的路徑有三種可能:S-A1,S-A2,S-A3,如下圖

S-A1,S-A2,S-A3 中肯定有一個(gè)屬于全局最短路徑。繼續(xù)往右,到了B列

對(duì)B1:

會(huì)發(fā)生3條路徑:

S-A1-B1,S-A2-B1,S-A3-B1

假設(shè)S-A3-B1是最短的一條,刪掉其他兩條。獲得

對(duì)B2:

會(huì)發(fā)生3條路徑:

S-A1-B2,S-A2-B2,S-A3-B2

假設(shè)S-A1-B2是最短的一條,刪掉其他兩條。獲得

對(duì)B3:

會(huì)發(fā)生3條路徑:

S-A1-B3,S-A2-B3,S-A3-B3

假設(shè)S-A2-B3是最短的一條,刪掉其他兩條。獲得

現(xiàn)在我們看看對(duì)B列的每個(gè)節(jié)點(diǎn)有哪些,回首維特比算法第二點(diǎn)

假定第 t 時(shí)刻有 k 個(gè)狀態(tài),從最先到 t 時(shí)刻的 k 個(gè)狀態(tài)有 k 條最短路徑,而最終的最短路徑一定經(jīng)由其中的一條

B列有三個(gè)節(jié)點(diǎn),以是會(huì)有三條最短路徑,最終的最短路徑一定會(huì)經(jīng)由其中一條。如下圖

同理,對(duì)C列,會(huì)獲得三條最短路徑,如下圖,dnf腳本,

到目前為止,仍然無法確定哪條屬于全局最短。最后,我們繼續(xù)看E節(jié)點(diǎn)

最終發(fā)現(xiàn)最短路徑為S-A1-B2-C3-E

數(shù)學(xué)形貌

在上述過程中,對(duì)每一列(每個(gè)時(shí)刻)會(huì)獲得對(duì)應(yīng)狀態(tài)數(shù)的最短路徑。在數(shù)學(xué)上若何表達(dá)?紀(jì)錄路徑的最大概率值 $ delta_t(i)$ 和對(duì)應(yīng)路徑經(jīng)由的節(jié)點(diǎn) (psi_t(i))。

界說在時(shí)刻 (t) 狀態(tài)為 (i) 的所有單條路徑中概率最大值為

[delta_{t}(i)=max _{i_{1}, i_{2}, ldots, i_{t-1}} Pleft(i_{t}=i, i_{t-1}, ldots, i_{1}, o_{t}, ldots, o_{1} | lambdaright), i=1,2, ldots, N ]

遞推公式

[begin{aligned} delta_{t 1}(i) &=max _{i_{1}, i_{2}, ldots, i_{t}} Pleft(i_{t 1}=i, i_{t}, ldots, i_{1}, o_{t 1}, ldots, o_{1} | lambdaright) &=max _{1 leq j leq N}left[delta_{t}(j) a_{j i}right] b_{i}left(o_{t 1}right), i=1,2, ldots, N ; t=1,2, ldots, T-1 end{aligned} ]

界說在時(shí)刻 (t) 狀態(tài)為 (i) 的所有單條路徑中,概率最大路徑的第 (t - 1) 個(gè)節(jié)點(diǎn)為

[psi_{t}(i)=arg max _{1 leq j leq N}left[delta_{t-1}(j) a_{j i}right], i=1,2, ldots, N ]

維特比算法步驟:

? step1:初始化

[begin{aligned}&delta_{1}(i)=pi_{i} b_{i}left(o_{1}right), i=1,2, ldots, N&psi_{1}(i)=0, i=1,2, ldots, Nend{aligned} ]

? step2:遞推,對(duì) (t=2,3,...,T)

[delta_{t}(i)=max _{1 leq j leq N}left[delta_{t-1}(j) a_{j i}right] b_{i}left(o_{t}right), i=1,2, ldots, N psi_{t}(i)=arg max _{1 leq j leq N}left[delta_{t-1}(j) a_{j i}right], i=1,2, ldots, N ]

? step3:盤算時(shí)刻 (T) 最大的 $ delta _T(i)(,即為最可能隱藏狀態(tài)序列泛起的概率。盤算時(shí)刻)T(最大的)psi_T(i)(,即為時(shí)刻)T$最可能的隱藏狀態(tài)。

[P^{*}=max _{1 leq i leq N} delta_{T}(i) quad i_{T}^{*}=arg max _{1 leq i leq N} delta_{T}(i) ]

? step4:最優(yōu)路徑回溯,對(duì)(t=T-1,...,1)

[i_{t}^{*}=psi_{t 1}left(i_{t 1}^{*}right)I^*=(i_{1}^{*},i_{2}^{*},...,i_{T}^{*}) ]

代碼實(shí)現(xiàn)

假設(shè)從三個(gè) 袋子 {1,2,3}中 取出 4 個(gè)球 O={red,white,red,white},模子參數(shù)(lambda = (A,B,pi)) 如下,盤算狀態(tài)序列,即取出的球來自哪個(gè)袋子

#狀態(tài) 1 2 3

A = [[0.5,0.2,0.3],

[0.3,0.5,0.2],

[0.2,0.3,0.5]]

pi = [0.2,0.4,0.4]

# red white

B = [[0.5,0.5],

[0.4,0.6],

[0.7,0.3]]

def hmm_viterbi(A,B,pi,O):

T = len(O)

N = len(A[0])

delta = [[0]*N for _ in range(T)]

psi = [[0]*N for _ in range(T)]

#step1: init

for i in range(N):

delta[0][i] = pi[i]*B[i][O[0]]

psi[0][i] = 0

#step2: iter

for t in range(1,T):

for i in range(N):

temp,maxindex = 0,0

for j in range(N):

res = delta[t-1][j]*A[j][i]

if res>temp:

temp = res

maxindex = j

delta[t][i] = temp*B[i][O[t]]#delta

psi[t][i] = maxindex

#step3: end

p = max(delta[-1])

for i in range(N):

if delta[-1][i] == p:

i_T = i

#step4:backtrack

path = [0]*T

i_t = i_T

for t in reversed(range(T-1)):

i_t = psi[t 1][i_t]

path[t] = i_t

path[-1] = i_T

return delta,psi,path

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]]

pi = [0.2,0.4,0.4]

O = [0,1,0,1]

hmm_viterbi(A,B,pi,O)

效果

references:

iOS中的事件響應(yīng)鏈、單例模式、工廠模式、觀察者模式

總結(jié)

以上是生活随笔為你收集整理的python写dnf游戏脚本辅助_HMM-维特比算法明白与实现(python)_dnf辅助,r6辅助的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。