What can be computed

advertisement
What can be computed

What class of problems can be solved?
 Google Datacenter, Desktop computer, Cell phone, pencil?
 Alan Turing proved some things, hypothesized others
• Halting problem, Church-Markov-Turing thesis

What class of problems can be solved efficiently?
 Problems with no practical solution
• what does practical mean?

Problems for which we can’t find a practical solution
• solving one solves them all
CompSci 1
11.1
Schedule students, minimal conflicts

Given student requests,
available teachers
 write a program that
schedules classes
 Minimize conflicts

Add a GUI too
 Web interface
 …
 …
CompSci 1
I can’t write
this program
because I’m too
dumb
11.2
One better scenario
I can’t write this
program because
it’s provably
impossible
CompSci 1
11.3
Another possible scenario
I can’t write this
program but neither
can all these famous
people
CompSci 1
11.4
Types of Problems

Tractable


Intractable



Problems that can be solved by a computer in a “reasonable”
amount of time.
Problems that can’t be solved by a computer in a “reasonable”
amount of time,
But can be solved eventually.
Non-computable

CompSci 1
Problems that can never be solved by a computer.
11.5
Is there a path from Ann to Bob?
Ann
Joe
Kim
Jim
John
CompSci 1
Jen
Bob
11.6
Is there a path from Ann to Bob?
Josh
Ann
Brett
Joe
Kyle
Kim
Lucy
Jim
Ben
Suzy
Jen
John
CompSci 1
Bob
Jen
Frank
11.7
Julie
How much oil can flow?
CompSci 1
11.8
How much oil can flow?
CompSci 1
11.9
Can you color this map with 4 colors?
CompSci 1
11.10
Can you color this map with 3 colors?
CompSci 1
11.11
Can you color this map with 3 colors?
CompSci 1
11.12
Can you color this map with 3 colors?
CompSci 1
11.13
Dealing with hard problems



Random Numbers
 Can “expect” to solve some in reasonable time
Approximation
 Can guarantee that we’re “close” to the right answer
Parallel Computers?
CompSci 1
11.14
Non-Computable Problems

Problems that cannot be solved by a computer ever
CompSci 1
11.15
Not impossible, but impractical

Towers of Hanoi
 How long to move n disks?

What combination of switches turns the light on?
 Try all combinations, how many are there?
 Is there a better way?
CompSci 1
11.16
Travelling Salesperson




Visit every city exactly once
Minimize cost of travel or
distance
Is there a tour for under
$2,000 ? less than 6,000
miles?
Is close good enough?
Try all paths, from
every starting point -how long does this take?
a, b, c, d, e, f, g
b, a, c, d, e, f, g ...
CompSci 1
11.17
Complexity Classifications


This route hits all cities for
less than $2,000 --- verify
properties of route
efficiently.
Hard to find optimal
solution
Pack trucks with barrels,
use minimal # trucks
Ideas?
Problems are the “same hardness”:
solve one efficiently, solve them all
CompSci 1
11.18
Are hard problems easy?

P = easy problems, NP = “hard” problems
 P means solvable in polynomial time
• Difference between N, N2, N10 ?

NP means non-deterministic, polynomial time
• guess a solution and verify it efficiently

Question: P = NP ? Rich or famous?
 if yes, a whole class of difficult problems can be solved
efficiently---one problem is reducible to another
 if no, none of the hard problems can be solved efficiently
 showing the first problem was in NP was an exercise in
intellectual bootstrapping (1971)
CompSci 1
11.19
Theory and Practice


Number theory: pure
mathematics
 How many prime numbers
are there?
 How do we factor?
 How do we determine
primeness?
Computer Science
 Primality is “easy”
 Factoring is “hard”
 Encryption is possible
CompSci 1
top secret
public-key cryptography
randomized primality
testing
11.20
Halt or not
Does the following code eventually terminate?
. . .
while (x > 1):
if (x > 2):
x = x – 2
else:
x = x + 2


What if x is 8? How about 9?
CompSci 1
11.21
Halt or not
Does the following code eventually terminate?
. . .
while (x > 1):
if (x % 2 == 0)
x = x / 2
else
x = 3*x + 1
 What if x is 8? How about 7? How about all numbers > 0?

CompSci 1
11.22
If you start this program, will it
ever stop running?
public class Client {
public static void main(String[] args) {
if(args.length != 2) {
System.out.println("Usage: vbj Client <carrier-name> <aircraft-name>\n");
return;
}
String carrierName = args[0];
String aircraftName = args[1];
org.omg.CORBA.Object carrier = null;
org.omg.CORBA.Object aircraft = null;
org.omg.CORBA.ORB orb = null;
try {
orb = org.omg.CORBA.ORB.init(args, null);
}
catch (org.omg.CORBA.SystemException se) {
System.err.println("ORB init failure " + se);
System.exit(1);
}
{ // scope
try {
carrier = orb.bind("IDL:Ship/AircraftCarrier:1.0", carrierName, null, null);
}
catch (org.omg.CORBA.SystemException se) {
System.err.println("ORB init failure " + se);
System.exit(1);
}
org.omg.CORBA.Request request = carrier._request("launch");
request.add_in_arg().insert_string(aircraftName);
request.set_return_type(orb.get_primitive_tc(org.omg.CORBA.TCKind.tk_objref));
request.invoke();
aircraft = request.result().value().extract_Object();
}
{ // scope
org.omg.CORBA.Request request = aircraft._request("codeNumber");
request.set_return_type(orb.get_primitive_tc(org.omg.CORBA.TCKind.tk_string));
request.invoke();
String designation = request.result().value().extract_string();
System.out.println ("Aircraft " + designation + " is coming your way");
}
{ // scope
org.omg.CORBA.Request request = aircraft._request("attitude");
int altitude = 10000;
org.omg.CORBA.Any ioAltitude = request.add_inout_arg();
ioAltitude.insert_long(altitude);
}
CompSci 1
try {
}
{ // scope
}
carrier = orb.bind("IDL:Ship/AircraftCarrier:1.0", carrierName, null, null);
}
catch (org.omg.CORBA.SystemException se) {
System.err.println("ORB init failure " + se);
System.exit(1);
}
org.omg.CORBA.Request request = carrier._request("launch");
request.add_in_arg().insert_string(aircraftName);
request.set_return_type(orb.get_primitive_tc(org.omg.CORBA.TCKind.tk_objref));
request.invoke();
aircraft = request.result().value().extract_Object();
org.omg.CORBA.Request request = aircraft._request("codeNumber");
request.set_return_type(orb.get_primitive_tc(org.omg.CORBA.TCKind.tk_string));
request.invoke();
String designation = request.result().value().extract_string();
System.out.println ("Aircraft " + designation + " is coming your way");
{ // scope
org.omg.CORBA.Request request = aircraft._request("attitude");
int altitude = 10000;
org.omg.CORBA.Any ioAltitude = request.add_inout_arg();
ioAltitude.insert_long(altitude);
String direction = "headup";
request.add_in_arg().insert_string(direction);
request.invoke();
altitude = ioAltitude.extract_long();
System.out.println ("Aircraft is heading up to " + altitude + " Feet.");
}
}
}
11.23
The halting problem: writing DoesHalt
def doesHalt(progname, s):
 returns true if progname halts given s as input, false
otherwise
if (doesHalt(f,s)):
print "does halt"
else:
print "does not halt"



Programs that read program
A compiler is a program that reads other programs as input
 Can a word counting program count its own words?
The doesHalt function might simulate, analyze, …
 One program/function that works for any program/input
CompSci 1
11.24
Consider this code
// f is a filename of this program
if (doesHalt(f,f)):
while True:
# do nothing forever
return 0;

We want to show writing doesHalt is impossible
 Proof by contradiction:
 Assume possible, show impossible situation
results
CompSci 1
11.25
Noncomputable problems

What other questions can we not answer?
 Do two programs do the same thing?
 Do programs have any bugs?
 Do programs do what they’re supposed to do?

Halting Problem.
Program Equivalence.
Optimal Data Compression.
Virus Identification.




Impossible to write Pythonprogram to solve any of these
problem!
CompSci 1
11.26
The exam





Tuesday, April 28, 7pm-10pm in Soc Sci 136
Open book/open note
~50% multiple choice/short answer
Cumulative
By noon on Sunday, April 26:
 All grades up (except final project)
 Midterm solutions out
 Grade problems:
Submit Blackboard assignment issues



Final grades up Friday, May 1
Available by appointment throughout reading period and
exam week
Help session Wednesday in class
CompSci 1
11.27
Questions for the Exam









What is Computer Science? What does a Computer Scientist
do?
How many bits are required to represent a population?
How is a webpage designed and deployed?
Why does digital media and the Internet present challenges for
intellectual property law?
How do you keep secrets with computers?
What is better: a faster computer or a faster algorithm?
How do you write a program to filter a sound or image?
Google indexes A LOT of websites. How does it return an
answer to a search so quickly?
How can a system predict what item you would like?
CompSci 1
11.28
Essential concepts
There is beauty at all levels of sophistication and all levels of
abstraction.
- David A. Blackwell
If life were really fair, algebra would actually come in handy
- Amstel Light commercial
CompSci 1
11.29
Laws governing computer science





What’s computable?
Which algorithm, program, or processor is faster?
Moore’s Law (1965)
 The number of transistors per area on a chip double every
18 months
 Density of transistors => more functionality and speed
How about multiple computers?
Amdahl’s Law (1967)
 Given: fraction (s) of work to be done is serial (i.e. isn’t
parallelizable)
 Maximum speedup with infinite number of processors is
1/s
CompSci 1
11.30
What are computers for?



Simulation
Communication among people
 Storage = communication across time
Control
 Get physical
 Get real (time)
 Get mobile
CompSci 1
11.31
Application



Simulation
 Models of the real world (e.g. planets, cities, molecules)
Communication among people
 Information at your fingertips
 Telepresence
 Home
Control
 Robots
 Software agents
CompSci 1
11.32
What’s next





CompSci 4
 Alice
 Games & Java
CompSci 6
 Assumes knowledge of loops & arrays
CompSci 82
 IP2
Seminars
 Google
 Other topics
Interdisciplinary minor
 Computational Biology & Bioinformatics
 Computational Economics
CompSci 1
11.33
Download