Skip to content

语言运算

Language operations

通过集合组合、字的连接、有限重复与编码映射,从已有语言构造新语言。

条目类型
定义

形式陈述

K,LΣ 是同一字母表上的语言。并、交、差按通常的集合运算定义,补集必须相对于已固定的全集:

L=ΣL.

字连接逐点提升到集合,得到

KL={uv:uK, vL}.

语言的幂与 Kleene 星定义为

L0={ε},Ln+1=LnL,L=n0Ln,

L+=n1Ln=LL 表示一次或多次连接。反转逐字作用,LR={wR:wL},并满足 (KL)R=LRKR;次序反转是不可省略的。

若先给每个符号指定字 h(a)Γ,这个映射会唯一扩张为保持连接的同态 h:ΣΓ,满足 h(uv)=h(u)h(v)h(ε)=ε。语言的同态像和逆像分别为

h(L)={h(w):wL},h1(K)={wΣ:h(w)K}.
直觉

集合运算只关心一个完整字是否属于语言;连接与星则利用字内部的先后次序。KL 表达“先选择一段符合 K 的字,再选择一段符合 L 的字”,L 表达把这种片段重复任意有限次。所谓任意包括零次,所以空字总在 L 中;所谓有限则表示星不会产生无限字。

一个结果字可能有多种合法切分。若 K=L={a,aa},字 aaa 既可分成 a·aa,也可分成 aa·a。语言连接只记录结果是否存在某种切分,不记录切分见证,更不承诺唯一解析。需要保留语法树或捕获组时,语言集合本身的信息已经不够。

同态把每个输入符号替换成一个固定字,随后保持连接;它适合描述编码、擦除和 token 展开。逆同态从目标约束反推哪些源字会被映入其中。两者看似只是“替换字符串”,在闭包证明中却方向不同:像会合并多个源字,逆像则把一个目标语言拉回整个源空间。

例子与边界

D={0,1,,9}S={ε,+,}。那么 SD+ 描述带可选符号且至少含一位数字的十进制整数字面量。这里 S 是一个确实含三个字的语言,并未借用正则表达式的问号操作符;D+ 排除了只写正负号的输入。若还要禁止前导零,需要再与一个更精确的语言组合,改变示例数字无法补上这条规则。

L={ab},则

L={ε,ab,abab,}.

它不包含 aabb,因为星重复的是整个片段 ab。同样,={ε}:正次数的幂都为空,零次幂仍贡献连接单位元。{ε} 也等于 {ε},但原因是每次选择的片段本身都为空。

连接一般不交换:{a}{b}={ab},而 {b}{a}={ba}。它对并分配,例如 K(LM)=KLKM,却不会对交给出同样的等式;一个结果字在左右两边可能采用不同切分,因此通常只有 K(LM)KLKM

有限闭包不能越过到无限并。每个单点语言 {0n1n} 都是正则语言,但

n0{0n1n}={0n1n:n0}

并不正则。一个语言类对二元并封闭,只能推出任意有限并封闭,不能跨过量词直接推广到可数并。

推论与应用

正则表达式正是以并、连接和 Kleene 星作为递归构造器。正则语言闭包性质进一步说明,有限自动机所识别的语言经过哪些运算仍可由有限状态描述,并给出相应构造。

编译器用连接组织 token 序列,用并组合不同词法规则;协议规格把合法阶段语言连接起来;同态则能把详细事件归并为较粗类别,或把 token 展开成字符编码。每次使用补集或逆像时,都应同时检查字母表与映射的定义域,否则“所有其他输入”的范围会悄然改变。

参考资料
  • John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation, 3rd ed., Pearson, 2006, §§1.1–1.2 and Chapter 3.
  • Jean-Éric Pin, Mathematical Foundations of Automata Theory, 2022, Chapters I–II.
关系图谱14 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

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

被这些条目使用