Implementando um código para simular um autômato finito não determinístico em c ++

Eu estou fazendo uma tarefa para a teoria dos autômatos, que eu tenho que determinar se uma palavra é aceita ou não por uma função de transição para um autômato finito determinístico.

Eu tenho este arquivo de entrada:

<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>

A entrada começa com 4 inteiros, o primeiro é o número de estados do autômato, o próximo é o número de transições do autômato, o terceiro número é o estado inicial e depois o número de estados finais. então vêm os estados finais (no exemplo, os estados finais são 2 e 5).

Em seguida, vêm N linhas (N é o número de transições), cada um com 2 inteiros e um caractere, I, J e C, representando os estados onde a transição, ou seja, a transição vai do estado i para o estado J com o caractere C. Após esta linha vem com um único inteiro S, que irá conter o número de seqüências para testar, então S linhas com as respectivas seqüências.

A saída deste programa deve ser:

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

Deveria dizer se a Cadeia de caracteres é aceita ou rejeitada. Até agora, codifiquei apenas o trabalho com a entrada.

Eu não sei como seria mais conveniente representar o autômato. Devo simplesmente usar matrizes? Que lógica eu aplicaria aos arrays? Existe alguma maneira de fazer isso sem saber de antemão o alfabeto do autômato? Preciso de uma estrutura de dados para representar os autômatos ?. Estou um pouco preso a essa tarefa e gostaria de algumas ideias, algum pseudocódigo ou idéias para fazê-lo. O código está em outro idioma? Eu não quero a solução, porque eu quero fazer minha tarefa, mas se eu pudesse usar alguma ajuda

questionAnswers(1)

yourAnswerToTheQuestion