Implementacja kodu symulującego automat skończony niedeterministyczny w c ++

Robię zadanie dla teorii automatów, które muszę określić, czy słowo jest akceptowane czy nie przez funkcję przejścia dla deterministycznego automatu skończonego

Mam ten plik wejściowy:

<code>6 8 0 2
2
5
0 0 a
0 1 a
1 1 b
1 2 c
1 3 c
3 4 d
4 4 d
4 5 d
3
aaabcccc
aabbbbcdc
acdddddd
</code>

Wejście zaczyna się od 4 liczb całkowitych, pierwsza to liczba stanów automatu, następnie liczba przejść automatu, trzecia liczba to stan początkowy, a następnie liczba stanów końcowych. potem są ostatnie stany (w przykładzie końcowe stany to 2 i 5).

Następnie przychodzą N linii (N jest liczbą przejść), każda z 2 liczbami całkowitymi i znakiem, I, J i C, reprezentującymi stany, w których przejście, tj. Przejście przechodzi ze stanu i do stanu J ze znakiem C. Po tej linii znajduje się jedna liczba całkowita S, która będzie zawierać liczbę ciągów do przetestowania, a następnie linie S z odpowiednimi ciągami.

Wyjściem tego programu powinno być:

<code>Case #2:
aaabcccc Rejected
aabbbbcdc Rejected
acdddddd Accepted
</code>

Powinien powiedzieć, czy łańcuch jest zaakceptowany lub odrzucony. Do tej pory zakodowałem tylko pracę z wejściem.

Nie wiem, jak najlepiej byłoby reprezentować automat. Czy powinienem po prostu używać tablic? Jaką logikę zastosowałbym do tablic ?. Czy jest jakiś sposób na zrobienie tego bez wcześniejszego poznania alfabetu automatu? Czy potrzebuję struktury danych do reprezentowania automatów ?. Trochę utknąłem z tym zadaniem i chciałbym, aby niektóre pomysły, jakiś pseudokod lub pomysły to zrobiły. Czy kod jest w innym języku? Nie chcę rozwiązania, ponieważ chcę wykonać moje zadanie, ale jeśli mógłbym skorzystać z pomocy

questionAnswers(1)

yourAnswerToTheQuestion