在《程式設計實踐》(英文名《the practice of programming》)的書中,第三章分別用c語言,c++,awk和perl分別實現了馬耳可夫鏈演算法,來通過輸入的文字,「隨機」的生成一些有用的文字。
說明:1. 程式使用了字典,字典和雜湊可不是乙個東西,字典是鍵www.cppcns.com值對的集合,而雜湊tmhrc是一種能夠常數階插入,刪除,不過可以用雜湊來實現字典。
2. 字典的setdefault()方法使得程式少了許多條件判斷。
3. random.choice()可以隨機取出乙個序列中的元素。
4. 每兩個字首詞確定乙個字尾。
實現**:
import random
import sys
maxgen = 10000
nonword = '\n'
w1 = w2 = nonword
statetab = {}
text = sys.stdin.read()
words = text.split()
for word in words:
tmhrcstatetab.setdefault((w1, w2),).append(word)
w1, w2 = w2, word
# add tail
statetab.setdefault((w1, w2),).append(nonword)
# show mar words
w1 = w2www.cppcns.com = nonword
for i in xrange(maxgen):
程式設計客棧suf = statetab[(w1,w2)]
t = random.choice(suf)
if t == nonword:
break
print t
w1, w2 = w2, t
本文標題: python實現馬耳可夫鏈演算法例項分析
本文位址:
python 隱馬爾可夫鏈
馬爾科夫轉換矩陣 out 72 sunny cloudy rainy sunny 0.50 0.375 0.125 cloudy 0.25 0.125 0.625 rainy 0.25 0.375 0.375混淆矩陣 dry dryish damp soggy sunny 0.60 0.20 0.1...
馬爾可夫鏈
馬爾可夫鏈,因安德烈 馬爾可夫 a.a.markov,1856 1922 得名,是指數學中具有馬爾可夫性質的離散事件 隨機過程 該過程中,在給定當前知識或資訊的情況下,過去 即當前以前的歷史狀態 對於 將來 即當前以後的未來狀態 是無關的。x1,x2,x3.馬爾可夫鏈 markov chain 描述...
馬爾可夫鏈
定義設 是乙個隨機過程,如果 在 t0 時刻所處的狀態已知,它在時刻 t t0 所處的狀態的條件分布與其在 t0 之前所處的狀態無關。通俗地說,就是在知道過程現在的條件下,其將來的條件分布不依賴於過去,則稱 隨機過程 具有馬爾可夫 markov 性 是乙個隨機過程,若其滿足馬爾可夫性,則稱其為馬爾可...