簡介
遞歸可枚舉集合(英語:Recursively enumerable set)是
可計算性理論或更狹義的
遞歸論中的一個概念。可數集合
S被稱為是遞歸可枚舉、計算可枚舉的、半可判定的或可證明的,如果
存在一個
算法,只有當輸入是
S中的元素時,算法才會中止。
或者等價的說,
包含所有可遞歸枚舉集合的複雜性類是RE。
共同的編程意義會暗示出如何轉換一種算法到等價的另一種算法。第一種情況說明了為什麼有時說半可判定的,而第二種情況說明了為什麼叫計算可枚舉的。
定義
可數集合
是遞歸可枚舉的,如果存在一個偏可計算函式
使得
(注意這是偏函式的域的兩種可能意義之一,是在遞歸論中所偏好的定義域。參見在偏函式中的討論。)集合
被成為
co-遞歸可枚舉的或
co-r.e.,如果
的
補集是遞歸可枚舉的。
等價定義
可數集合
被叫做
遞歸可枚舉的,如果存在著一個偏可計算函式,使得
是
的
值域:
被稱為
枚舉函式,因為它關聯上一個枚舉上的
次序到
的每個元素。
詳細解釋
設有一集合
A與一函式
α(
x),如果
α(
x)=0若且唯若
x∈
A,則
α(
x)叫做
A的特徵部分函式,如果還有
α(
x)=1,若且唯若
x∈
A,則
α(
x)叫做
A的特徵全函式,簡稱
特徵函式。如果一集合
A的特徵部分函式(也是特徵函式)是遞歸全函式,則
A叫做
遞歸集;如果一集
A的特徵部分函式是遞歸部分函式,則
A叫做部分遞歸集;部分遞歸集又可定義為某個遞歸部分函式的
定義域。顯然,
A為遞歸集若且唯若:任給
x,
x屬於
A與否,恆可在有限步內判定;
A為部分遞歸集若且唯若:任給
x,如果
x∈
A,則必可在有限步內判定,但如果
x不屬於
A,可能永遠不知道這件事(除非從別的途徑)。因此有下列結果:
②A為遞歸集若且唯若A的補集亦為遞歸集;
③A為遞歸集若且唯若A與它的補集都是部分遞歸集。
最後一點可看出:如果x∈A,因A為部分遞歸集必可在有限步內看出;如果x唘A,因A的補集為部分遞歸集亦可在有限步內看出,從而A必為遞歸集。
遞歸可枚舉集是指它是某個一般
遞歸函式(即遞歸全函式)
ƒ(
x)的值域。因為遞歸全函式
ƒ(
x)的每一個值都可在有限步內算出,可以逐步地計算
從而得出遞歸可枚舉集的所有元素。這便是遞歸可枚舉集名稱的來源。
ƒ(
x)叫做該集的枚舉函式,可能有兩值
ƒ(
α)與
ƒ(
b)是相等的,即容許重複枚舉。如果
ƒ(
x)是不減函式或(嚴格)遞增函式,便叫做不減枚舉或(嚴格)
遞增枚舉。
顯然,如果x在一個遞歸可枚舉集A內,必可在有限步內判定(只須依次計算ƒ(0),ƒ(1),…,便可);但如果x不在A內,而A又不是嚴格遞增枚舉,則很可能人們永遠也不知道這事。根據上述部分遞歸集的特性,可知遞歸可枚舉集都是部分遞歸集。反之,如果A為部分遞歸集,命其特徵部分函式為α(x),當A為空集時,它當然不是任何遞歸全函式的值域,當A非空集時,則在第一階段對α(0),α(1)各計算1步,第二階段對α(0),α(1),α(2)各計算2步,…,第n階段對α(0),α(1),α(2),…,α(n)各計算n步,…,並把首先出現的α(x)=0的根取為ƒ(0),以後在每一階段之末均把在該階段時所已知的α(x)=0的根取為ƒ在新主目處的值,ƒ必為遞歸全函式,而且A的元素恰巧便是ƒ(0),ƒ(1),…的值。可見非空的部分遞歸集必是遞歸可枚舉集。一般還把空集也算作遞歸可枚舉集,這樣兩種集便一致起來了。
可以證明,
A為遞歸可枚舉集若且唯若它是某個原始遞歸函式的
值域,又若且唯若它是某個
初等函式的值域。另一方面,
A為遞歸可枚舉若且唯若它是某個遞歸部分函式的值域,只須仿照上法,在第
n階段計算
ƒ(0),
ƒ(1),…,
ƒ(
n)各
n步,便可把遞歸部分函式的值全部都枚舉出來了。
已有辦法把全體遞歸部分函式全部枚舉起來,因此也可以把它們的定義域或值域全部枚舉起來。設把第
x個遞歸部分函式的
定義域(值域)記為
Wx,則
Wx便是全體部分遞歸集(遞歸可枚舉集)的枚舉(注意其中是有重複的)。如命
K={
x:
x∈
Wx}(即如果
x恰巧在第
x個部分遞歸集之內,便把
x作為
K 的元素),則
K是一個遞歸可枚舉集但不是遞歸集,從而
K 的
補集既不是遞歸集又不是遞歸可枚舉集。這是人們作出的第一個不是遞歸可枚舉集的例子,它也是一個很重要的集,對它已有充分的研究。
此外,如果
ƒ 為遞歸部分函式,
A為遞歸可枚舉,則
ƒ-1(A)也是遞歸可枚舉集。 著名的
希爾伯特第10問題是:有沒有一個能行方法,可決定任給的一個不定方程是否有整數解?這裡P、Q是兩個具有整係數的多項式。這個問題到1970年已經被否定地解決了,即如果把“能行方法”理解為“用計算遞歸全函式的方法”,那末可以證明:這個能行方法是沒有的。因為任何一個部分遞歸集(遞歸可枚舉集)A,都有兩個帶整係數的多項式P、Q,使得 特別是當A即集合K時,也可找出相應的兩個多項式P、Q。既然K不是遞歸的,x屬於K與否是不能遞歸地判定的,那末對於“什麼樣的x能夠使有解”的問題,也就不能遞歸地判定了。 上面關於集合的討論可以推廣到n元關係去。就n元關係R(x1,x2,…,xn)而言,如果R(x1,x2,…,xn)成立若且唯若,則ƒ(x1,x2,…,xn)叫做R(x1,x2,…,xn) 的特徵部分函式,如果還要求:R(x1,x2,…,xn)不成立若且唯若,則ƒ 叫做R的特徵全函式,簡稱
特徵函式。如果關係R(x1,x2,…,xn)的特徵部分函式(也是特徵函式)是一個遞歸全函式,則R叫做遞歸關係;如果R(x1,x2,…,xn)的特徵部分函式是遞歸部分函式,則R叫做部分遞歸關係。有了這些定義以後,以上的討論完全可以推廣到遞歸關係與部分遞歸關係方面來。當然,由於函式的值是一個數而不是n元向量,所以“遞歸可枚舉關係”不能定義為某個遞歸全函式的值域而只能定義為部分遞歸關係。 但是對遞歸關係而論,有下列的結果,這是討論遞歸時所沒有的。
① R(x1,x2,…,xn)為部分遞歸關係若且唯若有一個n+1元遞歸關係或部分遞歸關係 W 使得。
② R(x1,x2,…,xn)為部分遞歸關係若且唯若有一個n+m 元遞歸或部分遞歸關係W 使得。
③ A為部分遞歸集若且唯若有一個二元遞歸或部分遞歸關係W 使得。