the function

Download Report

Transcript the function

Chapter 12 Theory of Computation Introduction to CS 1

st

Semester, 2014 Sanghyun Park

Outline

     Functions and Their Computation Turing Machines Universal Programming Languages A Noncomputable Function Complexity of Problems

Functions and Their Computation

 A function is a ______________ between a collection of possible input values and a collection of output values  The process of determining the particular output value that a function assigns to a given input is called

_________ the function

 Our question is whether we can always find a system for computing functions, regardless of their _________  The answer is ___

Computable vs. Noncomputable Functions

 There are functions that are so _______ that there is no well-defined, step-by-step process for determining their outputs based on their input values; these functions are said to be _____________  The functions whose output values can be determined algorithmically from their input values are said to be ___________  The study of computable and noncomputable functions is an important undertaking in computer science

Turing Machines

 In an effort to understand the ________ of machines, the Turing machine was proposed by Alan M. Turing in 1936  A Turing machine consists of a ______ unit that can read and write symbols on a tape  The tape extends indefinitely at both ends and is divided into ____ , each of which can contain a symbol  At any time during a Turning machine’s computation, the machine must be in one of a finite number of ______

Turing Machine’s Computation

 A Turing machine’s computation consists of a sequence of steps that are executed by the control unit  Each step consists of     _________ the symbol in the current tape cell _______ a symbol in that cell Possibly _______ the read/write head one cell to the left or right ________ states  The exact action to be performed is determined by a program that tells the control unit what to do based on the machine’s _____ and the ______ of the current tape ____

A Turing Machine for Incrementing a Value

A Turing Machine Example (1/2)

* Machine State = START 1 0 1 * Current Position * Machine State = ADD 1 0 1 Current Position * * Machine State = CARRY 1 0 Current Position 0 *

A Turing Machine Example (2/2)

* 1 Machine State = RETURN 1 0 Current Position * * 1 Machine State = RETURN 1 0 * Current Position * Machine State = HALT 1 1 0 * Current Position

The Church-Turing Thesis (1/2)

 The Turing machine in the preceding example can be used to compute the __________ function  A function that can be computed in this manner by a Turing machine is said to be ______ computable  Turing’s conjecture was that the Turing-computable functions were the same as the __________ functions; this conjecture is referred to as the Church-Turing thesis

The Church-Turing Thesis (2/2)

 Today this thesis is widely ________ ; that is, the computable functions and the Turing-computable functions are considered ____ and the same  If a computational system can compute all the Turing computable functions, it is considered to be as ________ as any computational system can be

Universal Programming Language

 Most features in today’s high-level languages merely enhance ___________ rather than contribute to the fundamental _____ of the language  Our approach here is to describe a simple imperative programming language powerful enough to express programs for computing all the computable functions  A programming language with this power is called a _________ programming language  The language we present is quite simple; we call it Bare Bones in that it isolates a _______ set of requirements of a universal programming language

The Bare Bones Languages

   All variables are considered to be of type “ ___ arbitrary length” pattern of Variable names must begin with a letter, which can be followed by any combination of letters and digits Contains three assignment statements and one loop structure    _____

name

; _____

name

; assignment  _____

name

;

while

name

not 0

do

; .

.

end

; loop structure

Programming in Bare Bones

A Bare Bones program for “copy Today to Tomorrow” A Bare Bones program for computing X * Y

The Universality of Bare Bones

 Researchers have shown that the Bare Bones language can be used to express algorithms for computing Turing-computable functions ___ the  That is, any computable function can be computed by a program written in Bare Bones  Thus Bare Bones is a ________ programming language; if an algorithm exists for solving a problem, then that problem can be solved by some Bare Bones program  Bare Bones could ___________ purpose programming language serve as a general-

Halting Problem

  The ______ problem is the problem of trying to predict in advance whether a program will _________ if started under certain conditions Consider the simple Bare Bones program while X not 0 do; incr X; end;  If the initial value of X is __ , then the program will halt; otherwise, the loop will be executed forever It is easy in the above example to predict a program’s behavior; however, this task may be more complicated or even impossible in some cases

Self-Reference

  Whether a program ultimately halts can depend on the ______ values of its variables We assign a program’s variables an initial value representing the _______ itself; that is, we assign the _________ version of a program as the value of its variables

Self-Termination

 A Bare Bones program is self-terminating if its execution terminates when started with _____ as its input  The ______ problem is now precisely described as the problem of determining whether Bare Bones programs are or are not self-terminating  There is ___ algorithm for answering this question in general; thus, the solution to the halting problem lies _______ the capabilities of computers

Unsolvability of the Halting Problem (1/3)

Unsolvability of the Halting Problem (2/3)

Unsolvability of the Halting Problem (3/3)

Therefore, the halting problem is __________

Complexity of Problems (1/2)

 We are interested in the question of whether a solvable problem has a ________ solution  The complexity of a problem is determined by the properties of the algorithms that solve that problem  More precisely, the complexity of the _______ algorithm for solving a problem is considered to be the complexity of the problem itself  We measure an algorithm’s complexity in terms of the time required for its execution, which is proportional to the number of ______ that must be performed

Complexity of Problems (2/2)

 The complexity of a problem is Θ(f(n)) if there is an algorithm with complexity of Θ(f(n)) for solving the problem and no other algorithm has a _____ complexity  Finding the best solution to a problem and knowing that it is the best is often a difficult problem itself; in such situations, big O notation is used  The complexity of a problem is O(f(n)) if it has a solution whose complexity is Θ(f(n)) but it could possibly have a ______ solution

    

Polynomial vs. Nonpolynomial Problems

“g(n) is bounded by f(n)” means that the graph of f(n) will be _______ the graph of g(n) for “large” values of n A problem is a polynomial problem if the problem is in O(f(n)), where the expression f(n) is either a polynomial itself or bounded by a polynomial The collection of all polynomial problems is denoted by

P

Problems that are outside the class

P

are characterized as having extremely _____ execution times Identifying the problems that belong to

P

is of major importance in computer science because it tells whether problems have _________ solutions

NP Problems

   A problem that can be solved in polynomial time by a _______________ algorithm is called a nondeterministic polynomial problem, or an NP problem It is customary to denote the class of NP problems by

NP

All the problems in

P

are also in

NP

; However, whether all the NP problems are also in

P

is an _____ question