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

时间:2014-06-09 14:06:10

标签: algorithm computer-science state-machine

我知道可以将某些算法表示为FSM,但FSM可以描述每种可能的算法吗?

2 个答案:

答案 0 :(得分:6)

没有。直观地,如果算法仅使用有限量的状态,则该算法只能表示为FSM。例如,您无法使用FSM对任意长度的列表进行排序。

现在,向FSM添加一个无限量的状态 - 就像一个无限的一维数组值...并添加一些" glue" FSM和阵列之间的状态 - "当前位置"的概念在那个阵列......你有一台图灵机。哪,是的,可以做到这一切。

答案 1 :(得分:6)

没有

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

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

这通常被称为Chomsky Hirerchy

Regular Languages <= Context Free Languages <= Context Sensitive Languages <= Recursively enumerable Languages

接受的是:

  1. 常规语言:有限状态机
  2. 上下文自由语言:下推自动机
  3. 上下文敏感语言:线性有界图灵机
  4. 递归可枚举的语言:图灵机
  5. 重要的是要注意,可以接受描述所有“更高层语言”的机器也可以描述所有较低层(例如,您可以创建图灵机以接受每种常规语言)