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