- 59 Views
- Uploaded on
- Presentation posted in: General

DFA Minimization

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

DFA Minimization

Consider the accept states c and g. They are both sinks meaning that any string which ever reaches them is guaranteed to be accepted later.

Q: Do we need both states?

0,1

0

b

c

1

0

0,1

0

1

a

d

e

0,1

1

1

0

f

g

A: No, they can be unified as illustrated below.

Q: Can any other states be unified because any subsequent string suffixes produce identical results?

b

0

0

0,1

1

0

1

a

d

0,1

e

cg

1

1

0

f

A: Yes, b and f. Notice that if you’re in b or f then:

- if string ends, reject in both cases
- if next character is 0, forever accept in both cases
- if next character is 1, forever reject in both cases
So unify b with f.

b

0

0

0,1

1

0

1

a

d

0,1

e

cg

1

1

0

f

Intuitively two states are equivalent if all subsequent behavior from those states is the same.

Q: Come up with a formal characterization of state equivalence.

0,1

0

1

a

d

0,1

e

cg

0,1

1

0

bf

- Build equivalence relation on states:
- p q (zS*, (p,z)F (q,z)F)
- I.e., iff for every string z, one of the following is true:

z

z

p

p

or

z

z

q

q

Equate & collapse states having same behavior.

Build table to compare each unordered pair of distinct states p,q.

Each table entry has

- a “mark” as to whether p & q are known to be not equivalent, and
- a list of entries, recording dependences: “If this entry is later marked, also mark these.”

- Initialize all entries as unmarked & with no dependences.
- Mark all pairs of a final & nonfinal state.
- For each unmarked pair p,q & input symbol a:
- Let r=d(p,a), s=d(q,a).
- If (r,s) unmarked, add (p,q) to (r,s)’s dependences,
- Otherwise mark (p,q), and recursively mark all dependences of newly-marked entries.

- Coalesce unmarked pairs of states.
- Delete inaccessible states.

1

0

0

1

0

a

b

c

d

b

0

1

1

0

1

1

1

0

e

f

g

h

c

0

1

d

0

e

f

g

h

a

b

c

d

e

f

g

- Initialize table entries:
- Unmarked, empty list

1

0

0

1

0

a

b

c

d

b

0

1

1

0

1

1

1

0

e

f

g

h

c

0

1

d

0

e

f

g

h

a

b

c

d

e

f

g

- Mark pairs of final &
- nonfinal states

1

0

0

1

0

a

b

c

d

b

0

1

1

0

1

1

1

0

e

f

g

h

c

0

1

d

0

e

f

g

h

a

b

c

d

e

f

g

d(b,0) ? d(a,0)

d(b,1) ? d(a,1)

- For each unmarked
- pair & symbol, …

1

0

0

1

0

a

b

c

d

b

0

1

1

0

1

1

1

0

e

f

g

h

c

0

1

d

0

e

f

g

h

a

b

c

d

e

f

g

g ? b

c ? f

Maybe.

No!

- For each unmarked
- pair & symbol, …

1

0

0

1

0

a

b

c

d

b

0

1

1

0

1

1

1

0

e

f

g

h

c

0

1

d

0

e

f

g

h

a

b

c

d

e

f

g

- For each unmarked
- pair & symbol, …

1

0

0

1

0

a

b

c

d

b

0

1

1

0

1

1

1

0

e

f

g

h

c

0

1

d

0

e

f

g

h

a

b

c

d

e

f

g

d(e,0) ? d(a,0)

d(e,1) ? d(a,1)

- For each unmarked
- pair & symbol, …

1

0

0

1

0

Maybe.

Yes.

a

b

c

d

b

0

1

1

0

1

1

1

0

e

f

g

h

c

0

1

d

0

e

f

g

h

a

b

c

d

e

f

g

h ? b

f ? f

- For each unmarked
- pair & symbol, …

(a,e)

1

0

0

1

0

a

b

c

d

b

0

1

1

0

1

1

1

0

e

f

g

h

c

0

1

d

0

e

f

(g,a)

g

(g,a)

h

(a,e)

a

b

c

d

e

f

g

- For each unmarked
- pair & symbol, …

1

0

0

1

0

a

b

c

d

Need to mark.

b

0

1

1

So, mark (g,a) also.

0

1

1

1

0

e

f

g

h

c

0

1

d

0

e

f

g

h

(a,e)

a

b

c

d

e

f

g

- For each unmarked
- pair & symbol, …

(g,a)

(g,a)

1

0

0

1

0

a

b

c

d

b

0

1

1

0

1

1

1

0

e

f

g

h

c

0

1

d

0

e

f

(g,a)

g

h

(a,e)

a

b

c

d

e

f

g

- For each unmarked
- pair & symbol, …

1

0

0

1

0

a

b

c

d

b

0

1

1

0

1

1

1

0

e

f

g

h

c

0

1

d

0

e

f

1

0

g

0

1

ae

bh

c

0

1

0

h

1

(a,e)

df

g

1

a

b

c

d

e

f

g

0

- Coalesce unmarked
- pairs of states.

a e

b h

d f

1

0

0

1

0

a

b

c

d

b

0

1

1

0

1

1

1

0

e

f

g

h

c

0

1

d

0

e

f

1

0

g

0

1

ae

bh

c

0

1

0

h

1

(a,e)

df

g

1

a

b

c

d

e

f

g

0

- Delete unreachable
- states.

None.

Order of selecting state pairs was arbitrary.

- All orders give same ultimate result.
- But, may record more or fewer dependences.
- Choosing states by working backwards from known non-equivalent states produces fewest dependences.
Can delete unreachable states initially, instead.

This algorithm: O(n2) time; Huffman (1954), Moore (1956).

- Constant work per entry: initial mark test & possibly later chasing of its dependences.
- More efficient algorithms exist, e.g., Hopcroft (1971).

This algorithm doesn’t find a unique minimal NFA.

Is there a (not necessarily unique) minimal NFA?

?

?

Of course.

0

0

0

0

In general, minimal NFA not unique!

Example NFAs for 0+:

Both minimal, but not isomorphic.

Minimizing DFA’s

By Partitioning

- Lots of methods
- All involve finding equivalent states:
- States that go to equivalent states under all inputs (sounds recursive)

- We will learnthe Partitioning Method

Consider the following dfa

- Accepting states are yellow
- Non-accepting states are blue
- Are any states really the same?

- S2and S7are really the same:
- Both Final states
- Both go to S6 under input b
- Both go to S3 under an a
- S0and S5 really the same. Why?
- We say each pair is equivalent
- Are there any other equivalent states?
- We can merge equivalent states into 1 state

- First
- Divide the set of states into
Final and

Non-final states

Partition I

Partition II

- Divide the set of states into

- Now
- See if states in each partition each go to the
same partition

- See if states in each partition each go to the
- S1 &S6 are different from the rest of the states in Partition I
(but like each other)

- We will move them to their own partition

- Now again
- See if states in each partition each go to the same partition
- In Partition I, S3goes
to a different partition

from S0, S5andS4

- We’ll move S3 to its own partition

Note changes in S6, S2 and S7

- Now S6 goes to a different partition on an a from S1
- S6 gets its own partition.
- We now have 5 partitions
- Note changes in S2 and S7

- All states within each of the 5 partitions are identical.
- We might as well call the states I, II III, IV and V.

Here they are:

b

b

b

V

b

a

a

a

a

b

a

b