大小为


19

问题很简单直接:对于固定的,大小为n(即n个状态)的DFA接受多少种(不同的)语言?我将正式声明:nnn

将DFA定义为,其中一切正常,而δ :Q × Σ → Q是(可能是部分)函数。我们需要建立这一点,因为有时仅将全部功能视为有效。(Q,Σ,δ,q0,F)δ:Q×Σ→Q

对于每一个,定义(等价)关系〜Ñ该组所有的DFA的如:甲〜Ñ 乙如果| A | = | B | = n并且L (A)= L (B)。n≥1∼nA∼nB|A|=|B|=nL(A)=L(B)

现在的问题是,那么:对于给定的,什么是指数〜ň?也就是说,集合{ L (A)∣ A  是 n 的DFA } 的大小是 多少?n∼n{L(A)∣A is a DFA of size n}

即使是一个总函数,似乎也不是一件容易的事(至少对我而言)。该图可能未连接,并且包含初始状态的连接组件中的状态可能都被接受,因此,例如,有许多大小为n的图都接受∑ ∗。与空语言和其他最小DFA少于n个状态的语言的其他琐碎组合相同。δnΣ∗n

(幼稚的)递归似乎也不起作用。如果我们采用大小为的DFA 并添加一个新状态,那么,如果我们要保持确定性并使新图连接起来(以试图避免琐碎的情况),我们必须删除过渡以连接新状态,但是在这种情况下,我们可能会丢失原始语言。k

有什么想法吗?

注意。我用正式声明又没有先前分散注意力的要素再次更新了这个问题。


只是为了澄清一下:您的意思是“一种语言可以使用个状态定义多少种语言?”,如果存在一个包含n个状态的DFA,则使用n个状态定义一种语言。另外,对于正则表达式,正则表达式“ a * aaaaaa”肯定具有> 1个串联,但是DFA仅需要一个状态(如果需要单独的接收器,则需要两个状态),不是吗?nnn
— Evgenij Thorstensen

抱歉:对于正则表达式示例,它应为“ a a a a a *”,因为它允许任何数字。
— Evgenij Thorstensen

的定义似乎与“点深度”(dot-depth)概念非常相关,只是该概念通常应用于无星星的语言(可能是由于@Evgenij Thorstensen概述的原因)。c(r)
— mhum 2011年

1
琐碎的观察:个状态可用于定义至少2 n种不同的语言。n+12n
— Evgenij Thorstensen

2
我们可以得到多一点点,所以似乎确定。但正状态自动机的数目是围绕Ñ Ç Ñ 2 Ñ = 2 ç Ñ 登录Ñ + Ñ = 2 Θ (Ñ 登录Ñ )(假设|Σ | = C ^)。我们可以得到2 ω (ñ )?2Ω(n)ncn2n=2cnlog⁡n+n=2Θ(nlog⁡n)|Σ|=c2ω(n)
— 卡夫

Answers:


20

我认为这个问题以前已经研究过了。Mike Domaratzki撰写了一份有关该领域研究的调查报告:“形式语言的枚举”,Bull。EATCS,第一卷 89(2006年6月),第113-133页:http://www.eatcs.org/images/bulletin/beatcs89.pdf


4
从第120页起,本文确实准确地解决了所提出的问题。它是函数,尽管我没有吸纳所有细节,但本文仍给出了相当严格的界限(接近Kaveh所提到的)。gk(n)
— Evgenij Thorstensen

1
确实。那么我们想要的就是,或者通过给定的关系 f k(n ),它是在 k个字母上具有 n个状态的成对非同构最小DFA的数量。我也没有详细研究它,但似乎只知道界限,而不是确切数量。gk(n)fk(n)nk
— Janoma 2011年

6
g1(n)1≤n≤10g2(n)1≤n≤6g3(n)1≤n≤4
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.