0% found this document useful (0 votes)
12 views

Turing_completeness

The document discusses Turing completeness, a concept in computability introduced by Alan Turing through the Turing machine model. It explains the components of a Turing machine and its significance in defining what is computable, asserting that all modern programming languages are Turing equivalent. Additionally, it touches on historical computers and their relation to Turing completeness, concluding that modern computers, while faster, are not more powerful than Turing machines.

Uploaded by

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

Turing_completeness

The document discusses Turing completeness, a concept in computability introduced by Alan Turing through the Turing machine model. It explains the components of a Turing machine and its significance in defining what is computable, asserting that all modern programming languages are Turing equivalent. Additionally, it touches on historical computers and their relation to Turing completeness, concluding that modern computers, while faster, are not more powerful than Turing machines.

Uploaded by

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

ECE 250 Algorithms and Data Structures

Turing completeness

Douglas Wilhelm Harder, M.Math. LEL


Department of Electrical and Computer Engineering
University of Waterloo
Waterloo, Ontario, Canada

ece.uwaterloo.ca
[email protected]

© 2006-2013 by Douglas Wilhelm Harder. Some rights reserved.


Turing completeness
2

Outline

In this topic, we will:


– Ask what is computable
– Describe a Turing machine
– Define Turing completeness
Turing completeness
3

Computability

How do we define what is and what is not computable?


– Is it possible to write a C++ function which cannot be written using
Pascal, Java, or C#, or vice versa?
– For example, do pointers (not available in Java) make C++ more
powerful than Java?
– Is BASIC really that bad?
Turing completeness
4

Computability

Consider INTERCAL
– 16-bit integers .1 … .65535
– 32-bit integers ,1 … ,65535
– Arrays of 16-bit integers :1 … :65535
– Arrays of 32-bit integers ;1 … ;65535
– Each variable has its own stack
• You can push the current value onto the stack, or pop back a previous value
– There are five operations: interleave, select, and, or, xor

Can you do everything you do in C in INTERCAL and vice versa?


Turing completeness
5

Computability

Does computability depend on the processor?


– The VAX had a machine instruction POLY for polynomial evaluation
using Horner’s rule
– Is the instruction set of the Intel Core 2 processor significantly different
from the Motorola MC6800?
Turing completeness
6

Computability

To study computability, Alan Turing developed a simple and basic


but surprisingly powerful symbol-manipulating device:
– He called it the a-machine (for automatic)
– It has since been christened the Turing machine
– First described in 1936
• Five years before the first computer (the Z3)
Turing completeness
7

Computability

The Turing machine has four components:


– An arbitrary-length tape
• Divided into linearly-ordered entries
• Each entry is from a finite alphabet G which usually includes a blank B
• In this example, G = {B, 0, 1}
Turing completeness
8

Computability

The Turing machine has four components:


– An arbitrary-length tape
– A head that can
• Read a symbol off the tape,
• Write a symbol to the tape, and/or
• Move to the next entry to the left or the right
Turing completeness
9

Computability

The Turing machine has four components:


– An arbitrary-length tape
– A head
– A state
• The state is one of a finite set of symbols Q
• In this example, Q = {b, c, e, f}
• The initial state of the machine is denoted q0 ∈ Q
• Certain states may halt the computation
Turing completeness
10

Computability

The Turing machine has four components:


– An arbitrary-length tape
– A head
– A state Current New
– A transition table State
Symbol
State
Symbol
Direction
• Q × G → Q × G × {L, R, N} read to write
b B c 0 R
• L moves one entry to the left
c B e B R
• R moves one entry to the right
e B f 1 R
• N indicates no shift
f B b B R

There is at most one entry in this table for each pair of current
settings
Turing completeness
11

Computability

Currently, the state is e and the symbol under the head is B

Current Next
Symbol Symbol
State State Direction
read to write
b B c 0 R
c B e B R
e B f 1 R
f B b B R
Turing completeness
12

Computability

The transition table dictates that the machine must:


– The state is set to f
– Print symbol 1 onto the tape
– Move one entry to the right Current Next
Symbol Symbol
State State Direction
read to write
b B c 0 R
c B e B R
e B f 1 R
f B b B R
Turing completeness
13

Computability

The state and symbol under the head have been updated

Current Next
Symbol Symbol
State State Direction
read to write
b B c 0 R
c B e B R
e B f 1 R
f B b B R
Turing completeness
14

Computability

The state is f and the symbol under the head is the blank B:t
– The state is set to b
– A blank is printed to the tape
– Move one entry to the right Current Next
Symbol Symbol
State State Direction
read to write
b B c 0 R
c B e B R
e B f 1 R
f B b B R
Turing completeness
15

Computability

Again, the state is b, the symbol a blank, and therefore:


– Set the state to c
– Print the symbol 0 to the tape
– Move one entry to the right Current Next
Symbol Symbol
State State Direction
read to write
b B c 0 R
c B e B R
e B f 1 R
f B b B R
Turing completeness
16

Computability

The result is the state c and a blank symbol is under the head:
– Set the state to e
– Write a blank to the tape
– Move one entry to the right Current Next
Symbol Symbol
State State Direction
read to write
b B c 0 R
c B e B R
e B f 1 R
f B b B R
Turing completeness
17

Computability

The result is the state e and a blank symbol B under the head
– This is the state we were in four steps ago
– This machine never halts...
Current Next
Symbol Symbol
State State Direction
read to write
b B c 0 R
c B e B R
e B f 1 R
f B b B R
Turing completeness
18

Computability

This was Turing’s first example in his 1937 paper On Computable


Numbers, with an Application to the Enscheidungsproblem
– It demonstrates a machine which can compute the sequence
0 1 0 1 0 1 0 ···
Turing completeness
19

Computability

This Turing machine adds two numbers:


– Tape symbols: G = {B, 1}
– States: Q = {a, b, c, d, e, H}
– Initial state: q0 = a
Current Next
– Halting state: H Symbol Symbol
State State Direction
read to write
a B a B R
Note there is exactly one entry
a 1 b 1 R
for each pair in Q \ {H} × G
b B c 1 R
– It may not be necessary to have
b 1 b 1 R
one for each, but you cannot have
c B d B L
more than one transition for
a given state and symbol c 1 b 1 R
d B d B L
d 1 e B L
e B H B R
e 1 e 1 L
Turing completeness
20

Computability

After 22 steps, a group of five ones and a group of six ones are
merged into a single group of eleven ones
– This represents 5 + 6 = 11
Turing completeness
21

Computability

What’s more remarkable is the Turing-Church thesis:


– For any algorithm which can be calculated given arbitrary amounts of
time and storage, there is an equivalent Turing machine for that
algorithm

This is a hypothesis; however, almost a century has not produced


any counter-examples

A computational system
– e.g., a programming language compiled into machine code and run on a
processor
is said to be Turing complete if it can compute every function
computable on a Turing machine
Turing completeness
22

Computability

The converse appears to be true, too:


– Any function in any Turing complete computational system can also be
computed using an appropriate Turing machine
– Modern computers are faster, but they are not more powerful than a
Turing machine

Thus, the Turing machine well defines the concept of computability


as it is understood today
Turing completeness
23

Computability

Looking at some of the first computers, not all were Turing


complete:
Decimal/ Turing
Name Date Place Electronic Programmable
Binary Complete
Zuse Z3 1941 Germany binary No Yes Yes
Alanasoff-Berry Computer 1941 USA binary Yes No No
Colossus 1943 UK binary Yes Partially No
IBM ASCC 1944 USA decimal No Yes Yes
1944 USA decimal Yes Partially Yes
ENIAC
1948 USA decimal Yes Yes Yes

Incidentally, Zuse was a civil engineer...

http://en.wikipedia.org/wiki/Computers
Turing completeness
24

Computability

All modern programming languages are also Turing equivalent


– thus, BASIC and C# are no worse than Java or C++
Turing completeness
25

Computability

Some are, practically speaking, less useful:


– this is a Turing-complete language with eight single-character commands
– for the C++ equivalence, declare char *ptr;
Char Operation C++ Equivalent
> increment the pointer ++ptr;
< decrement the pointer --ptr;
+ increment the byte at the pointer ++(*ptr);
– decrement the byte at the pointer --(*ptr);
. output the value the byte putchar(*ptr);
, input one byte and store it at the pointer *ptr = getchar();
jump forward to the command after the matching ] if while( *ptr ) {
[
the byte at the pointer is zero
jump back to the command after the matching [ if }
]
the byte at the pointer is nonzero

http://en.wikipedia.org/wiki/Brainfuck
Turing completeness
26

References

Wikipedia, http://en.wikipedia.org/wiki/Computability
Wikipedia, http://en.wikipedia.org/wiki/Turing_machine
Wikipedia, http://en.wikipedia.org/wiki/Church–Turing_thesis

These slides are provided for the ECE 250 Algorithms and Data Structures course. The
material in it reflects Douglas W. Harder’s best judgment in light of the information available to
him at the time of preparation. Any reliance on these course slides by any party for any other
purpose are the responsibility of such parties. Douglas W. Harder accepts no responsibility for
damages, if any, suffered by any party as a result of decisions made or actions based on these
course slides for any other purpose than that for which it was intended.

You might also like