自动机理论,语言和计算导论1.1节翻译

1.1为什么要研究状态机(自动机)理论?


    在计算机科学内重要的核心内容中,有若干种原因需要我们研究状态机理论及其复杂性。该节主要是向读者展示理论研究动机及在本书当中的一些主要话题及一些轮廓。

1.1.1有限自动机导论

    对于大部分的硬件或者软件来说,有限自动机都是一种非常有效的模型。我们将会从第二章开始讨论它,将会展示一些概念的应用。这里我们会列出比较重要的几种应用:
    1.设计及校验数字电路软件
    2.典型编译器的词法分析器,也就是该编译器组件可以将输入的文本分割成逻辑单元,如标识符,关键字及标点符号等
    3.大型文本扫描软件,例如网页搜索,如找到单词的出现次数,词组,及一些文本模式等
    4.系统校验软件,这类软件通常具有有限个不同状态,如通讯协议或者安全信息交换系统。
      在此,我们将会给出满足各种应用的自动机的一个精确定义,在正式的介绍之前首先给出什么是有限自动机及它能做什么。大部分的系统或者系统组件,即如上文所示的系统都可以看成有限数量的状态构成的。状态的目的是标记系统历史信息的相关部分。由于状态数是有限的,在通常的情况下,系统的历史信息很难被记录所以系统必须被仔细的设计才能关注那些重要的信息而忽略那些不重要的信息。这种通过使用有限个状态的优势是我们能通过一种固定的资源即能实现特定的系统需求,如使用硬件电子回路或者一个简单的软件电子表格。即它们可以通过有限的数据进行决策或者使用其在代码当中的位置进行自主决策。
例1.1:或许最简单常见的有限自动机是一个带有”开/闭”功能的开关,该设备能记住它自己是处于开状态还是处于关状态,并且允许使用者通过按按钮来改变它的状态,其最终效果往往由开关的当前状态决定。也就是说当开关处于开状态时,则按下按钮将会使其处于关状态,而开关处于关状态时,按下按钮则会使其处于开状态。
    开关的有限自动机模型如图1.1所示,正如所有的有限自动机模型那样,状态用圆来表示。在这个例子中我们把状态称之为on/off,状态之间的圆弧表示输入。输入代表的是对系统的外部影响,这里两个输入圆弧用push标记,代表用户按下了这个按钮。两个圆弧的目的是说明,当push输入被接受的时候,开关就切换到另外的状态。
      其中的一个状态被设计为”start”状态,该状态是系统起始状态,在我们的例子中,起始状态是off,习惯上我们通过单词start和指向某一方向的箭头来表示开始状态。
    通常情况下,还会有更多个”终态”或称为”接受态”。例如在图1.1当中的状态即为终态,因为在该状态下,由开关控制的设备是可操作的。通常用一个双圆表示一个终态,图1.1当中我们并没有做特殊的标明。
例1.2通常情况下,能够通过状态进行表示的系统,都要比”on/off”这类选项复杂的多。图1.2展示了另外一种有限自动机。该自动机可以构成词法分析器的一部分,这个自动机的目的是识别出关键词”then”,因而它需要5个状态,每一个状态都表示当前达到的单词then当中的位置。这些位置与单词当中的前缀相对应,从空字符直到完整的单词。

    在图1.2中,5个状态分别以当前看到的then的前缀来命名,输入序列对应相应的字符序列。我们可以把它想象成词法分析器在编译时刻一次检验程序的一个字符的过程,即下一个自动机输入需要检测的字符。开始状态对应的是空字符串,并且每一个状态通过then的下一个字符转换成具有更多then前缀的状态。Then状态是指最终完全拼写出了then的状态,由于该自动机的目的就是识别出关键字then。所以我们认为该状态既是该自动机的最终状态。

1.1.2结构化表示法


    这里有两个重要的不像自动机的表示方法,但是这些方法在自动机及其应用当中起着很重要的作用。
    文法在处理具有递归结构的软件设计当中是一种很好用的模型。最典型的例子就是编译器当中的”解析器”。其功能是处理具有递归的嵌套定义的编程语言,如算术表达式,条件语句等。比如,一个像Ε?Ε+Ε的文法规则表示一个表达式可以通过一个加号连接另外两个表达式所组成,这种方式是对典型的真实程序设计语言表达式形式的描述。通常我们把这种文法称为上下文无关文法,将在第五章进行介绍。
    正则表达式表示的是数据的结构,尤其善于表达文本字符串的结构。正如将在第三章看到的,它所描述的字符串的模式和有限自动机所描述的相一致。这些表示方法的风格与文法的表示方法是截然不同的。这里我们展示一个非常简单的例子,在类UNIX系统中的正则表达式”[A-Z][a-z]*[ ][A-Z][a-z]”表示首都的单词,及跟随一个空格,及首都的两个字母。该表达式表示的模式是一个城市和一个州的名字。如Ithaua NY.该模式不包含那些更多个单词的城市如Polo Alto CA即更复杂表达式构成的城市名,它的模式应当是这样的”([A-Z][a-z]*[ ] )*[ ][A-Z][a-z]”,当解释这些表达式时,我们仅需要知道”[A-Z]”代表的是从字符”A”到”Z”之间的所有大写字母,而”[ ]”代表的是一个空白字符,而字符”*”代表的是任何数量的前面的表达式,从而用于重复的表示模式。

1.1.3自动机和复杂性


    自动机是计算限制条件研究的本质。正如我们在介绍当中所提到的,它有两个重要的因素:
    1.计算机到底能做什么?这种研究被称为可判定性研究。这一类能够被计算机解决的问题被称为”判定”,将在第9章描述。
    2.计算机能够有效地做什么?通常称为棘手问题,这类问题需要随着其输入规模的增长能够在常量时间以内被解决,通常这类问题规模的增长会比任何其它多项因子方式增长的快,这类问题在第十章进行研究。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值