Theory of Computation Final Solution
Theory of Computation Final Solution
THEORY OF
COMPUTATION
CSE 2233
SOLUTION BY
NURUL ALAM ADOR
nurulalamador.github.io/UIUQuestionBank
Index
Trimester Page
Fall 2023 3
Summer 2023 10
Spring 2023 17
Fall 2022 22
Summer 2022 31
nurulalamador.github.io/UIUQuestionBank 2
Fall 2023
b) Modify the CFG to remove the ambiguity for the said string.
Solution:
a) First Parse Tree: Second Parse Tree:
S S
a a B B a C B
b b A B b
a b
Since there are two different parse tree for same input string,
∴ The given CFG is ambiguous for the string ‘aabb’.
b) Removing Ambiguity:
The language of following grammar is:
* | +
a) * | ∑ * ++
b) * | * + +
c) * * + | +
nurulalamador.github.io/UIUQuestionBank 3
Solution:
a) * | ∑ * ++
CFG: S → aSd | aAd
A → bAc | bc
b) * | * + +
CFG: S → aSa | bSb | aa | bb
c) * * + | +
RE: (0|1)* 1 (0|1)* 1 (0|1)* 1 (0|1)*
A A A A
CFG: S → A1A1A1A
A → 0A | 1A | ε
3. Showing all necessary steps, convert the following CFGs into their equivalent Chomsky
Normal Form (CNF).
a) S → ABC | BaB
A → aA | BaC | aaa
C → bBb | a | D
D → ε
b) S → BAC | B
B → 0B1 | 01
A → aAb | ε
C → Bc
Solution:
a) Given CFG:
S → ABC | BaB
A → aA | BaC | aaa
C → bBb | a | D
D → ε
Step 1: Skipping this step as no starting variable is appearing on the right side.
nurulalamador.github.io/UIUQuestionBank 4
Let, X → AB, Y → Ba, Z → bB, W → aa
S → XC | YB | AB
A → aA | YC | Wa | Ba
C → Zb | a
X → AB
Y → Ba
Z → bB
W → aa
Step 5: Bring the rules to CNF form:
Let, P → a, Q → b, R → B
S → XC | YB | AB
A → PA | YC | WP | BP
C → ZQ | a
X → AB
Y → BP
Z → QB
W → PP
P → a
Q → b
R → B
This is our final Chomsky Normal Form (CNF).
b) Given CFG:
S → BAC | B
B → 0B1 | 01
A → aAb | ε
C → Bc
Step 1: Skipping this step as no starting variable is appearing on the right side.
nurulalamador.github.io/UIUQuestionBank 5
Step 4: Reducing rules that have length>2:
Let, X → BA, Y → 0B, Z → aA
S → XC | BC | Y1 | 01
B → Y1 | 01
A → Zb | ab
C → Bc
X → BA
Y → 0B
Z → aA
Step 5: Bring the rules to CNF form:
Let, P → 0, Q → 1, T → a, U → b, V → c
S → XC | BC | YQ | PQ
B → YQ | PQ
A → ZU | TU
C → BV
X → BA
Y → PB
Z → TA
P → 0
Q → 1
T → a
U → b
V → c
This is our final Chomsky Normal Form (CNF).
4. Draw the Push Down Automata (PDA) for the following languages:
a) * | +
b) { | +
Solution:
a) * | +
Here,
∴ or, ∴
↓ ↓
[ P.T.O ]
nurulalamador.github.io/UIUQuestionBank 6
x ε x
ε ε Z0 x ε x ε ε y ε ε y, x ε
q q q q q4 q5
x ε ε
y ε ε z ε ε
x ε ε x ε x
q8 q9 q z ε ε q6
ε ε ε Z0 ε
x ε ε
q q7
y ε ε
ε Z0 ε
z x ε
y ε ε q q
z x ε
b) { | +
Here, our idea is we will push for ‘ ’ for ‘ ’ and ‘ ’ both and pop one ‘ ’ for every two ‘ ’.
ε x b ε x
ε ε Z0 ε ε ε ε ε ε ε Z0 ε
q q q q q5
ε ε x ε
q4
5. Draw a Turing Machine for the following language and show the Tape Traversal to
validate the given input:
* | +
Input String: aabbbcccccddddd
Solution:
* | +
Here,
and,
∴
[ P.T.O ]
nurulalamador.github.io/UIUQuestionBank 7
Turing Machine:
y y R
b b R z z R
R c, R
c, L
x R y R z L y y, L
q q q q b b, L
a, L
x x R
b w R
w w R
z z L
y, R z L L
y y R q4 q5 q6 y y L
b b L
b b R R
y y R z z R
␣ ␣, R
q7 q8
y y R
z z R
Tape Traversal:
aa bb b c c c cc dd ddd␣ xx b b b yy ccc zz ddd␣
↑ ↑
x a bb b c c c cc dd ddd␣ xx b b b yy ccc zz ddd␣
↑ ↑
x a bb b c c c cc dd ddd␣ xx w b b yy ccc zz ddd␣
↑ ↑
x a bb b yc c cc d d ddd␣ xx w b b yy ccc zz d dd␣
↑ ↑
x a bb b yc c cc d d ddd␣ x x w b b yy ycc zz d dd␣
↑ ↑
x a bb b yc c cc z d ddd␣ x x w b b yy ycc zz d dd␣
↑ ↑
x a bb b yc c cc z d ddd␣ x x w b b yy ycc zz z dd␣
↑ ↑
x a bb b yc c cc z d ddd␣ x x w b b yy ycc zz z dd␣
↑ ↑
x x bb b yc c cc z d ddd␣ x x w b b yy ycc zz z dd␣
↑ ↑
x x bb b yc c cc z d ddd␣ x x wwb yy ycc zz z dd␣
↑ ↑
x x bb b yy c cc z d ddd␣ x x wwb yy ycc zz z dd␣
↑ ↑
x x bb b yy c cc z d ddd␣ x x wwb yy yyc zz z dd␣
↑ ↑
x x bb b yy c cc z z ddd␣ x x wwb yy yyc zz z dd␣
↑ ↑
[ P.T.O ]
nurulalamador.github.io/UIUQuestionBank 8
xx ww b yy yyc z z z zd␣
↑
xx ww b yy yyc z z z zd␣
↑
xx ww b yy yyc z z z zd␣
↑
xx www yy yyc z z z zd␣
↑
xx www yy yyc z z z zd␣
↑
xx www yy yyy z z z zd␣
↑
xx www yy yyy z z z zd␣
↑
xx w ww yy yyy z z zzz ␣
↑
xx w ww yy yyy z z zzz ␣
↑
xx w ww yy yyy z z zzz ␣
↑
xx w ww yy yyy z z zzz ␣
↑
xx w ww yy yyy z z zzz ␣
↑
nurulalamador.github.io/UIUQuestionBank 9
Summer 2023
1. Consider the following Context-free grammars (CFG) and answer according to it:
S + S S + S
B S + S S + S B
b B A B B A b B
b B a A b B b B a A 2
b B A 2 b B A
2 a A b B a A
1 2 1
Since there are two different parse tree for same input string,
∴ The given CFG is ambiguous for the string “bbb2 + aa1 + b2”.
b) Leftmost Derivation:
S → S–S → (X + S) – S → (x + Y * X) – S
→ (S) – S → (x + S) – S → (x + 2 * X) – S
→ (S + S) – S → (x + T) – S → (x + 2 * y) – S
→ (T + S) – S → (x + X * X) – S → (x + 2 * y) – (S)
[ P.T.O ]
nurulalamador.github.io/UIUQuestionBank 10
→ (x + 2 * y) – (S + S) → (x + 2 * y) – (3 * z + S)
→ (x + 2 * y) – (T + S) → (x + 2 * y) – (Y * z + T)
→ (x + 2 * y) – (X * X + S) → (x + 2 * y) – (3 * z + X)
→ (x + 2 * y) – (Y * X +S) → (x + 2 * y) – (3 * z + Y)
→ (x + 2 * y) – (3 * X + S) → (x + 2 * y) – (3 * z + 1)
∴ “(x + 2*y) – (3*z + 1)” has been derived using Leftmost Derivation.
a) * | +
b) * * +| w yb +
c) { | 6 4 8 6 +
Solution:
a) * | +
Here,
CFG: S → aaAdddd
A → aAdd | aBccc
B → aBccc | accc
b) * * +| w yb +
RE: 0 (0|1) ((0|1)(0|1))* 0 | 1 (0|1) ((0|1)(0|1))* 1 | 0 | 1
A ⏟ A ⏟
c) { | 6 4 8 6 +
Here, 6 (i)
4 8 6 (ii)
Solving equation (i) and (ii):
CFG: S → ABC
A → aA | ε
B → bB | bb
C → cC | c
3. Convert the following CFG’s into equivalent Chomsky Normal Form (CNF)
[Show all the Steps]
[ P.T.O ]
nurulalamador.github.io/UIUQuestionBank 11
a) S → YXZ | Y
Y → 0Y1 | 01
X → aXb | ε
Z → bZ
b) S → ASB
A → aAS | a | ε
B → SbS | A | bb
Solution:
a) Given CFG:
S → YXZ | Y
Y → 0Y1 | 01
X → aXb | ε
Z → bZ
Step 1: Skipping this step as no starting variable is appearing on the right side.
nurulalamador.github.io/UIUQuestionBank 12
X → RB | AB
Z → BZ
P → YX
Q → CY
R → AX
A → a
B → b
C → 0
D → 1
This is our final Chomsky Normal Form (CNF).
b) Given CFG:
S → ASB
A → aAS | a | ε
B → SbS | A | bb
Step 1: Adding new starting variable:
S0 → S
S → ASB
A → aAS | a | ε
B → SbS | A | bb
Step 2: Removing null production:
Removing A → ε : Removing B → ε :
S0 → S S0 → S
S → ASB | SB S → ASB | SB | AS | S
A → aAS | a | aS A → aAS | a | aS
B → SbS | A | bb | ε B → SbS | A | bb
Step 3: Removing unit production:
Removing S0 → S, S → S, B → A :
S0 → ASB | SB | AS
S → ASB | SB | AS
A → aAS | a | aS
B → SbS | bb | aAS | a | aS
Step 4: Reducing rules that have length>2:
Let, X → AS, Y → Sb
S0 → XB | SB | AS
S → XB | SB | AS
A → aX | a | aS
B → YS | bb | aX | a | aS
X → AS
nurulalamador.github.io/UIUQuestionBank 13
Y → Sb
Step 5: Bring the rules to CNF form:
Let, P → a, Q → b
S0 → XB | SB | AS
S → XB | SB | AS
A → PX | a | PS
B → YS | QQ | PX | a | PS
X → AS
Y → SQ
P → a
Q → b
This is our final Chomsky Normal Form (CNF).
ε ε Z0 ε ε ε ε Z0 ε
q q q q
b) * | +
b ε ε
ε a ε ε
ε ε Z0 b ε ε b ε b b ε
q q q q q4
ε ε ε
ε ε ε ε
q7 q6 q5
ε Z0 ε
ε
q8
5. Draw Turing Machine for the following Languages and Show the Tape Traversal to
validate the given input:
nurulalamador.github.io/UIUQuestionBank 14
* |w +
Input String: xxxyyyyyyyyyzzzzzz
Solution:
* |w +
Here, ∴
↓
Turing Machine:
b b R b b L
x x R x x, L
x R y b L
q q q
R
b b R
R L
y y R y y, L
y b R z L
b b R q q4 q5
R b b R
␣ ␣, R
R q6 q7
Tape Traversal:
x x x y yy yy yyyy zzzzzz␣ aax b by yy yyyy zzzzzz␣
↑ ↑
ax x y yy yy yyyy zzzzzz␣ aax b by yy yyyy zzzzzz␣
↑ ↑
ax x y yy yy yyyy zzzzzz␣ aax b by yy yyyy zzzzzz␣
↑ ↑
ax x byy yy yyyy zzzzzz␣ aaa b by yy yyyy zzzzzz␣
↑ ↑
ax x byy yy yyyy zzzzzz␣ aaa b by yy y yyy zzzzzz␣
↑ ↑
ax x byy yy yyyy zzzzzz␣ aaa bbb yy y yyy zzzzzz␣
↑ ↑
aax byy yy yyyy zzzzzz␣ aaa bbb yy y yyy zzzzzz␣
↑ ↑
aax byy yy yyyy zzzzzz␣ aaa bbb yy y yyy zzzzzz␣
↑ ↑
[ P.T.O ]
nurulalamador.github.io/UIUQuestionBank 15
a aa bbb y y y y yy zzz zzz␣ a aa bbb bbbby y ccczz z ␣
↑ ↑
a aa bbb y y y y yy zzz zzz␣ a aa bbb bbbby y ccczz z ␣
↑ ↑
a aa bbb by y y yy zzz zzz␣ a aa bbb bbbby y ccccz z ␣
↑ ↑
a aa bbb by y y yy zzz zzz␣ a aa bbb bbbby y ccccz z ␣
↑ ↑
a aa bbb by y yyy czz zzz␣ a aa bbb bbbby y ccccz z ␣
↑ ↑
a aa bbb by y yyy czz zzz␣ a aa bbb bbbbby ccccz z ␣
↑ ↑
a aa bbb by y yyy czz zzz␣ a aa bbb bbbbby ccccz z ␣
↑ ↑
a aa bbb bby yyy czz zzz␣ a aa bbb bbbbby ccccc z ␣
↑ ↑
a aa bbb bby yyy czz zzz␣ a aa bbb bbbbby ccccc z ␣
↑ ↑
a aa bbb bby yyy ccz zzz␣ a aa bbb bbbbby ccccc z ␣
↑ ↑
a aa bbb bby yyy ccz zzz␣ a aa bbb bbbbbb ccccc z ␣
↑ ↑
a aa bbb bby yyy ccz zzz␣ a aa bbb bbbbbb ccccc z ␣
↑ ↑
a aa bbb bbbyyy ccz zzz␣ a aa bbb bbbb bb cccccc ␣
↑ ↑
a aa bbb bbbyyy ccz zzz␣ a aa bbb bbbb bb cccccc ␣
↑ ↑
a aa bbb bbbyyy ccc zzz␣ a aa bbb bbbb bb cccccc ␣
↑ ↑
a aa bbb bbbyyy ccc zzz␣ a aa bbb bbbb bb cccccc ␣
↑ ↑
a aa bbb bbbyyy ccc zzz␣ a aa bbb bbbb bb cccccc ␣
↑ ↑
nurulalamador.github.io/UIUQuestionBank 16
Spring 2023
1. E → E +E |E – E| E= E
E → MNV | MN
M → –| ε
N → 0 | 1 | 2 | 3 |4 | 5 | 6 | 7 | 8 | 9 | NN
V → x| y|z
a) With the help of Top-Down Parse Trees figure out if the grammar is Ambiguous or
not for the string “x + y + z = 2”.
b) Show the Right Most Derivation for the string “-26x + 3y – 8z = -83”.
Solution:
a) Not Possible. [Most probably, printing mistake in the question]
b) Rightmost Derivation:
S → E=E → E + MNV – ε8z = –83
→ E = MN → E + MNV –8z = –83
→ E = MNN → E + MNy – 8z = –83
→ E = MN3 → E + M3y – 8z = –83
→ E = M83 → E + ε3y – 8z = –83
→ E = –83 → MNV + 3y – 8z = –83
→ E – E = –83 → MNx + 3y – 8z = –83
→ E – M V = –83 → MNNx + 3y – 8z = –83
→ E – MNz = –83 → MN6x + 3y – 8z = –83
→ E – M8z = –83 → M26x + 3y – 8z = –83
→ E – ε8z = –83 → –26x + 3y – 8z = –83
→ E + E – ε8z = –83
a) { | +
b) * | +
c) * | 4 +
Solution:
a) { | +
Here,
∴
nurulalamador.github.io/UIUQuestionBank 17
CFG: S → ABz
A → xA | ε
B → yBzz | yzz
b) * | +
Here,
and, 4
∴ ∴ 4
∴
CFG: S → AB
A → aAbb | abb
B → ccccBd | ccccd
c) * | 4 +
Here, 4
∴
CFG: S → XGh
X → cXdddd | #
G → gG | ggg
3. Convert the following Context Free Grammars to Chomsky Normal Form (CNF)
a) S → ASA | aB
A → B|S
B → b|ε
b) S → S + S | S – S | (S) | T
T → x| y|z|X
X → X*X|X%X|Y
Y → 0|1
c) S → ASB
A → aAS | a | ε
B → SbS | A | bb
Solution:
a) Given CFG:
S → ASA | aB
A → B|S
B → b|ε
Step 1: Adding new starting variable:
S0 → S
S → ASA | aB
nurulalamador.github.io/UIUQuestionBank 18
A → B|S
B → b|ε
Step 2: Removing null production:
Removing B → ε : Removing A → ε :
S0 → S S0 → S
S → ASA | aB | a S → ASA | aB | a | AS | SA | S
A → B|S|ε A → B|S
B → b B → b
Step 3: Removing unit production:
Removing S0 → S, S → S, A → B, A → S :
S0 → ASA | aB | a | AS | SA
S → ASA | aB | a | AS | SA
A → b | ASA | aB | a | AS | SA
B → b
Step 4: Reducing rules that have length>2:
Let, X → AS
S0 → XA | aB | a | AS | SA
S → XA | aB | a | AS | SA
A → b | XA | aB | a | AS | SA
B → b
X → AS
Step 5: Bring the rules to CNF form:
Let, Y → a
S0 → XA | YB | a | AS | SA
S → XA | YB | a | AS | SA
A → b | XA | YB | a | AS | SA
B → b
X → AS
Y → a
This is our final Chomsky Normal Form (CNF).
b) Given CFG:
S → S + S | S – S | (S) | T
T → x| y|z|X
X → X*X|X%X|Y
Y → 0|1
Step 1: Adding new starting variable:
S0 → S
S → S + S | S – S | (S) | T
nurulalamador.github.io/UIUQuestionBank 19
T → x| y|z|X
X → X*X|X%X|Y
Y → 0|1
Step 2: We will skip this step as there is no null production.
nurulalamador.github.io/UIUQuestionBank 20
R → %
This is our final Chomsky Normal Form (CNF).
b) { |( ) +
Solution:
a) * | +
Here, Now, our idea is, we will push ‘ ’ for every ‘ ’ in the
↓ stack. If there then at least one ‘ ’ will left in the
or, stack after popping ‘ ’ for every ‘b’. If there then
we will get while popping ‘ ’ for every ‘b’. Here,
confirming ‘ ’ for final state is not necessary since .
ε b ε ε ε
ε ε Z0 ε ε ε ε ε
q q q q
b, Z0 ε
ε ε q4
b) { |( ) +
Here,
↓ or, ↓
ε ε
1, 0 ε
ε ε Z0 ε ε ε ε ε ε
q q q q q4 q5
ε ε ε ε ε
ε
ε ε q8 q9 ε ε q6
ε ε Z0 ε
ε Z0 ε
ε q q7
nurulalamador.github.io/UIUQuestionBank 21
Fall 2022
1. Consider the following Context-free grammars (CFG) and answer according to it:
Solution:
a) First Parse Tree: Second Parse Tree:
S S
A S B A C
B B A C 0 B A 1 1
0 0 A 1 1 0 A 1
A 1 A 1
A 1 A 1
B
A 1
B 0
Since there are two different parse tree for same input string,
∴ The given CFG is ambiguous for the string “00011111”.
b) [ P.T.O]
nurulalamador.github.io/UIUQuestionBank 22
First Leftmost Derivation: Second Leftmost Derivation:
E → E+E E → E–E
→ V+E → E+E–E
→ p+E → V+E–E
→ p+E–E → p+E–E
→ p+(E)–E → p+(E)–E
→ p+(V)–E → p+(V)–E
→ p+(X)–E → p+(X)–E
→ p+(X*X)–E → p+(X*X)–E
→ p+(Y*X)–E → p+(Y*X)–E
→ p+(0*X)–E → p+(0*X)–E
→ p+(0*X%X)–E → p+(0*X%X)–E
→ p+(0*Y%X)–E → p+(0*Y%X)–E
→ p+(0*1%X)–E → p+(0*1%X)–E
→ p+(0*1%Y)–E → p+(0*1%Y)–E
→ p+(0*1%0)–E → p+(0*1%0)–E
→ p+(0*1%0)–V → p+(0*1%0)–V
→ p+(0*1%0)–r → p+(0*1%0)–r
Since there are two different left derivation for same input string,
∴ The given CFG is ambiguous for the string “p+(0*1%0)–r”.
a) * | +, Here ∑ * +
b) * * +| w yb +
c) { |w +
Solution:
a) * | +
CFG: S → A#B
A → xA | xx
B → yB | yyy
b) * * +| w yb +
RE: 0 ((0|1)(0|1))* 1 | 1 ((0|1)(0|1))* 0
⏟ ⏟
nurulalamador.github.io/UIUQuestionBank 23
c) { |w +
Here,
↓
or,
CFG: S → Si>j | Si<j
Si>j → aXC
Si<j → YbC
X → aXb | A
Y → aYb | B
A → aA | ε
B → bB | ε
C → cC | c
3. Convert the following CFG’s into equivalent Chomsky Normal Form (CNF) [Show all the
Steps]
a) S → aSBcD | BC
A → AbCd | a
B → CBA | ε
C → c| ε
D → d
b) S → xP | yQ | y | RRz
P → Qxx | xyR | ε
Q → yPPy | xy | zR
R → x | y | PR | ε
Solution:
a) Given CFG:
S → aSBcD | BC
A → AbCd | a
B → CBA | ε
C → c| ε
D → d
Step 1: Adding new starting variable:
S0 → S
S → aSBcD | BC
A → AbCd | a
B → CBA | ε
C → c| ε
D → d
Step 2: Removing null production:
nurulalamador.github.io/UIUQuestionBank 24
Removing B → ε : Removing C → ε :
S0 →
S S0 → S
S →
aSBcD | BC | aScD | C S → aSBcD | BC | aScD | C | B | ε
A →
AbCd | a A → AbCd | a
B →
CBA | CA B → CBA | CA | BA | A
C →
c| ε C → c
D →
d D → d
Removing S → ε :
S0 → S
S → aSBcD | BC | aScD | C | B | aBcD | acD
A → AbCd | a
B → CBA | CA
C → c
D → d
Step 3: Removing unit production:
Removing S0 → S, S → C, S → B, S0 → B :
S0 → aSBcD | BC | aScD | aBcD | acD | c | CBA | CA
S → aSBcD | BC | aScD | aBcD | acD | c | CBA | CA
A → AbCd | a
B → CBA | CA
C → c
D → d
Step 4: Reducing rules that have length>2:
Let, X → YB, Y → aS, Z → cD, W → aB, M → CB, N → Ab, O → Cd
S0 → XZ | BC | YZ | WZ | aZ | c | MA | CA
S → XZ | BC | YZ | WZ | aZ | c | MA | CA
A → NO | a
B → MA | CA
C → c
D → d
X → YB
Y → aS
Z → cD
W → aB
M → CB
N → Ab
O → Cd
Step 5: Bring the rules to CNF form:
Here, C → c, D → d
Let, P → a, Q → b
nurulalamador.github.io/UIUQuestionBank 25
S0 → XZ | BC | YZ | WZ | PZ | c | MA | CA
S → XZ | BC | YZ | WZ | PZ | c | MA | CA
A → NO | a
B → MA | CA
C → c
D → d
X → YB
Y → PS
Z → CD
W → PB
M → CB
N → AQ
O → CD
P → a
Q → b
This is our final Chomsky Normal Form (CNF).
b) Given CFG:
S → xP | yQ | y | RRz
P → Qxx | xyR | ε
Q → yPPy | xy | zR
R → x | y | PR | ε
Step 1: Skipping this step as no starting variable is appearing on the right side.
nurulalamador.github.io/UIUQuestionBank 26
R → x | y | PR | Bx | CR | xy
A → RR
B → Qx
C → xy
D → yP
E → Py
Step 5: Bring the rules to CNF form:
Let, X → x, Y → y, Z → z
S → XP | YQ | Y | AZ | x | RZ | z
P → BX | CR | XY
Q → DE | XY | ZR | DY | YY | z
R → x | y | PR | BX | CR | XY
A → RR
B → QX
C → XY
D → YP
E → PY
X → x
Y → y
Z → z
This is our final Chomsky Normal Form (CNF).
4. Draw the Push Down Automata (PDA) for the following languages:
a) * | +
b) * | +
Solution:
a) * | +
Here,
∴
↓
b ε
ε a b ε b ε b
ε ε Z0 ε b ε ε ε ε ε Z0 ε
q q q q q4 q5
b) * | +
[ P.T.O ]
nurulalamador.github.io/UIUQuestionBank 27
Here,
↓ or, ↓
x ε ε
y x ε
ε ε Z0 x ε ε x ε x ε ε y x ε
q q q q q4 q5
x ε x y ε ε z ε ε
ε ε y ε ε
x ε x q8 q9 q z ε ε q6
z ε ε ε Z0 ε
z x ε ε Z0 ε
q q q7
z ε ε
5. Draw Turing Machine for the following Languages and Show the Tape Traversal for the
Given input:
a) * |w ( ) + | Input String:
b) * | * + + | Input String:
Solution:
* |w ( ) +
Now, here our idea is we will consider ‘ ’ and ‘ ’ as same symbol and after first traversal
we will replace ‘ ’ and ‘ ’ both as a common symbol. (Here we replaced with ‘ ’)
Turing Machine:
M M R M M L
z z R z z L
R R b b L
b b, R c, L
M y R
y R
x R b y R z, L
q q q q
M M R z z L
y y R
M M R
q6 q4
z z R
␣ ␣, R y M L
y M L
q7 q5 L
Tape Traversal:
[ P.T.O ]
nurulalamador.github.io/UIUQuestionBank 28
aa b c c ddd ddd ␣ xx MMM zzz d dd ␣
↑ ↑
x a b c c ddd ddd ␣ xx y MM zzz d dd ␣
↑ ↑
x a b c c ddd ddd ␣ xx y MM zzz d dd ␣
↑ ↑
x a y c c d dd ddd ␣ xx y MM zzz z dd ␣
↑ ↑
x a y c c d dd ddd ␣ xx y MM zzz z dd ␣
↑ ↑
x a y c c z dd ddd ␣ xx y MM zzz z dd ␣
↑ ↑
x a y c c z dd ddd ␣ xx y y M zzz z dd ␣
↑ ↑
x a y c c z dd ddd ␣ xx y y M zzz z dd ␣
↑ ↑
x a y y c z dd ddd ␣ xx y y M zzz z z d ␣
↑ ↑
x a y y c z dd ddd ␣ xx y y M zzz z z d ␣
↑ ↑
x a y y c z z d ddd ␣ xx y y M zzz z z d ␣
↑ ↑
x a y y c z z d ddd ␣ xx y y y zzz z z d ␣
↑ ↑
x a y y c z z d ddd ␣ xx y y y zzz z z d ␣
↑ ↑
x a y y y z z d ddd ␣ xx y y y zzz z z z ␣
↑ ↑
x a y y y z z d ddd ␣ xx y y y zzz z z z ␣
↑ ↑
x a y y y z z z ddd ␣ xx y y y zzz z z z ␣
↑ ↑
x a y y y z z z ddd ␣ xx y y y zzz z z z ␣
↑ ↑
x a y y y z z z ddd ␣ xx y y M zzz z z z ␣
↑ ↑
x a y y y z z z ddd ␣ xx y MM zzz z z z ␣
↑ ↑
x a y y M z z z ddd ␣ xx y MM zzz z z z ␣
↑ ↑
x a y MM z z z ddd ␣ xx MMM zzz z z z ␣
↑ ↑
x a M MM z z z ddd ␣ xx MMM zzz z z z ␣
↑ ↑
x a M MM z z z ddd ␣ xx MMM zzz z z z ␣
↑ ↑
x a M MM z z z ddd ␣ xx MMM zzz z z z ␣
↑ ↑
x a M MM z z z ddd ␣
↑
nurulalamador.github.io/UIUQuestionBank 29
b) * | * ++
Turing Machine:
x R
q x R
R
R q q5 R
R R
x x R q7
R R
␣ ␣, R
q8
x x R q q6 x x R
x x L
x L x L
q
L
x x R L
q4
L
Tape Traversal:
010 # 0 1 0 ␣ xx 0 # xx0 ␣
↑ ↑
x 10 # 0 1 0 ␣ xx 0 # xx0 ␣
↑ ↑
x 10 # 0 1 0 ␣ xx 0 # xx0 ␣
↑ ↑
x 10 # 0 1 0 ␣ xx x # xx0 ␣
↑ ↑
x 10 # x 1 0 ␣ xx x # xx0 ␣
↑ ↑
x 10 # x 1 0 ␣ xx x # xxx ␣
↑ ↑
x 10 # x 1 0 ␣ xx x # xxx ␣
↑ ↑
x x 0 # x 1 0 ␣ xx x # xxx ␣
↑ ↑
x x 0 # x 1 0 ␣ xx x # xxx ␣
↑ ↑
x x 0 # x 1 0 ␣ xx x # xxx ␣
↑ ↑
x x 0 # x x 0 ␣ xx x # xxx ␣
↑ ↑
nurulalamador.github.io/UIUQuestionBank 30
Summer 2022
1. Consider the following context-free grammars (CFG). With the help of Top-Down Parse
Tree decide whether the grammars are ambiguous or not:
a) S → 2BA | 1S | 2A
B → 1B3 | 1S3 | ε 211211313
A → A11 | 12AS3 | B | ε
b) B → 11BS | 0S0B | ε
S → AC01 | 0S | 1S | A1
011010
A → 1 | B | CA | ε
C → x| y|A
Solution:
a) First Parse Tree: Second Parse Tree:
S S
S S
S S
ε ε
ε ε
Since there are two different parse tree for same input string,
∴ The given CFG is ambiguous for the string ‘211211313’.
a) [ P.T.O ]
nurulalamador.github.io/UIUQuestionBank 31
First Parse Tree: Second Parse Tree:
B B
0 S 0 B 0 S 0 B
A C 0 1 ε 1 S ε
1 A 1 S
1 0 S
A 1
Since there are two different parse tree for same input string,
∴ The given CFG is ambiguous for the string ‘011010’.
a) * |w +
b) { |w +
c) * * +|| | yb +
Solution:
a) * |w +
CFG: S → aSdd | aAdd
A → bAccc | bccc
b) { |w +
Here,
↓ or, ↓
nurulalamador.github.io/UIUQuestionBank 32
c) * * +|| | yb +
CFG: S → 0S0 | 0S1 | 1S0 | 1S1 | 0
3. Convert the following CFGs into the equivalent Chomsky Normal Form (CNF) [Show all
the Steps]
a) A → 1 | B | CA | ε
B → 1BS | 0S0B | ε
C → x| y|A
S → 1A1 | 0S | S | A1
b) W → 2XY | 1W | 2Y
X → 1X3 | 1W3 | ε
Y → Y11 | 12YW3 | X | ε
Solution:
a) Given CFG:
A → 1 | B | CA | ε
B → 1BS | 0S0B | ε
C → x| y|A
S → 1A1 | 0S | S | A1
Step 1: Adding new starting variable:
A0 → A
A → 1 | B | CA | ε
B → 1BS | 0S0B | ε
C → x| y|A
S → 1A1 | 0S | S | A1
Step 2: Removing null production:
Removing A → ε : Removing B → ε :
A0 →A|ε A0 A →
A →1 | B | CA | C A →
1 | B | CA | C
B →1BS | 0S0B | ε B →
1BS | 0S0B | 1S | 0S0
C →x| y|A|ε C →
x| y|A|ε
S →1A1 | 0S | S | A1 | 11 | 1 S →
1A1 | 0S | S | A1 | 11 | 1
Removing C → ε : Removing A0 → ε :
A0 → A | ε A0 → A
A → 1 | B | CA | C | A A → 1 | B | CA | C | A
B → 1BS | 0S0B | 1S | 0S0 B → 1BS | 0S0B | 1S | 0S0
C → x| y|A C → x| y|A
S → 1A1 | 0S | S | A1 | 11 | 1 S → 1A1 | 0S | S | A1 | 11 | 1
Step 3: Removing unit production:
Removing A0 → A, A → B, A → C, A → C, A → A, C → A, S → S :
nurulalamador.github.io/UIUQuestionBank 33
A0 → 1 | CA | 1BS | 0S0B | 1S | 0S0 | x | y
A → 1 | CA | 1BS | 0S0B | 1S | 0S0 | x | y
B → 1BS | 0S0B | 1S | 0S0
C → x | y | 1 | CA | 1BS | 0S0B | 1S | 0S0
S → 1A1 | 0S | A1 | 11 | 1
Step 4: Reducing rules that have length>2:
Let, X → 1B, Y → 0S, Z → 0B, W → 1A
A0 → 1 | CA | XS | YZ | 1S | Y0 | x | y
A → 1 | CA | XS | YZ | 1S | Y0 | x | y
B → XS | YZ | 1S | Y0
C → x | y | 1 | CA | XS | YZ | 1S | Y0
S → W1 | 0S | A1 | 11 | 1
X → 1B
Y → 0S
Z → 0B
W → 1A
Step 5: Bring the rules to CNF form:
Let, P → 1, Q → 0
A0 → 1 | CA | XS | YZ | PS | YQ | x | y
A → 1 | CA | XS | YZ | PS | YQ | x | y
B → XS | YZ | PS | YQ
C → x | y | 1 | CA | XS | YZ | PS | YQ
S → WP | QS | AP | PP | 1
X → PB
Y → QS
Z → QB
W → PA
P → 1
Q → 0
This is our final Chomsky Normal Form (CNF).
b) Given CFG:
W → 2XY | 1W | 2Y
X → 1X3 | 1W3 | ε
Y → Y11 | 12YW3 | X | ε
Step 1: Adding new starting variable:
S → W
W → 2XY | 1W | 2Y
X → 1X3 | 1W3 | ε
Y → Y11 | 12YW3 | X | ε
nurulalamador.github.io/UIUQuestionBank 34
Step 2: Removing null production:
Removing X → ε : Removing Y → ε :
S → W S → W
W → 2XY | 1W | 2Y W → 2XY | 1W | 2Y | 2X | 2
X → 1X3 | 1W3 | ε X → 1X3 | 1W3 | 13
Y → Y11 | 12YW3 | X | ε Y → Y11 | 12YW3 | X | 11 | 12W3
Step 3: Removing unit production:
Removing S → A, Y → X :
S → 2XY | 1W | 2Y | 2X | 2
W → 2XY | 1W | 2Y | 2X | 2
X → 1X3 | 1W3 | 13
Y → Y11 | 12YW3 | 11 | 12W3 | 1X3 | 1W3 | 13
Step 4: Reducing rules that have length>2:
Let, A → 2X, B → 1X, C → 1W, D → EY, E → 12, F → W3, G → X3, H → 11
S → AY | 1W | 2Y | 2X | 2
W → AY | 1W | 2Y | 2X | 2
X → B3 | C3 | 13
Y → YH | DF | 11 | EF | 1G | 1F | 13
A → 2X
B → 1X
C → 1W
D → EY
E → 12
F → W3
G → X3
H → 11
Step 5: Bring the rules to CNF form:
Let, P → 1, Q → 2, R → 3
S → AY | PW | QY | QX | 2
W → AY | PW | QY | QX | 2
X → BR | CR | PR
Y → YH | DF | PP | EF | PG | PF | PR
A → QX
B → PX
C → PW
D → EY
E → PQ
F → WR
G → XR
H → PP
nurulalamador.github.io/UIUQuestionBank 35
P → 1
Q → 2
R → 3
This is our final Chomsky Normal Form (CNF).
ε
ε a b ε
ε ε Z0 ε b ε ε ε Z0
q q q q q4
b) * w w * ++
ε 0 ε
ε 1 ε
ε ε
ε ε Z0 ε ε ε Z0 ε
q q q q
5. Draw Turing Machine for the following Languages and Show the Tape Traversal for the
Given input
a) * |w + | Input String:
b) * | * + + | Input String:
Solution:
a) * |w +
Here,
∴
↓
Turing Machine:
[ P.T.O ]
nurulalamador.github.io/UIUQuestionBank 36
z z R z z L
R b b, R b b, L
x R b y R z L
q q q q
b b R z z L
y y R
b b R
q6 q4
z z R
␣ ␣, R y b L
y b L
q7 q5 L
Tape Traversal:
aa b bb cc c ccc ␣ x a y y y z zz cc c ␣
↑ ↑
x a b bb cc c ccc ␣ x a y y y z zz cc c ␣
↑ ↑
x a b bb cc c ccc ␣ x a y y b z zz cc c ␣
↑ ↑
x a y bb c c c ccc ␣ x a y bb z zz cc c ␣
↑ ↑
x a y bb c c c ccc ␣ x a bbb z zz cc c ␣
↑ ↑
x a y bb z c c ccc ␣ x a bbb z zz cc c ␣
↑ ↑
x a y bb z c c ccc ␣ x a bbb z zz cc c ␣
↑ ↑
x a y bb z c c ccc ␣ x x bbb z zz cc c ␣
↑ ↑
x a y y b z c c ccc ␣ x x y bb z zz cc c ␣
↑ ↑
x a y y b zc c ccc ␣ x x y bb z zz cc c ␣
↑ ↑
x a y y b zz c ccc ␣ x x y bb zzz zc c ␣
↑ ↑
x a y y b zz c ccc ␣ x x y bb zzz zc c ␣
↑ ↑
x a y y b zz c ccc ␣ x x y bb zzz zc c ␣
↑ ↑
x a y y y zz c ccc ␣ x x y y b zzz zc c ␣
↑ ↑
x a y y y zz c ccc ␣ x x y y b zzz zc c ␣
↑ ↑
x a y y y zz z ccc ␣ x x y y b zzz zz c ␣
↑ ↑
x a y y y zz z ccc ␣ x x y y b zzz zz c ␣
↑ ↑
[ P.T.O ]
nurulalamador.github.io/UIUQuestionBank 37
xx yyb z zz zzc ␣ xx y y b zzz zzz ␣
↑ ↑
xx yyy z zz zzc ␣ xx y b b zzz zzz ␣
↑ ↑
xx yyy z zz zzc ␣ xx bb b zzz zzz ␣
↑ ↑
xx yyy z zz zzz ␣ xx bb b zzz zzz ␣
↑ ↑
xx yyy z zz zzz ␣ xx bbb zzz zzz ␣
↑ ↑
xx yyy z zz zzz ␣ xx bbb zzz zzz ␣
↑ ↑
xx yyy z zz zzz ␣
↑
b) * | * + +
Turing Machine:
q
x * R y * R
x x R R x x R
y y R y y R
q q4
R R
* * R * * R
* * R q6
␣ ␣, L ␣ ␣, R ␣ ␣, L
* * L q q7 q5 * * L
x * L y * L
q
* * R
x x L
y y L
L
Tape Traversal:
x yy # yyx ␣ *yy # yy * ␣ * *y # y ** ␣ *** # y ** ␣
↑ ↑ ↑ ↑
* yy # yyx ␣ *yy # yy * ␣ * *y # y ** ␣ *** # * ** ␣
↑ ↑ ↑ ↑
* yy # yyx ␣ ** y # yy * ␣ * *y # y ** ␣ *** # * ** ␣
↑ ↑ ↑ ↑
* yy # yyx ␣ ** y # yy * ␣ * ** # y ** ␣ *** # * ** ␣
↑ ↑ ↑ ↑
* yy # yy* ␣ ** y # yy * ␣ * ** # y ** ␣ *** # * ** ␣
↑ ↑ ↑ ↑
nurulalamador.github.io/UIUQuestionBank 38