我需要生成一个确定性有限自动机(DFA),从满足下面属性的所有可能的DFA中选择。必须选择均匀分布的DFA。
DFA必须具有以下四个属性:
我不考虑标记节点或转换。如果两个DFA具有相同的未标记有向图,则认为它们是相同的。
以下是三种不起作用的算法:
算法#1
虽然集A中还有节点
- 3.1 Choose a node x from set A
- 3.2 Choose a node y from set B with less than two outgoing transitions.
- 3.3 Choose a node z from set B
- 3.4 Add a transition from y to x.
- 3.5 Add a transition from x to z
- 3.6 Move x to set B
对于B
中的每个节点n - 4.1 While n has less than two outgoing transitions
- 4.2 Choose a node m in B
- 4.3 Add a transition from n to m
算法#2
算法#3
我基于算法#2创建了算法#3,但是,我不知道如何选择随机定向循环来创建均匀分布。我甚至不知道是否可能。
非常感谢任何帮助。
答案 0 :(得分:1)
如果N很小(有N ^(2N)个可能的弧满足前两个条件,那么你希望它小于随机数生成器的范围)你可以生成随机DFA并丢弃那些不满足可达性条件的那些。