linjianru
2017-07-03 10:06:50 +08:00
这是属于自动机理论中的一个主题。可以细分成更多类别,例如确定型的,非确定型的等等,其他还有下推自动机,无限状态自动机等等。
这玩意儿是用来进行计算模型建模的。它可以告诉我们每种类型的计算机其计算能力的边界,以及完成计算所需的复杂程度。所以通常是结合计算复杂性理论一起介绍。
但是它也有很多实际的用途,最典型的就是协议验证。比如 TCP 协议就是转化成了状态机然后验证其完备性的。如果没有这样的理论检查,很难相信它会不会在某些特殊状况(大家都考虑漏了的时候)出现意想不到的问题。
密码学中许多协议也需要进行这样的理论模型验证。其他像文本搜索(包括文法识别)也是状态机的常见应用。
可以说,这是一个很重要的领域。
至于你说的 if/else,其实是个实现层面的问题。这就相当于图纸和实物的关系。就状态机模型而言,它并不关系你是否用 if/else 去实现它,它只关心性质本身。
顺便一提,不使用 if/else 也可以实现分支选择的。在纯函数式编程语言里完全可以把 if/else 定义为一种平凡的布尔函数,二者具有等价的功能。