计算的数学理论作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.请论述原始递归函数、递归函数、递归集合、递归可枚举集合、图灵可计算、0-型语言之间的关系。
答:原始递归函数:在可计算性理论中,原始递归函数对计算的完全的形式化而言是形成重要构造板块的一类函数。它们使用递归和复合作为中心运算来定义,并且是递归函数的严格的子集,它们完全是可计算函数。通过补充允许偏函数和介入无界查找运算可以定义出递归函数的更广泛的类。
原始递归函数可以用总是停机的图灵机计算,而递归函数需要图灵完全系统。
原始递归函数的集合在计算复杂性理论中叫做PR。
递归函数:在数理逻辑和计算机科学中,递归函数或μ-递归函数是一类从自然数到自然数的函数,它是在某种直觉意义上是"可计算的"。事实上,在可计算性理论中证明了递归函数精确的是图灵机的可计算函数。递归函数有关于原始递归函数,并且它们的归纳定义(见下)建造在原始递归函数之上。但是,不是所有递归函数都是原始递归函数—最著名的这种函数是阿克曼函数。其他等价的函
递归集合:在可计算性理论中,一个自然数的子集被称为递归的、可计算的或具可判定性,如果我们可以构造一个算法,使之能在有限时间内终止并判定一个给定元素是否属于这个集合。更一般的集合的类叫做递归可枚举集合。这些集合包括递归集合,对于这种集合,只需要存在一个算法,当某个元素位于这个集合中时,能够在有限时间内给出正确的判定结果,但是当元素不在这个集合中时,算法可能会永远运行下去(但不会给出错误答案)。
递归可枚举集合:递归可枚举集合是可计算性理论或更狭义的递归论中的一个概念。可数集合S被称为是递归可枚举、计算可枚举的、半可判定的或可证明的,如果:
(1)算法,只有当输入是S中的元素时,算法才会中止。或者等价的说。
(2)存在一个算法,可以将S中的成员枚举出来。也就是说该算法的输出就是S 的成员列表: s1, s2, s3, ... 如果需要它可以永远运行下去。
包含所有可递归枚举集合的复杂性类是RE。
图灵可计算:一个语言L是可以被图灵机所枚举(enumerate)的,如果存
在一个图灵机,使得输入是L中的串时,M输出“接受”;而对非L中的串,M 输出“拒绝”或不停机。而一个语言L'是可以被图灵机所决定(decide)的,如果存在一个图灵机M',使得输入是L中的串时,M输出“接受”;而对非L中的串,M输出“拒绝”。注意这里的区别在于,对于图灵机决定的语言,我们需要在所有输出上,该图灵机都要停机。
0-型语言:设G=(VN,VT,P,S),如果它的每个产生式α→β是这样一种结构:α∈(VN∪VT)*且至少含有一个非终结符,而β∈(VN∪VT)*,则G是一个0型文法。0型文法也称短语文法。一个非常重要的理论结果是:0型文法的能力相当于图灵机(Turing)。或者说,任何0型文语言都是递归可枚举的,反之,递归可枚举集必定是一个0型语言。0型文法是这几类文法中,限制最少的一个,所以我们在试题中见到的,至少是0型文法。
2.理论上均以数论函数(自然数集合上的函数)讨论计算问题,但实际应用中必然涉及实数集合上的函数的计算问题。如何基于数论函数可计算来讨论实数集合上的可计算问题?
答:定义在实数集合上的函数,是不是可计算是个十分复杂的问题。如果只是死板的套用已有的自然数集合上的函数的计算问题的讨论,必然会得到不精确的结果,甚至是相反的结果。定义在全体实数上的可计算函数是一个很重要的概念。因此我想到了三点可行的方法:
(1)第一个途径是首先要定义可计算实数的索引。通过这个索引可以很容易的将实数与自然数建立对应关系。想要确定实数函数y=f(x)是不是可以计算就要看是否存在一个自然数的(部分)可递归函数将可计算实数x的索引对应到可计算实数y的指标。这样一来对实数函数的研究依赖于对自然数函数的研究;
(2)第二个定义可计算的实数函数的途径是以逼近为基础的。一个实数函数是可以计算的如果它既是序列可计算的而且一致连续的。这个途径使用的条件过强以至于很多有用的实数函数成为不可计算的实数函数。例如,谓词""和" "就是不可以计算的因为它们是不连续的函数。
(3)一个基于稳定图灵机的可计算实数函数的定义。其中的定义不需要用
到自然数的(部分)可递归函数。根据定义很多常用实数函数特别是一些不连续的常用实数函数都是可以计算的。用以上定义来讨论可计算实数函数的性质比原来的定义要方便得多。作为特例,我们选取0-1之间的实数,来做加法运算。
已知自然数上的函数的理论,题目需要解决实数集合上的计算问题,因此,最直接的思路就是将实数函数计算问题中的各个问题使用已有的函数计算理论来进行表示和转换,其中一次包括可计算实数,可计算实数序列,以及最后的可计算实数函数。首先,使用有理数的可计算定义来定义可计算实数,已知
(1)有理数序列{}n r 叫做可计算的,如果存在递归函数,,αβσ,使得
{}()()(1),()0()
n n n r n n σαββ=-≠。 (2)有理数序列{}n r 可收敛到x ,当且仅当存在递归函数α,使得对任意自然数m ,当()n m α≥时,有12
n m r x -≤。α称作这个序列的收敛模。 可计算实数可以定义为,当且仅当存在可计算的有理数序列收敛到x 实数x 叫做可计算的。
然后,定义可计算的实数序列,已知:
(1)双下标有理数序列{}nk r 是可计算的,如果1()2(){}n l n l l r 是可计算的。即,存在递归函数,,αβσ,使得0((,))00((,)){}(1)((,))
n k nk n k r n k σφαφβφ=-,其中0φ是配对函数,1π和2π是它的逆函数。
(2)定义五:{}nk r 能收敛到实数序列{}n x ,如果存在递归函数α,使得1(,)2nk n m
k n p r x α≥⇒-≤。α叫做这个序列的收敛模。 可以推出可计算实数序列的定义:如果存在可计算的双下标有理数序列{}nk r 能收敛到实数序列{}n x 实数序列{}n x 是可计算的,。
最后,定义可计算实数函数,已知:
(3)闭区间I 上的函数()f x 叫做可计算的,如果满足如下条件,保证序列可计算(即若{}n x 是可计算的,那么{()}f x 也是可计算的),并具有一致连