第5章递归函数论
递归函数是数论函数,以自然数为研究对象,定义域和值域均为自然数。它为能行可计算函数找出各种理论上的、严密的类比物,即某个函数能否用若干可计算函数通过某种已有的算法(如迭置或算子)在有限步内递归产生,若能,说明该函数为可计算函数,否则为不可计算函数,因此,递归函数论又称为可计算性理论。
下面举几个例子说明函数的可计算性。
例5.1: g(n)=n表示取自然数n的平方根的整数部分。
将n依次与12,22,32,…作比较,总可求得g(n)的值,所以g(n)是可计算的。
例5.2: g(n)=0π的展开式中有n个连续的9
1否则
因π的展开式是一个无穷序列,要计算上述函数可能是一个无限过程,故函数g(n)为不可计算函数。
5.1数论函数和数论谓词〖1〗5.1.1数论函数定义5.1: 数论函数是指以自然数集为定义域及值域的函数。
下面简单介绍常用的数论函数,其中x、y均为自然数域中的变元。
x y指x与y的和。
xy指x与y的积。
x·-y指x与y���算术差,即x≥y时,其值为x-y,否则为0。
x··-y指x与y的**差,即大数减小数。
x指x的平方根的整数部分。
x/y指x与y的算术商。
rs(x,y)指y除x的余数,约定y=0时,rs(x,y)=x。
dv(x,y)指x与y的*大公约数,约定xy=0时,其值为x y。
lm(x,y)指x与y的*小公倍数,约定xy=0时,其值为0。第5章递归函数论离 散 数 学I(x)=x指函数值与自变量的值相同,称为幺函数。
Imn(x1,x2,…,xn,…,xm)=xn,即函数值与第n个自变量的值相同,此函数称为广义幺函数。
O(x)=0,即函数值永为0,称为零函数。
S(x)=x 1,称为后继函数。
D(x)指x的前驱,称为前驱函数。当x=0时,其值为0;当x>1时,其值为x-1。
Ca(x)=a,即函数值永为a,这个函数称为常值函数。
函数xNy、xN2y的定义如下: xNy=x当y=0时
0当y≠0时xN2y=0当y=0时
x当y≠0时特例,当x=1时有Ny=1当y=0时
0当y≠0时N2y=0当y=0时
1当y≠0时
eq(x,y)=0当x=y时
1当x≠y时特别地,把广义幺函数、零函数和后继函数称为本原函数,它们是构造函数的*基本单位。
5.1.2数论谓词和特征函数1. 数论谓词和特征函数在第3章中提到的谓词是以个体为定义域,以真假为值域的函数,而含有变元的语句是指含有个体变元的谓词填式或由它们利用真值联结词和量词组成的式子,即谓词演算公式。
定义5.2: 数论谓词是指以自然数集为定义域,以真假为值域的谓词。由数论谓词利用联结词和量词构成的式子称为数论语句。例如,“2为质数”“8>7且9为平方数”等均为数论语句。
定义5.3: 设A(x1,x2,…,xn)是一个含有n个变量的语句,f(x1,x2,…,xn)是一个数论函数,若对于任何变元组均有
A(x1,x2,…,xn)为真时,f(x1,x2,…,xn)=0;
A(x1,x2,…,xn)为假时,f(x1,x2,…,xn)=1。
则称f(x1,x2,…,xn)是语句A(x1,x2,…,xn)的特征函数,记为ctA(x1,x2,…,xn)。
定理5.1: 任何一个语句均有**的特征函数。
证明:
(1) 存在性。对于任何一个语句A,恒可以按如上定义一个函数f(x1,x2,…,xn),此函数必为语句A的特征函数,故存在性得证。
(2) **性。设f和g为语句A的两个特征函数,由上定义知
当A(x1,x2,…,xn)为真时,f(x1,x2,…,xn)=g(x1,x2,…,xn)=0当A(x1,x2,…,xn)为假时,f(x1,x2,…,xn)=g(x1,x2,…,xn)=1再由函数的相等性知,f(x1,x2,…,xn)=g(x1,x2,…,xn),即语句A(x1,x2,…,xn)的特征函数是**的。
定理5.2: 如果有一个函数f(x1,x2,…,xn)满足下列条件: A(x1,x2,…,xn)为真当且仅当f(x1,x2,…,xn)=0则N2f(x1,x2,…,xn)为语句A(x1,x2,…,xn)的特征函数。
证明: 当A(x1,x2,…,xn)为真时,由于f(x1,x2,…,xn)=0,所以N2f(x1,x2,…,xn)=0;当A(x1,x2,…,xn)为假时,由已知条件知f(x1,x2,…,xn)≠0,所以N2f(x1,x2,…,xn)=1。
由特征函数的定义知N2f(x1,x2,…,xn)为语句A(x1,x2,…,xn)的特征函数。
此时把函数f(x1,x2,…,xn)称为A(x1,x2,…,xn)的准特征函数。
2. 简单语句的特征函数
表5.1是一些包含变量的语句的特征函数。 表5.1一些包含变量的语句的特征函数
语句特 征 函 数语句特 征 函 数x为0N2xx不等于0Nxx为y的倍数N2rs(x,y) x小于yN2((x 1)·-y)x与y互质N2(dv(x,y)··-1)3. 复合语句的特征函数
定理5.3: 设A、B为任意两个语句,则有ctA=1·-ctA=NctA
ct(A∨B)=ctA·ctB=min(ctA,ctB)
ct(A∧B)=N2(ctA ctB)=max(ctA,ctB)
ct(A→B)=ctB·NctA
ct(AB)=ctA··-ctB例5.3: 给出“a为b的倍数且a为平方数”的特征函数。
解: “a为b的倍数”的特征函数为N2rs(a,b),“a为平方数”的特征函数为N2(a·-\[a\]2)
由定理5.3知原句的特征函数为N2(N2rs(a,b) N2(a·-\[a\]2))例5.4: 给出“x≥2且由a除尽x可推出a=1或a=x”的特征函数。
解: 令
A表示“x≥2”,其特征函数为N2(2·-x);
B表示“a除尽x”,其特征函数为N2rs(x,a);
C表示“a=1”,其特征函数为N2(a··-1);
D表示“a=x”,其特征函数为N2(a··-x)。
原句译为A∧(B→(C∨D))其特征函数为ct(A∧(B→(C∨D)))=N2(ctA ctC·ctD·NctB)则原句的特征函数为N2(N2(2·-x) N2(a··-1)·N2 (a··-x)·Nrs(x,a))下面简单讨论用量词构成的语句的特征函数。
x→nA(x)表示对于任何0到n的一切x均使得A(x)成立。此量词称为受限全称量词。
x→nA(x)表示对于任何0到n至少有一个x使A(x)成立。此量词称为受限存在量词。
定理5.4: 设A(x)为任意一个含有x的语句,则有
(1) ct(x→nA(x))=max(ctA(0),ctA(1),ctA(2),…,ctA(n))
=N2(ctA(0) ctA(1) ctA(2) … ctA(n))
(2) ct(x→nA(x))=min(ctA(0),ctA(1),ctA(2),…,ctA(n))
=ctA(0)·ctA(1)·ctA(2)·…·ctA(n)
5.2函数的构造
前面介绍了一些常用的简单函数,这些简单函数均可采用直接定义的方法来产生。显然直接定义的方法只能产生少量简单的函数,而对于绝大多函数来说,无法用直接定义的方法产生,为此,必须利用已定义的函数(称为旧函数)来构造新函数,这种方法称为派生法。派生法有两类: 一类是迭置法,另一类是算子法。
5.2.1迭置法
定义5.4: 设新函数在某一变元处的值与诸旧函数的n个值有关,如果n不随新函数的变元组的变化而变化,则称该新函数是由旧函数利用迭置而得的。
例如,设有函数S(x),a为常数。现构造一元函数Sa(x),显然Sa(x)在x0处的值与S(x)在Sa-1(x0),Sa-2(x0),…,S(x0),x0等a个值有关,而且a为常量与x0无关,所以Sa(x)可由S(x)利用迭置而得。
1. (m,n)标准迭置
设有一个m元函数f(x1,x2,…,xm ),m个n元函数g1(x1,x2,…,xn)、g2(x1,x2,…,xn)、…、gm(x1,x2,…,xn),由f和gi(i=1,2,…,n)构造如下的函数: h(x1,x2,…,xn)=f(g1(x1,x2,…,xn ),g2(x1,x2,…,xn ),…,
gm(x1,x2,…,xn))称为(m,n)标准迭置。称函数h是由m个g对f作(m,n)标准迭置而得的,简记为: h(x1,x2,…,xn)=f(g1,g2,…,gm)(x1,x2,…,xn)注意,通常的迭置并不满足上述条件,但可以采用本原函数把它们化为(m,n)标准迭置。
例5.5: 利用本原函数把下面的迭置化为(m,n)标准迭置。h(x1,x2,x3,x5,x6)=f(g1(x1,3),4,g2(x2,x3),x5,g3(x6,x2)) 解: h(x1,x2,x3,x5,x6)=f(h1,h2,h3,h4,h5)(x1,x2,x3,x5,x6)
其中: h1(x1,x2,x3,x5,x6)=g1(I51,S3OI51)(x1,x2,x3,x5,x6)
h2(x1,x2,x3,x5,x6)=S4OI51(x1,x2,x3,x5,x6)
h3(x1,x2,x3,x5,x6)=g2(I52,I53)(x1,x2,x3,x5,x6)
h4(x1,x2,x3,x5,x6)=I54(x1,x2,x3,x5,x6)
h5(x1,x2,x3,x5,x6)=g3(I55,I52)(x1,x2,x3,x5,x6)故函数h(x1,x2,x3,x5,x6)是由函数h1、h2、h3、h4、h5对f作(5,5)标准迭置而得的。
2. 凑合定义法
所谓凑合定义法是指如下构造函数的方法: h(x1,x2,…,xn)=f1(x1,x2,…,xn)当A1(x1,x2,…,xn)为真时
f2(x1,x2,…,xn)当A2(x1,x2,…,xn)为真时
fk(x1,x2,…,xn)当Ak(x1,x2,…,xn)为真时称新函数h由旧函数f1,f2,…,fk及数论语句A1,A2,…,Ak利用凑合定义而得。注意,数论语句A1,A2,…,Ak互相不可兼,即对任何一个变元组(x1,x2,…,xn),有且仅有一个条件Ai成立。
可以看出,此种定义方法不利于计算机的符号处理,为此,利用前面定义的一些简单函数,如xNy等函数,把新函数化归为迭置。即h(x1,x2,…,xn)=f1(x1,x2,…,xn)·NctA1(x1,x2,…,xn)
f2(x1,x2,…,xn)·NctA2(x1,x2,…,xn) …
fk(x1,x2,…,xn)·NctAk(x1,x2,…,xn)例5.6: **凑合定义法定义函数lm(x,5),并把它化为迭置。
解:
lm(x,5)=x当x为5的倍数时
5x当x不为5的倍数时
根据凑合定义法知lm(x,5)=xNN2rs(x,5) 5xNNrs(x,5)
=xNrs(x,5) 5xN2rs(x,5)
=xNrs(x,5) xN2rs(x,5) 4xN2rs(x,5)
=x(Nrs(x,5) N2rs(x,5)) 4xN2rs(x,5)
=x 4xN2rs(x,5)5.2.2算子法
定义5.5: 设新函数在某一变元组处的值与诸旧函数的n个值有关,如果n随新函数的变元组的变化而变化,则称该新函数是由旧函数利用算子而得的。
例如,设有函数S(x),现构造函数Sy(x),显然Sy(x)在(x0,y0)处的值与S(x)在Sy0-1(x0),Sy0-2(x0),…,S(x0),x0等y0个值有关,而且y0随着变元组(x0,y0)的变化而变化,所以Sy(x)可由S(x)利用算子而得。
算子的类型很多,下面介绍迭函算子和原始递归式两种算子。
1. 迭函算子
定义5.6: 设有一个二元函数A(x,y)和一个一元函数f(x),利用它们构造如下函数: g(0)=f(0)
g(1)=A(g(0),f(1))=A(f(0),f(1))
g(2)=A(g(1),f(2))=A(A(f(0),f(1)),f(2))=A2(f(0),f(1),f(2))
g(n 1)=A(g(n),f(n 1))=An 1(f(0),f(1),…,f(n))显然,g(n)的值依赖于函数A(x,y)和函数f(x)。若把A(x,y)固定,而把函数f(x)看作被改造函数,则称g(n)是由旧函数f(x)利用迭函算子而得的。例如,把A分别固定为加法和乘法时可得不同的迭函算子。
(1) 迭加算子: 取A为加法,记为∑x→n。例如: ∑x→nf(x)=f(0) f(1) … f(n)(2) 迭乘算子: 取A为乘法,记为∏x→n。例如: ∏x→nf(x)= f(0)×f(1)×…×f(n)2. 原始递归式
递归的概念在前面已经多次提到,如阶乘的函数n!=1 当n=0时
n(n-1)! 当n≥1时有了此例子,下面来定义原始递归式。
(1) 不含参数的原始递归式: g(0)=a
g(n 1)=B(n,g(n))其中,a为常数,B(x,y)为已知函数。此式称为不含参数的原始递归式的标准形式。
例如,g(n)=n!可用递归式表示如下: g(0)=1
g(n 1)=(n 1)×g(n)=B(n,g(n))其中,函数B(x,y)为×(SI21,I22),它是已知函数。
(2) 含参数的原始递归式:g(u1,u2,…,uk,0)=A(u1,u2,…,uk)
g(u1,u2,…,uk,n 1)=B(u1,u2,…,uk,n,g(u1,u2,…,uk,n))其中,A(u1,u2,…,uk)和B(u1,u2,…,uk,x,y)为已知函数。此式称为含参数的原始递归式的标准形式。
5.2.3原始递归函数1. 原始递归函数的构造方法根据上面介绍的内容,可知构造原始递归函数的方法如下:
(1) 本原函数为原始递归函数。
(2) 对已建立的原始递归函数利用迭置而得的函数仍为原始递归函数。
(3) 对已建立的原始递归函数利用原始递归式而得的函数仍为原始递归函数。
所以,原始递归函数是由本原函数出发,利用迭置和原始递归式而得的函数。
2. 原始递归函数的构造过程
下面是若干递归函数的例子,以便说明原始递归函数的构造过程,其他函数可依此类推。
(1) S(x)=x 1,为本原函数。
(2) Imn(x1,x2,…,xn,…,xm)=xn,为本原函数。
(3) f(x,y)=x y。
可用原始递归式表示如下: f(x,0)=x
f(x,y 1)=x y 1=B(x,y,f(x,y))其中,B为SI33,它们为函数的迭置。
(4) f(x,y)=xy。
可用原始递归式表示如下: f(x,0)=x0=1
f(x,y 1)=xy 1=xy×x=B(x,y,f(x,y))其中,B为×(I33,I31),它们为函数的迭置。
(5) f(x)=ax。
可用原始递归式表示如下: f(0)=a0=1
f(x 1)=ax 1=ax×a=B(x,f(x))其中,B为×(I22,SaOI21),它们为函数的迭置。
(6) f(x)=D(x)。
可用原始递归式表示如下: f(0)=D(0)=0
f(x 1)=D(x 1)=x=B(x,f(x))其中,B为I21。
(7) max(x,y)。
因为max(x,y)=x (y·-x),又因为x y和x·-y是原始递归函数,由它们的迭置所得的函数仍为原始递归函数。故max(x,y)为原始递归函数。
5.3典型例题
例5.7: 给出“x为质数”的特征函数。
解: “x为质数”可理解为2至x-1都不是x的因子。
其特征函数可表示为N2∑t→xNrs(x,t)··-2例5.8: 把下面利用凑合定义法定义的函数化为迭置。f(x)=x当x≤10时
2x当10<x≤20时
3x当x>20时解: “x≤10”的特征函数为N2(x·-10)。
“10<x≤20”的特征函数为N2(N2(11·-x) N2(x·-20))。
“x>20”的特征函数为N2(21·-x)。
将上述函数化为迭置: f(x)=x·NN2(x·-10) 2x·NN2(N2(11·-x)
N2(x·-20)) 3x·NN2(21·-x)
=x·N(x·-10) 2x·N(N2(11·-x)
N2(x·-20)) 3x·N(21·-x)习题
5.1写出下列函数的特征函数。
(1) a大于或等于b。
(2) a为b、c的公倍数。
(3) x异于0且x为平方数。
(4) a为非负数或a为奇数。
(5) 在a、b间的一切x均使得A(x)成立。
(6) 在a、b间有一个x使得A(x)成立。
5.2把下列函数化为标准迭置。
(1) h(x1,x2,x3,x5)=f(g1(x1,x3,3),a,g2(x2,x3),x5) (其中a为正整数)
(2) h(x1,x2,x3,x4)=f(x1,3,g1(x2,x3),g2(x4,2))
5.3用凑合定义法定义函数dv(x,5),并把它化为迭置。
5.4证明下列函数为原始递归函数。
(1) xy
(2) rs(x,2)
(3) O(x)
(4) min(x,y)
(5) x··-y
(6) ∏x→nf(x)