Skip to content

定义Definition

字符串连接

施工中 · 内容逐步修订

String concatenation

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

形式陈述 ​

若 u=a1⋯am、v=b1⋯bn 是 Σ 上的字,则其连接定义为

uv=a1⋯amb1⋯bn.

连接是 Σ∗ 上的二元运算,满足结合律 (uv)w=u(vw),空字是双侧单位元 εu=uε=u,并有长度可加性 |uv|=|u|+|v|。因此 (Σ∗,⋅,ε) 构成自由幺半群。一般没有交换律。

形式上,uv:{1,…,m+n}→Σ 在前 m 个位置取 u,在其余位置取平移后的 v。字连接还满足左右消去律:uw=vw⇒u=v,wu=wv⇒u=v。以前式为例,先由长度相等得到 |u|+|w|=|v|+|w|,故 |u|=|v|;再逐位比较共同前 |u| 个位置,就得到 u=v。左侧共同前缀的消去同理,比较移去该前缀后的对应位置。

对语言 K,L⊆Σ∗,语言连接定义为 KL={uv:u∈K,v∈L},它由字连接逐点提升而来。

直觉

连接就是保留两段内部顺序,把第二段接到第一段末尾。结合律意味着连续拼接时括号不影响最终字,所以可以无歧义写 uvw;但先后次序通常不可交换。称其“自由”是因为除了结合律和单位元外,字之间没有额外关系:每个字都由符号序列唯一决定。把连接从单个字提升到语言后,一次操作会枚举所有左右组合,这与集合并集完全不同。

例子与边界

在 {0,1} 上,01 与 10 连接得 0110,反向连接得 1001,说明不交换。01 的三次幂是 010101,而 u0=ε。

语言 K={a,ab}、L={b,ε} 的连接需要逐对拼接:ab 来自 a⋅b,a 来自 a⋅ε,abb 来自 ab⋅b,而 ab⋅ε 又得到 ab。四对输入只产生三个不同结果,故 KL={ab,a,abb};集合不记录重复次数,所以不能把 |KL| 一概写成 |K||L|。边界上,∅L=∅,但 {ε}L=L;空语言与只含空字的语言在连接中行为完全不同。

不要把字的消去律直接提升给语言。取 K={ε,a}、L={ε}、W={a}∗,有 KW=W=LW,但 K≠L。原因是语言连接允许每个结果采用不同切分;共同右因子不是一段固定字,长度论证不能逐个锁定同一个后缀。

若字母表只有一个符号,则所有字形如 an,连接恰好交换。连接结果也不自带切分标记,例如 abc=(a)(bc)=(ab)(c);“自由”不是说任意分解唯一,而是说字母上的任意映射都可唯一延拓为幺半群同态。

推论与应用

字符串连接支撑语言运算中的幂与 Kleene 星,也给正则表达式的串接构造提供语义。文法推导、自动机路径标签和程序输入编码都依赖其结合性。

“自由”的延拓可以直接计算:若给每个字母指定一个权重 h(a),把目标运算取为整数加法,那么唯一保持连接的延拓就是把各位置权重相加。例如 h(a)=2,h(b)=3 时,h(aba)=2+3+2=7,且 h(uv)=h(u)+h(v)、h(ε)=0。目标也可以是矩阵乘法等不交换运算,此时必须按原字的次序相乘。这就是形式语言同态与代数自动机理论使用自由幺半群泛性质的方式。

参考资料
  • 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。
  • Alberto Pettorossi, Automata Theory and Formal Languages, 3rd ed., Aracne, 2011,§1.1,pp. 9–10,字与语言连接。
关系图谱39 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:依赖

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

上位 / 更一般

下位 / 直接特例

暂未标注直接特例。

类型化关系

使用的工具

被这些条目使用