状态机的概念是什么
来源:互联网 发布:手机淘宝短链接生成器 编辑:程序博客网 时间:2024/06/02 19:31
关于状态机的一个极度确切的描述是它是一个有向图形,由一组节点和一组相应的转移函数组成。状态机通过响应一系列事件而“运行”。每个事件都在属于“当前” 节点的转移函数的控制范围内,其中函数的范围是节点的一个子集。函数返回“下一个”(也许是同一个)节点。这些节点中至少有一个必须是终态。当到达终态, 状态机停止。
包含一组状态集(states)、一个起始状态(start state)、一组输入符号集(alphabet)、一个映射输入符号和当前状态到下一状态的转换函数(transition function)的计算模型。当输入符号串,模型随即进入起始状态。它要改变到新的状态,依赖于转换函数。在有限状态机中,会有有许多变量,例如,状态 机有很多与动作(actions)转换(Mealy机)或状态(摩尔机)关联的动作,多重起始状态,基于没有输入符号的转换,或者指定符号和状态(非定有 限状态机)的多个转换,指派给接收状态(识别者)的一个或多个状态,等等。
传统应用程序的控制流程基本是顺序的:遵循事先设定的逻辑,从头到尾地执行。很少有事件能改变标准执行流程;而且这些事件主要涉及异常情况。“命令行实用程序”是这种传统应用程序的典型例子。
另一类应用程序由外部发生的事件来驱动——换言之,事件在应用程序之外生成,无法由应用程序或程序员来控制。具体需要执行的代码取决于接收到的事件,或者它 相对于其他事件的抵达时间。所以,控制流程既不能是顺序的,也不能是事先设定好的,因为它要依赖于外部事件。事件驱动的GUI应用程序是这种应用程序的典 型例子,它们由命令和选择(也就是用户造成的事件)来驱动。
Web应用程序由提交的表单和用户请求的网页来驱动,它们也可划归到上述类 别。但是,GUI应用程序对于接收到的事件仍有一定程度的控制,因为这些事件要依赖于向用户显示的窗口和控件,而窗口和控件是由程序员控制的。Web应用 程序则不然,因为一旦用户采取不在预料之中的操作(比如使用浏览器的历史记录、手工输入链接以及模拟一次表单提交等等),就很容易打乱设计好的应用程序逻辑。
显然,必须采取不同的技术来处理这些情况。它能处理任何顺序的事件,并能提供有意义的响应——即使这些事件发生的顺序和预计的不同。有限状态机正是为了满足这方面的要求而设计的。
有限状态机是一种概念性机器,它能采取某种操作来响应一个外部事件。具体采取的操作不仅能取决于接收到的事件,还能取决于各个事件的相对发生顺序。之所以能 做到这一点,是因为机器能跟踪一个内部状态,它会在收到事件后进行更新。为一个事件而响应的行动不仅取决于事件本身,还取决于机器的内部状态。另外,采取 的行动还会决定并更新机器的状态。这样一来,任何逻辑都可建模成一系列事件/状态组合。
- 状态机的概念是什么
- 状态机的一些基础概念
- OpenGL状态机的概念理解
- Labview与状态机/状态图的概念
- BYOD的概念是什么?
- 程序是什么--过滤器和状态机
- 存储过程的概念以及优缺点是什么?
- 计算机图形学里面的实时概念是什么?
- ORM的概念, ORM到底是什么
- ORM的概念, ORM到底是什么
- ORM的概念, ORM到底是什么
- ORM的概念, ORM到底是什么
- ORM的概念, ORM到底是什么
- ORM的概念, ORM到底是什么
- 程序是什么--过滤器和状态机(续)
- MVC是什么,分层是什么概念
- MVC是什么,分层是什么概念
- Moore状态机和Mealy状态机的区别
- base之sysvinit
- Asp.net中创建程序集以及一个简单的IHttpHandler 实现
- ubuntu9.04
- Iperf 源代码分析(九)
- HMM学习最佳范例六:维特比算法2
- 状态机的概念是什么
- laohulide
- Microsoft .Net Remoting系列专题之二:Marshal、Disconnect与生命周期以及跟踪服务
- Mysql数据类型
- 编译Detrours静态库
- HMM学习最佳范例六:维特比算法3
- 关于Visual 2005中MFC调用Berkeley DB的编译错误问题
- 内存动态分配
- 游泳