Объединение двух DFA с использованием конструкции продукта с состоянием ошибки

Мне интересно, как я могу объединить два DFA, когда у одного есть состояние ошибки. В частности, первый DFA таков:

введите здесь описание изображения

Второй на самом деле не имеет значения, но ему не нужно состояние ошибки, поскольку в каждом состоянии он принимает либо «a», либо «b». Таким образом, я могу прекрасно использовать конструкцию продукта до тех пор, пока не доберусь до состояния q3. Допустим, машина находится в точке (q3,z) (где z — случайное состояние из второго DFA), а затем считывает a. Второй может успешно продолжаться, но первый DFA должен перейти в состояние ошибки и больше не принимать входные данные. Поскольку это объединение, а не пересечение, конечно, мне нужно продолжать симулировать второй, чтобы увидеть, достигает ли он состояния ошибки.

Как я могу показать это при построении объединенного DFA?


person Squimmy    schedule 11.11.2012    source источник


Ответы (1)


Состояние ошибки — это неприемлемое состояние, при котором все символы возвращаются в одно и то же состояние. (Раковина"). Мне не ясно, имели ли вы в виду q3 состояние принятия без исходящих переходов, или вы имели в виду q3 состояние ошибки с {q0, q1 и q2} всеми состояниями принятия. Но решение не так уж и отличается; если у вас еще нет раковины, создайте ее; все недопустимые переходы из любого другого состояния переходят в состояние ошибки.

Теперь вы можете без проблем использовать конструкцию продукта; DFA1 достигает состояния ошибки и остается в нем, а DFA2 продолжает выполнять переходы. Когда оба DFA достигают стока, дальнейшие переходы невозможны.

person rici    schedule 21.11.2012