偏递归函数
偏递归函数是可计算性理论中研究部分可计算函数的重要概念。让我从基础概念开始,逐步深入讲解这个主题。
基本定义与动机
偏递归函数是部分函数f: ℕᵏ → ℕ,其中ℕ表示自然数集合。这里的"偏"意味着函数可能在某些输入上没有定义(即无输出)。这与全递归函数(处处有定义的递归函数)形成对比。研究偏函数的动机在于:许多自然计算过程在某些输入上可能不会终止,因此我们需要能够描述这类"部分可计算"的函数。
基础函数
偏递归函数由三类基础函数构建而成:
- 零函数:Z(x) = 0,对所有x ∈ ℕ
- 后继函数:S(x) = x + 1
- 投影函数:Pᵢᵏ(x₁,...,xₖ) = xᵢ,其中1 ≤ i ≤ k
这些基础函数都是全函数(处处有定义),构成了构建更复杂偏递归函数的基础。
构建操作
偏递归函数通过三种基本操作从基础函数构建:
-
复合:若g是m元偏递归函数,h₁,...,hₘ是k元偏递归函数,则f(x₁,...,xₖ) = g(h₁(x₁,...,xₖ),...,hₘ(x₁,...,xₖ))也是偏递归函数。当所有hᵢ在输入上有定义且g在(h₁(x),...,hₘ(x))上有定义时,f才有定义。
-
原始递归:若g是k元偏递归函数,h是(k+2)元偏递归函数,则通过原始递归定义的函数f:
f(x₁,...,xₖ,0) = g(x₁,...,xₖ)
f(x₁,...,xₖ,y+1) = h(x₁,...,xₖ,y,f(x₁,...,xₖ,y))
也是偏递归函数。f在某个输入上有定义当且仅当相应的递归计算过程终止。 -
μ-递归(极小化):若g是(k+1)元偏递归函数,则通过μ-递归定义的函数f:
f(x₁,...,xₖ) = μy[g(x₁,...,xₖ,y) = 0]
表示最小的y使得g(x₁,...,xₖ,y) = 0且对所有z < y,g(x₁,...,xₖ,z)有定义且不为0。如果不存在这样的y,则f在(x₁,...,xₖ)上无定义。
与图灵机的关系
偏递归函数与图灵机计算模型密切相关:一个函数是偏递归函数当且仅当它是图灵可计算的。这意味着对于任何偏递归函数,存在一个图灵机在函数的定义域内能够计算它,在定义域外则不停机。
递归可枚举集
偏递归函数的定义域具有重要性质:一个集合A ⊆ ℕᵏ是递归可枚举的当且仅当它是某个偏递归函数的定义域。这表明偏递归函数的定义域恰好对应着图灵机能够半判定的集合。
通用函数定理
存在通用偏递归函数Φ(e,x),使得对于任何偏递归函数f,存在自然数e(称为f的索引),使得对所有x,f(x) ≃ Φ(e,x),其中≃表示两边要么都无定义,要么都有定义且相等。这个定理是递归定理和程序可解释性的基础。
不可判定性结果
基于偏递归函数,我们可以证明重要的不可判定性结果:
- 停机问题不可判定:集合K = {e | Φ(e,e)有定义}是递归可枚举但不是递归的
- 赖斯定理:任何非平凡的偏递归函数性质都是不可判定的
偏递归函数理论为理解计算的本质界限提供了严密的数学框架,是现代可计算性理论的基石之一。