是否找到不使用蛮力搜索即可将两个单词分开的最小DFA?


23

给定两个字符串x和y,我想构建一个最小大小的DFA,它接受x并拒绝y。一种方法是蛮力搜索。您列举了DFA的最小编号。您尝试每个DFA,直到找到一个接受x并拒绝y的DFA。

我想知道是否还有其他已知的方法来查找或构建接受x并拒绝y的最小尺寸DFA。换句话说,我们可以击败蛮力搜索吗?

更多详情:

(1)我确实希望算法找到最小大小的DFA,而不是最小大小的DFA。

(2)我不只是想知道最小DFA的大小。

(3)在这里,我仅关注您有两个字符串x和y的情况。


编辑:

有兴趣的读者的其他信息:

假设和y是长度最大为n的二进制字符串。它是一种已知的结果,有一个DFA接受X和拒绝ÿ至多√xynxy个州。请注意,有大约ñ √n具有二进制字母且最多√的DFAnn个州。因此,强制方法不会要求我们更加枚举通过比ñ √n DFA。由此可见,蛮力方法可能不会花费太多超过ñ √nn次。nn

我认为有帮助的幻灯片:https : //cs.uwaterloo.ca/~shallit/Talks/sep2.pdf


2
@AndrásSalamon如果要区分的集合每个仅包含一个字符串,它是否仍是NP完整的?在我看来,这应该是合理易懂的。
— mhum 2015年

6
@mhum的问题是,有很多不同的常规语言将两个字符串分隔开-DFA最小化将为这些语言中的任何一种找到最佳的自动机,但不会做任何事情将其与其他分离的语言的自动机进行比较。
— David Eppstein

4
如果和y的长度不同,且长度n较大,则可以快速找到带有O (log n )状态的DFA,以将它们分开:只需使用长度为p的循环,其中p不除|即可。x | - | y | 。查找p通过尝试2 ,3 ,5 ,......为了直到找到合适的p。如果x和y的长度相同,则OxynO(log⁡n)pp|x|−|y|p2,3,5,…pxyRobson在1996年的论文中的构造给出了一个简单的机器,可以通过搜索大小O(n)来找到。两种结构都不能保证是最小的DFA。O(n)O(n)
— Jeffrey Shallit,2015年

3
上面链接的Shallit的注释包括一个有用的观察,即分离问题的最坏情况是当字母为二进制时:始终可以将较大的字母划分为两个子集,以区分两个输入单词,并搜索一个二进制自动机来处理一个子集中的字母为0,另一个子集中的字母为1。但是对于寻找最小的分离自动机似乎没有帮助,因为您可能能够使用原始字母表中的额外信息来做得比映射到二进制字母表更好。
— David Eppstein

3
这是另一个最近出现的问题的特例,其中inset和outset大小等于1. 给定in-word和out-words的最小有限自动机。该答案列出了一些学习文献,包括一些启发式方法。
— vzn 2015年

Answers:


9

如果在实践中必须这样做,则可以使用SAT解算器。

是否存在与DFA问题接受状态X和拒绝ÿ可以容易地表示为SAT实例。例如,一种方法是有2个ķ 2布尔变量:Ž 小号,b ,吨是如果DFA转换从状态真小号到状态吨上输入位b。然后添加一些子句以强制将其视为DFA,并添加一些变量和子句以强制其接受x并拒绝y。kxy2k2zs,b,tstbxy

现在,对使用二进制搜索以找到最小的k,以使此类DFA存在。根据我在有关相关问题的论文中所读的内容,我希望这在实践中可能是相当有效的。kk


作为SAT的其他编码也是可能的。例如,我们可以使用跟踪编码:

  • 如果是的长度米,可以添加米LG ķ布尔变量:设小号0,s ^ 1,... ,小号中号被遍历上输入状态的序列X,和表示每个š 我使用⌈ LG ķ ⌉布尔变量。xmmlg⁡ks0,s1,…,smxsi⌈lg⁡k⌉

  • 现在,对于每个使得x i = x j,约束为s i − 1 = s j − 1i,jxi=xj。si−1=sj−1⟹si=sj

  • 接下来,将其扩展为处理:令t 0,… ,t n为在输入y上遍历的状态序列,并使用lg k布尔变量表示每个t j。对于每个i ,j使得y i = y j,添加约束t i − 1 = t j − 1yt0,…,tnytjlg⁡ki,jyi=yj。ti−1=tj−1⟹ti=tj

  • 同样,对于每个使得x i = y j,添加约束s i − 1 = t j − 1i,jxi=yj。si−1=tj−1⟹si=tj

  • 两条迹线必须从相同的起点开始,因此添加要求(WLOG您可以要求s 0 = t 0 = 0)。s0=t0s0=t0=0

  • 为了确保DFA仅使用状态,要求0 ≤ 小号我 < ķ和0 ≤ 吨Ĵ < ķ所有我,Ĵ。k0≤si<k0≤tj<ki,j

  • 最后,为了对被接受而y被拒绝的要求进行编码,要求s m ≠ t n。xysm≠tn

所有这些要求都可以编码为SAT子句。

与以前一样,您将对使用二进制搜索来找到存在DFA 的最小k。kk


3
请注意,如果问题中存在某些对称性并且可以被求解器识别,则这实际上比蛮力搜索更好,但是目前可能难以识别/隔离(对于人还是机器)。还有一些较新的/相关的可满足性模理论和答案集编程 “技术”,其中一些具有“内置”图形谓词或可以支持其定义。
— vzn
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.