Skip to content

字符串连接

String concatenation

把第二个字的符号接在第一个字之后形成的新字及相应结合运算。

形式陈述

u=u1umv=v1vnΣ 上的字,其连接为

uv=u1umv1vn.

形式上,uv:{1,,m+n}Σ 在前 m 个位置取 u,其余位置按平移后的索引取 v。连接满足

(uv)w=u(vw),εu=uε=u,|uv|=|u|+|v|.

因此 (Σ,,ε) 是自由幺半群。字符串还满足左右消去律:uw=vwu=vwu=wvu=v

直觉

连接就是把第二段原样接到第一段末尾;不需要插入分隔符,所以切分位置来自已知长度,而不是结果字符串本身自动标注。

例子与边界

u=01v=10,则 uv=0110vu=1001,说明连接一般不交换;若字母表只含一个符号,则所有字形如 an,此时连接恰好交换。ε 是单位元而非“空格字符”。连接后的字可能有多种分解,例如 abc=(a)(bc)=(ab)(c);自由幺半群的“自由”并不表示分解成任意字唯一,而表示从字母上的任意映射可唯一延拓为幺半群同态。

推论与应用

连接生成语言乘积、Kleene 星、语法推导和流式解析;自由幺半群的泛性质连接形式语言与代数自动机理论。

参考资料
  • Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage, 2013,Ch. 0, concatenation and string operations。
  • John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation, 3rd ed., Pearson, 2006,Ch. 1, concatenation and free monoids。