众所周知,即使将DFA作为语言的规范,最小化正则表达式的大小也是PSPACE完整的。
如果语言是有限的,结果是什么?
一个人可以用两种模型来考虑这个问题:
- 输入是该语言中的所有字符串,我们通过所有字符串的长度之和来衡量输入大小。
- 输入是DFA,我们通过DFA的状态数来衡量输入大小。
Kleene star在有限情况下没有用,因此只有,| | 和⋅(串联)在表达式中使用。当然,正则表达式的长度似乎是任意的。相反,可以赋予每个操作权重(包括添加括号),并要求最小化正则表达式的权重。
编辑:正如adrianN所指出的,它与基于语法的代码有关。产生最小长度的上下文无关文法来描述有限集是NP完全的。尚不清楚为什么最小尺寸上下文无关文法可以暗示更多关于最小尺寸正则表达式的信息。也许聪明的重写规则可以将这两者联系起来,并证明在第一个模型中,问题出在NP上。