Algorithm 每个算法都可以用有限状态机来表示吗?

Algorithm 每个算法都可以用有限状态机来表示吗?,algorithm,computer-science,state-machine,Algorithm,Computer Science,State Machine,我知道可以将某些算法表示为FSM,但FSM能否描述所有可能的算法?否。直观地说,如果只使用有限的状态,则只能将算法表示为FSM。例如,不能使用FSM对任意长度的列表进行排序 现在,给FSM添加一个无限量的状态——就像一个无限的一维值数组。。。在FSM和数组之间添加一点“粘合”状态——数组中的“当前位置”概念。。。你有一台图灵机。是的,它可以做到这一切。不 有一个有限状态机可以描述每种常规语言。 对于不规则语言,有限状态机是不够的 所有程序的集合称为“递归可枚举”语言,可以被图灵机接受 这通常被称

我知道可以将某些算法表示为FSM,但FSM能否描述所有可能的算法?

否。直观地说,如果只使用有限的状态,则只能将算法表示为FSM。例如,不能使用FSM对任意长度的列表进行排序

现在,给FSM添加一个无限量的状态——就像一个无限的一维值数组。。。在FSM和数组之间添加一点“粘合”状态——数组中的“当前位置”概念。。。你有一台图灵机。是的,它可以做到这一切。

有一个有限状态机可以描述每种常规语言。 对于不规则语言,有限状态机是不够的

所有程序的集合称为“递归可枚举”语言,可以被图灵机接受

这通常被称为:


Regular Languages你也可以把这个问题想成:如果图灵机器只和FSM一样强大,那么图灵机器还有什么用呢?但既然我们谈论的是图灵机,那么它们肯定可以做一些事情(算法),但FSM做不到;对于任何给定长度的列表,您都可以构造一个FSM来对其进行排序。PC毕竟是一个FSM——所有的RAM和磁盘给它提供了大量的状态。@slim我真的不喜欢“PC是一个FSM”的说法,在现实生活中一切都可能是FSM,因为宇宙中原子的数量是有限的,但老实说,PC可以在运行时扩展内存(使用不断扩展的集群,添加更多的内存设备,…),实际上不是FSM。
Regular Languages <= Context Free Languages <= Context Sensitive Languages <= Recursively enumerable Languages