0% found this document useful (0 votes)
88 views38 pages

Theory of Computation Final Solution

Toc notes
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
88 views38 pages

Theory of Computation Final Solution

Toc notes
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 38

FINAL QUESTION SOLUTIONS

THEORY OF
COMPUTATION
CSE 2233

SOLUTION BY
NURUL ALAM ADOR

UPDATED TILL FALL 2023

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

1. Answer the question based on the given CFG:


S → aaBB | aCB
B → b|ε
C → AB
A → a|ε
a) With the help of Parse Tree show that the CFG is ambiguous for the string ‘aabb’.

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:
* | +

∴ After removing ambiguity, the grammar becomes:


S → aCB
B → b|ε
C → AB
A → a|ε

2. Design CFGs that generate the following languages:

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.

Step 2: Removing null production:


Removing D → ε : Removing C → ε :
S → ABC | BaB S → ABC | BaB | AB
A → aA | BaC | aaa A → aA | BaC | aaa | Ba
C → bBb | a | ε C → bBb | a
Step 3: Skipping this step as there is no unit production left.

Step 4: Reducing rules that have length>2:

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.

Step 2: Removing null production:


Removing A → ε :
S → BAC | B | BC
B → 0B1 | 01
A → aAb | ab
C → Bc
Step 3: Removing unit production:
Removing S → B :
S → BAC | BC | 0B1 | 01
B → 0B1 | 01
A → aAb | ab
C → Bc

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:

a) S → S+S|S*S|A|B With the help of Top-Down Parse Trees,


find-out if the grammar is Ambiguous
A → aA | 1 or not for the string “bbb2 + aa1 + b2”
B → bB | 2
b) S → S + S | S – S | (S) | T With the help of Leftmost derivation,
derive the following string “(x + 2*y) –
T → X*X|X%X|X (3*z + 1)”
X → x|y|z|Y
Y → 0|1|2|3
Solution:
a) First Parse Tree: Second Parse Tree:
S S

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.

2. Find CFGs that generates the following languages.

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 ⏟

CFG: S → 0AB0 | 1AB1 | 0 | 1


A → 0|1
B → AAB | ε

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.

Step 2: Removing null production:


Removing X → ε :
S → YXZ | Y | YZ
Y → 0Y1 | 01
X → aXb | ab
Z → bZ
Step 3: Removing unit production:
Removing S → Y :
S → YXZ | YZ | 0Y1 | 01
Y → 0Y1 | 01
X → aXb | ab
Z → bZ
Step 4: Reducing rules that have length>2:
Let, P → YX, Q → 0Y, R → aX
S → PZ | YZ | Q1 | 01
Y → Q1 | 01
X → Rb | ab
Z → bZ
P → YX
Q → 0Y
R → aX
Step 5: Bring the rules to CNF form:
Let, A → a, B → b, C → 0, D → 1
S → PZ | YZ | QD | CD
Y → QD | CD

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).

4. Draw Push Down Automata (PDA) for the following Languages


a) * | * + +
b) * | +
Solution:
a) * | * + +
ε 0 ε
ε 1 ε

ε ε 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

∴ “-26x + 3y – 8z = -83” has been derived using Rightmost Derivation.

2. Define a Context Free Grammar for the following languages:

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.

Step 3: Removing unit production:


Removing S0 → S, S → T, T → X, X → Y :
S0 → S + S | S – S | (S) | x | y | z | X * X | X % X | 0 | 1
S → S + S | S – S | (S) | x | y | z | X * X | X % X | 0 | 1
T → x| y|z|X*X|X%X|0 |1
X → X*X|X%X|0|1
Y → 0| 1
Step 4: Reducing rules that have length>2:
Let, A → S +, B → S –, C → (S, D → X *, E → X %
S0 → AS | BS | C) | x | y | z | DX | EX | 0 | 1
S → AS | BS | C) | x | y | z | DX | EX | 0 | 1
T → x | y | z | DX | EX | 0 | 1
X → DX | EX | 0 | 1
Y → 0|1
A → S+
B → S–
C → (S
D → X*
E → X%
Step 5: Bring the rules to CNF form:
Let, M → (, N → ), O → *, P → +, Q → –, R → %
S0 → AS | BS | CN | x | y | z | DX | EX | 0 | 1
S → AS | BS | CN | x | y | z | DX | EX | 0 | 1
T → x | y | z | DX | EX | 0 | 1
X → DX | EX | 0 | 1
Y → 0|1
A → SP
B → S
C → MS
D → XO
E → XR
M → (
N → )
O → *
P → +
Q → –

nurulalamador.github.io/UIUQuestionBank 20
R → %
This is our final Chomsky Normal Form (CNF).

c) Repeat of Summer 2023 Question 3(b)

4. Draw Push Down Automata (PDA) for the following Languages


a) * | +

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:

a) S → AS | BAC With the help of Top-Down Parse Trees,


find-out if the grammar is Ambiguous or
A → A1 | 0A1 | 0B1 | B not for the string 00011111
B → 0B | 0 | ε
C → 1| ε
b) E → E+E | E–E | (E) | V With the help of Leftmost derivation,
find-out if the grammar is Ambiguous or
V → p| q|r| X not for the string p+(0*1%0)–r
X → X*X|X%X|Y
Y → 0|1

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”.

2. Find CFGs that generates the following languages.

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
⏟ ⏟

CFG: S → 0A1 | 1A0


A → BBA | ε
B → 0|1

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.

Step 2: Removing null production:


Removing P → ε : Removing R → ε :
S → xP | yQ | y | RRz | x S → xP | yQ | y | RRz | x | Rz | z
P → Qxx | xyR P → Qxx | xyR | xy
Q → yPPy | xy | zR | yPy | yy Q → yPPy | xy | zR | yPy | yy | z
R → x | y | PR | ε | R R → x | y | PR | P
Step 3: Removing unit production:
Removing R → P :
S → xP | yQ | y | RRz | x | Rz | z
P → Qxx | xyR | xy
Q → yPPy | xy | zR | yPy | yy | z
R → x | y | PR | Qxx | xyR | xy
Step 4: Reducing rules that have length>2:
Let, A → RR, B → Qx, C → xy, D → yP, E → Py
S → xP | yQ | y | Az | x | Rz | z
P → Bx | CR | xy
Q → DE | xy | zR | Dy | yy | z

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’.

2. Find a CFG that generates the following languages.

a) * |w +
b) { |w +
c) * * +|| | yb +
Solution:
a) * |w +
CFG: S → aSdd | aAdd
A → bAccc | bccc

b) { |w +
Here,
↓ or, ↓

CFG: S → Si=k | Sj=k


Si=k → xSi=kz | Y | ε
Sj=k → XA
Y → yY | ε
X → xX | ε
A → yAz | ε

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).

4. a) Draw Push Down Automata (PDA) for the Language


* |w +
b) Draw Push Down Automata (PDA) for the Language
* w w * ++
Solution:
a) * |w +
Here,

ε
ε 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

You might also like