Introduction To Computer Science: Michael A. Nielsen University of Queensland
Introduction To Computer Science: Michael A. Nielsen University of Queensland
Michael A. Nielsen
University of Queensland
Goals:
1. Introduce the notion of the computational complexity
of a problem, and define the major computational
complexity classes.
2. Explain how to compute reversibly.
Q: Is there a general algorithm to
determine whether a mathematical
conjecture is true or false?
Church-Turing:
NO!
Turing
Machine
Ad hoc empirical
justification!
Computer science
Church-Turing thesis: Any algorithmic process can be
simulated on a Turing machine – an idealized and rigorously
defined mathematical model of a computing device.
“Turing machines”
Many different models of computation are equivalent
to the Turing machine (TM).
We will use a model other than the TM for reasons of
both pedagogy and utility.
Program: 01001100…010
Input: 11101100101…..........
INPUT
x = “I like quantum information science” Workspace: 000………………………….
INPUT
x = “I like quantum information science” binary
0001100001… 123456789
PROGRAM
time energy
space
soluble
soluble hard
soluble
easy
decision problems
P
“easy” problems
12 km
15 km
19 km 14 km
16 km
decision problems
NP P
1km 1km
x x x NOT x 1
x x x
NAND 1 x y
y y y x
controlled-not gate (CNOT)
0 1
NAND 1 NAND 1
1 0
y y x y y
y x
x x
y y
1 1 x y
How to compute using reversible circuit elements
Example: fanout.
x x
0 x
How to compute using reversible circuit elements
Original circuit: uses NAND gates, wires,
fanout, and ancilla
x f f (x )
f'
0, 0,...., 0 gx
x x
f (x )
f' (f ') 1
0, 0,..., 0 0, 0,..., 0
gx
M h (x ) x
x 0
x