EE290N - Specification and Modeling of Reactive Real-Time Systems

Lecture 17 - October 22, 1996, Scribe: Bilung Lee

We will discuss how to deal with "computing complexity".

Example :

f: N -> {0,1}, where N is the natural numbers {1,2,3,...}

One way to represent the functions:
N = {1,2,3,4,...}
=> fi(n) = {0,1,1,0,...}

# of functions = # of real numbers

Effectively Computable Functions (ECFs):

The function has a finite representation or encoding.
Suppose a set of operations: {C1,C2, ...,CM}
ECF = finite list of operations
fi(n) = {Ci1,Ci2, ...,CiK}

# of ECFs = # of natural numbers

Turing-Post Language:

Universal Turing Machine:

 |----------------|
 | Finite Control |
 |----------------|
         |
         V
-------------------------------------------
|0|0|1|1|1|0|1|0|...
-------------------------------------------

The abstract model for the universal Turing machine has a finite control, an input tape divided into cells, and a tape head that scans the cell. The finite control can move the tape head left or right.

Operations: (Ci)

  • Print 1: Write "1" on the tape
  • Print 0
  • Go right
  • Go left
  • Stop
  • Goto step i if "1" is read
  • Goto step i if "0" is read

    Program: "= Turing Machine"

    {Ci1,Ci2,...,CiP}, i.e. a set of operations.

    Theorem: "Halting question" is not effectively computable.

    <Proof:>
    Let p(d) mean Turing machine p applied to input d.
    Assume we have a "Turing machine" h applied to p.d returns 1 if p(d) halts, 0 otherwise.
    Note that the concatenation operator (.) between p and d is still a finite representation .
    Define a particular p as follows:

    p(d) = if h(d.d) then while(1) {}
           else halt
    

    => Contradiction because "p(p) halts <=> p(p) does not halt"
    => No such h exists
    => The "halting question" is undecidable.