Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Combining deterministic finite automata

I'm really new to this stuff so I apologize for the noobishness here.

construct a Deterministic Finite Automaton DFA recognizing the following language:

L= { w : w has at least two a's and an odd number of b's}. 

The automate for each part of this (at least 2 a's, odd # of b's) are easy to make separately... Can anyone please explain a systematic way to combine them into one? Thanks.

like image 613
Haskell Avatar asked Feb 03 '13 20:02

Haskell


People also ask

What is deterministic finite automata with examples?

DFA refers to deterministic finite automata. Deterministic refers to the uniqueness of the computation. The finite automata are deterministic FA, if the machine reads an input string one symbol at a time. In DFA, there is only one path input from the current state to the next state.

What is concatenation DFA?

The concatenation process in the deterministic finite automata (DFA) is explained below − If L1 and If L2 are two regular languages, their union L1 ∩ L2 will also be regular. For example, L1 = {an | n > O} and L2 = {bn | n > O} L3 = L1 ∩ L2 = {an ∩ bn | n > O} is also regular.


1 Answers

You can use following simple steps to construct combined DFA.

Let Σ = {a1 , a2 , ...,ak }.
1st step: Design DFA for both languages and name their state Q0, Q1, ...

2nd step : Rename every state in both DFA uniquely i.e. rename all states in DFA as Q0, Q1, Q2, Q3 , ... assuming you have started with subscript 0; that means none of the state would have same name.

3rd Step: Construct transition table(δ) by using following steps

   3a. Start state of the combined DFA:
      Take start state of both DFAs(DFA1 and DFA2) and name them as Q[ i , j ] where i and j are the subscript of start state of DFA1 and DFA2 respectively; i.e. Qi is start state of 1st DFA and Qj is start state of 2nd DFA and mark Q[i , j] as start state of combined DFA.

   3b. Map state of both DFAs as
           if δ(Qi,ak) = Qp1 and δ(Qj,ak) = Qp2 , where Qp1 belongs to DFA1 and Qp2 belongs to DFA2 then  δ(Q[ i , j ] , ak) = Q[p1,p2]

   3c. fill entire table while there is any Q[i,j] remaining in transition table.

   3d. Final state of the combined DFA:
      For AND case final state would be all Q[i , j] where Qi and Qj are final state of DFA1 and DFA2 respectively.
      For OR case final state would be all Q[i , j] where either Qi or Qj is the final state of DFA1 and DFA2.

4th step: Rename all Q[i, j] (uniquely) and draw DFA this will be your result.

Example:

L= {w: w has at least two a's and an odd number of b's}.

Step1:
DFA for odd number of b's .

DFA for at least 2 a's.

Step2:
Rename the stae of DFA1
enter image description here

Step3(a,b,c):
Constructed transition table will be as.
table

Step3d:
Since we have to take AND of both DFA so final state would be Q[2,4] , since it contains final state of both DFA .
If we have to take OR of both DFA the final state would be Q[0,4],Q[2,3],Q[1,4],Q[2,4] .
Transition table would like this after adding final state .

final table

Step4:
Rename all states Q[i,j]
Q[0,3] to Q0
Q[1,3] to Q2
Q[0,4] to Q1
Q[2,3] to Q4
Q[1,4] to Q3
Q[2,4] to Q5
So final DFA would will look like as below . table

like image 119
sonus21 Avatar answered Sep 18 '22 18:09

sonus21