一维元胞自动机 Python 实现
来源:互联网 发布:日志记录访问次数java 编辑:程序博客网 时间:2024/06/01 07:43
元胞自动机(Cellular Automata,以下简称CA)最早由Von Neuman 等人提出, 虽然元胞自动机的结构简单,但是由大量元胞的相互作用而产生的总体行为却非常复杂。因此与传统的计算机数值计算和模拟方法比较,CA 能更好地模拟晶格生长、雪花形成、化学过程和流体形成等难以解析表达的复杂现象.近年来,许多学者对CA 的行为进行研究并应用到数学、物理、生物和计算机科学等领域。元胞自动机在数学方面的研究,主要集中在研究它们的行为,即它们在演化过程中的性态. 如今许多线性的问题得到了解决。
函数f∶{0,1}3→{0,1}称为一个三重局部变换规则,如果f 可以表现为以下形式:
111 110 101 100 011 010 001 000
r7 r6 r5 r4 r3 r2 r1 r0
其中f 的规则数N定义为:
N=2`7*r7+2`6*r6+…+2`0*r0
边界值按不变计算,则Python实现代码如下:
#coding=utf8#N = 1471#n = 4#str_cell = "00011110101010"N = int (raw_input(u"请输入N值:"))n = int (raw_input(u"请输入计算代数:"))str_cell = raw_input(u"请输入原始序列:")if ( N>=128 ): str_N = bin(N) str_N = str_N[2:]elif (N > 0): str_N = bin(N) num = len(str_N[2:]) str0 = "00000000" str_N =str0[:8-num] + str_N[2:]print u"映射序列"+str_Nprint u"第 0 代:" + str_cellli_num = []num = 0for i in range (0,8): if ( num >= 4): str_num = bin(num) str_num = str_num[2:] li_num.append(str_num) elif (num >= 0): str_num = bin(num) num0 = len(str_num[2:]) str0 = "000" str_num =str0[:3-num0] + str_num[2:] li_num.append(str_num) num = num +1dict_N = dict([(li_num[t],str_N[t])for t in range (0,8)])for k in range (1,n+1): str_cell_new = str_cell[0] for i in range (0,len(str_cell)-2): if i >=0 & i<(len(str_cell)-2): cmp_cell = str_cell[i:i+3] str_cell_new = str_cell_new + dict_N.get(str_cell[i:i+3]) str_cell_new = str_cell_new + str_cell[len(str_cell)-1] str_cell = str_cell_new print u"第",'%2d'%k,u"代:"+str_cell
1 0
- 一维元胞自动机 Python 实现
- 使用Python实现Aho-corasick自动机
- python实现支持unicode中文的AC自动机
- 并行实现细胞自动机
- AC自动机代码实现
- AC自动机实现
- Python3实现AC自动机
- java实现细胞自动机
- python使用esmre代替ahocorasick实现ac自动机[多模匹配]
- AC自动机算法实现详解
- AC自动机理论与实现
- AC自动机的实现原理
- 后缀自动机的程序实现
- 后缀自动机实现的例子
- AC自动机-一般算法实现
- Python算法实践——AC自动机
- 自动机
- 自动机
- 如何阅读别人的源代码
- 一段通过grep自定义选择执行程序并kill的脚本
- CDI技术第一步 Hello World!
- socket异步通信-如何设置成非阻塞模式、非阻塞模式下判断connect成功(失败)、判断recv/recvfrom成功(失败)、判断send/sendto
- PHP搭建自己的web框架-控制器
- 一维元胞自动机 Python 实现
- linux c socket之异步IO
- spring mvc web应用程序框架的搭建
- mysql 删除重复数据只保留一条
- 在Lua中调用c++函数
- Apache与Nginx的优缺点比较
- cocos2d-3.8.1版本tableview的使用(怎么取消弹簧效果);
- Linux设置socket客户端的连接超时(转)
- 用setsockopt()来控制recv()与send()的超时