
- C++ Basics
- C++ Home
- C++ Overview
- C++ Environment Setup
- C++ Basic Syntax
- C++ Comments
- C++ Data Types
- C++ Variable Types
- C++ Variable Scope
- C++ Constants/Literals
- C++ Modifier Types
- C++ Storage Classes
- C++ Operators
- C++ Loop Types
- C++ Decision Making
- C++ Functions
- C++ Numbers
- C++ Arrays
- C++ Strings
- C++ Pointers
- C++ References
- C++ Date & Time
- C++ Basic Input/Output
- C++ Data Structures
- C++ Object Oriented
- C++ Classes & Objects
- C++ Inheritance
- C++ Overloading
- C++ Polymorphism
- C++ Abstraction
- C++ Encapsulation
- C++ Interfaces
Construct Pushdown automata for L = {0m1(n+m)2n | m,n = 0} in C++
We are given with a language “L” and the task is to construct a pushdown automata for the given language which explains that the occurrences of 1’s will be the addition of occurrences of 0’s and 2’s and also, occurrence of 0 and 2 will be minimum one which can also makes the string NULL and it should be accepted by the automata.
What is pushdown Automata?
A pushdown automata or pushdown automaton or PDA is a technique to implement a context−free grammar in a similar way we design Deterministic Finite Automaton or DFA for a regular grammar. A DFA can operate on finite data, but a PDA can operate on infinite data. We can understand pushdown automata as the combination of “finite state machine” and a “stack”.
A pushdown automaton has three components −
an input tape,
a control unit, and
a stack with infinite size.
A PDA can be formally described as a 7-tuple (Q, Σ, S, δ, q0, I, F) −
Q is the finite number of states
Σ is input alphabet
S is stack symbols
δ is the transition function: Q × (Σ υ {ε}) × S × Q × S*
q0 is the initial state (q0 Ε Q)
I is the initial stack top symbol (I Ε S)
F is a set of accepting states (F Ε Q)
Let’s construct a pushdown Automata for the given language −
The strings that are acceptable by this PDA are of the form −
0m1m − 01, 0011, 000111 etc. No. of 0s is equal to no. of 1s. When n is 0 we will have no 2s. Keep pushing 0s and as soon as the first 1 is encountered then pop 0s. If we reach the end of the string and are left with no 0s then the string is accepted.
1n2n − 12, 1122, 111222 etc. No. of 1s is equal to no. of 2s. When m is 0 we will have no 0s. Keep pushing 1s and as soon as the first 2 is encountered then pop 1s. If we reach the end of the string and are left with no 1s then the string is accepted.
0n1m+n2m − 0112, 001112, 001112 etc. No. of 1s is equal to sum of no. of 0s and 2s. Keep pushing 0s as soon as the first 1 is encountered then pop 0s until no 0s are left. Now again push 1s until the first 2 is encountered. Then for each 2 start popping 1s until we are left with no 1s. If we reach the end and no 1 is left then the string is accepted.
NULL string is also accepted. 001020
Let’s understand the machine
Transitions for state q0 −
( 0, I/0I ) − If top of stack is I and current input symbol is 0 then push 0 to top of stack and remain at q0. Stack becomes 0I...
( 0, 0/00 ) − If top of stack is 0 and current input symbol is also 0 then push 0 to top of stack and remain at q0. Stack becomes 00.... Keep pushing 0s until the next 1 or 2.
( 1, I/1I ) − If top of stack is I and current input symbol is 1 then push 1 to top of stack and move to q1. Stack becomes 1I...
( 1, 0/$ ) − If top of stack is 0 and current input symbol is 1 then pop 0 and move to q1.
( 1, 0/$ ) − If top of stack is 0 and current input symbol is 1 then pop 0 and move to q1.
Transitions for state q1 −
( 1, 1/11 ) − If top of stack is 1 and current input symbol is also 1 then push 1 to top of stack and remain at q1. Stack becomes 11.... Keep pushing 1s until the next 0 or 2.
( 1, 0/$ ) − If top of stack is 0 and current input symbol is 1 then pop 0 and remain at q1.
( $, I/I ) − If top of stack is I and there is no input then do nothing and move to qf.
( 2, 1/$ ) − If top of stack is 1 and current input symbol is 2 then pop 1 and move to q2.
Transitions for state q2 −
( 2, 1/$ ) − If top of stack is 1 and current input symbol is 2 then pop 1 and remain at q2.
( $, I/I ) − If top of stack is I and there is no input then do nothing and move to qf.
- Related Articles
- Construct Pushdown automata for L = {0(n+m)1m2n | m, n = 0} in C++
- Construct Pushdown automata for L = {0n1m2m3n | m,n = 0} in C++
- Construct Pushdown automata for L = {0n1m2(n+m) | m,n = 0} in C++
- Construct Pushdown automata for L = {a(2*m)c(4*n)dnbm | m,n = 0} in C++
- Construct Pushdown Automata for all length palindromes
- Construct PDA for L = {0n1m2(n+m) | m,n >=1}
- Construct PDA for accepting L = {anb(2n) | n>=1} U {anbn | n>=1}
- Construct Turing machine for L = {an bm a(n+m) - n,m≥1} in C++
- Construct a PDA for language L = {0n 1m2m3n | n>=1, m>=1}
- Construct DPDA for anbmc(n+m) n,m≥1 in TOC
- Construct a Turing Machine for L = {a^n b^n | n>=1}
- Construct DPDA for a(n+m)bmcn n,m≥1 in TOC
- Construct a Turing Machine for language L = {wwr | w ∈ {0, 1}}
- Construct a Turing Machine for language L = {0n1n2n | n≥1}
- If \( a=x^{m+n} y^{l}, b=x^{n+l} y^{m} \) and \( c=x^{l+m} y^{n} \), prove that \( a^{m-n} b^{n-1} c^{l-m}=1 . \)
