Implementando un código para simular un autómata finito no determinista en c ++

Estoy haciendo una tarea para la teoría de autómatas, que tengo que determinar si una palabra es aceptada o no por una función de transición para un autómata finito determinista

Tengo este archivo 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>

La entrada comienza con 4 enteros, el primero es el número de estado para el autómata, luego el número de transiciones del autómata, el tercer número es el estado inicial y luego el número de estados finales. luego vienen los estados finales (en el ejemplo, los estados finales son 2 y 5).

Luego vienen las líneas N (N es el número de transiciones), cada una con 2 enteros y un carácter, I, J y C, que representan los estados donde se encuentra la transición, es decir, la transición va del estado i al estado J con el carácter C. Siguiendo esta línea, venga con un solo número entero S, que contendrá el número de cadenas a probar, luego las líneas S con las cadenas respectivas.

La salida de este programa debe ser:

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

Debe decir si la cadena es aceptada o rechazada. Hasta ahora, solo he codificado el trabajo con la entrada.

No sé cómo sería más conveniente representar el autómata.. ¿Debo simplemente utilizar matrices? ¿Qué lógica aplicaría a las matrices ?. ¿Hay alguna forma de hacerlo sin saber de antemano el alfabeto autómata? ¿Necesito una estructura de datos para representar autómatas? Estoy un poco atascado con esta tarea, y me gustaría algunas ideas, algún pseudocódigo o ideas para hacerlo. ¿Está el código en otro idioma? No quiero la solución, porque quiero hacer mi tarea pero si pudiera usar algo de ayuda

Respuestas a la pregunta(1)

Su respuesta a la pregunta