我对特殊情况下DFA交集的高效算法感兴趣。即,当相交的DFA遵循某种结构和/或以有限的字母进行操作时。有什么资料可以找到这种情况的算法吗?
为了不使问题过于笼统,以下结构特别受关注:所有要相交的DFA都以二进制字母(0 | 1)进行操作,它们也可以使用无关符号。此外,除最多K个特殊状态(仅有两个过渡)外,所有状态都只有一个过渡(并且这些过渡始终为0或1,但不在乎)。K是整数,出于实用目的,小于10。而且,它们具有单个接受状态。此外,已知交集始终是“条”形式的DFA,即无分支,如下图所示:
编辑:也许对输入DFA的约束的描述不是很清楚。我将在本段中尝试对其进行改进。您有输入T DFA。这些DFA均仅对二进制字母进行操作。每个国家最多拥有N个州。对于每个DFA,其每个状态均为以下之一:
1)接受状态(只有一种状态,从它到任何其他状态都没有过渡)
2)具有两个转换(0和1)到同一目标状态的状态(大多数状态是这种状态)
3)具有两个转换(0和1)到不同目标状态(最多这种K)的状态
可以确保每个输入DFA中只有一个接受状态,并且最多只有K个类型(3)的状态。还保证所有输入DFA的交点DFA是“条”(如上所述),大小小于N。
EDIT2: DW在评论中要求的一些附加约束:
- 输入的DFA是DAG。
- 输入的DFA按照注释中的DW定义进行“级别调整”。也就是说,您可以为每个状态分配不同的整数,以使每次转换都从整数u到整数v,从而u + 1 = v。
- 接受状态的每个输入DFA的数量,不超过ķ。
有任何想法吗?谢谢。
a DFA in form of "strip", i.e., no branches
啊 您是否有任何特定的理由相信您的情况可以比标准算法做得更好?