python实现马耳可夫链算法实例分析

作者:aiqier 时间:2022-08-13 00:27:08 

本文实例讲述了python实现马耳可夫链算法的方法。分享给大家供大家参考。具体分析如下:

在《程序设计实践》(英文名《The Practice of Programming》)的书中,第三章分别用C语言,C++,AWK和Perl分别实现了马耳可夫链算法,来通过输入的文本,“随机”的生成一些有用的文本。

说明:

1. 程序使用了字典,字典和散列可不是一个东西,字典是键值对的集合,而散列是一种能够常数阶插入,删除,不过可以用散列来实现字典。
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:
 statetab.setdefault((w1, w2),[]).append(word)
 w1, w2 = w2, word
# add tail
statetab.setdefault((w1, w2),[]).append(NONWORD)
# show mar words
w1 = w2 = 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,算法
0
投稿

猜你喜欢

  • 备战618!用Python脚本帮你实现淘宝秒杀

    2022-05-15 04:43:40
  • 理解HTTP消息头

    2008-12-10 14:06:00
  • Python设计模式中的状态模式你了解吗

    2023-07-14 08:20:28
  • PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法

    2023-11-16 13:00:48
  • Python中print函数简单使用总结

    2022-08-07 19:28:36
  • 如何增大MYSQL数据库连接数

    2010-10-25 20:28:00
  • Python爬取百度翻译实现中英互译功能

    2023-04-29 08:32:26
  • 微软补丁KB967723造成MySQL频繁无法连接

    2009-11-03 14:28:00
  • Python面向对象之反射/自省机制实例分析

    2022-07-27 06:57:53
  • jQuery方法扩展:type, toJSON, evalJSON

    2009-02-15 12:42:00
  • python性能检测工具函数运行内存及运行时间

    2021-11-24 00:09:27
  • Windows mysql命令行导入 .sql文件

    2010-12-03 16:12:00
  • Python类属性与实例属性用法分析

    2022-10-12 03:14:58
  • python爬虫之爬取百度翻译

    2022-04-03 19:30:45
  • 如何在Django项目中引入静态文件

    2021-10-09 11:24:52
  • django-crontab实现服务端的定时任务的示例代码

    2021-02-13 05:15:06
  • ajax实现Dig程序中的投票

    2008-01-22 17:27:00
  • Python使用psutil获取进程信息的例子

    2021-11-03 07:29:47
  • 层叠加的五条叠加法则

    2009-05-01 12:07:00
  • sql函数:去掉html代码

    2008-04-07 12:44:00
  • asp之家 网络编程 m.aspxhome.com