7.1 什么是细胞自动机

7.2 初等细胞自动机

*背景:Wolfram提出初等CA模型,CA有三大要素

*思想:
时间 -> 代 : 下一代的细胞状态 = f(上一代的细胞状态)

*扩展:谢尔宾斯基三角形(分形)

白0,黑1,上层产生下层

↑规则90,01011010(B)-> 90(D)

*扩展2:
8个0和1就是一个8位数,而8位数字共能产生256种组合,RGB颜色分别用8位表示R/G/B颜色(0~255,即256种可能)

7.3 编写初等细胞自动机

class CA
{int[] cells; //我们需要两个数组,一个用来存放细胞,另一个用来存放规则int[] ruleset;CA() {cells = new int[width];ruleset = {0,1,0,1,1,0,1,0}; //随意选取规则90for (int i = 0; i < cells.length; i++) {cells[i] = 0;}cells[cells.length/2] = 1; //除了中间的细胞以状态1开始,其余所有细胞都从状态0开始}void generate() {int[] nextgen = new int[cells.length]; //计算下一代状态for (int i = 1; i < cells.length-1; i++) {int left = cells[i-1];int me = cells[i];int right = cells[i+1];nextgen[i] = rules(left, me, right);}cells = nextgen;}int rules (int a, int b, int c) { //在规则集中查询新状态String s = "" + a + b + c;int index = Integer.parseInt(s,2);return ruleset[index];}
}

7.5 Wolfram分类

类别1:统一 经历若干次迭代之后,类别1的细胞状态变成了常量。这样的结果不会 让人眼前一亮。上图的规则222就属于该类。执行多次迭代之后,每一个细胞最终都 将保持黑色。

类别2:重复 和类别1相似,类别2最后也会保持稳定,但每个细胞的状态并不是常 量。相反,它们的状态在0和1之间来回变化。在上图的规则190中,每个细胞的状态 序列都是11101110111011101110。

类别3:随机 这类CA的状态变化是随机的,我们无法摸清其规律。

类别4:复杂 类别4可以当做类别2和类别3的混合,其中有重复和交替的图案,但这 些图案的出现是不可预测的,并且表面上看起来是随机的。

7.5 生命游戏

二维细胞矩阵,邻居由3个扩展为9个,此0代表"死亡",1代表"活着"。
3位 -> 8位2进制 ->定义8位规则
9位 -> 512位2进制 -> 难以定义规则

*规则:
1.死亡 如果某个细胞处于“活着”状态(状态为1),在以下情况下,将会变成“死 亡”状态(状态变为0)。 群体过剩: 如果细胞有4个及以上的邻居处于“活着”状态,则该细胞死亡。 孤独: 如果“活着”的邻居数量等于或少于1个,则细胞死亡。
2.新生 处于“死亡”状态(状态为0)的细胞,如果它周围刚好有3个“活着”的邻居, 则它也会变为“活着”状态。
3.静止 在其他情况下,细胞的状态保持不变。让我们列举所有这样的场景。 保持“活着”: 如果细胞是“活着”的,而且周围有2个或3个活着的邻居,它将继 续“活着”。 保持“死亡”: 如果细胞是“死亡”的,而且周围“活着”的邻居数不等于3,它将继 续保持“死亡”状态。

int[][] next = new int[columns][rows]; //下一代状态for (int x = 1; x < columns-1; x++) //遍历所有细胞,但跳过边缘细胞
{ for (int y = 1; y < rows-1; y++) {int neighbors = 0;for (int i = -1; i <= 1; i++) //将所有邻居的状态相加,计算活着的邻居数量{   for (int j = -1; j <= 1; j++) {neighbors += board[x+i][y+j];}}neighbors -= board[x][y]; //减去自身状态生命游戏规则if ((board[x][y] == 1) && (neighbors < 2)) next[x][y] = 0;else if ((board[x][y] == 1) && (neighbors > 3))next[x][y] = 0;else if ((board[x][y] == 0) && (neighbors == 3))next[x][y] = 1;else next[x][y] = board[x][y];}
}
board = next; //next数组变成了当前状态

7.9 传统CA的变化

*规则扩展:
1.非矩形网格
六角形网格创建CA,每个细胞都有6个邻居。

2.变换概率(死亡/复活规则)
3.细胞状态由0/1 -> float(0.0~1.0)
4.移动细胞(根据距离产生状态变化)
5.嵌套CA(模拟多层次复杂系统)

*应用扩展:
1.图像处理
但是大部分图像处理算法和CA规则是类似的。模糊化图像就是根据邻居像素的平均值创建新像素。CA规则可以用于模 拟墨水在纸上的浸散效果及图像的水纹效果。
2.存储运算历史(开发"复杂自适应系统")
能从历史学习中不断适配和改变规则。我们会在第10章看到这样的示例:神经网络。

【编程书籍】《The Nature of Code》笔记 -《代码本色》7.细胞自动机相关推荐

  1. 乐鑫esp8266学习rtos3.0笔记第7篇:我又来了,基于rtos3.0版本 SDK编程 SPI 驱动 ws2812b 七彩灯,代码全部开源奉献给你们!

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

  2. wordvba编程代码大全_这几本基础编程书籍一定要看

    程序员书库(ID:OpenSourceTop) 编译书单来自:https://simpleprogrammer.com/best-programming-books-2019/ 关于程序员类的技术书籍 ...

  3. 【编程技巧】Code snippets(代码片段)在Visual Studio中的使用(附简单的Snippet管理工具)

    引言 Code snippet (代码片段)在VS中指的是基于IDE支持的利用快捷方式快速输入一小段,或者称之为一整块代码的功能,在日常编程,特别是在工作中写内容相似的业务代码时,利用Snippet功 ...

  4. c语言编程交党费,「二级C语言」Code Style(代码的风格)

    某省情况插管疲软长发皓洁面临惯骗:发令魔术露齿临下纷扰乐道风习不迫?母亲黔江批答苦行龙头多数:奇丽马赛明理除痘妹子拼缀光导切点.曲水娄东算算初始潜江.两系善恶不妨曲波挡寒民居古币. 兰姆信物挂包森工例 ...

  5. 程序员必修内功,收集了上千本各类编程书籍【免费获取】

    程序员必修内功,收集了上千本各类编程书籍,C,C++,Java,Python,机器学习,深度学习,Linux等等,还收集了很多英文原版书籍,看不惯中文的也可以选择英文哦.这些书籍都是我经过平时的积累, ...

  6. 《编程能力基础》刷题笔记(41 题)

    <编程能力基础>刷题笔记 1. 单调数列 题解:递归.模拟.API 2. 实现 strStr() 题解:API.暴力.滑动窗口 3. 平衡二叉树 题解:迭代 4. 重复的子字符串 题解:模 ...

  7. python编程 书籍_Python编程十大最佳书籍

    python编程 书籍 Starting out with Python? Books are going to be your most reliable way to do so. Let's f ...

  8. unix编程书籍推荐

    [Unix下C/C++开发] unix编程书籍推荐 LiSteven 发布于 2年前,共有 0 条评论 Unix/Linux/BSD系统 相对于Windows,在UNIX下编程获得相关文档要方便很多. ...

  9. [Unix下C/C++开发] unix编程书籍推荐

    [Unix下C/C++开发] unix编程书籍推荐 发表于1年前(2012-12-20 10:14)   阅读(256) | 评论(0) 6人收藏此文章, 我要收藏 赞0 Unix/Linux/BSD ...

  10. 国外程序员推荐的免费编程书籍资源

    StackOverflow上有位网友(xenoterracide)提问: 我正试着搜集整理一个可在网上免费阅读的计算机编程书籍列表.这些书可以是某种特定编程语言,也可以计算机方面通用书籍.网上有哪些免 ...

最新文章

  1. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波2 - 图像反转、对数变换
  2. MQTT在游戏运营发行中的实践
  3. 【DP】UVA 103 Stacking Boxes 输出路径
  4. Virtualbox 2.1突发性错误解决办法(也许是BUG)
  5. Linux学习笔记(用户管理)
  6. Dxg——C# 开发笔记整理分类合集【所有的相关记录,都整理在此】
  7. Ajax学习笔记-Ajax的封装-8
  8. 用python实现遗传算法
  9. Python 竟也可以写网页前端了
  10. js获取当前服务器信息,js获取当前URL、参数、端口、IP等服务器信息
  11. 《遥感原理与应用》孙家抦版知识点总结(含简答题)——第一章
  12. cv个人计算机SCI英文简历模板,个人英文简历模板
  13. num转大写中文(零壹贰叁肆伍陆柒捌玖)
  14. Vulkan同步机制和图形-计算-图形转换的风险(一)
  15. php-hyperf 使用Saber报 HTTP -4 Unknown: Linux Code 11: Resource temporarily unavailable
  16. ua识别(浏览器标识识别)
  17. matlab接收电视信号,DRM接收及matlab实验 (转载)
  18. 怎么的测试用例是一个好的测试用例?
  19. 学完Python的7大就业方向,哪个赚钱多?
  20. 俄罗斯方块linux服务器,基与Linux环境下 C 俄罗斯方块

热门文章

  1. 查询苹果硬件产品保修情况
  2. 2021年A证(安全员)考试平台及A证(安全员)证考试
  3. BUG 修复预估模型
  4. word字体插入html,Word嵌入字体 | 让你的文档携带更方便
  5. PMP考试技巧:答题套路
  6. 手机端触摸滑动(H5+CSS3+JS+Swiper)
  7. 测试也需要懂尼尔森的十大可用性原则
  8. 虚幻引擎图文笔记:Lowpoly Asset低面几何资产开发技巧
  9. E - Pairs Gym - 100935E
  10. QQ群文件加载不出来问题的解决办法