Реализация кода для симуляции недетерминированного конечного автомата в 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, Должен ли я просто использовать массивы? Какую логику я бы применил к массивам? Есть ли способ сделать это, не зная заранее алфавит автомата? Нужна ли структура данных для представления автоматов? Я немного застрял в этом задании и хотел бы, чтобы некоторые идеи, псевдокод или идеи сделали это. Код на другом языке? Я не хочу решения, потому что я хочу выполнить свое задание, но если бы я мог использовать некоторую помощь

Ответы на вопрос(1)

Ваш ответ на вопрос