Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lecture9a_FSM.doc
Скачиваний:
3
Добавлен:
19.11.2019
Размер:
5.49 Mб
Скачать

Example (пример)

Consider the following NFA with alphabet {0, 1} (рассмотрим следующий автомат NFA с алфавитом {0, 1}):

We will construct an equivalent DFA; the final result is shown below. We begin with the start state. The NFA starts in state 1, but it can also, without seeing any input, proceed to states 3 and 2 along ε edges. Therefore we must consider it to be in all these states simultaneously initially. We do this by creating a start state for our DFA and labelling it "{1,2,3}".

Наша задача – построить эквивалентный автомат DFA, окончательный результат показан ниже. Начнем с начального состояния. Автомат NFA начинает работу из состояния 1, но он может также без какого-либо входного сигнала перейти в состояния 3 и 2 вдоль ε ребер. Поэтому мы должны рассматривать это как возможность пребывания во всех указанных состояниях в начале. Мы отмечаем этот факт за счет создания начального состояния нашего автомата DFA и помечаем его как "{1,2,3}".

Next, suppose we see the input character 0. If we stayed in state 1, we can follow the edge labelled "0" to state 2. If we went to state 3, we can proceed to state 4. If we went to state 2, however, we'd be stuck; there's no "0" edge out of state 2. This means the NFA forgets about the old state 2 path; it is now in states 2 and 4. In the DFA, we express this with a new state labelled "{2,4}" and an edge labelled "0" from the start state to the new state.

Затем, предположим, мы видим входной символ 0. Если мы оставались в состоянии 1, мы можем перейти в состояние 2 по ребру 0. Если мы перешли в состояние 3, мы можем дальше перейти в состояние 4. Если мы перешли в состояние 2, то мы можем оказаться «запертыми», т.к. в этом состоянии нет «0» ребер перехода из состояния 2. Это означает, что автомат NFA «забывает» о пути из предыдущего состояния 2, он в настоящее время находится в состояниях 2 и 4. Для автомата DFA мы отмечаем этот факт с помощью нового состояния "{2,4}" и «0» ребром из начального состояния в новое состояние.

Suppose we saw a 1 instead initially. Then both the path in state 1 and the path in state 3 cannot proceed, but the path in state 2 can, and it branches: it both remains in state 2 and proceeds to state 4. Thus, the NFA is now in states 2 and 4 — exactly the same as for the 0 input, but for a different reason. We represent this by adding the label "1" to our edge from the start state to the existing "{2,4}".

Предположим, мы вначале видим 1 взамен. Тогда по обеим путям: по пути в состояние 1 и по пути в состояние 3 невозможно проследовать, но по пути в состояние 2 можно, и мы сталкиваемся с разветвлением: остаемся в состоянии 2 и следуем в состояние 4. Таким образом, автомат NFA в настоящее время находится в состояниях 2 и 4 – точно также как в случае с «0» входом, но по другой причине. Мы отмечаем этот факт, добавив метку «1» к нашему ребру из начального состояния в текущее "{2,4}".

Now, suppose we're in the "{2,4}" state and we see a 1. The path in state 4 cannot proceed, but the path in state 2 goes to both 2 or 4, again. We remain in state "{2,4}". If we see a 0, however, we can't proceed from state 2, but we can proceed from state 4 to state 3. Moreover, after we reach state 3, we branch and follow the ε-edge to state 2 as well. The result is that we are in states 2 and 3. We represent this with a new node in the DFA labelled "{2,3}" and an edge labelled "0" from {2,4} to {2,3}.

Теперь, предположим мы находимся в состоянии "{2,4}" и встречаем «1». По пути в состояние 4 невозможно проследовать, но путь в состояние 2 приводит как в 2 та к и 4 снова. Мы остаемся в состоянии "{2,4}". Если мы, однако, встречаем «0», то мы не можем проследовать из состояния 2, но мы можем проследовать и из состояния 4 в состояние 3. В результате мы оказываемся в состояниях 2 и 3. Мы отмечаем этот факт с помощью нового узла "{2,3}" и ребра "0" из {2,4} to {2,3}.

The final result DFA (в конечном итоге получаем автомат DFA).

If we see a 1 in the state {2,3}, the path in state 3 cannot proceed, but the path in state 2 goes to states 2 and 4, as before, so we return to the node {2,4}. If we see a 0 however, the path in state 2 cannot proceed, while the path in state 3 can reach state 4. Thus, we could only be in state 4. We create a new node labelled "{4}" and an edge labelled "0" from {2,3} to {4}.

Если мы встречаем «1» в состоянии {2,3}, тогда по пути в состояние 3 невозможно последовать, но путь в состояние 2 приводит в состояния 2 и 4, как прежде, так что мы возвращаемся в узел {2,4}. Если мы, однако, встречаем «0», тогда по пути в состояние 2 невозможно последовать, в то время как по пути в состояние 3 можно достичь состояния 4. Таким образом, мы можем находиться в состоянии 4. Мы создаем новый узел "{4}" и ребро "0" из {2,3} в {4}.

Finally, if we're in state {4} and we see a 0 as input, we proceed to states 2 and 3, as before, so there is an edge labelled "0" from {4} to {2,3}. If we see a 1, however, all of our remaining paths are stuck and the machine must reject. How do we ensure this? We create a new node, which we will label "Ø", from which there is no escape; all its outgoing edges point to itself, and it is not an accepting state. We then add an edge from {4} to Ø labelled 1.

В конечном итоге мы находимся в состоянии {4} и получаем «0» на входе, переходим в состояния 2 и 3, как раньше, поэтому появляется ребро «0» из {4} в {2,3}. Если мы, однако, встречаем «1», все наши остальные пути «заторможены» и автомат должен их отклонить. Как мы можем обеспечить это? Мы создаем новый узел, который помечаем "Ø", из которого нет выхода, при этом все выходящие ребра замыкаются на себя, и это состояние не является поглощающим. Мы затем добавляем ребро «1» из {4} в Ø.

We've now considered all possible cases. All we have to decide is which states in our DFA should accept. Since the NFA accepts if any of its paths end up in an accepting state, we can mimic this by setting all the DFA nodes that include an accepting NFA state, namely {1,2,3}, {2,3}, {2,4}, and {4}, as accepting. The resulting DFA accepts exactly the same set of strings as the original NFA. Note that the DFA is larger than the original NFA.

Таким образом, мы рассмотрели все возможные случаи. Все что нам необходимо – это решить, какие состояния в нашем автомате DFA должны быть поглощающими. Поскольку автомат NFA поглощает (принимает) только в том случае, когда какой-нибудь из его путей заканчивается в поглощающем состоянии, мы можем сымитировать этот факт, установив все узлы автомата DFA, которые включают поглощающее состояние NFA (а именно{1,2,3}, {2,3}, {2,4}, and {4}) в качестве поглощающих. Полученный таким образом автомат DFA поглощает тот же самый набор строк (символов в тексте), что и первоначальный автомат NFA.

In the theory of computation, a generalized nondeterministic finite state machine or generalized nondeterministic finite automaton (GNFA) is a NFA where each transition may be labelled with any regular expression. The GNFA reads blocks of symbols from the input which constitute a string as defined by the regular expression on the transition.

В теории вычислений обобщенный автомат NFA является таким автоматом GNFA, в котором каждый переход можно пометить с помощью любого регулярного выражения. Автомат GNFA читает блоки символов из входа, которые образуют строку, как это определено регулярным выражением по данному переходу.

A GNFA can be defined as a 5-tuple, (S, Σ, T, s, a), consisting of (автомат GNFA можно определить с помощью 5-ти кортежей (S, Σ, T, s, a), состоящих из):

  • a finite set of states (S) (конечный набор состояний (S));

  • a finite set called the alphabet (Σ) (конечный набор, называемый алфавитом (Σ));

  • a transition function (T : (S -{a}) × (S - {s}) → R) (функция перехода (T : (S -{a}) × (S - {s}) → R));

  • a start state (s S) (начальное состояние (s S));

  • an accept state (a S) (поглощающее состояние (a S);

where R is the collection of all regular expressions over the alphabet Σ (где Rсовокупность всех регулярных выражений над алфавитом Σ ).

A DFA or NFA can easily be converted into a GNFA and then the GNFA can be easily converted into a regular expression by repeatedly collapsing parts of it to single edges until S = {s, a}. Similarly, GNFAs can be reduced to NFAs by changing regular expression operators into new edges until each edge is labelled with a regular expression matching a single string of length at most 1. NFAs, in turn, can be reduced to DFAs using the powerset construction. This shows that GNFAs recognize the same set of formal languages as DFAs and NFAs.

Автоматы DFA и NFA можно легко преобразовать в автомат GNFA, а затем автомат GNFA можно легко преобразовать в регулярное выражение за счет периодического стягивания его частей в одиночные ребра пока S = {s, a}. Точно также автоматы GNFA можно привести к автоматам NFA за счет изменения операторов регулярных выражений в новые ребра до тех пока каждое ребро не будет помечено регулярным выражением, соответствующим одиночной строке длиной не больше чем 1.

Автоматы NFA, в свою очередь, можно привести к автоматам DFA за счет изменения операторов регулярных выражений с использованием конструкции степенного множества. Этот факт показывает, что автоматы GNFA признают тот же самый набор формальных языков, что и автоматы DFA и NFA.

For a deterministic finite state machine (DFA), nondeterministic finite state machine (NFA), generalized nondeterministic finite state machine (GNFA), or Moore machine, the input is denoted on each edge.

Для детерминированного автомата DFA, недетерминированного

автомата NFA, обобщенного недетерминированного автомата GNFA, или автомата Мура, вход отмечается на каждом ребре.

For a Mealy machine, input and output are signified on each edge, separated with a slash "/": "1/0" denotes the state change upon encountering the symbol "1" causing the symbol "0" to be output.

В автомате Мили вход и выход отмечены на каждом ребре и разделяются с помощью косой черты "/": "1/0" означает изменение состояния за счет его символа "1", которое заставляет символ "0" быть выходом.

For a Moore machine the state's output is usually written inside the state's circle, also separated from the state's designator with a slash "/". There are also variants that combine these two notations.

В автомате Мура выход состояния обычно пишется внутри кружка, обозначающего состояние, которое также отделено от указателя состояния косой чертой "/". Имеются также варианты обозначения, которые комбинируют эти 2 условных знака.

For example, if a state has a number of outputs (e.g. "a= motor counter-clockwise=1, b= caution light inactive=0") the diagram should reflect this : e.g. "q5/1,0" designates state q5 with outputs a=1, b=0. This designator will be written inside the state's circle.

Например, если состояние имеет число выходов (например, "a= двигатель против часовой стрелки=1, b= предупредительный световой знак неактивизируется=0") диаграмма (состояний должна отражать этот факт: например, символ "q5/1,0" означает состояние q5 с выходами a=1, b=0. Такой условный знак пишется внутри кружка, обозначающего состояние.

Most digital electronic systems are designed as clocked sequential systems. Clocked sequential systems are a restricted form of Moore machine where the state changes only when the global clock signal changes. Typically the current state is stored in flip-flops, and a global clock signal is connected to the "clock" input of the flip-flops. Clocked sequential systems are one way to solve metastability problems.

Suppose the flip-flop requires 3 nanoseconds of set-up time. Our data changes within that window, flipping state perhaps a single nanosecond before clock transitions. The device will go into a metastable state where the output gets very strange indeed.

Большинство цифровых электронных систем разработаны в качестве тактируемых последовательностных систем. Тактируемые последовательностные системы являются ограниченной формой автомата Мура, в котором изменение состояний происходит только когда изменяются сигналы глобального времени. Обычно информация о текущем состоянии хранится в триггерах, а сигнал глобального времени подключается к тактируемому входу триггеров. Применение последовательностных тактируемых систем является одним из способов решения проблемы метастабильности.

Предположим, какому-либо триггеру необходимо 3 нс для установки (в рабочее состояние). Наши данные изменяются в пределах этого промежутка (времени), произведя, возможно, опрокидывание за 1 нс до перехода тактового импульса. При этом устройство переходит в метастабильное состояние, выход из которого окажется достаточно странным.

A typical electronic Moore machine includes a combinatorial logic chain to decode the current state into the outputs (lambda). The instant the current state changes, those changes ripple through that chain, and almost instantaneously the outputs change (or don't change). There are design techniques to ensure that no glitches occur on the outputs during that brief period while those changes are rippling through the chain, but most systems are designed so that glitches during that brief transition time are ignored or are irrelevant. The outputs then stay the same indefinitely (LEDs stay bright, power stays connected to the motors, solenoids stay energized, etc.), until the Moore machine changes state again.

Типичный электронный автомат Мура включает комбинационную логическую схему для расшифровки (перехода) текущего состояния в выходы (лямбда). В то мгновение, в течение которого текущее состояние изменяется, эти изменения создают пульсации (колебания) в цепи, при этом почти мгновенно выходы изменяются (или не изменяются). В нашем распоряжении имеются средства для предотвращения каких-либо затруднений (проблем) на выходе в течение которого эти колебания распространяются по цепи, но большинство систем разработаны таким образом, что эти проблемы в течение указанного короткого времени игнорируются или не рассматриваются. Выходы при этом остаются в том же состоянии неопределенно долго (ж/к диоды светятся, двигатели подключены к источника питания, соленоиды находятся под напряжением и т.д.), пока автомат Мура не изменит вновь свое состояние.

Common forms (общие формы)

One-dimensional state tables (одноразмерная таблица состояний)

Also called characteristic tables, single-dimension state tables are much more like truth tables than the two-dimensional versions. Inputs are usually placed on the left, and separated from the outputs, which are on the right. The outputs will represent the next state of the machine.

Одноразмерная таблица состояний (называемая также характеристической таблицей) похожа на таблицу истинности в отличие от 2-х размерной таблицы.

Here's a simple example of a state machine with two states, and two combinatorial inputs:

A

B

Current State

Next State

Output

0

0

S1

S2

1

0

0

S2

S1

0

0

1

S1

S2

0

0

1

S2

S2

1

1

0

S1

S1

1

1

0

S2

S1

1

1

1

S1

S1

1

1

1

S2

S2

0

Условные обозначения:

Current state – текущее состояние;

Next state – следующее состояние;

Output – выход.

S1 and S2 would most likely represent the single bits 0 and 1, since a single bit can only have two states.

S1 и S2 , наиболее вероятно, представляют одиночные биты 0 и 1, поскольку один бит может иметь 2 состояния.

Two-dimensional state tables (2-х размерная таблица состояний).

State transition tables are typically two-dimensional tables. There are two common forms for arranging them.

Таблицы переходов состояний обычно являются 2-х размерными. Имеется 2 формы для их организации.

  • The vertical (or horizontal) dimension indicates current states, the horizontal (or vertical) dimension indicates events, and the cells (row/column intersections) in the table contain the next state if an event happens (and possibly the action linked to this state transition).

  • Вертикальная (или горизонтальная) ось обозначают текущие состояния, горизонтальная (или вертикальная) ось обозначает явления, а ячейки (пересечение рядов/колонок) в таблице содержат информацию о следующем состоянии, если событие происходит (и, возможно, действие, связанное с эти переходом состояний).

State Transition Table

  Events State

E1

E2

  ...  

En

S1

-

Ay/Sj

...

-

S2

-

-

...

Ax/Si

...

...

...

...

...

Sm

Az/Sk

-

...

-

(S: state, E: event, A: action, -: illegal transition) - (S: состояние, E: событие, A: действие, -: неузаконенный переход).

  • The vertical (or horizontal) dimension indicates current states, the horizontal (or vertical) dimension indicates next states, and the row/column intersections contain the event which will lead to a particular next state.

  • Вертикальная (или горизонтальная) ось обозначает текущие состояния, горизонтальная (или вертикальная) ось обозначает последующие состояния, а пересечение рядов/колонок содержит информацию о событии, которое приведет к особому следующему состоянию.

State Transition Table

      next current

S1

S2

  ...  

Sm

S1

Ay/Ej

-

...

-

S2

-

-

...

Ax/Ei

...

...

...

...

...

Sm

-

Az/Ek

...

-

(S: state, E: event, A: action, -: impossible transition) - (S: стояние, E: сбытие, A: действие, -: невозможный переход).

State Diagram (диаграмма состояний)

All the possible inputs to the machine are enumerated across the columns of the table. All the possible states are enumerated across the rows. From the state transition table given above, it is easy to see that if the machine is in S1 (the first row), and the next input is character 1, the machine will stay in S1. If a character 0 arrives, the machine will transition to S2 as can be seen from the second column. In the diagram this is denoted by the arrow from S1 to S2 labeled with a 0.

Все возможные входы в автомат нумеруются вдоль колонок таблицы. Все возможные состояния нумеруются вдоль рядов. Исходя из вышеприведенной таблицы переходов легко видно, что если автомат находится в S1 (первый ряд), и если следующий вход =1, автомат останется в S1. Если новым символом (входным) окажется 0, тогда автомат переходит в S2 (как это видно из второй колонки). На диаграмме это отмечено стрелкой из S1 в S2, которая помечена 0.

For a nondeterministic finite automaton (NFA), a new input may cause the machine to be in more than one state, hence its non-determinism. This is denoted in a state transition table by a pair of curly braces { } with the set of all target states between them.

Для недетерминированного автомата NFA новый входной сигнал может заставить автомат находиться в более, чем 1-м состоянии ввиду его недетерминизма. Это отмечено в таблице переходов состояний с помощью { } фигурных скобок с набором всех целевых состояний между ними.

An example is given below.

State Transition Table for an NFA

  Input State

1

0

ε

S1

S1

{ S2, S3 }

Φ

S2

S2

S1

Φ

S3

S2

S1

S1

Here, a nondeterministic machine in the state S1 reading an input of 0 will cause it to be in two states at the same time, the states S2 and S3. The last column defines the legal transition of states of the special character, ε. This special character allows the NFA to move to a different state when given no input. In state S3, the NFA may move to S1 without consuming an input character. The two cases above make the finite automaton described non-deterministic.

В данном случае недерминированный автомат в состоянии S1 считывает входной символ 0, что заставит его пребывать в 2-х состояниях одновременно – состояния S2 и S3. Последняя колонка определяет легальный переход состояний с помощью специального символа ε. Этот специальный символ разрешает автомату NFA перемещаться в другое состояние без входного сигнала. В состоянии S3 автомат NFA может перейти в состояние S1 без поступления входного символа. Эти два случая делают данный автомат недетерминированным.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]