嗯 - 问题是什么.这是我一直听到的,但我还没有完成调查.
(更新)我可以查看定义......但为什么不(正如@erikson指出的那样)深入了解你的真实经历和轶事.社区维基会帮助人们投票给最有见地的答案.有趣的阅读到目前为止,谢谢!
简而言之,这是一种可用于表达具体状态系统的技术(与量子态/概率分布相对).
引用维基百科的文章:
有限状态机(FSM)或有限状态自动机(复数:自动机)或简称状态机,是由有限数量的状态,这些状态之间的转换和动作组成的行为模型.有限状态机是具有原始内部存储器的机器的抽象模型.
那么,这对你意味着什么?简而言之,它是一种有效的方式来表示从您关注的系统的起始状态到最终状态的路径.使用正则表达式作为一个相当容易理解的例子,让我们看一下AB + C模式(假设这个加号是一个上标).我希望这种模式能够接受诸如"ABC","ABBC","ABBBC"等字符串.A在开始时,C在结尾处,中间有一些B(大于或等于1) .
如果你考虑一下,从图片的角度考虑这个几乎就容易了.用文本伪造它(我的括号是一个环回弧),你可以看到A(在左边)是起始状态,C(在右边)是右边的结束状态.
_ ( ) A --> B --> C
从FSA,您可以前往图灵机的土地继续您的计算复杂性之旅.
但是,您也可以使用状态机来表示真实的行为和系统.在我的世界中,我们使用它们来模拟实际人员的某些工作流程,这些工作人员使用非常不能容忍国家秩序错误的组件.如同",A最好在C之前发生,否则会出现非常严重的问题.现在就不可能做到这一点."
你可以查一查,但到底是什么.直觉上,有限状态自动机是具有有限数量状态的事物的抽象,以及可以从状态到状态的规则.一个国家的东西可制成用于其真正的或虚假陈述,以及一个规则是,你从一个状态变化到另一种方式.所以,你可以说,有两个州:"我在家里"和"我在工作"两个规则,"去工作"和"回家".
事实证明,你可以用数学方式看待这样的机器,并发现有些东西可以做但不能做.正则表达式基本上是一种描述有限状态机的方法,其中状态是一组不同的字符串,规则根据下一个字符读取将您从一个状态移动到另一个状态.你可以证明这一点.但是你也可以证明没有有限状态机可以判断表达式中的括号是否匹配(通过FSA 的泵浦引理).
您应该了解 FSA 的原因是它们可以用来解决许多问题:字符串匹配,系统控制,业务流程描述,数字电路设计.他们本身就很漂亮.
正式,一个FSA是一个代数结构F =⟨Σ,S,S 0,F,δ⟩其中Σ是输入字母,小号 是一组状态,š 0 ∈小号是一个特定的开始状态,˚F⊆小号是一组接受状态,δ:S×Σ→S是状态转移函数.
在OOP术语中:如果你有一个方法,你调用某些事件的方法,以及一些(其他)方法具有不同的行为取决于以前的调用....惊喜!你有一台状态机!
现在,如果你了解这个理论,你就不必重新思考这一切.你只需说:"小菜一碟,它只是一台状态机",然后继续实施它.
如果你不了解这个理论你会想一段时间,写一些聪明的黑客,并得到一些难以解释和记录的东西......因为你没有用它来描述它的话