Czy ktoś ma prosty opis algorytmu do budowy związku dwóch danych DFA? Na przykład, powiedzmy mamy dwa DFA nad {0,1}, gdzieJak utworzyć związek dwóch DFA?
{w|w has an odd number of characters}
w has states A and B
delta | 0 | 1
----------------
A | B | B
----------------
B | A | A
{x|x has an even number of 1s}
x has states a and b
delta | 0 | 1
----------------
a | a | b
----------------
b | b | a
mam wynikowa tabela pokazuje przejście do unii jako:
delta | 0 | 1
----------------
Aa | Ba | Bb
----------------
Ab | Bb | Ba
----------------
Ba | Aa | Ab
----------------
Bb | Ab | Aa
Mam obrazowym rozwiązanie w moich notatek, ale chciałbym zobaczyć, jak inni by to opisali. Z tego widać, że zasadniczo "pomnażamy" te dwie oryginalne tabele, używając ich wartości stanu, aby uzyskać większą tabelę przejściową. DFA można w ten sposób wyciągnąć z wynikowej tabeli. Czy to brzmi dobrze i czy to powinno działać we wszystkich przypadkach DFA, czy jest coś, czego mi brakuje?
Co, jeśli uzyskasz przejście, które jest niemożliwe w jednym z automatów? –
Powinieneś dodać stan E (błąd) automatu, który ma niemożliwe przejście. Ten automat pozostanie w tej statucie przez resztę sekwencji wejściowej. Powiedzmy, że to pierwszy. Będziesz wtedy miał Aa Ab, Ba, Bb, Ea, Eb stany w nowym automacie. – Nenad
Myślę, że byłoby podobnie, jeśli jeden automat ma tylko {0,1} jako symbole wejściowe, a drugi ma {1,2} jako symbole wejściowe. Musielibyśmy wtedy rozszerzyć oba automaty ze stanami Error (E dla pierwszego i e dla drugiego), gdzie 1. pójdzie do E, jeśli 2 jest wejściem, a drugie przejdzie do stanu e, jeśli 0 jest wejściem. – Nenad