Just see the given problem in another perspective.
Number of a's are equal to number of b's
And number of c's are equal to number of d's
That we will achieve by pushing 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, aZ) δ(q0, a, a) = (q0, aa) δ(q0, b, a) = (q1, ε) δ(q1, b, a) = (q1, ε) δ(q1, c, Z) = (q2, cZ) δ(q2, c, c) = (q2, cc) δ(q2, d, c) = (q3, ε) δ(q3, d, c) = (q3, ε) δ(q1, ε, Z) = (qf, Z)
Note: qf is Final State
Explanation
Lets see, how this DPDA is working:We will take one input string: "aabbccdd"
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