第11章 计算模型

  计算机能够执行许多任务,提出一个问题就存在两个问题:第一,它能否由计算机来完成?一旦知道这第一个问题是肯定的,就会问第二个问题,怎么执行这个任务?计算模型是用来帮助回答这两个问题的。

  下面将讨论三种类型的计算模型:文法、有限状态机和图灵机。文法是用来产生一种语言中的词,并且确定一个词是否属于一种语言。文法产生的形式语言不仅可以作为自然语言的模型,如英语,还可以作为程序设计语言的模型,如 Pascal, Fortran, Prolog, C 和 Java, 特别是,文法在编译器的理论和构造中极为重要,在20世纪50年代,美国语言学家诺姆.乔姆斯基(Noam Chomsky)首先使用了下面将要讨论的文法。

  在建模中,使用着各种类型的有限状态机,每个有限状态机都有一个状态集合(包括初始状态)和一个输入字母表,还有一个转移函数,它对每个由状态和输入构成的对,指定一个状态。有限状态机的状态使得它具有有限的存储能力。在些有限状态机对每个转移产生一个输出符号。这类机器可以用作许多机器的模型,如自动售货机,延迟机,二进制加法器和语言识别器,我们还将讨论没有输出但具有终结状态的有限状态机,这样的机器广泛用于语言识别,它们所识别的串是这样的串;由初始状态动行到终结状态。文法和有限状态机的概念具有紧密的联系, 我们将要刻画有限状态机所能识别的集合的特征,并且证明这些集合恰 恰就是某种类型文法所产生的集合。

  然后引入图灵机的概念。我们将说明怎么用图灵机来识别集合,还要证明怎么用图灵机计算数论函数。 最后讨论图灵---丘奇论题:每个能行的计算都可以由图灵机来完成。

 

11.1 语言和文法

11.1.1 引言

    英语中,单词能以各种方式进行组合,单词的哪些组合可以构成有效的句子是由英语文法确定的。例如: the frog writes nearly (青蛙写的字很匀称)是一个有效的句子,因为它是由一个名词短语 the frog 接一个动词短语 writes nearly构成的, 其中名词短语the frog 是由冠词the 和名词frog 组成的,动词短语 writes nearly 是由动词writes 和 副词 nearly 组成的。 我们并不在意这是一个毫无意义的句子,因为我们只关心句子的语法,或者形式,而不在意它的语义,或者说含义。我们也要指出, 词的组合swims quickly mathematics 不是有效的句子,因为它不符合英文的文法的规则。

  自然语言(即口头语言),如英语、法语、德语或西班牙语,都极为复杂。事实上,对一个自然语言,看起来不大可能说出它的所有语法规则。将一个语言自动翻译成另一个语言的研究引出了形式语言的概念。与自然语言不同,形式语言是由一组意义明确的语法规定定义的,语法规则不仅对于语言学和自然语言的研究十分重要,而且对于程序设计语言的研究也是很重要。

  我们要用文法描述形式语言的句子。在程序设计语言的应用中,经常出现两类问题:(1)怎么能够确定一组单词是否组合成了形式语言的一个有效句子?(2)怎么才能产生形式语言的一个有效句子。在考虑这两类问题时,文法的使用十分有益。

  在给出文法的技术定义之前,先描述文法的一个例子,这个例子产生英语的一个子集,此英语子集是用下列规则定义的,这些规则描述怎么产生有效的句子,这些规则是:

  1.句子是由一个名词短语后接一个动词短语形成的;

  2.名词短语是由一个冠词接一个形容词再接一个名词组成,或者

  3.名词短语由一个冠词接一个名词组成;

  4.动词短语是由一个动词接一个副词组成,或者

  5.动词短语由一个动词组成,

  6.冠词是a,或者

  7.冠词 the ; 

  8.形容词 是large,或者

  9.形容词是 hungry; 

  10. 名词是 rabbit, 或者

  11.名词是 mathematician; 

  12. 动词是 eats, 或者

  13. 动词是hops; 

  14. 副词是quickly, 或者

  15.副词是wildly,

从这些规则出发,使用一系列替代直到不能再应用规则,就能形成一个有效的句子。例如,沿着下列替代序列就能得到一个有效的句子:

  句子

  名词短语    动词短语

  冠词  形容词    名词    动词短语

  冠词  形容词    名词    动词    副词

  the   形容词    名词    动词    副词

  the   large       名词    动词    副词

  the   large     rabbit    动词    副词

  the  large     rabbit    hops    副词

  the   large        rabbit    hops        quickly

  容易看出,下面都是有效的句子: a hungry mathematician eats wildly, a large mathematician hops, the rabbit eats quickly,等等。 也可以看出,the quickly eats mathematician不是有效句子。

11.1.2  短语结构文法

  在给出文法的形式定义之前,先引入一个小术语。

  定义1  词汇表(字母表)V 是元素的一个有限的非空集合,其元素称为符号,V 上一个词(或句子)是由V 中元素组成的有限长度的串。空串(或零串)是没有符号的串,记为λ, V 上所有词的集合记为V*。 V上的一个语言是V*的一个子集。

  注意  空串λ是不包含任何符号的串,它不同于空集∅。 因而{λ} 是仅包含一个串的集合,此串为空集。

  可以用多种方式来指明语言,一种方式是列出语言中的所有词;还有另一种方式是给出一些标准,使得一个词要在这个语言中,就必须满足这些标准。本节将描述另一种重要方式,使用文法,如使用本节引言中给出的规则集合。为产生词,文法提供下个由各种类型符号组成的集合和一个由规则组成的集合。要确切地说,文法有一个词汇表V, V是一个由符号组成的集合,语言中的成分就是这些符号导出的。词汇表中的某些元素不能由其它符号替换,这些元素称为终始符;词汇表中的其他成分可以用其他符号替换,它们被称为非终结符。终结符和非终结符集合通常分别记为T 和N。在本书引言所给出的例子中,终结符集是{a, the, rabbit, mathematician, hops, eats, quickly, wildly}, 非终结符集是(句子,名词短语,动词短语,形容词,冠词,名词,动词,副词)。词汇表中有一个特殊的元素,我们总是从这个特殊元素开始定义其它的符号,此符号称为初始符,记为S。 在引言的例子中,初始符是句子。由词汇表V 中元素构成的所有串的集合记为V*.指明V*中的串能被什么样的串替代的规则称为文法的产生式,指时w0可以替换w1的产生式记为w0→w1。 在本节引言所给的文法中,我们列举了所有产生式。如果使用刚才定义的记号,其中第一个产生式为句子→名词短语  动词短语。 我们以下列定义作为小结。

  定义2  一个短语结构文法  G=(V, T, S, P)由下列四部分组成:词汇表V, 由V 的所有终结符组成的V的子集合T,V的初始符S, 以及产生式集合P。集合V一T记为N,N中的元素称为非终结符。P中的每个产生式的左边必须至少包含一个非终结符。

  例1  设G=(V, T, S, P), 其中:V={a, b, A, B, S},  T={a, b}, S是初始符,P={S→ABa, A→BB, B→ab, AB→b}。 则G 是一个短语结构文法的例子。

  我们对短语结构文法的产生式所产生的词感兴趣。

 

 

  

posted @ 2017-12-14 21:03  ZQXTXK  阅读(221)  评论(0编辑  收藏  举报