Transcript lect11
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