Skip to content

定义Definition

部分可计算函数

Partial computable function

允许机器在函数未定义的输入上不停机的部分函数。

形式陈述 ​

部分函数 f:Σ∗⇀Σ∗ 称部分可计算,若存在图灵机满足:当 x∈dom(f) 时停机并输出 f(x);当 x∉dom(f) 时发散。本页采用“停机即产生函数值”的输出约定,因此域外不是任选停机或不停机,而是必须没有终止输出。全定义的部分可计算函数正是可计算全函数。

其定义域恰是某个可识别语言:模拟计算并在停机时接受,就识别了定义域。反之,给定语言的识别器,模拟它;接受时输出固定字 1,拒绝时转入无限循环,原本不停止时继续模拟,便得到恰在该语言上有定义的部分函数。把拒绝转换成发散是这个对应中不可省略的一步。

直觉

部分可计算函数允许算法在定义域之外永不返回,这精确表达了搜索式计算:找到见证时输出,找不到时可能无限继续。发散不是普通错误码,而是“没有结果”的计算行为;它把“未定义”与“返回某个特殊错误值”严格区分,后者仍是一个全函数值,前者则对应没有终止计算。因此,部分可计算性能够刻画可能不停机的真实程序,而不必为每个输入伪造输出;许多自然程序首先以这种形式出现,再通过额外证明确认它在目标输入域上总停机。

例子与边界

令 f(P,x) 在程序 P 对输入 x 停机时返回其输出,否则未定义;这是通用函数模拟给出的部分可计算函数,但其定义域就是停机语言,不可判定。若机器在域外明确拒绝并停机,则仍计算一个全函数(例如带错误标记的结果),不是靠发散定义的部分函数。部分可计算函数相等要求定义域相同且域内输出相同;仅在共同终止输入上一致不够。

定义 φ(M,w):模拟 M(w),若停机则输出其步数,否则不定义。该函数可由通用模拟器部分计算,但若能把它扩成一个同时正确判断“不定义”的全可计算过程,就会判定停机问题。最小化算子也常产生部分函数:搜索最小 y 使谓词 R(x,y) 成立,若不存在这样的 y,搜索不终止。

当 R 是可判定谓词时,这个搜索可明确写成依次测试 y=0,1,2,…,第一次为真就返回 y。取 R(x,y) 为 y2=x:输入 9 依次排除 0,1,2 后返回 3;输入 2 则永远没有成功测试。若把测试器换成仅可识别的 R,第一个不成功的候选就可能卡住,所以这项顺序最小化的前提必须保留。

若谓词及搜索上界都能原始递归地计算,有界搜索在失败时返回约定值,仍可属于原始递归函数类;去掉界则需要另行证明终止。有界与无界的差别不能只从程序中是否出现循环判断。

不要把部分可计算误解为“机器可能随机失败”或“实现有 bug”。定义域本身是数学对象,且在定义域内必须给出确定的正确值;多值关系和概率输出属于其他模型。

推论与应用

部分可计算性是递归可枚举集、通用程序与不可判定性的统一语言。可接受编号把这些偏函数排成可被通用解释器处理的有效序列,而$s$-$m$-$n$ 定理在索引层完成参数固化;两者不改变函数可能发散的语义。可识别语言可由部分特征函数刻画——成员返回 1,非成员允许不停止——因此部分可计算性正是递归可枚举现象的函数版本。

参考资料
  • Hartley Rogers Jr., Theory of Recursive Functions and Effective Computability, MIT Press, 1987,Chs. 1–14。
  • Robert I. Soare, Turing Computability: Theory and Applications, Springer, 2016,Chs. 1–5。
关系图谱25 个相邻概念 · 4 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
分类位置

上位 / 更一般

下位 / 直接特例

类型化关系

使用的工具

被这些条目使用

并列辨析