Недетерминированные автоматы, следующие за другим состоянием - PullRequest
0 голосов
/ 20 сентября 2018

Я хочу запрограммировать недетерминированные автоматы, которые принимают строки, заканчивающиеся на '01' с Python.Я хочу отслеживать различные состояния, которые могут покинуть входы.NFA строк, оканчивающихся на '01', следующий: введите здесь описание изображения

Например, если я хочу оценить строку '00101' в Q0 с первым 0Я хочу следить за состоянием Q0 и Q1.До тех пор, пока я не узнал, я создал функцию с NFA в качестве списка и элементов подсписка со значениями False, чтобы нарушить процесс автоматов.Но я не могу понять, как решить проблему взятия двух элементов подсписка, который представляет Q0, и разделить процесс.

def nfa(string):
nfa01l =[ [[0,1],0],[False,2],[False,False]]
while True:
    for c in string:   
        if c == "0" and state == 0:     
            state = nfa01l[state][0]
        elif c == "1" and state == 0:
            state = nfa01l[state][1]
        elif c == "0" and state == 1:
            state = nfa01l[state][0]
        elif c == "1" and state == 1:
            state = nfa01l[state][1]
        elif c == "0" and state == 2:
            state = nfa01l[state][0]
        elif c == "1" and state == 2:
            state = nfa01l[state][1]

Я только начинаю изучать программирование.Я надеюсь, что это правильно объяснено.Спасибо!

...