“对于输入 ,表格先标出每个字符可由哪些变量产生,再逐层组合长度 2、3、4 的区间。若要恢复解析树,应记录产生式和切分点,而非只存布尔值。空串必须依据开始规则单独判断;未先转为 CNF 时,…”
形式陈述 ​
也可写成有限序列
字的前缀、后缀与子串由位置区间定义;“真前缀”通常排除字本身,是否排除空字需按上下文说明。字是有序对象,重复符号和出现位置都属于其结构。
直觉
字是把字母表中的原子按有限顺序排成的一条序列。把它形式化为位置到符号的函数,可以精确谈长度、切片和连接,而不依赖某种具体字符串存储。顺序与重数都重要:01、10 和 001 是三个不同的字。空字虽然没有符号,却是连接运算的单位元,因此不能把它当作“什么都没有而无需纳入集合”。
例子与边界
在 ab 是前缀,ba 是后缀,第二至第三位置形成子串 bb。空字满足
边界是空字与空语言的区别:
推论与应用
字是形式语言的元素,也是有限状态自动机与图灵机读取的有限输入。字符串连接把字组成自由幺半群,长度给出与连接相容的自然数分级。
前缀、后缀和子串结构支撑字符串匹配、词法分析、编码理论与 Myhill–Nerode 区分后缀的定义。形式语言里的 word 是字母序列;Word-RAM 的 machine word 则是固定
压缩索引进一步把字符串视作 bit 串与可导航序列:rank/select在位位置上计数与定位,简洁位向量按 bit 报空间,FM-index从 BWT 表示支持模式搜索。这些页面都保留字符边界、字母表编码和机器字打包三个层次。
同一个字在亚线性模型中还会被分配不同的可见性。Indexing让 Alice 看见整个 bit 字而 Bob 只持索引,输出虽只有一位,通信仍可能线性;位查询模型则让单个算法按位置读取隐藏字,并把读取次数作为成本。性质距离常把两个等长字的 Hamming 差异除以长度,但测试器还需声明可查询坐标和 far 阈值。字的集合论定义没有改变,改变的是谁看见哪些符号以及访问一次如何计费。
参考资料
- Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage, 2013,Ch. 0, strings, length and the empty string。
- John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman, Introduction to Automata Theory, Languages, and Computation, 3rd ed., Pearson, 2006,Ch. 1, strings and Kleene closure。