Может ли конечный автомат перейти в предыдущее состояние?

Я знаю, что FSM может переходить в следующее состояние и даже в текущее состояние, то есть в состояние, которое переходит в себя, но законно ли иметь переход состояния в предыдущее состояние (переход из состояния C в состояние B)?


person Brandon Tiqui    schedule 04.12.2009    source источник
comment
связанные: stackoverflow.com/questions/1647631/c-state-machine- дизайн   -  person jldupont    schedule 04.12.2009


Ответы (2)


Да, многие практические FSM действительно делают это. Рассмотрим автомат, который идентифицирует допустимые строки чисел, разделенные одним или несколькими пробелами. Это начнется в «цифровом» состоянии и в какой-то момент перейдет в «пробел», из которого вполне может перейти обратно в «цифровое» состояние.

person Community    schedule 04.12.2009
comment
Не могли бы вы указать источник вашего ответа? - person Brandon Tiqui; 04.12.2009
comment
Тридцать лет опыта программирования? - person ; 04.12.2009
comment
На самом деле примеры этого есть в любой книге по теории автоматов. - person Vinko Vrsalovic; 04.12.2009

«Следующее состояние» конечного автомата определяется как состояние, в которое машина перейдет в следующем «кванте времени» или при поступлении следующего ввода, или что-то еще.

Определенное таким образом, следующим состоянием C может быть само C, B, A, D, ZORG или любое другое состояние, которое есть у вас в машине. Алфавитные буквы не определяют, что было раньше и что будет дальше, только логический поток FSM.

Этот конечный автомат со страницы Википедии:

SVG Image, используйте ссылку ниже, если можете  здесь не отображается
http://en.wikipedia.org/wiki/File:Finite_state_machine_example_with_comments.svg

person Eli Bendersky    schedule 04.12.2009