TM accepting strings with equal number of 0’s and 1’s
Thamer Al sulaiman
TM accepting strings with equal number of 0’s and 1’s
• The Turing machine accepts strings such as: 001110, 1011.• The Turing Machine rejects strings such as: 010, 11100 and so on.
AlgorithmA possible algorithm to solve this problem is:
• For each symbol: 0 (1) read from input tape, search for a matching 1 (0), and replace both symbols with another symbol (to ignore matched symbols in subsequent steps).
• If the respective symbol is not found – the end of the string reached without matching symbol (which means the string contains an unequal number of 0s and 1s), then we reject.
• If all 0s and 1s are matched, then accept.
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R
- q is the initial state, - R is the rejection state,- F is the acceptance state.
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 001
q Δ001
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 001
q Δ001 ⊢ ΔA001
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 001
q Δ001 ⊢ ΔA001 ⊢ ΔxC01
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 001
q Δ001 ⊢ ΔA001 ⊢ ΔxC01 ⊢ Δx0C1
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 001
q Δ001 ⊢ ΔA001 ⊢ ΔxC01 ⊢ Δx0C1 ⊢ ΔxD0x
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 001
q Δ001 ⊢ ΔA001 ⊢ ΔxC01 ⊢ Δx0C1 ⊢ ΔxD0x ⊢ ΔDx0x
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 001
q Δ001 ⊢ ΔA001 ⊢ ΔxC01 ⊢ Δx0C1 ⊢ ΔxD0x ⊢ ΔDx0x D⊢ Δx0x
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 001
q Δ001 ⊢ ΔA001 ⊢ ΔxC01 ⊢ Δx0C1 ⊢ ΔxD0x ⊢ ΔDx0x D⊢ Δx0x ⊢ ΔEx0x
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 001
q Δ001 ⊢ ΔA001 ⊢ ΔxC01 ⊢ Δx0C1 ⊢ ΔxD0x ⊢ ΔDx0x D⊢ Δx0x ⊢ ΔEx0x ⊢ ΔxE0x
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 001
q Δ001 ⊢ ΔA001 ⊢ ΔxC01 ⊢ Δx0C1 ⊢ ΔxD0x ⊢ ΔDx0x D⊢ Δx0x ⊢ ΔEx0x ⊢ ΔxE0x ⊢ ΔxxCx
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 001
q Δ001 ⊢ ΔA001 ⊢ ΔxC01 ⊢ Δx0C1 ⊢ ΔxD0x ⊢ ΔDx0x D⊢ Δx0x ⊢ ΔEx0x ⊢ ΔxE0x ⊢ ΔxxCx ⊢ ΔxxxCΔ
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 001
q Δ001 ⊢ ΔA001 ⊢ ΔxC01 ⊢ Δx0C1 ⊢ ΔxD0x ⊢ ΔDx0x D⊢ Δx0x ⊢ ΔEx0x ⊢ ΔxE0x ⊢ ΔxxCx ⊢ ΔxxxCΔ ⊢ R (reject)
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 0101q Δ0011
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 0101q Δ0011 ⊢ ΔA0101
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 0101q Δ0011 ⊢ ΔA0101 ⊢ ΔxC101
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 0101q Δ0011 ⊢ ΔA0101 ⊢ ΔxC101
⊢ ΔDxx01
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 0101q Δ0011 ⊢ ΔA0101 ⊢ ΔxC101
⊢ ΔDxx01 D⊢ Δxx01
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 0101q Δ0011 ⊢ ΔA0101 ⊢ ΔxC101
⊢ ΔDxx01 D⊢ Δxx01 ⊢ ΔExx01
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 0101q Δ0011 ⊢ ΔA0101 ⊢ ΔxC101
⊢ ΔDxx01 D⊢ Δxx01 ⊢ ΔExx01 ⊢ ΔxEx01
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 0101q Δ0011 ⊢ ΔA0101 ⊢ ΔxC101
⊢ ΔDxx01 D⊢ Δxx01 ⊢ ΔExx01 ⊢ ΔxEx01 ⊢ ΔxxE01
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 0101q Δ0011 ⊢ ΔA0101 ⊢ ΔxC101
⊢ ΔDxx01 D⊢ Δxx01 ⊢ ΔExx01 ⊢ ΔxEx01 ⊢ ΔxxE01 ⊢ ΔxxxC1
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 0101q Δ0011 ⊢ ΔA0101 ⊢ ΔxC101
⊢ ΔDxx01 D⊢ Δxx01 ⊢ ΔExx01 ⊢ ΔxEx01 ⊢ ΔxxE01 ⊢ ΔxxxC1 ⊢ ΔxxDxx
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 0101q Δ0011 ⊢ ΔA0101 ⊢ ΔxC101
⊢ ΔDxx01 D⊢ Δxx01 ⊢ ΔExx01 ⊢ ΔxEx01 ⊢ ΔxxE01 ⊢ ΔxxxC1 ⊢ ΔxxDxx ⊢ ΔxDxxx
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 0101q Δ0011 ⊢ ΔA0101 ⊢ ΔxC101
⊢ ΔDxx01 D⊢ Δxx01 ⊢ ΔExx01 ⊢ ΔxEx01 ⊢ ΔxxE01 ⊢ ΔxxxC1 ⊢ ΔxxDxx ⊢ ΔxDxxx ⊢ ΔDxxxx
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 0101q Δ0011 ⊢ ΔA0101 ⊢ ΔxC101
⊢ ΔDxx01 D⊢ Δxx01 ⊢ ΔExx01 ⊢ ΔxEx01 ⊢ ΔxxE01 ⊢ ΔxxxC1 ⊢ ΔxxDxx ⊢ ΔxDxxx ⊢ ΔDxxxx ⊢ DΔxxxx
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 0101q Δ0011 ⊢ ΔA0101 ⊢ ΔxC101
⊢ ΔDxx01 D⊢ Δxx01 ⊢ ΔExx01 ⊢ ΔxEx01 ⊢ ΔxxE01 ⊢ ΔxxxC1 ⊢ ΔxxDxx ⊢ ΔxDxxx ⊢ ΔDxxxx ⊢ DΔxxxx ⊢ ΔExxxx
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 0101q Δ0011 ⊢ ΔA0101 ⊢ ΔxC101
⊢ ΔDxx01 D⊢ Δxx01 ⊢ ΔExx01 ⊢ ΔxEx01 ⊢ ΔxxE01 ⊢ ΔxxxC1 ⊢ ΔxxDxx ⊢ ΔxDxxx ⊢ ΔDxxxx ⊢ DΔxxxx ⊢ ΔExxxx ⊢ ΔxExxx
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 0101q Δ0011 ⊢ ΔA0101 ⊢ ΔxC101
⊢ ΔDxx01 D⊢ Δxx01 ⊢ ΔExx01 ⊢ ΔxEx01 ⊢ ΔxxE01 ⊢ ΔxxxC1 ⊢ ΔxxDxx ⊢ ΔxDxxx ⊢ ΔDxxxx ⊢ DΔxxxx ⊢ ΔExxxx ⊢ ΔxExxx ⊢ ΔxxExx
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 0101q Δ0011 ⊢ ΔA0101 ⊢ ΔxC101
⊢ ΔDxx01 D⊢ Δxx01 ⊢ ΔExx01 ⊢ ΔxEx01 ⊢ ΔxxE01 ⊢ ΔxxxC1 ⊢ ΔxxDxx ⊢ ΔxDxxx ⊢ ΔDxxxx ⊢ DΔxxxx ⊢ ΔExxxx ⊢ ΔxExxx ⊢ ΔxxExx ⊢ ΔxxxEx
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 0101q Δ0011 ⊢ ΔA0101 ⊢ ΔxC101
⊢ ΔDxx01 D⊢ Δxx01 ⊢ ΔExx01 ⊢ ΔxEx01 ⊢ ΔxxE01 ⊢ ΔxxxC1 ⊢ ΔxxDxx ⊢ ΔxDxxx ⊢ ΔDxxxx ⊢ DΔxxxx ⊢ ΔExxxx ⊢ ΔxExxx ⊢ ΔxxExx ⊢ ΔxxxEx ⊢ ΔxxxxEΔ
q
B
A
R
D
E
F
C
Δ/Δ,RΔ/Δ,R
0/x,R 1/x,R
Δ/Δ,R Δ/Δ,R
1/x,L 0/x,L
0/0,R
1/1,R
0/x,R 1/x,R
0/0,L1/1,Lx/x,L
x/x,R
Δ/Δ,R
x/x,R
Δ/Δ,R Input string: 0101q Δ0011 ⊢ ΔA0101 ⊢ ΔxC101
⊢ ΔDxx01 D⊢ Δxx01 ⊢ ΔExx01 ⊢ ΔxEx01 ⊢ ΔxxE01 ⊢ ΔxxxC1 ⊢ ΔxxDxx ⊢ ΔxDxxx ⊢ ΔDxxxx ⊢ DΔxxxx ⊢ ΔExxxx ⊢ ΔxExxx ⊢ ΔxxExx ⊢ ΔxxxEx ⊢ ΔxxxxEΔ ⊢ F (accept)