Finite state machineFrom
Wikipedia, the free encyclopedia Fig.1 Example of a Finite State Machine |
Конечный автоматВикипедия, свободная энциклопедия Перевод выполнен Выприцкой П.А. (июнь 2008) Рис.1 Пример конечного автомата |
||||||||||||||||||||||||||||||||||||||||
A finite state machine (FSM) or finite state automaton (plural: automata) or simply a state machine, is a model of behavior composed of a finite number of states, transitions between those states, and actions. A finite state machine is an abstract model of a machine with a primitive internal memory. |
Конечный Автомат (КА) или finite state automaton (мн.ч.: automata) или простой автомат - модель поведения, состоящая из конечного ряда состояний, переходов, между этими состояниями, и операций. Конечный автомат – это абстрактная модель механизма с примитивной оперативной памятью. |
||||||||||||||||||||||||||||||||||||||||
A state stores information about the past, i.e. it reflects the input changes from the system start to the present moment. A transition indicates a state change and is described by a condition that would need to be fulfilled to enable the transition. An action is a description of an activity that is to be performed at a given moment. There are several action types: Entry
action |
Текущее состояние автомата дает информацию о предыдущих, т.е. оно отражает входные изменения от системного запуска до текущего момента. Переход показывает изменение состояний и описывает условие, которое должно быть выполнено, чтобы осуществить переход. Операция - описание события, которое должно выполниться в текущий момент. Есть несколько типов операций: Операция при входе |
||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||
There are two different groups: Acceptors/Recognizers and Transducers. Acceptors and recognizers Fig. 2 Acceptor FSM: parsing the word "nice" Acceptors and recognizers (also sequence detectors) produce a binary output, saying either yes or no to answer whether the input is accepted by the machine or not. All states of the FSM are said to be either accepting or not accepting. At the time when all input is processed, if the current state is an accepting state, the input is accepted; otherwise it is rejected. As a rule the input are symbols (characters); actions are not used. The example in figure 2 shows a finite state machine which accepts the word "nice". In this FSM the only accepting state is number 7. |
Есть две различных группы: Приемник/Устройства распознавания и Преобразователи. Приемники и устройства распознавания Рис. 2 Распознающий конечный автомат: грамматический анализ слова "nice" Преобразователи и устройства (также датчики) распознавания выдают бинарный ответ да или нет, принимает ли ввод машина или нет. Любое состояние конечного автомата говорит о принятии или непринятии условия. В тот момент, когда все входные данные обработаны, если текущее состояние – принимающее - ввод принят; иначе отвергнут. Как правило, если на входе символы, то операции не используются. Пример на рисунке 2 показывает конечный автомат, который принимает слово "nice". В этом конечном автомате принимающее состояние – состояние с номером 7. |
||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||
The start state is usually shown drawn with an arrow "pointing at it from nowhere" (Sipser (2006) p.34). Accept state Fig. 3: A finite state machine that determines if a binary number has an odd or even number of 0s. |
Начальное состояние обычно показывается со стрелкой, "направленной в него из ниоткуда" (Sipser (2006) p.34). Состояние ввода Рис. 3: КА определения четности количества 0 в двоичном числе. |
||||||||||||||||||||||||||||||||||||||||
An example of an accepting state appears on the left in this diagram of a deterministic finite automaton (DFA) which determines if the binary input contains an even number of 0s. S1 (which is also the start state) indicates the state at which an even number of 0s has been input and is therefore defined as an accepting state. This machine will give a correct end state if the binary number contains an even number of zeros including a string with no zeros. Examples of strings accepted by this DFA are epsilon (the empty string), 1, 11, 11..., 00, 010, 1010, 10110 and so on. |
Пример принимающего состояния показан слева в этой диаграмме Детерминированного Конечного Автомата (ДКА), который определяет содержит ли двоичное вводимое число очередной ряд 0. S1 (которое является также начальным состоянием) указывает состояние, в котором ряд 0 были входными, и поэтому оно определяется как принимающее состояние. Этот автомат даст правильное конечное состояние, если двоичное число содержит четное число нолей, или в строке нет нулей. Примеры строк, принятых этим ДКА - эпсилон (пустая строка), 1, 11, 11..., 00, 010, 1010, 10110, и так далее. |
||||||||||||||||||||||||||||||||||||||||
Transducers generate output based on a given input and/or a state using actions. They are used for control applications and in the field of computational linguistics. Here two types are distinguished: |
Преобразователи генерируют выходные данные и/или состояние по полученным входным данным используя операции. Они используются для контроля приложений и в сфере вычислительной лингвистики. Существует 2 выдающихся типа автоматов: |
||||||||||||||||||||||||||||||||||||||||
The FSM uses only entry actions, i.e. output depends only on the state. The advantage of the Moore model is a simplification of the behaviour. The example in figure 1 shows a Moore FSM of an elevator door. The state machine recognizes two commands: "command_open" and "command_close" which trigger state changes. The entry action (E:) in state "Opening" starts a motor opening the door, the entry action in state "Closing" starts a motor in the other direction closing the door. States "Opened" and "Closed" don't perform any actions. They signal to the outside world (e.g. to other state machines) the situation: "door is open" or "door is closed". Fig. 4 Transducer FSM: Mealy model example |
КА использует только операцию входа, т.е. выход зависит только от состояния. Преимущество модели Мура - упрощение поведения. Пример на рисунке 1 показывает КА Мура управления дверью лифта. КА распознает две команды: "command_open" и "command_close", и хранит установленные изменения. Операция (E:) входа в состояние "Opening" запускает двигатель, открывающий дверь, операция входа в состояние "Closing" запускает двигатель в другом направлении - закрытие двери. Состояния "Opened" и "Closed"не выполняют никаких действий. Они сигнализируют внешнему миру (например, к другим КА) положение: "дверь открыта" или "дверь закрыта". Рис. 4 Преобразователь КА: пример модели Мили |
||||||||||||||||||||||||||||||||||||||||
The FSM uses only input actions, i.e. output depends on input and state. The use of a Mealy FSM leads often to a reduction of the number of states. The example in figure 4 shows a Mealy FSM implementing the same behaviour as in the Moore example (the behaviour depends on the implemented FSM execution model and will work e.g. for virtual FSM but not for event driven FSM). There are two input actions (I:): "start motor to close the door if command_close arrives" and "start motor in the other direction to open the door if command_open arrives". |
КА использует только входные операции, т.е. выход зависит от входа и состояния. Использование КА Мили часто приводит к сокращению числа состояний. Пример на рисунке 4 показывает КА Мили, осуществляющий то же поведение как в примере Мура (поведение зависит от реализации КА и будут работать например для виртуального КА, но не для случая управляемого КА). Есть два входных действия (I:): "запустите двигатель, чтобы закрыть дверь, если получено command_close" и " запустите двигатель в другом направлении, чтобы открыть дверь, если получено command_open". |
||||||||||||||||||||||||||||||||||||||||
More details about the differences and usage of Moore and Mealy models, including an executable example, can be found in the external technical note "Moore or Mealy model?" A further distinction is between deterministic (DFA) and non-deterministic (NDFA, GNFA) automata. In deterministic automata, for each state there is exactly one transition for each possible input. In non-deterministic automata, there can be none or more than one transition from a given state for a given possible input. This distinction is relevant in practice, but not in theory, as there exists an algorithm which can transform any NDFA into an equivalent DFA, although this transformation typically significantly increases the complexity of the automaton. The FSM with only one state is called a combinatorial FSM and uses only input actions. This concept is useful in cases where a number of FSM are required to work together, and where it is convenient to consider a purely combinatorial part as a form of FSM to suit the design tools. |
Больше деталей об отличиях и использовании моделей Мура и Мили, в том числе выполнимый пример, могут быть найдены во внешнем техническом примечании "Модель Мили или Мура?" Дальше рассмотрим различия между детерминированными (ДКА) и недетерминированными (НДКА) автоматами. В детерминированных автоматах, для каждого состояния всегда есть только один переход для каждого возможного входного условия. В недетерминированных автоматах, может не быть вообще или быть более одного перехода из текущего состояния для каждого возможного входного условия. Это различие имеет смысл на практике, но не теоретически, так как существует алгоритм, преобразования любого НДКА в эквивалентный ДКА, хотя это преобразование обычно значительно увеличивает сложность автомата. КА только с одним состоянием называются комбинаторным КА и используют только входные действия. Это понятие полезно в случаях, когда несколько КА должны работать совместно, и когда удобно рассматривать исключительно комбинаторную часть как форму КА, чтобы удовлетворять инструментам проекта. |
||||||||||||||||||||||||||||||||||||||||
Fig. 5 FSM Logic The next state and output of an FSM is a function of the input and of the current state. The FSM logic is shown in Figure 5. |
Рис. 5 Логика КА Следующее состояние и выход из КА являются функцией входа и текущего состояния. Логика КА показана на рисунке 5. |
||||||||||||||||||||||||||||||||||||||||
Depending on the type there are several definitions. An acceptor finite-state machine is a quintuple (Σ,S,s0,δ,F), where: Σ is the input alphabet (a finite, non-empty set of symbols). |
В зависимости от типа есть несколько определений. КА приемник состоит из пяти частей (Σ,S,s0,δ,F), где: Σ - входной алфавит (конечное, не пустое, множество
символов). |
||||||||||||||||||||||||||||||||||||||||
Σ is the input alphabet (a finite non empty set of symbols). |
Σ - входной алфавит (конечное, не пустое, множество
символов). |
||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||
Optimizing an FSM means finding the machine with the minimum number of states that performs the same function. One possibility is by using an Implication table or the Moore reduction procedure. Another possibility is bottom-up algorithm for Acyclic FSAs. |
Оптимизация КА подразумевает поиск автомата с минимальным числом состояний, выполняющего те же функции. Один из способов - это используя таблицу импликации или процедуру оптимизации Мура. Второй способ - восходящий алгоритм для Ациклического КА. |
||||||||||||||||||||||||||||||||||||||||
In a digital circuit, an FSM may be built using a programmable logic device, a programmable logic controller, logic gates and flip flops or relays. More specifically, a hardware implementation requires a register to store state variables, a block of combinational logic which determines the state transition, and a second block of combinational logic that determines the output of an FSM. One of the classic hardware implementations is the Richard's Controller. |
Цифровая схема КА может быть сформирована, используя программируемое логическое устройство, программируемые логические контроллеры, логические защелки и триггеры или реле. Более подробно, аппаратная реализация требует регистр для хранения переменных состояний, блок комбинационной логики, который определяет изменение состояний, и второй блок комбинационной логики, который определяет выход из КА. Одна из классических аппаратных реализаций – Контроллер Ричарда. |
||||||||||||||||||||||||||||||||||||||||
The following concepts are commonly used to build software applications with finite state machines: event driven FSM |
Следующие понятия обычно используются для создания программного обеспечения с КА: событийно управляемый КА |
||||||||||||||||||||||||||||||||||||||||
This section does not cite any references or sources. (July 2007) Starting in the 1970s, Leslie Lamport, an early leader within the distributed systems research community, used finite state machines as the basis for an algorithm he called state machine replication. In this approach, a deterministic computer program or service is replaced with a set of replicas that use some form of atomic broadcast to perform operations in a manner tolerant of failures. |
В этой секции не цитируются никакие ссылки или источники. (Июль 2007) Начиная с 1970-х, Лесли Лампорт, один из первых, кто начал исследования распределенных систем, использовал КА в качестве основы для алгоритма, который он вызывал автоматом дублирования. При таком подходе, определяющая компьютерная программа или служба заменяется набором точных копий, которые используют некоторую форму простейшей передачи, чтобы сделать выполнение операций устойчивым по отношению к сбоям. |