图灵机
图灵机(Turing machine,Tm),又称确定型图灵机,可以看作等价于任何有限逻辑数学过程的终极强大逻辑机器。所谓的图灵机就是指一个抽象的机器,它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。在每个时刻,机器头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动。
- 一个由有限个字符构成的字符集。
- 一条有起始位置、分成一格一格每格能写一个字 符、可以向一方无限延伸的纸带。
- 一个可以在纸带上一格一格左右移动的读写头。
- 一个由有限个状态构成的状态集。
- 一个由有限个转换规则构成的规则集,每条规则根 据图灵机当前所在的状态和读写头当前位置纸带上 的内容,决定将纸带当前位置改写成什么字符、读 写头如何移动(向左向右还是不动)以及图灵机的 新状态。
图灵机是有限状态机加上磁带存储器。每次转换都可能伴随着对磁带的操作(移动,读取,写入)。
什么是状态机?
有限状态机(Finite-State Machine,FSM),简称状态机,是表示有限个状态(State)以及在这些状态之间的转换(Transition)和动作(Action)等行为的数学模型。
总的来说,有限状态机系统,是指在不同阶段呈现出不同的运行状态的系统,这些状态是有限的、不重叠的。
这样的系统在某一时刻一定会处于其所有状态中的一个状态,此时它接收一部分允许的输入,产生一部分可能的响应,并转换到一部分可能的状态。
有限状态机是一种用来进行对象行为建模的工具,其作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。在计算机科学中,有限状态机被广泛用于建模应用行为、硬件电路系统设计、软件工程,编译器、网络协议、和计算与语言的研究。
五大核心
-
State:状态
一个状态机至少要包含两个状态。状态一般情况下是成对存在,例如页面中的按钮会具有点击、未点击两个状态。
-
Event:事件
事件就是执行某个操作的触发条件或者口令。鼠标点击按钮就是一个事件。
-
Guard:条件
状态机对外部消息进行响应时,除了需要判断当前的状态,还需要判断跟这个状态相关的一些条件是否成立。这种判断称为 Guard(条件)。Guard 通过允许或者禁止某些操作来影响状态机的行为。
-
Action:动作
执行操作或事件发生以后要执行动作。鼠标点击按钮、点击完成后所发生的事情。在程序中,一个 Action 一般就对应一个函数。
-
Transition:转换
也就是从一个状态变化为另一个状态。按钮从未点击到点击是一个状态的转换。引起状态转换的事件被称为触发事件(triggering event),或者被简称为触发(trigger)。
::: tip JavaScript 状态机工具库
快速构建状态机图
构建状态机图基本要用到以下八个元素:
- 起始
- 终止
- 事件
- 现态(现在状态)
- 次态(下一状态)
- 历史状态
- 动作
- 条件
1,2元素可包含4,5元素,并没有严格的区分界限
确定起始与终止状态,归纳所有引起状态变化的事件,确定现态到次态在不同的条件所执行的动作,并在此过程中保存必要的历史状态
应用
状态机是一个对真实世界的抽象,而且是逻辑严谨的数学抽象
跟状态机类似的概念还有图灵机,图灵机就是计算机底层采用的计算模型。
总结
状态机不是实际机器设备,而是一个数学模型,通常体现为一个状态转换图。涉及到的相关概念是 State 状态,Event 事件,Action 动作,Transition 转换。状态机是计算机科学的重要基础概念之一,也可以说是一种总结归纳问题的思想,应用范围非常广泛。