Реализация кода для симуляции недетерминированного конечного автомата в c ++
Я делаю задание для теории автоматов, которое я должен определить, принимается ли слово функцией перехода для детерминированного конечного автомата.
У меня есть этот входной файл:
<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>
Входные данные начинаются с 4 целых чисел, первое - номер состояния автомата, следующее - число переходов автомата, третье число - начальное состояние, а затем число конечных состояний. затем идут конечные состояния (в примере конечные состояния 2 и 5).
Затем идут N строк (N - количество переходов), каждая из которых содержит 2 целых числа и символ I, J и C, представляющих состояния, в которых происходит переход, т. Е. Переход из состояния i в состояние J с символом C. После этой строки идет одно целое число S, которое будет содержать количество проверяемых строк, затем S строк с соответствующими строками.
Вывод этой программы должен быть:
<code>Case #2: aaabcccc Rejected aabbbbcdc Rejected acdddddd Accepted </code>
Должно быть указано, принята строка или отклонена. До сих пор я только кодировал работу с вводом.
I don't know how would be most convenient to represent the automaton, Должен ли я просто использовать массивы? Какую логику я бы применил к массивам? Есть ли способ сделать это, не зная заранее алфавит автомата? Нужна ли структура данных для представления автоматов? Я немного застрял в этом задании и хотел бы, чтобы некоторые идеи, псевдокод или идеи сделали это. Код на другом языке? Я не хочу решения, потому что я хочу выполнить свое задание, но если бы я мог использовать некоторую помощь