murphywuwu / interview

面试 基础 算法
2 stars 2 forks source link

第五章:图灵机 #32

Open murphywuwu opened 4 years ago

murphywuwu commented 4 years ago

在第3章和第4章,我们研究了简单计算模型的能力。我们已经看到如何识别复杂性逐渐增加的字符串、如何匹配正则表达式,以及如何解析编程语言,而且都是使用不太复杂的基本机器完成的。但我们也看到,这些机器--有限自动机和下推自动机---都有很严格的限制,这些限制影响了它们作为现实计算模型的使用。我们的小型系统还要多强大,才能摆脱这种限制并完成正常计算机的所有工作?

murphywuwu commented 4 years ago

怎样才能设计一台能实际运行程序而不总是执行某个硬编码任务的机器呢?

确定型图灵机

存储

能访问一条无限长纸带的有限状态自动机叫作图灵机(Turing Machine,TM)。这个名字通常指一条拥有确定性规则的机器,但我们也可以毫无歧义地叫它确定性图灵机(Deterministic Turing Machine,DMT)

提供一条纸带的目的就是允许在纸带上的任何位置存储任意量的数据,并以任意顺序读取,那么我们如何设计一台能与整条纸带交互的机器呢?

规则

这个统一的规则格式有5部分:

murphywuwu commented 4 years ago

确定性

要根据图灵机的当前状态和当前纸带头下的字符来选择它的下一个动作,因此一台确定性机器只能由状态和字符组成的一个规则——“无矛盾”规则,这是为了避免下一个动作有任何歧异。 简单起见,我们会像处理 DPDA时那样,放松“无遗漏”规则,并假设在没有规则可用的时候机器可以进入一个隐含的卡死状态,而不是坚持对于每一个可能的情况都要有一个规则。

murphywuwu commented 4 years ago

模拟

标签:a/b:L,表示一条规则,它从纸带上读取字符a,写入字符b,然后把纸带头向左移动一个方格。

递增一个二进制数

截屏 2019-12-04 下午8 44 13 截屏 2019-12-05 下午3 07 23

字符串识别问题 IMG_0021

截屏 2019-12-05 下午3 22 26

DDEB0DCE-307E-474E-8A59-FBFC1521B339

C84396AE-FDBB-42B1-AFAB-52A7886B83D9

1CA51D7F-3F40-438C-A5C5-9FE9A8D2551C

murphywuwu commented 4 years ago

我们使用配置一词来代表下推自动机状态和栈的组合,同样的理念在这里也很有帮组。可以说一个图灵机的配置是一个状态和一条纸带的组合

murphywuwu commented 4 years ago

知道一个规则能在一个特定的配置下应用之后,我们需要能够通过写入一个新字符、移动纸带头以及按照规则改变机器状态来更新配置