특정 조건을 만족하는 노드를 찾는 것이 빠른 (로그)이되도록 유한 결정 성 오토 마톤의 노드를 저장하는 데이터 구조가 필요합니다. 문제의 조건은 다음과 같다 :DFA의 노드를 저장할 데이터 구조
나는 노드
p
를 가지고 있고, 나는 노드q
같은 것을 찾을 수있다 :(p ∈ F ≡ q ∈ F) & (∀ a : a ∈ Σ : δ(p,a) = δ(q,a))
합니다. 즉,p
및q
은 모두 final이거나 둘 다 아니며 동일한 노드로 전환됩니다.
나는 느릴 수 있기 때문에 모든 노드를 통과하고 싶지 않습니다. 분명히, q
에 전환이있는 알파벳 문자 집합이 p
에 전환이있는 집합과 다른 경우 q
은 내가 찾고있는 노드가 아닙니다.
p
과 q
의 전환 수가 다른 경우 q
은 내가 원하는 노드가 아닙니다. 그래서 노드의 최종성과 전환 수에 따라 노드를 정렬하는 데이터 구조를 생각했습니다. 그래서 모든 노드를 살펴볼 필요가 없습니다. 최종 노드가 동일하고 전환 수가 동일해야합니다. 그러나 그것은 여전히 대수적이지 않습니다. 어떤 아이디어.
저는 C++을 사용하고 있습니다.
당신은 dfa를 비교하기를 원 하나, 동일한 언어를 생산하든 그렇지 않든 **?** –
아니요, 점진적으로 최소 비순환 DFA를 구성하고 있습니다. –
ok 단일 단일 DFA로 작업하고 있습니다. –