Complexity & Computability

21
Complexity & Computability

description

Complexity & Computability. Limitations of computer science. Major reasons useful calculations cannot be done: execution time of program is too long problem can take years or centuries to finish problem is not computable no computer program can solve the problem - PowerPoint PPT Presentation

Transcript of Complexity & Computability

Page 1: Complexity & Computability

Complexity&

Computability

Page 2: Complexity & Computability

Limitations of computer science

Major reasons useful calculations cannot be done: execution time of program is too long

• problem can take years or centuries to finish problem is not computable

• no computer program can solve the problem we do not know how to write a program to solve

the problem• problems that can conceivably be solved• artificial intelligence, computer vision• understanding language, object recognition,

tracking, prediction

Page 3: Complexity & Computability

What problems can be solved by computers?

Equivalent to: “What decision problems can be solved?” Decision problem

problem where the answer is always YES/NO Arbitrary problem can always be reduced to a decision

problem There are decision problems for which algorithms do not

exist there are more different decision problems than there

are different programs. If there are more decision problems than programs

then it must be the case that some decision problems cannot be solved by programs since since a single program can solve only a single decision problem

Page 4: Complexity & Computability

Alan Turing

The first abstract model of computation was defined by Alan Turing in 1936

A basic Turing machine is a model for studying computation. Turing machines can solve decision problems and compute results based on inputs.

Church-Markov-Turing thesis any nontrivial computer language that one can invent is

apparently capable of computing no more and no fewer functions than all the other nontrivial programming languages, or

any algorithm that can be described in a natural language can be translated into any modern programming language

• in other words, if you can specify an algorithm concretely in English, you can program it

Page 5: Complexity & Computability

Turing Machines

A tape divided into adjacent cells each cell is inscribed with symbol from a finite alphabet alphabet contains blank symbol and at least one other symbol tape is arbitrarily extendible to the left and to the right cells that have not been written to before are assumed to be

filled with the empty symbol. A head to read & write symbols on the tape and move left & right A state register that stores the state of the TM

number of different states is finite, one special start state with which the state register is initialized.

An action table tells TM what symbol to write, how to move the head and what its new state will be, given the symbol it has just read on the tape and the state it is currently in if there is no entry in the table for the current combination of

symbol and state then the machine will halt

Page 6: Complexity & Computability

A Turing Machine

0 0 001 1 1110

1

The tape is an infinite sequence of cellsEach cell contains a symbol (possibly blank)

R/W head moves left and right along the tapeThe number displayed represents its current state,

which can change at it computes

Page 7: Complexity & Computability

Function evaluation

A decision problem is a question with a YES/NO answer: Is 613511 a prime number? Is my birthday on a Sunday next year? Did I pass the CPS1 final exam?

Other problems require a unique but particular answer: What is the smallest prime factor of 613511? On which day of the week will is my birthday next

year? What grade did I get on the CPS1 final exam?

This type of problem can be viewed as the evaluation of a function, since the answer is unique can also be viewed as a mapping of an input value to

an output value

Page 8: Complexity & Computability

Computability

A function is computable if it can be computed by a Turing machine or, a function is computable of a program exists

that can compute it or, a function is computable if there is an effective

procedure (or algorithm) for evaluating the function which, given any input values for which the function is defined, produces the correct result and halts in a finite amount of time

Noncomputable functions: any function that cannot be computed by any program many more functions then there are programs not possible to have a program for every function

Page 9: Complexity & Computability

Example

List all subroutines that input an integer and return an integer a short program:

another short program:

Can make infinitely many such short programs

int prog(int x){ return x;}

int prog(int x){ return 1;}

Page 10: Complexity & Computability

The halting problem

Programs that run forever programs with infinite loops

Some programs may halt on some inputs but not on others Programs with no loops always halt

composed of assignment statements, if statements and the return statement

However, existence of loop does not guarantee halting property!!!

int programA( int x){

while( x == x ) x = x; return x;}

int programB( int x){

while( x > 10 ) x = x; return x;}

Page 11: Complexity & Computability

The halting problem is noncomputable

No finite program can be written that will check otherprograms and halt in a finite time giving a solution to the

halting problem

Halting program is noncomputable no single finite program that will answer the halting

question for all programs

Inputprogram

inputDoesHalt()

output“Halts on all inputs”

or“Does not halt on

all inputs”

Page 12: Complexity & Computability

Programs that read programs

Almost every problem related to the behavior of programs is noncomputable programs to check for property X in the behavior of all

other programs halting, equivalence, printing, correctness

Programs that are computable: we can write programs to check almost any syntactic feature of programs measure the length of programs, number of

statements, characters, arithmetic expressions

Programinput

Programoutput

Page 13: Complexity & Computability

Program execution time

Estimate how long a program requires to handle large blocks of data

Tractable computation: a calculation that can be completed in a reasonable time period a computation is tractable if its running time on n

inputs is logarithmic or polynomial in n • searching or sorting n inputs

Intractable computation: cannot be realistically completed except for small examples a computation is intractable if its running time on n

inputs is exponential in n • computing all permutations of n inputs

Page 14: Complexity & Computability

Scenario

I can’t write this program

because I’m too dumb

Page 15: Complexity & Computability

Better scenario

I can’t write this program because

it’s provably impossible

Page 16: Complexity & Computability

Another possible scenario

I can’t write this program but

neither can all these famous

people

Page 17: Complexity & Computability

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?

Page 18: Complexity & Computability

Traveling Salesperson

A traveling salesperson must visit each of some number of cities before returning home knows the distance

between each of the cities

wants to minimize the total distance traveled while visiting all of the cities

In what order should the salesperson visit the cities?

Try all paths, fromevery starting point -- how long does this take?

a, b, c, d, e, f, gb, a, c, d, e, f, g ...

a

dg

f

e bc

Page 19: Complexity & Computability

Bin packing

Bin packing problem: Pack a given set of items

having different sizes into a minimum number of equal-sized bins.

Example: Pack trucks with barrels,

using minimal number of trucks

Ideas?

Page 20: Complexity & Computability

Complexity Classifications

Class P consists of all decision problems that can be

solved on a deterministic sequential machine in time polynomial in the size of the input

Class NP non-deterministic, polynomial time consists of all decision problems whose positive

solutions can be verified in polynomial time, or solution can be found in polynomial time on a non-

deterministic machine Biggest open question in computer science:

Is P = NP?

Page 21: Complexity & Computability

Are hard problems easy?

P = “easy” problems, NP = “hard” problems Question: P = NP? Rich or famous?

if yes, a whole class of difficult problems can be solved efficiently

• TSP and bin packing are “equally hard”• one problem is reducible to another

if no, none of the hard problems can be solved efficiently

Widely conjectured that the answer is no P versus NP is a Clay Mathematics Institute (CMI)

Millennium Prize Problem first person to solve will be awarded $1,000,000