2013-10-08 9 views
5

Obecnie szukam DAWGs i nie byłem w stanie znaleźć jednego dobrego sposobu na zbudowanie acyklicznego automatu.Najlepszy sposób na skonstruowanie Directed Acyclic Word Graph (DAWG)

Więc w zasadzie to, co chcę zrobić to:

DAWG

To jest po prostu drzewo, gdzie liczba stanów są ograniczone. Używałbym go z liczbami, ale koncepcja jest dokładnie taka sama.

Zastanawiam się, jaki byłby najszybszy sposób, aby to zrobić, moim faktycznym planem było skonstruowanie wykresu pokazanego po lewej stronie, a następnie przyjrzenie się stanom niskiego poziomu i kiedy są one podobne, połączenie ich.

Chociaż nie jestem pewien, czy to najlepszy sposób na zrobienie tego, czy ktoś ma pomysł, jak go zbudować.

Pozdrawiam.

+0

Masz reprezentację DFA. Możesz zredukować go do minimalnego DFA (istnieją dość standardowe algorytmy). – SheetJS

+0

Wiem, ale tak naprawdę szukam sposobu na zrobienie tego (lub pseudo kod) – Anoracx

+0

https://en.wikipedia.org/wiki /DFA_minimization#Hopcroft.27s_algorithm – SheetJS

Odpowiedz

3

DAWG to minimalne, skończone automaty dla określonego zbioru, jeśli przechowują łańcuchy. Możesz je skonstruować, traktując trie, które masz jako nieskończony automat skończony i uruchamiając na nim standardowy algorytm minimalizacji DFA. Jest to prawdopodobnie najłatwiejszy sposób skonstruowania DAWG, a także prawdopodobnie najszybszego.

Mam nadzieję, że to pomoże!

+0

No cóż, tak, ale istnieje wiele algorytmów minimalizacji i wolałbym raczej zbudować DAWG "ja", ponieważ będę musiał go przechowywać w tablicy w jakiś punkt. Naprawdę szukam pseudokodu, aby uzyskać drzewo -> DAWG. – Anoracx

+0

@ Anoracx- Chyba jestem zdezorientowany tym, o co pytasz. Krok trie-> DAWG jest krokiem minimalizacji DFA. Co masz na myśli mówiąc "sam zbuduj DAWG"? – templatetypedef

+0

Cóż, pomyślałem, czytając wikipedię, że DAWG (DAFSA) był typem drzewa zbudowanego ze zwykłego drzewa/DFA. Tak naprawdę myślałem, że będzie to określony algorytm. I nie tylko algorytmy minimalizacji. Więc kiedy powiedziałem, że chcę to zrobić sam, faktycznie szukałem sposobu na konwersję z DFA na DAFSA (DAWG), a jeśli pomysł rozpoczęcia od dołu był dobrym pomysłem. – Anoracx