For every two a's push two a's into STACK cause there are two b's for one 'a'
So by pushing two 'a' we can have 'a' for every 'b'.
That we will achieve by pushing two a's and poping a's for every b
And then pushing c's and poping c's for every d's
So in the end of the strings if nothing is left in the STACK then we can say that language is accepted in the PDA.
We have designed the PDA for the problem:
STACK Transiton Function
δ(q0, a, Z) = (q0, aaZ) δ(q0, a, a) = (q0, aaa) δ(q0, b, a) = (q1, ε) δ(q1, b, a) = (q1, ε) δ(q1, ε, Z) = (qf, Z)
Note: qf is Final State
ExplanationLets see, how this DPDA is working:
We will take one input string: "aabbbb"
The explanation might be looking over descriptive but please be patient, It will all get clear once you start to get along with the explanation.
So we suggest you to keep doing the practice with the steps mentioned in the explnation