【问题标题】:Can every algorithm be represented by a finite state machine?每个算法都可以用有限状态机来表示吗?
【发布时间】:2014-06-09 14:06:09
【问题描述】:

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

【问题讨论】:

  • 你也可以这样想:如果图灵机和 FSM 一样强大,考虑图灵机还有用吗?但是,既然我们正在谈论图灵机,那么肯定有它们可以做的事情(算法),但 FSM 不能。

标签: algorithm computer-science state-machine


【解决方案1】:

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

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

【讨论】:

  • 可能值得讨论一下,虽然您不能使用 FSM 对任意长度的列表进行排序;对于任何给定长度的列表,您可以构造一个可以对其进行排序的 FSM。毕竟,PC 是一个 FSM - 只是所有的 RAM 和磁盘为其提供了 大量 的状态。
  • @slim 我真的不喜欢“PC 是 FSM”的说法,现实生活中的一切都可能是 FSM,因为宇宙中的原子数量是有限的,但老实说 - PC 可以在运行时扩展它的内存(使用不断扩展的集群,添加更多的内存设备,......),并且实际上不是 FSM。
【解决方案2】:

没有。

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

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

这通常被称为Chomsky Hirerchy

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

接受者:

  1. 常规语言:有限状态机
  2. 上下文无关语言:下推自动机
  3. 上下文相关语言:线性有界图灵机
  4. 递归可枚举语言:图灵机

需要注意的是,可以接受描述所有“高级语言”的机器也可以描述所有低级(例如,您可以创建一个图灵机来接受每种常规语言)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 2010-12-09
    • 1970-01-01
    • 2012-03-09
    相关资源
    最近更新 更多