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