Skip to content

部分函数

Partial function

只在定义域某个子集上赋值、允许部分输入无输出的函数。

形式陈述

A,B 为集合。部分函数 f:AB 由定义域 dom(f)A 与一个普通函数 dom(f)B 构成;等价地,其图 GfA×B 满足每个 aA 至多对应一个 bB。当 dom(f)=A 时它就是全函数。若 f:ABg:BC,则 gf 只在那些 adom(f)f(a)dom(g) 的点上有定义。

直觉

部分函数把“没有返回值”建模为函数本身未定义,而不是额外发明一个普通值。它特别适合描述可能不终止的程序、只接受部分输入的解析器以及未必存在的代数运算。

例子与边界

实数上的 x1/x 可视为 RR,定义域为 R{0}。数组查找也可建模为从键到元素的部分函数。部分函数仍必须满足单值性;同一输入允许两个输出的是关系而非部分函数。把未定义统一编码为 可得到 AB{},但只有在 不与合法输出混淆并保留相应语义时才等价。

推论与应用

部分函数连接函数论、可计算性与程序语义:部分可计算函数用“发散”表示未定义,偏代数用它表达只在满足前提时存在的运算,数据库与 API 规范也常借此区分缺失、失败和正常值。

参考资料
  • Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage, 2013,Chs. 0–10。
  • John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation, 3rd ed., Pearson, 2006,Chs. 1–9。