Transcript Lecture 10

Lecture 10
• Universal Algorithms
– moving beyond one problem at a time
– operating system/general purpose computer
1
Observation
• So far, each program solves one specific
problem
–
–
–
–
Divisor
Sorting
Multiplication
Language L
2
Universal Problem/Program
• Universal Problem (nonstandard term)
– Input
• Program P
• Input x to program P
– Task
• Compute P(x)
• Univeral Program
– Program which solves universal problem
• Universal Turing machine
3
Example Input
int main(A[6]) {
int i,temp;
for (i=1;i<=3;i++)
if (A[i] > A[i+3]) {
temp = A[i+3];
A[i+3] = A[i];
A[i] = temp;
}
Input
A[1] = 6
A[2] =4
A[3] = 2
A[4] = 5
A[5] = 3
A[6] = 1
for (i=1; i<=5; i++)
for (j=i+1;j<=6;j++)
if (A[j-1] > A[j]) {
temp = A[j];
A[j] = A[j-1];
A[j-1] = temp;
}
}
4
Questions
• Which of the following two people is most
like a universal program?
– Brilliant, creative scientist
– Efficient, obedient soldier
• How does a universal program work?
• What is a universal program in real life?
5
Organization
Universal Program’s Memory
Program P
Program P’s Memory
Program Counter
Program P
int main(A[6]){
int i,temp;
for (i=1;i<=3;i++)
if (A[i] > A[i+3]) {
temp = A[i+3];
6
A[i+3] = A[i];
4
A[i] = temp;
2
int A[6],i,temp;
}
5
3 for (i=1; i<=5; i++)
1
for (j=i+1;j<=6;j++)
Line 1
}
if (A[j-1] > A[j]) {
temp = A[j];
A[j] = A[j-1];
A[j-1] = temp;
}
6
Description of Universal Program
• Basic Loop
– Find current line of program P
– Execute current line of program P
• Update program P’s memory
– Update program counter
– Return to Top of Loop
7
Past, Present, Future
• Turing came up with the concept of a universal program
(Universal Turing machine) in the 1930’s
– This is well before the invention of the general purpose computer
– People were still thinking of computing devices as special-purpose
devices (calculators, etc.)
– Turing helped move people beyond this narrow perspective
• Turing/Von Neumann perspective
– Computers are general purpose/universal algorithms
• Focused on computation
• Stand-alone
• Today, we are moving beyond this view
– Computation, communication, cyberspace
– However, results in Turing perspective still relevant
8
Halting Problem Revisited
• Halting Problem is half-solvable
– Modified Universal Program (MUP) halfsolves H
Run P on x
Output yes
– This step only executed if first step halts
– Behavior
• MUP halts and accepts all yes instances of H
• MUP loops on all no instances of H
– Stuck in “Run P on x” step
9
Debuggers
• How do debugger’s like gdb or ddd work?
– They basically operate like a universal program
– Key properties of debugger’s to aid in
debugging
• Breakpoints
• Display memory commands
10
RE and REC
• We now have a problem that is halfsolvable but not solvable
• What do we now know about the
complement of the Halting Problem?
– It is not even half-solvable
• This proves RE is not closed under the set
complement operation
– H is counterexample
11
RE and REC
All Languages
RE
Hc
H
REC
12
Summary
• Universal Programs
– 1930’s, Turing
– Introduces general purpose computing concept
– Not a super intelligent program, merely a
precise follower of instructions
• Halting Problem half-solvable but not
solvable
– RE not closed under set complement
13