Machine - GITAM University

advertisement
Introduction:
We will study the relationships between languages, machines, and grammars. A
language is a set of strings over a finite alphabet, where a string is the
concatenation of zero or more symbols from the alphabet. Machines will always
include a means of reading input from an input tape, one symbol at a time, and
will contain some amount of finite state control. Additional storage and types of
storage, additional heads and the ability to move the head(s) in different ways
provide for variations in the machine models, and may allow machines to
perform harder tasks or perform the same tasks faster. Machines with output
capabilities may also be considered as generators of languages (they output
exactly the strings of the language delimited in some fashion) or computers
(given an input string, the machine may produce an output string and halt, or if
the function is not defined for that input string, it may not halt). For the most
part, we will consider machines as language recognizers, that is, given an input
string, the machine will execute for some number of steps and halt in an
accepting state or not (it may not halt, or it may halt in a non-accepting state). A
general term for an automata. A machine could be a Turing Machine, a
pushdown automata, a finite state machine or any other restricted
version of a Turing machine
Basics :Sets




Importance: languages are sets
A set is a collection of "things," called the elements or members of the set. It
is essential to have a criterion for determining, for any given thing,
whether it is or is not a member of the given set. This criterion is called the
membership criterion of the set.
There are two common ways of indicating the members of a set:
o List all the elements, e.g. {a, e, i, o, u}
o Provide some sort of an algorithm or rule, such as a grammar
Notation:
o To indicate that x is a member of set S, we write x S
o We denote the empty set (the set with no members) as {} or
o If every element of set A is also an element of set B, we say that A is
a subset of B, and write A B
o If every element of set A is also an element of set B, but B also has
some elements not contained in A, we say that A is a proper subset
of B, and write A B
Operations on Sets




The union of sets A and B, written A B, is a set that contains everything
that is in A, or in B, or in both.
The intersection of sets A and B, written A B, is a set that contains exactly
those elements that are in both A and B.
The set difference of set A and set B, written A - B, is a set that contains
everything that is in A but not in B.
The complement of a set A, written as -A or (better) A with a bar drawn
over it, is the set containing everything that is not in A. This is almost
always used in the context of some universal set U that contains
"everything" (meaning "everything we are interested in at the moment").
Then -A is shorthand for U - A.
Additional terminology :
The cardinality of a set A, written |A|, is the number of elements in a set A.
The powerset of a set Q, written 2 , is the set of all subsets of Q. The notation
suggests the fact that a set containing n elements has a powerset containing 2
elements.
Two sets are disjoint if they have no elements in common, that is, if A B = .
Graphs :






Importance: Automata are graphs.
A graph consists of two sets
o A set V of vertices (or nodes), and
o A set E of edges (or arcs).
An edge consists of a pair of vertices in V. If the edges are ordered, the
graph is a digraph (a contraction of "directed graph").
A walk is a sequence of edges, where the finish vertex of each edge is the
start vertex of the next edge. Example: (a, e), (e, i), (i, o), (o, u).
A path is a walk with no repeated edges.
A simple path is a path with no repeated vertices.
Trees
Importance: Trees are used in some algorithms.

A tree is a kind of digraph:
o It has one distinguished vertex called the root;
There is exactly one path from the root to each vertex; and
The level of a vertex is the length of the path to it from the root.
Terminology:
o if there is an edge from A to B, then A is the parent of B, and B is the
child of A.
o A leaf is a node with no children.
o The height of a tree is the largest level number of any vertex.
o
o

Fundamental Concepts
There are three fundamental concepts that we will be working on:
Languages :
o
o
A language is a subset of the set of all possible strings formed from
a given set of symbols.
There must be a membership criterion for determining whether a
particular string in in the set.
Grammar :
o
o
A grammar is a formal system for accepting or rejecting strings.
A grammar may be used as the membership criterion for a
language.
Automata :
o
o
o
An automaton is a simplified, formalized model of a computer.
An automaton may be used to compute the membership function
for a language.
Automata can also compute other kinds of things.
There is no formal definition for "automaton"--instead, there are various kinds of
automata, each with it's own formal definition.
Generally, an automaton has some form of input, has some form of output, has internal
states, may or may not have some form of storage, is hard-wired rather than
programmable.
An automaton that computes a Boolean (yes-no) function is called an acceptor.
Acceptors may be used as the membership criterion of a language.
An automaton that produces more general output (typically a string) is called a
transducer.
Applications of FSM : Controllers: elevators, ovens, stereo systems,
Logic circuit design: arithmetic and logic units, buers, Programming utilities: lex,
grep, awk, perl , Text editors: pattern-matching, Computers.
Finite Automata also called a Finite State Machine, FA, DFA or FSM
which is defined formally as
M = (Q, Sigma, delta, q0, F) is a definition of a Finite Automata.
Where Q a finite set of states often called q0, q1, ... , qn or s0, s1, ... , sn.
There is no requirement, in general, that every state be reachable, sigma a finite
input alphabet , delta a transition function mapping Q cross sigma to Q( delta is
typically given as a table with all states listed on the right, input symbols
listed across the top and next state in the table) as
| 0 | 1 |
----+-----+-----+---s0 | s1 | s2 |
----+-----+-----+---s1| s2 | s0 |
----+-----+-----+---s2 s2 | s1 |
----+-----+-----+---When the transition table, delta, has all single entries, the machine
may be refereed to as a Deterministic Finite Automata, DFA.
There is no requirement, in general, that every entry in the table must
contain a state. If a machine tries to go to an empty table entry it
"crashes". The remainder of the input, if any, is unread. The machine
does not accept and can not possibly be in a final state.
When every state/input pair has at most one target state, the automata
is called deterministic. q0 the initial state from the set Q.
By definition this is the state the automata is in when it starts.
The automata gets the first symbol from the input, then goes from
the starting state to the state designated by the transition function.
F a set of final states from the set Q also known as accepting states.
The machine stops after the last input symbols is read and the
corresponding state transition occurs. If the machines state when
stopped is in F then the machine is said to accept the input string.
F can be a null set in which case only the empty language is accepted.
There is no requirement, in general, that any final state be reachable.
A machine defines a language, the set of all strings accepted by
the machine. This language is usually denoted L(M). The machine that
accepts a language L is usually denoted M(L).
There is a Finite Automata, as defined here, for every Regular Language and
a Regular language for every Finite Automata.
Another common way to define a Finite Automata is via a diagram.
The states are shown as circles, often unlabeled, the initial state has
an arrow pointing to it, the final states have a double circle, the transition
function is shown as directed arcs with the input symbol(s) on the arc.
Deterministic Finite Acceptors
DFAs are:



A
One
Deterministic--there is no element of choice
Finite--only a finite number of states and arcs
Acceptors--produce only a yes/no answer
DFA
is
drawn
designated
as
a
graph,
state
with
each
is
state
the
represented
start
by
a
circle.
state.
Some states (possibly including the start state) can be designated as final states.
Arcs between states represent state transitions -- each such arc is
labeled with the symbol that triggers the transition.
Example DFA
Example input string: 1
0011100
Operation



Sample
Start with the "current state" set to the start state and a "read head" at the
beginning of the input string;
while there are still characters in the string:
o Read the next character and advance the read head;
o From the current state, follow the arc that is labeled with the
character just read; the state that the arc points to becomes the next
current state;
When all characters have been read, accept the string if the current state is
a final state, otherwise reject the string.
trace:
q0
1
q1
0
q3
0
q1
1
q0
1
Since q0 is a final state, the string is accepted.
Formal Definition of a DFA
A deterministic finite acceptor or dfa is a quintuple:
M = (Q, , , q0, F)
where





Q is a finite set of states,
is a finite set of symbols, the input alphabet,
:Q
Q is a transition function,
q0 Q is the initial state,
F Q is a set of final states.
q1
1
q0
0
q2
0
q0
Note: The fact that is a function implies that every vertex has an outgoing arc for each
member of .We can also define an extended transition function as
:Q
Q.
If a DFA M = (Q, , , q0, F) is used as a membership criterion, then the set of
strings accepted by M is a language. That is,
L(M) = {w
: (q0, w) F}.Languages that can be defined by dfas are called regular
languages.
Nondeterministic Finite Acceptors
A finite-state automaton can be nondeterministic in either or both of two ways:
A state may have two or more arcs emanating from it labeled with the same
symbol. When the symbol occurs in the input, either arc may be followed.
A state may have one or more arcs emanating from it labeled with (the empty
string) . These arcs may optionally be followed without looking at the input or
consuming an input symbol. Due to nondeterminism, the same string may cause
an nfa to end up in one of several different states, some of which may be final
while others are not. The string is accepted if any possible ending state is a final
state.
Example NFAs
Formal Definition of NFAs:
A nondeterministic finite acceptor or nfa is defined by the quintuple
M = (Q, Σ, δ, q0, F) Where Q is a finite set of states, is a finite set of symbols,
the input alphabet, : Q (
{ } ) 2 is a transition function,q0 Q is the initial
state, Q is a set of final states.
These are all the same as for a dfa except for the definition of :
Transitions on are allowed in addition to transitions on elements of , and tThe
range of is 2 rather than Q. This means that the values of are not elements of
Q, but rather are sets of elements of Q.
The language defined by nfa M is defined as L(M) = {w
: (q0, w) F }
Nondeterministic Finite Automata, NFA :
M = (Q, sigma, delta, q0, F) is the same as for deterministic finite automata
above with the exception that delta can have sets of states.
delta for a nondeterministic machine looks like:
| 0
| 1
|
----+---------+---------+
s0 | {s1,s2} | {s2} |
----+---------+---------+
s1 | {s0,s2} | phi |
----+---------+---------+
s2 | phi | {s1} |
----+---------+---------+
A string is accepted if any sequence of transitions ends in a Final state.There
could be more than one sequence of transitions that end in a Final state. Think of
each transition that has more than one state as causing a tree to branch. All
branches are in some state and all branches transition on every input. Any
branch that reaches phi, the null or nonexistent state,terminates.Any NFA can be
converted to a DFA but the DFA may require exponentially more states than the
NFA.
DFA = NFA
Two acceptors are equivalent if the accept the same language.A DFA is just a special
case of an NFA that happens not to have any null transitions or multiple transitions on the
same symbol. So DFAs are not more powerful than NFAs. For any NFA, we can
construct an equivalent DFA . So NFAs are not more powerful than DFAs. DFAs and
NFAs define the same class of languages -- the regular languages.To translate an NFA
into a DFA, the trick is to label each state in the DFA with a set of states from the
NFA. Each state in the DFA summarizes all the states that the NFA might be in.
If the NFA contains |Q| states, the resultant DFA could contain as many as |2 |
states. (Usually far fewer states will be needed.)
From NFA to DFA
Consider
the
following
NFA:
What states can we be in (in the NFA) before reading
any input? Obviously, the start state, A. But there is a
transition from A to B, so we could also be in state
B. For the DFA, we construct the composite state {A, B}.
State {A,B} lacks a transition for x. From A, x takes us to A (in the NFA), and
the null transition might take us to B; from B, x takes us to B. So in the DFA,
x takes us from {A,B} to {A,B}.
State {A,B} also needs a transition for y. In the NFA, (A,y)=C and (B,y)=C,
so we need to add a state {C} and an arc y from {A,B} to {C}.
In the NFA, (C,x)=A, but then a null transition might or might not take
us to B, so we need to add an arc x from {C} to {A,B}.Also, there are two
arcs from C labeled y, going to states B and C. So in the DFA we need to
add the state {B,C} and the arc y from {C} to
this new state.In the NFA, (B,x)=B and
(C,x)=A (and by a transition we might get
back to B), so we need an x arc from {B,C} to
{A,B}. (B,y)=C, while (C,y) is either B or C, so
we have an arc labeled y from {B,C} to {B,C}.
We now have a transition from every state for every symbol in .
The only remaining chore is to mark all the final states. In the
original NFA, B was a final state, so in the DFA, every state
containing B is a final state.
NFA with epsilon moves and conversion of nfa(e moves) to nfa :
Definition :epsilon is the zero length string, so it can be any where in the input
string, front, back, between any symbols. There is a conversion algorithm from a
NFA with epsilon transitions to a NFA without epsilon transitions.
Consider the NFA-epsilon move machine M = { Q, sigma, delta, q0, F}
Q = { q0, q1, q2 }, sigma = { a, b, c } and epsilon moves
q0 = q0, F = { q2 }
sigma plus epsilon
delta
| a | b | c |epsilon
------+------+------+------+------q0 | {q0} | phi | phi | {q1}
------+------+------+------+------q1 | phi | {q2} | phi | {q2}
------+------+------+------+------q2 | phi | phi | {q2} | phi
------+------+------+------+------The corresponding NFA with epsilon moves is as follows:
The language accepted by the above NFA with epsilon moves is the set of strings
over {a,b,c} including the null string and all strings with any number of a's
followed by any number of b's followed by any number of c's. ("any number"
includes zero). Now convert the NFA with epsilon moves to a NFA M = ( Q',
sigma, delta', q0', F').First determine the states of the new machine,
Q' = the epsilon closure of the states in the NFA with epsilon moves. There will
be the same number of states but the names can be constructed by writing the
state name as the set of states in the epsilon closure. The epsilon closure is the
initial state and all states that can be reached by one or more epsilon moves.
Thus q0 in the NFA-epsilon becomes {q0,q1,q2} because the machine can move
from q0 to q1 by an epsilon move, then check q1 and find that it can move from
q1 to q2 by an epsilon move. q1 in the NFA-epsilon becomes {q1,q2} because the
machine can move from q1 to q2 by an epsilon move. q2 in the NFA-epsilon
becomes {q2} just to keep the notation the same. q2 can go nowhere except q2,
that is what phi means, on an epsilon move. We do not show the epsilon
transition of a state to itself here, but, beware, we will take into account the state
to itself epsilon transition when converting NFA's to regular expressions.
The initial state of our new machine is {q0,q1,q2} the epsilon closure of q0 .The
final state(s) of our new machine is the new state(s) that contain a state symbol
that was a final state in the original machine. The new machine accepts the same
language as the old machine,thus same sigma.
So far we have for our new NFA
Q' = { {q0,q1,q2}, {q1,q2}, {q2} } or renamed { qx, qy, qz }
sigma = { a, b, c } , F' = { {q0,q1,q2}, {q1,q2}, {q2} } or renamed { qx, qy, qz }
q0 = {q0,q1,q2} or renamed qx
inputs
delta'
| a
|
b
|
c
------------+--------------+--------------+-------------qx or {q0,q1,q2} |
|
|
------------+--------------+--------------+-------------qy or {q1,q2} |
|
|
------------+--------------+--------------+-------------qz or {q2}
|
|
|
------------+--------------+--------------+-------------Now we fill in the transitions. Remember that a NFA has transition entries that
are sets. Further, the names in the transition entry sets must be only the state
names from Q'. Very carefully consider each old machine transitions in the first
row. You can ignore any "phi" entries and ignore the "epsilon" column.In the old
machine delta(q0,a)=q0 thus in the new machine delta'({q0,q1,q2},a)={q0,q1,q2}
this is just because the new machine accepts the same language as the old
machine and must at least have the same transitions for the new state names.
inputs
delta'
|
a
|
b |
c
------------+--------------+--------------+-------------qx or {q0,q1,q2} | {{q0,q1,q2}} |
|
------------+--------------+--------------+-------------qy or {q1,q2}
|
|
|
------------+--------------+--------------+-------------qz or {q2}
|
|
|
No more entries go under input a in the first row because old delta(q1,a)=phi,
delta(q2,a)=phi.
Now consider the input b in the first row,
delta(q0,b)=phi,delta(q1,b)={q2} and delta(q2,b)=phi. The reason we considered
q0, q1 and q2 in the old machine was because our new state has symbols q0, q1
and q2 in the new state name from the epsilon closure. Since q1 is in {q0,q1,q2}
and delta(q1,b)=q1 then delta'({q0,q1,q2},b)={q1,q2}. WHY {q1,q2} ?, because
{q1,q2} is the new machines name for the old machines name q1. Just compare
the zeroth column of delta to delta'. So we have
inputs
delta'
| a
|
b
|
c
------------+--------------+--------------+-------------qx or {q0,q1,q2} | {{q0,q1,q2}} | {{q1,q2}} |
------------+--------------+--------------+-------------qy or {q1,q2} |
|
|
------------+--------------+--------------+-------------qz or {q2}
|
|
|
------------+--------------+--------------+-------------Now, because our new qx state has a symbol q2 in its name and delta(q2,c)=q2
is in the old machine, the new name for the old q2, which is qz or {q2} is put into
the input c transition in row 1.
inputs
delta'
| a
|
b
|
c
------------+--------------+--------------+-------------qx or {q0,q1,q2} | {{q0,q1,q2}} | {{q1,q2}} | {{q2}} or qz
------------+--------------+--------------+-------------qy or {q1,q2} |
|
|
------------+--------------+--------------+-------------qz or {q2}
|
|
|
------------+--------------+--------------+--------------
Now, move on to row two. You are considering all transitions in the old
machine, delta, for all old machine state symbols in the name of the new
machines states.Fine the old machine state that results from an input and
translate the old machine state to the corresponding new machine state name
and put the new machine state name in the set in delta'. Below are the "long new
state names" and the renamed state names in delta'.
inputs
delta'
| a
|
b
|
c
------------+--------------+--------------+-------------qx or {q0,q1,q2} | {{q0,q1,q2}} | {{q1,q2}} | {{q2}} or {qz}
------------+--------------+--------------+-------------qy or {q1,q2} | phi
| {{q1,q2}} | {{q2}} or {qz}
------------+--------------+--------------+-------------qz or {q2}
| phi
| phi
| {{q2}} or {qz}
------------+--------------+--------------+--------------
inputs
delta' | a | b | c <-- input alphabet sigma
---+------+------+----/ qx | {qx} | {qy} | {qz}
/ ---+------+------+----Q' qy | phi | {qy} | {qz}
\ ---+------+------+----\ qz | phi | phi | {qz}
---+------+------+----The figure above labeled NFA shows this state transition table.It seems rather
trivial to add the column for epsilon transitions,but we will make good use of
this in converting regular expressions to machines. regular-expression -> NFAepsilon -> NFA -> DFA.
Finite State Machines with Output (Mealy and Moore Machines)
Introduction :
If a combinational logic circuit is an implementation of a Boolean function, then a
sequential logic circuit can be considered an implementation of a finite state
machine. There is a little more to it than that (because a sequential logic circuit
can contain combinational logic circuits).If you take a course in programming
languages, you will also learn about finite state machines. Usually, you will call it
a DFA (deterministic finite automata).While finite state machines with outputs
are essentially DFAs, the purpose behind them is different.
DFAs in programming languages
DFAs are used to recognize a language, L. A language is a set of strings made
from characters in the input alphabet. If a language can be recognized by a DFA,
it is said to have a regular grammar. There are some languages that can't be
recognized by a DFA (for example, palindromes). Thus, a DFA, while reasonably
powerful, there are other (mathematical) machines that are more powerful.Often,
tokens in programming languages can be described using a regular grammar.
FSM with output in hardware
A finite state machine with output is similar to describe formally.Q, a set of
states, S, an single state which is an element of Q. This is the start state.Sigma, the
input alphabet,Pi, the output alphabet,delta, a transition function that maps a
state and a letter from the input alphabet, to a state and a letter from the output
alphabet.The primary difference is that there is no set of final states, and that the
transition function not only puts you in a new state, but also generates an output
symbol.The goal of this kind of FSM is not accepting or rejecting strings, but
generating a set of outputs given a set of inputs. Recall that a black box takes in
inputs, processes, and generates outputs. FSMs are one way of describing how
the inputs are being processed, based on the inputs and state, to generate
outputs. Thus, we're very interested in what output is generated.In DFAs, we
don't care what output is generated. We care only whether a string has been
accepted by the DFA or not.Since we're talking about circuits, the input alphabet
is going to be the set of k bit bitstrings, while the output alphabet is the set of m
bit bitstrings.
An Example
Let's look at an example of an FSM.
Each of the circle is a state. For now, all you need to know is that, at any given
moment, you are in one state. Think of this as a game, where there are circles
drawn on the ground, and at any moment, you are standing in exactly one
circle.Each of the circle is given a unique binary number. The number of bits
used depends on the total number of states. If there are N states, then you need
ceil( lg N ) bits (the ceiling of log base 2 of N). The states are labelled with the
letter q, plus subscripts. In this example, it's q1q0.You may have k input bits. The
input bits tell you which state to transition to. For example, if you have 2 input
bits (x1x0), then there are four possible out going edges (x1x0 = 00, x1x0 = 01, x1x0 =
10, and x1x0 = 11). In general, there are 2k outgoing edges for k bits of input.
Thus, the number of edges depends on the number of bits used in the input.
Tracing an Example
You might be asked, what are the sequence of states and outputs, assuming you
start in state 00, and have input (1, 1, 0, 0, 1).
State 00 (Start) 01 10 01 01 10
Input 1
1
0
0
1
So, you may start in state 00, reading input 1 (see column 1 of the table), which
puts you in state 01. At that point, you read in input 1 (see column 2), and go into
state 10 (column 3), etc.
FSM with Outputs: Moore machines
Moore machines
A Moore machine may be defined by a similar six-tuple, with the only difference
that symbols are output after the transition to a new state is completed, and the
output symbol depends only on the state just reached, that is,
.The
class of translations that may be performed by Mealy machines and the class of
translations that may be performed by Moore machines are identical. Indeed,
given a Mealy machine, it is straightforward to construct the equivalent Moore
machine and vice versa.The goal of FSMs is to describe a circuit with inputs and
outputs. So far, we have inputs, that tell us which state we should go to, given
some initial, start state. However, the machine generates no outputs.We modify
the FSM shown above, by adding outputs. Moore machines add outputs to each
state. Thus, each state is associated with an output. When you transition into the
state, the output corresponding to the state is produced. The information in the
state is typically written as 01/1. 01 indicates the state, while 1 indicates the
output. 01/1 is short hand for q1q0 = 01/z = 1.The number of bits in the output is
arbitary, and depends on whatever your application needs. Thus, the number of
bits may be less than, equal, or greater than the number of bits used to represent
the state.Let's look at an example of a Moore machine.
In this example, you see two bits for the state and two bits for the output. Thus,
when you see 00/01 inside one of the circles, it is shorthand for q1q0 = 00 / z1 z0 =
01.
Moore Machines
A Moore machine is like a finite automaton except for the following differences.
In a Moore machine there are two alphabets: an input alphabet and an output
alphabet. The two alphabets may be the same but they do not have to be.
Another difference is that there are no accept states in a Moore machine. Its
purpose is not to answer yes or no, not to accept or reject a string. It is not a
language recognizer, it is an output producer. Each state of a Moore machine
produces a one-character output immediately upon the machine's entry into that
state. At the beginning, the start state produces an output before any input has
been read. Thus the output of a Moore machine is one character longer than its
input. Formally a Moore machine can be defined as follows:
Def: A Moore M/c is a six tuple(Q, Σ, Δ,δ,λ,q0) where
(i)
Q is afinite set of states
(ii)
Σ is the input alphabet;
(iii) Δ is the output alphabet;
(iv) δ is the transition function Σ х Q into Q;
(v)
λ is the output function mapping Q into Δ and
(vi) q0 is the initial state
We draw Moore machines in the same way as finite automata but the label in a
state is composed both of the name of the state and the output character that the
state produces. Run the string abab through the following machine and you will
find that the output produced is 10010.
Transition Table:
Present Next State
State
a
b
-> q0
q1
q3
q1
q3
q1
q 2
q0
q3
q3
q3
q2
Output
λ
1
0
0
1
The following Moore machine might be considered a "counting" machine. The
output produced by the machine contains a 1 for each occurrence of the
substring aab found in the input string.
Mealy Machines
A Mealy machine produces output on a transition instead of on entry into a
state. Transitions are labeled i/o where i is a character in the input alphabet and o
is a character in the output alphabet. Mealy machine are complete in the sense
that there is a transition for each character in the input alphabet leaving every
state. There are no accept states in a Mealy machine because it is not a language
recognizer, it is an output producer. Its output will be the same length as its
input. Formally it can be defined as follows:
Def: A Mealy M/c is a six tuple(Q, Σ, Δ,δ,λ,q0) where
(vii) Q is afinite set of states
(viii) Σ is the input alphabet;
(ix)
Δ is the output alphabet;
(x)
δ is the transition function Σ х Q into Q;
(xi)
λ is the output function mapping Σ х Q into Δ and
(xii) q0 is the initial state.
Example:
The following Mealy machine takes the one's complement of its binary input. In
other words, it flips each digit from a 0 to a 1 or from a 1 to a 0.
The only rather disconcerting characteristic of the machine is that we must feed
the input number backwards and the machine produces its output backwards. It
also does not work correctly if the input string consists completely of 1's. In that
case the answer always comes out 0.
Although Moore and Mealy machines do not accept or reject their input strings,
they do yield information about their input through the output that they
produce. Here is a Mealy machine to count the number of occurrences of aa or
bb. It produces a 1 each time it finds that it has just seen a double letter.
When we talk about equivalence of two Moore machines or two Mealy machines
we mean that, given the same input, they produce the same output. Since a
Moore machine outputs the symbol associated with its start state before it begins
processing its input, its output is always one longer than its input. The output of
a Mealy machine is always the same length as its input. Therefore a Moore
machine cannot be equivalent to a Mealy machine in the above sense. We say
that a Moore machine is equivalent to a Mealy machine if, given the same input,
the output of the Moore machine after removing the first character is the same as
the output of the Mealy machine.Using this definition of equivalence, our text
proves that for every Moore machine there is an equivalent Mealy machine and
vice versa. It does this with two constructive algorithms: one for converting a
Moore machine to a Mealy machine and one for going the other direction.
Equivalence of Mealy and Moore machines :
We have two ways to describe a FSM: Mealy and Moore machines. Are the two
machines equivalent?Initially, you might think not. A Mealy machine can have
its output depend on both input and state. Thus, if we ignore the state, we
should be able to convert a Moore machine to a Mealy machine.It's not so easy to
see that you can convert an arbitrary Mealy machine to a Moore machine.It turns
out that the two machines are equivalent. What does that mean? It means that
given a Moore machine, you can create a Mealy machine, such that if both
machines are fed the same sequence of inputs, they will both produce the same
sequence of outputs. You can also convert from a Mealy machine to its
equivalent Moore machine, and again generate the same outputs given the same
sequence of inputs.Actually, to be precise we must ignore one fact about Moore
machines. Moore machines generate output even if no input has been read in.
So,if you ignore this initial output of the Moore machine, you can convert
between one machine and the other.The actual algorithm is beyond the scope of
the course. However, the basic idea of converting a Mealy machine to a Moore
machine is to increase the number of states. Roughly speaking, if you have a
Mealy machine with N states, and there are k bits of input, you may need up to
2kN states in the equivalent Moore machine.Effectively, the new states record
information about how that state was reached.
Summary:
Finite state machines are one way of describing the behavior of a circuit with
state. Think of it as a very crude programming language, which takes inputs, and
uses those inputs and the state to compute outputs, and also to determine what
state to transition into.CPUs use finite state machines as control units to
sychronize the fetch, execute, decode cycle. These machines can be rather
sophisticated, however, programs exists to convert the finite state machine into
actual flip flops and logic gates.
Minimizing dfa :
If a dfa is specified by its table (or graph), it may not be in its most useful form.
In particular, if it has been obtained 'mechanically' (e.g. by the subset
construction, or from a regular expression), chances are that it has useless
states.We have not proven that there is a unique automaton with a minimal
number of states (this will be a consequence of the Nerode-Myhill
characterization), but we will present ways to reduce unnecessary states.There
are several reasons why states are redundant:
1. Unreachablestates
states p such that there is no string x with deltaHat(q0, x)=p
2. States
from
which
an
accepting
states
are
unreachable
states p such that there is no string x with deltaHat(p, x) in F.
3. Duplicates.
The last category is the only interesting one, since we can eliminate the
useless states in the first two categories by standard graph algorithms (use
depth first search to find all states accessible from q0, for all these use depth
first search to eliminate the second category.)
Lemma Given automata M1 and M2, there are algorithms to decide whether




L(M1) is empty
L(M1)=L(M2)
L(M1)=SIGMA*
L(M1) is included in L(M2)
The first is simply the graph accessibility problem: is there a path from q0 to an
accepting state, which can be solved by depth-first search. The same algorithm,
applied to the complementary automaton, solves the third problem.
To test equality, remember that L1=L2 iff (L2-L1) and L1-L2 are both empty, and
regular languages are closed under difference.Two states p, and q are not
equivalent if there is some string x such that exactly one of deltaHat(p,x) and
deltaHat(q,x)
is
in
F.
For
a
state
p,
let
Xp={y
|
deltaHat(p,y)
in
F}
Xp is the language that M would accept if p were the initial state. The condition
above is equivalent to Xp not equal to Xq, which can be tested using the Lemma
above.
Converting NFA to regular expression :Conversion algorithm from a NFA to a regular expression. Start with the
transition table for the NFA with the following state naming conventions:
The first state is 1 or q1 or s1 which is the starting state.States are numbered
consecutively, 1, 2, 3, ... n.The transition table is a typical NFA where the table
entries are sets of states and phi the empty set is allowed. The set F of final states
must be known. We call the variable r a regular expression. We can talk about
rij being the regular expression with i,j subscripts ij. Note r12 is just a
(possibly) different regular expression from r53 where 1,2 & 5,3 are subscripts.
Because we need multiple columns in a table we are going to build, we also use a
superscript in the naming of regular expression.
1
3
k
k-1
r ,r
, r , r are just names of different regular xpressions
12 64
1k ij
We are going to build a table with n 2 rows and n+1 columns labeled
| k=0
| k=1 | k=2 | ... | k=n
----+--------+-------+-------+-----+-----|
0
|
1
|
2
|
|
n
r
| r
| r
| r
| ... | r
11 |
11
|
11 |
11 |
|
11
----+--------+-------+-------+-----+-----|
0
|
1
|
2
|
|
n
r
| r
| r
| r
| ... | r
12 |
12
|
12 |
12 |
|
12
----+--------+-------+-------+-----+-----|
0
|
1
|
2
|
|
n
r
| r
| r
| r
| ... | r
13 |
13
|
13 |
13 |
|
13
----+--------+-------+-------+-----+-----|
0
|
1
|
2
|
|
r
| r
| r
| r
| ... |
21 |
21
|
21 |
21 |
|
----+--------+-------+-------+-----+-----|
0
|
1
|
2
|
|
r
| r
| r
| r
| ... |
22 |
22
|
22 |
22 |
|
----+--------+-------+-------+-----+-----|
0
|
1
|
2
|
|
r
| r
| r
| r
| ... |
23 |
23
|
23 |
23 |
|
----+--------+-------+-------+-----+-----|
0
|
1
|
2
|
|
r
| r
| r
| r
| ... |
31 |
31
|
31 |
31 |
|
----+--------+-------+-------+-----+-----|
0
|
1
|
2
|
|
r
| r
| r
| r
| ... |
32 |
32
|
32 |
32 |
|
----+--------+-------+-------+-----+-----|
0
|
1
|
2
|
|
r
| r
| r
| r
| ... |
33 |
33
|
33 |
33 |
|
Note n2 rows,all pairs of numbers from 1 to n,
entries for the k=0 column:
/
0
/ +{ x | delta(q ,x) = q }
r
= /
i
j
ij
\
\ +{ x | delta(q ,x) = q } + epsilon
\
i
j
Only build column n
for 1,final state
The final regular exp
is then the union, +, of
the column n
Now, build the table
i /= j
i = j
where delta is the transition table function,x is some symbol from sigma,the q's
are states,
r0 could be phi, epsilon, a, 0+1, or a+b+d+epsilon.
ij
notice there are no Kleene Star or concatenation in this column.
Next, build the k=1 column:
1
r
0
=
r
ij
0
( r
i1
*
)
0
r
11
0
+
r
1j
ij
note: all items are from the revious column
Next, build the k=2 column:
2
r
1
=
ij
r
1
( r
i2
*
)
22
1
r
1
+
2j
r
ij
note: all items are from the previous column
Then, build the rest of the k=k columns:
k
k-1 k-1 * k-1 k-1
r = r (r ) r + r
ij ik kk
kj ij
note: all items are from previous column
Finally, for final states p, q, r the regular expression is
n
n n
r + r + r
1p 1q 1r
Note that this is from a constructive proof that every NFA has a language for
which there is a corresponding regular expression.Here I have applied some
minimization rules(identities) for regular expressions which can be applied at
every step.
Minimisation rules for Regular expressions :
1) phi is the empty set
2) epsilon is the zero length string
3) 0, 1, a, b, c, are symbols in sigma
4) x is a variable or regular expression
5) ( ... )( ... ) is concatenation
6) ( ... ) + ( ... ) is union
7) ( ... )* is the Kleene Closure = Kleene Star
8) (phi)(x) = (x)(phi) = phi
9) (epsilon)(x) = (x)(epsilon) = x
10) (phi) + (x) = (x) + (phi) = x
11) x + x = x
12) (epsilon)* = (epsilon)(epsilon) = epsilon
13) (x)* + (epsilon) = (x)* = x*
14) (x + epsilon)* = x*
15) x* (a+b) + (a+b) = x* (a+b)
16) x* y + y = x* y
17) (x + epsilon)x* = x* (x + epsilon) = x*
18) (x+epsilon)(x+epsilon)* (x+epsilon) = x*
Now for an example:
Given M=(Q, sigma, delta, q0, F) as
delta | a | b | c
Q = { q1, q2}
--------+------+------+----sigma = { a, b, c }
q1 | {q2} | {q2} | {q1}
q0 = q1
--------+------+------+----F = { q2}
q2 | phi | phi | phi
--------+------+------+----| k=0
| k=1 (using e for epsilon)
-----+-------------+-----------------------------------r | c + epsilon | (c+e)(c+e)* (c+e) + (c+e) = c*
11 |
|
-----+-------------+-----------------------------------r |a+b
| (c+e)(c+e)* (a+b) + (a+b) = c* (a+b)
12 |
|
-----+-------------+-----------------------------------r | phi
| phi (c+e)* (c+e) + phi = phi
21|
|
-----+-------------+-----------------------------------r | epsilon
| phi (c+e)* (a+b) + e = e
22 |
|
-----+-------------+-----------------------------------| k=0
| k=1
| k=2 (using e for epsilon)
-----+-------------+----------+------------------------r | c + epsilon | c*
|
11 |
|
|
-----+-------------+----------+------------------------r |a+b
| c* (a+b)
| c* (a+b)(e)* (e) + c* (a+b) only final
12 |
|
|
state
-----+-------------+----------+------------------------r | phi
| phi
|
21 |
|
|
-----+-------------+----------+------------------------r | epsilon
|e
|
22 |
|
|
So the final regular expression minimizes to c* (a+b)
Converting a regular expression to a NFA - Thompson's Algorithm
We will use the rules which defined a regular expression as a basis for the construction:
1. The NFA representing the empty string is:
2. If the regular expression is just a character, eg. a, then the corresponding NFA is :
3. The union operator is represented by a choice of transitions from a node; thus a|b
can be represented as:
4. Concatenation simply involves connecting one NFA to the other; eg. ab is:
5. The Kleene closure must allow for taking zero or more instances of the letter from
the input; thus a* looks like:
DFA minimisation :
Since we are interested in translating a DFA into a program, we will want to
ensure that this program is as efficient as possible. In automata terms, one aspect
of this will be to ensure that the constructed DFA has as few states as possible.
This is achieved by an algorithm known as DFA minimisation. We take the
``optimistic'' approach: we start by assuming that all states are actually the same,
and only distinguish those which we can prove are different. As for subset
construction, the states of the minimised DFA will be sets of states from the
original DFA.Two states are different if:
one is a final state and the other isn't, or the transition function maps them to
different states, based on the same input character .We base our algorithm on
partitioning the states using this criterion.
1. Initially start with two sets of states: the final, and the non-final states.
2. For each state-set created by the previous iteration, examine the
transitions for each state and each input symbol. If they go to a different
state-set for any two states, then these should be put into different statesets for the next iteration.
We are finished when an iteration creates no new state-sets
Download