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