我需要一个数据结构来存储有限确定性自动机的节点,以便快速找到满足特定条件的节点(对数)。有问题的条件如下:
我有一个 node
p
,我必须找到一个 nodeq
,这样:(p ∈ F ≡ q ∈ F) & (∀ a : a ∈ Σ : δ(p,a) = δ(q,a))
。也就是说,p
andq
要么都是最终的,要么都不是,并且它们具有到相同节点的转换。
我不想遍历所有节点,因为那样会很慢。显然,如果具有转换的字母字符集与q
具有转换的集合不同p
,q
则不是我要查找的节点。
此外,如果p
和q
有不同数量的转换,q
也不是我想要的节点。所以我正在考虑一种数据结构,它可以根据节点的终结性和转换次数对节点进行排序,因此我不必查看所有节点,只需查看具有相同终结性和相同转换次数的节点即可。但这仍然不是对数。有任何想法吗。
我正在使用 C++。