用户: Kokic/正则表达式与矩阵
1起始的物语
字母表 上具两个状态的自动机
其箭头可写为如下正则表达式
注 1.1. 右侧的表达式是直观的, 例如 匹配如下字符串
"", "a", "abc", "abdc", "aa", "aabc", "aabdc", ...
详细来说, 即
• | 表示匹配空或多次 |
• | 表示匹配 或 |
• | 表示匹配 , , , ( 零次或多次) |
再记 , 因此得到 [1.2]
随后, 由于 , 展开计算得
注 1.2. 此处 是沿用了闭包的记号 而非指伴随矩阵.
这个过程比经典方法更自然. 不仅如此, 对于更大的方阵其中 , 这仍然正确.
矩阵作为状态间的箭头
相应的记 , 有
可以正确地求得 .
2定义
Kleene 代数的一个重要例子是所谓的正则语言集 , 固定有限字母表 , 可定义如下
• | 空集 是正则语言 (加法单位). |
• | 只包含空字符串的集合 是正则语言 (乘法单位). |
• | 对于 , 是正则语言. |
• | 对于正则语言 , . , 和 是正则语言. |
• | 上不存在其它正则语言. |
这里 基本就是 , 但将配对 视为字符串拼接 . 闭包 定义为满足如下性质的最小集合.
• | 匹配空. 即 . |
• | 对拼接封闭. 即 . |
现在定义 Kleene 代数 . 一言以蔽之, Kleene 代数即为半环 且有偏序结构 [2.1] 并带上 Kleene 星运算 , Kleene 星运算或曰字符闭包满足如下闭包公理
注 2.1. 依通常定义, 即 .
我们重新指出, 给定有限字母表 , 六元组 构成 Kleene 代数.
回顾 起始的物语, 其正是如下事实的冰山一角
命题 2.2. Kleene 代数上的方阵与矩阵运算连同字符闭包运算一起构成另一个 Kleene 代数.
3例子
对于 , 现在来计算 . 首先算出将其分解成
立即计算出 , , 其他部分类似. 最后可以得到