计算常规语法接受的单词


26

给定一种常规语言(NFA,DFA,语法或正则表达式),如何计算给定语言中接受单词的数量?“正好有n个字母”和“最多n个字母”都令人感兴趣。

玛格丽特·阿克曼(Margareta Ackerman)撰写了两篇有关NFA接受的单词枚举的相关主题的论文,但是我无法对其进行修改以有效计数。

似乎常规语言的受限制性质应该使对它们的计数相对容易-我几乎期望公式比算法更多。不幸的是,到目前为止,我的搜索没有发现任何内容,因此我必须使用错误的术语。


我想您的意思是“接受大小为单词的数量”,或者类似的意思?否则,Σ *的接受词数是多少?nΣ
Suresh Venkat

Answers:


37

对于初始状态为状态的DFA,在状态i中结束的长度为k的字数为A k [ 0 i ],其中A是DFA的传输矩阵(其中第i行和第j列中的数字是导致从状态i转换为状态j的不同输入符号的数量。因此,即使当k时,您也可以轻松地计算长度为k的接受单词0kiAk[0,i]Aijijkk 仅通过计算矩阵乘方并添加与接受状态相对应的项,该函数就具有适度的大。

同样的事情也适用于接受长度最大为单词,但矩阵略有不同。添加矩阵的额外行和列,在单元格中同时在行和列中添加一个,在初始状态的新行和列中添加一个,在其他所有单元格中添加一个。这种变化对矩阵的影响是在每种功率下为初始状态增加了一条路径。k

这不适用于NFA。我怀疑最好的方法就是将其转换为DFA,然后应用矩阵供电算法。


2
完美的答案:只有阅读后才显而易见。
查尔斯(Charles)

1
如果您输入的不是DFA,则这种方法在最坏情况下会以指数形式运行。@Charles,这对您来说不是问题吗?您似乎在问题中包括了正则表达式,NFA和语法,还要求一种有效的方法。
拉斐尔

17

是一个(非确定性)有限自动化与起始状态q 1Q ˚FQδ Q × Σ × QA=(Q={q1,,qn},Σ,δ,QF)q1QFQδQ×Σ×Q

为所有可以从q i开始接受的单词的生成函数,即其级数展开的第n个系数[ z n ] Q i = | { w | w | = Ñ 瓦特 从接受  q } | Qi(z)qin[zn]Qi=|{w|w|=nw accepted from qi}|

显然:

Qi(z)=[qiQF]+(qi,a,qj)δxQj(z)

求解所得的(线性)方程组(使用Mathematica或类似工具)。然后,[ z n ] Q 1是期望量。Q1[zn]Q1

这可以追溯到Chomsky和Schützenberger(1963)为语法引入的一种技术。它很容易转移到有限自动机。

编辑:如果要考虑过渡,只需在相应过渡的总和中省略因子x。Similiarly,如果你有“压缩”的边缘,即而不是象征一个∈ Σ一个字w ^ ∈ Σ ķ上的转变,取代XX ķεxaΣwΣkxxk


我感谢历史记录!
查尔斯(Charles)

1
,实际上,这是一种在很多情况下都非常有效的方法(并且一旦获得就很简单)。例如,您可以以完全相同的方式执行CFG。
拉斐尔

1
我明白了,我误会了。在那种情况下,如果您想读一读,我推荐Kuich(1970),我发现它比C&S的著作更容易访问。他还在他不记得的书中对此进行了介绍。
拉斐尔

1
您是说可以在多项式时间内以常规语言计算长度为单词,而无需构造DFA?当被问及这对MO的复杂性: mathoverflow.net/questions/162186/...n
joro

1
@joro如果语法明确,我认为这是对的,是的。
拉斐尔2014年

7

我认为这是一个很难计数的问题,请参阅本文:计算给定长度的规则序列的大小是#P-complete:S。Kannan,Z。Sweedyk和SR Mahaney。常规语言中的字符串计数和随机生成。在ACM-SIAM离散算法专题讨论会(SODA)中,第551-557页,1995年。


1
上面的帖子假设给定的长度为一元。相反,如果长度为二进制,则问题是PSPACE-hard。我说这是基于证明两个正则表达式相等的证明是PSPACE困难的。在这种简化中,一个正则表达式构造为接受所有字符串,另一个正则表达式接受所有无效的字符串,从而拒绝输入w上PSPACE机器M的计算历史。使用第二个正则表达式和M在w上的计算历史的长度作为所讨论问题的输入,也使另一个问题变得难以PSPACE。
Mikhail Rudoy '16

3

以下情况:CMTV,认为复杂类,它是(基本上,但在一定程度上更一般的设置)之类的上一定长度的输入字计数的非确定性有限自动机的接受计算的数量的功能。现在,关于此复杂度类的许多结果已知,包括由于CDL而导致的确定性日志空间的包含。请注意,自动机固定在此设置中,并且输入单词是唯一输入。#NC1

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.