有限状态机的本质是不是也是 if-else,那这个概念的意义在于什么呢

2017-07-02 21:25:03 +08:00
 pythonee
8828 次点击
所在节点    程序员
41 条回复
feather12315
2017-07-08 21:03:25 +08:00
问题一:
我是这么理解正则表达式的:它是有限自动机的一个实现(或者说一个实例)。有限自动机的实现还有 TCP 状态之间的转换。那么,IF-ELSE 这算是上下文无关语法的实现吗?

我不明白你所谓的实现是什么意思。正则表达式描述了一个语言结构,有限自动机来识别这个语言,正则表达式可以转换为有限自动机,有限自动机运行时和程序差不多,从某种意义上看,正则表达式也就是程序。有限自动机可以认为是一个抽象的模型,具体化下来可以有很多实例,如程序运行,协议运行。同样,if 结构也是一个语言,但是正则表达式描述不了,上下文无关语法可以描述。你所谓的实现,前后含义好像并不一样。在形式化方法中,你要定义实现,才能讨论后续的问题。如果你定义实现为一个实例,那么把有限自动机定义中的 5 元组分别给出来,可以得到很多具体的有限自动机例子,当然可以包含 TCP 转换。同样 CFG 的 4 元组分别给出了,可以得到很多具体的 CFG 例子,当然包含 if 结构。从这个意义上看,正则表达式是有限自动机的一个实现,就是不对的。

问题二:
没记错的话,含有 顺序连接 / 循环(WHILE) / 跳转(IF-ELSE) 这三种连接结构的计算机语言是完备的,这个完备性是怎么证明的呢?能给点相关的资料吗?
结构化程序设计的思想最早是 Dijkstra 提出的,用 baidu 找“选择 循环 顺序 Dijkstra ”,可以找到相关资料,还有 1966 年 Corrado Böhm 和 Giuseppe Jacopini 给出了证明。这些太老了,实在没有必要浪费时间去看。


我老师的回答= =

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/372548

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX