Я знаю, что FSM может переходить в следующее состояние и даже в текущее состояние, то есть в состояние, которое переходит в себя, но законно ли иметь переход состояния в предыдущее состояние (переход из состояния C в состояние B)?
Может ли конечный автомат перейти в предыдущее состояние?
Ответы (2)
Да, многие практические FSM действительно делают это. Рассмотрим автомат, который идентифицирует допустимые строки чисел, разделенные одним или несколькими пробелами. Это начнется в «цифровом» состоянии и в какой-то момент перейдет в «пробел», из которого вполне может перейти обратно в «цифровое» состояние.
«Следующее состояние» конечного автомата определяется как состояние, в которое машина перейдет в следующем «кванте времени» или при поступлении следующего ввода, или что-то еще.
Определенное таким образом, следующим состоянием C может быть само C, B, A, D, ZORG или любое другое состояние, которое есть у вас в машине. Алфавитные буквы не определяют, что было раньше и что будет дальше, только логический поток FSM.
Этот конечный автомат со страницы Википедии:
http://en.wikipedia.org/wiki/File:Finite_state_machine_example_with_comments.svg