Реализация кода для имитации недетерминированного конечного автомата на С++

Я выполняю задание по теории автоматов, в котором я должен определить, принимается ли слово функцией перехода для детерминированного конечного автомата

У меня есть этот входной файл:

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

The ввод начинается с 4 целых чисел, первое — это номер состояния автомата, следующее — количество переходов автомата, третье число — начальное состояние, а затем количество конечных состояний. затем идут конечные состояния (в примере конечные состояния 2 и 5).

Затем следуют N строк (N — количество переходов), каждая с 2 целыми числами и символом I, J и C, представляющим состояния, в которых происходит переход, т. е. переход идет из состояния i в состояние J с символ C. После этой строки следует одно целое число S, которое будет содержать количество строк для проверки, затем S строк с соответствующими строками.

Вывод этой программы должен быть следующим:

Case #2:
aaabcccc Rejected
aabbbbcdc Rejected
acdddddd Accepted

Должно быть указано, принята строка или отклонена. Пока что я закодировал только работу с вводом.

Не знаю, как было бы удобнее всего представить автомат. Должен ли я просто использовать массивы? Какую логику я бы применил к массивам? Есть ли способ сделать это, не зная заранее алфавита автоматов? Нужна ли мне структура данных для представления автоматов?Я немного застрял с этим заданием и хотел бы получить некоторые идеи, какой-нибудь псевдокод или идеи, чтобы сделать это. Код на другом языке? Мне не нужно решение, потому что я хочу выполнить свое задание, но если бы мне не помешала помощь

10
задан River 4 July 2016 в 14:06
поделиться