Skip to content

流式字符串转导器

Streaming string transducer · SST

单遍确定读取输入、以有限个字符串寄存器的同步代换累积结果,并在终止时组合输出的模型。

条目类型
模型

形式陈述

流式字符串转导器(SST)由有限控制 Q、输入输出字母表 Σ,Γ、有限寄存器集 X、初态 q0、部分状态转移 δ、寄存器更新 ρ 和终态输出表达式 F 组成。每读一个字母 a,先按 δ(q,a) 更新状态,同时执行代换

ρ(q,a):X(ΓX).

所有右式都用更新前的寄存器值求值,再一次性写回;赋值次序不参与语义。寄存器初值均为 ε。读完整个输入后,只有当前状态的 F(q)(ΓX) 有定义时才成功,把最终寄存器值代入 F(q) 得到输出。

本页允许同一个旧寄存器在一轮更新的多个位置出现,即 copyful SST。它继承有限状态转导器的有限控制与确定输入扫描,但寄存器内容可随输入增长,所以不是把每个寄存器估值当成有限状态。禁止复制旧寄存器会得到 copyless 子类。

直觉

SST 像一位只读一遍输入、同时维护若干可伸长文本片段的编辑者。更新只能连接常量和已有片段,不能检查寄存器内部字符、按长度分支或删除中间某一位;有限控制负责所有条件判断。

同步赋值是模型的核心。如果写 X:=XY, Y:=X,新 Y 取得的是旧 X,而不是已经更新后的 XY。把它当顺序程序执行会在第二个赋值中重复 Y,从第一步起便定义了另一个函数。

例如更新前 X=abY=c,同步执行 X:=XY, Y:=X 后应得到 X=abcY=ab。若误按从左到右赋值,第二句会读到新 X,错误地得到 Y=abc。这一小例足以作为实现同步语义的单步测试。

输出通常延迟到输入结束,由一个表达式规定片段顺序。这不等于机器把任意操作留到最后:扫描过程中每个更新已经不可逆地构造寄存器表达式,终态只做一次有限拼接。

例子与边界

取单寄存器 X,初值 ε,对当前输入字符 a 执行 copyful 更新

X:=XXa.

输入 abc 时,寄存器依次为

εaabaabcaabaabc.

若终态表达式为 X,输出就是 aabaabc。长度递推 Ln+1=2Ln+1L0=0 给出 Ln=2n1;指数增长不是实现偶然,而是旧 X 在右式出现两次造成的复制。

这个例子也是一般 SST 与 copyless SST 的明确分界。有限字母表上的固定 copyless SST 输出长度至多是输入长度的常数倍加常数,因而不可能实现上述族。反过来,寄存器虽可无限增长,SST 仍不能根据“X 是否等于某个先前片段”分支,因为转移函数看不到 X 的内容。

部分性由缺失输入转移或未定义终态表达式给出。若输入读完但 F(q) 未定义,不能把所有寄存器自动连接;寄存器的次序和是否输出必须由 F 明写。空输入同理,只代入初值并检查 F(q0)

推论与应用

一般 copyful SST 能以很小控制图描述指数输出,因此表达力超过 regular string functions。其代数语义可看作由输入驱动的一串字符串代换;这也使等价问题与 HDT0L 序列等价等深层判定问题相连,而不是普通 DFA 等价的状态对搜索。

字符串寄存器适合构造嵌套转义、字段重排和多份派生视图。实现时可用 rope 或表达式 DAG 延迟物化,避免每轮真实复制长字符串;但 DAG 共享只是运行优化,不会把 copyful 语义变成 copyless。

若任务需要正则、线性大小的字符串变换,copyless 流式字符串转导器提供更稳健的限制,并恰好对应确定双向转导器。若确实需要指数展开,则应明确接受输出本身已占指数空间,任何实现都无法用次线性于输出长度的时间打印结果。

寄存器更新也可视为对表达式 DAG 的代换。求值器可以一直保留节点共享,到终态再展开输出;若某个旧节点被 copyful 更新引用两次,共享 DAG 仍很小,但最终打印会遍历它两次。表示压缩与语义输出长度必须分开报告。

参考资料
  • Rajeev Alur and Pavol Černý, “Streaming Transducers for Algorithmic Verification of Single-Pass List-Processing Programs,” POPL 2011, §§2–3.
  • Rajeev Alur and Pavol Černý, “Expressiveness of Streaming String Transducers,” FSTTCS 2010, LIPIcs 8, 2010, §2.
  • Emmanuel Filiot and Pierre-Alain Reynier, “Transducers, Logic and Algebra for Functions of Finite Words,” ACM SIGLOG News 3(3), 2016, §5.
关系图谱4 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

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

上位 / 更一般

暂未标注直接上位概念。

下位 / 直接特例