Key concepts:
computation (the output of the tape) and acceptance (acceptare);
mechanical description of an algorithm
(Answers online - discussion) A Turing Machine consists of:
an alphabet $ \Sigma$
a set of states $ K$
an initial state $ q_0$
a transition function $ \delta : K \times \Sigma \rightarrow K \times \Sigma \times \{L,H,R\}$
a set of final states $ F \subseteq K$
Which of the following components of an assembly language would best correspond to the above? $ K,\Sigma, \delta, q_0, F$
the processor
the memory
registers
assembly instructions
(Answers online) What does the following TM do? (bitwise complement)
(Answers online) Write a TM which accepts only if the input is a binary encoding of a even natural number.
(Answers online) Write a TM which adds 5 to a number encoded in binary on the tape. The machine will always accept.
(Answers online) Check if a symbol is present on the tape.
(Discussion) How would the following algorithm be represented as a Turing Machine:
Algorithm(vector V, integer M) {
integer s = 0
for-each x in V
s += x
if (x > 1000)
then return 1
else return 0
}
Helpful questions:
how should the tape be organised?
when should the machine accept?
how would foreach x in V
be implemented?
how would s += x
be implemented?
how would if (x > 1000) then … else …
be implemented ?
Homework:
Write a TM which verifies if a string has the same number of ones and zeroes. Give hints - live (what should the machine do?)
write a TM which accepts a given regular expression
write a TM which reverses a given binary string (always accepts)
Key concepts:
Exercises:
The Von Newmann architecture - explained.
Which of the components of Von Newmann arch. corresponds best to the TM?
Write a TM pseudocode which verifies if a word is the proper encoding of a TM.
Discussion on the pseudocode.
Discussion on the pseudocode
Algoritm(M,w){
if size(w) > 10
then if M halts for w in k steps
accept.
}
Algoritm(M1,M2,w){
k = 0
while true
if M1(w) has the same behaviour as M2(w) after k steps
then accept
else k = k + 1
}
Algorithm(M,A) {
// A is a finite set of words
for each w in A
if M(w) halts //undecidable! Pseudocode is ok, but this machine may not terminate
then accept
}
Algorithm(M,w) {
build the machine M' such that M(x) accepts iff M'(x) does not accept, for all words x
if M'(w) in 1000 steps
accept
}
Algorithm(M1,M2) {
if M1 always halts then //we know of no procedure, terminating or not, which can achieve this. This is not a proper TM/algorithm.
if M2 always halts then
accept
}
Homework:
Write a TM pseudocode which accepts if there exists a word which is accepted by two given TMs.
Write a TM pseudocode which accepts if there exists a TM which accepts a given word.
Write a TM pseudocode which accepts if a given TM accepts some word of a given finite set A.
Write a TM pseudocode which accepts if a given TM accepts all words of a given finite set A.
Von Newmann Model