CS601 DTIME and DSPACE Lecture 5 Time and Space Functions: T, S

CS601 DTIME and DSPACE Lecture 5 Time and Space Functions: T, S

<p>CS601 </p><p>DTIME and DSPACE </p><p>Lecture 5 </p><p>Time and Space functions: t, s : N → N<sup style="top: -0.41em;">+ </sup></p><p>Definition 5.1&nbsp;A set A ⊆ U is in DTIME[t(n)] iff there exists a deterministic, multi-tape TM, M, and a constant c, such that, </p><p></p><ul style="display: flex;"><li style="flex:1">ꢁ</li><li style="flex:1">ꢀ</li></ul><p>ꢁ</p><p>1. A </p><p></p><ul style="display: flex;"><li style="flex:1">=</li><li style="flex:1">L(M) </li></ul><p></p><p>≡</p><p>w ∈ U M(w) = 1&nbsp;, and </p><p>ꢀ</p><p>2. ∀w ∈ U, M(w) halts within c · t(|w|) steps. <br>Definition 5.2&nbsp;A set A ⊆ U is in DSPACE[s(n)] iff there exists a deterministic, multi-tape TM, M, and a constant c, such that, </p><p>1. A </p><p>=</p><p>L(M), and <br>2. ∀w ∈ U, M(w) uses at most c · s(|w|) work-tape cells. </p><p>(Input tape is “read-only” and not counted as space used.) </p><p>ꢀ</p><p>Example: PALINDROMES ∈ DTIME[n], DSPACE[n]. In fact, PALINDROMES ∈ DSPACE[log n]. [Exercise] </p><p>1</p><p>CS601 </p><p>F(DTIME) and F(DSPACE) </p><p>Lecture 5 </p><p>Definition 5.3&nbsp;f : U → U is in F(DTIME[t(n)]) iff there exists a deterministic, multi-tape TM, M, and a constant c, such that, </p><p>1. f </p><p></p><ul style="display: flex;"><li style="flex:1">=</li><li style="flex:1">M(·); </li></ul><p></p><p>2. ∀w ∈ U, M(w) halts within c · t(|w|) steps; </p><p>3. |f(w)| ≤ |w|<sup style="top: -0.36em;">O(1)</sup>, i.e., f is polynomially bounded. </p><p>ꢀ</p><p>Definition 5.4&nbsp;f : U → U is in F(DSPACE[s(n)]) iff there exists a deterministic, multi-tape TM, M, and a constant c, such that, </p><p>1. f </p><p></p><ul style="display: flex;"><li style="flex:1">=</li><li style="flex:1">M(·); </li></ul><p></p><p>2. ∀w ∈ U, M(w) uses at most c · s(|w|) work-tape cells; </p><p>3. |f(w)| ≤ |w|<sup style="top: -0.37em;">O(1)</sup>, i.e., f is polynomially bounded. </p><p>(Input tape is “read-only”; Output tape is “write-only”. Neither is counted as space used.) </p><p>ꢀ</p><p>Example: Plus ∈ F(DTIME[n]), Mult ∈ F(DTIME[n<sup style="top: -0.37em;">2</sup>]) <br>2</p><p>CS601 </p><p>L, P, and PSPACE </p><p>Lecture 5 </p><p>LP</p><p>≡ DSPACE[log n] </p><p>∞</p><p>[</p><p>≡</p><p>DTIME[n<sup style="top: -0.36em;">O(1) </sup></p><p>]</p><p>≡</p><p>DTIME[n<sup style="top: -0.36em;">i</sup>] </p><p>i=1 </p><p>∞</p><p>[</p><p></p><ul style="display: flex;"><li style="flex:1">PSPACE ≡ DSPACE[n<sup style="top: -0.36em;">O(1)</sup>] ≡ </li><li style="flex:1">DSPACE[n<sup style="top: -0.36em;">i</sup>] </li></ul><p></p><p>i=1 </p><p>These classes will become your good friends soon. </p><p>3</p><p>Theorem 5.5&nbsp;For any functions t(n) ≥ n, s(n) ≥ log n, we have </p><p>DTIME[t(n)] </p><p>⊆⊆</p><p>DSPACE[t(n)] </p><ul style="display: flex;"><li style="flex:1">DSPACE[s(n)] </li><li style="flex:1">DTIME[2<sup style="top: -0.41em;">O(s(n)) </sup></li></ul><p></p><p>]</p><p>Proof: Let M be a DSPACE[s(n)] TM, let&nbsp;w ∈ Σ<sup style="top: -0.36em;">⋆</sup><sub style="top: 0.25em;">0</sub>, let&nbsp;n = |w| M(w) has k tapes and uses at most cs(n) work-tape cells. </p><p>′</p><p>M(w) has at most 2<sup style="top: -0.36em;">k s(n) </sup>possible configurations: </p><p>′</p><p></p><ul style="display: flex;"><li style="flex:1">|Q| </li><li style="flex:1">·</li></ul><p></p><p>(n + cs(n) + 2)<sup style="top: -0.36em;">k </sup></p><p>·</p><p>|Σ|<sup style="top: -0.36em;">cs(n) </sup></p><p>&lt;</p><p>2<sup style="top: -0.36em;">k s(n) </sup></p><p># of states&nbsp;· # of head positions&nbsp;· # of tape contents </p><p>′</p><p>Thus, after 2<sup style="top: -0.36em;">k s(n) </sup>steps, M(w) must be in an infinite loop. </p><p>ꢀ</p><p>Corollary 5.6&nbsp;L ⊆ P ⊆ PSPACE </p><p>4</p><p>CS601 </p><p>PALINDROMES ∈ L </p><p>A B L E L B A ⊔ </p><p>Lecture 5 </p><p></p><ul style="display: flex;"><li style="flex:1">⊲</li><li style="flex:1">⊲</li></ul><p></p><p>⊔</p><p></p><ul style="display: flex;"><li style="flex:1">.</li><li style="flex:1">.</li><li style="flex:1">.</li></ul><p>..<br>.</p><ul style="display: flex;"><li style="flex:1">.</li><li style="flex:1">.</li><li style="flex:1">.</li></ul><p></p><ul style="display: flex;"><li style="flex:1">.</li><li style="flex:1">.</li><li style="flex:1">.</li></ul><p></p><p>⊲ 0 0 1 </p><p>⊔⊔⊔⊔</p><p>1 1 1 1 1 0 1 0 1 1 0 0 </p><ul style="display: flex;"><li style="flex:1">⊲ A B L E L B </li><li style="flex:1">A</li></ul><p></p><p>⊔</p><p>...</p><ul style="display: flex;"><li style="flex:1">.</li><li style="flex:1">.</li></ul><p>..<br>...<br>..</p><p>⊲ 0 1 0 </p><ul style="display: flex;"><li style="flex:1">⊲ A B L E L </li><li style="flex:1">B</li><li style="flex:1">A ⊔ </li></ul><p></p><p>...<br>...<br>...<br>...</p><p>⊲ 0 1 1 <br>⊲ A B L E <br>L<br>B A ⊔ </p><p>...<br>...<br>...<br>...</p><p></p><ul style="display: flex;"><li style="flex:1">⊲ 1 0 0 </li><li style="flex:1">⊲ A B L </li></ul><p>E<br>L B A ⊔ </p><p>...<br>...<br>...<br>...</p><p>⊲</p><p>A B L E L B A ⊔ </p><p>⊲</p><p>1 ⊔ <br>Using O(log n) workspace, we can keep track of and manipulate two pointers into the input. </p><p>5</p><p>CS601 </p><p>DTIME versus RAMTIME </p><p>Lecture 5 </p><p>RAM = Random Access Machine </p><p>Memory: κ r<sub style="top: 0.14em;">0 </sub>r<sub style="top: 0.15em;">1 </sub>r<sub style="top: 0.15em;">2 </sub>r<sub style="top: 0.15em;">3 </sub>r<sub style="top: 0.15em;">4 </sub></p><p>· · · </p><p>r<sub style="top: 0.15em;">i </sub></p><p>· · · </p><p>κ = program counter;&nbsp;r<sub style="top: 0.15em;">0 </sub>= accumulator </p><p></p><ul style="display: flex;"><li style="flex:1">Instruction Operand </li><li style="flex:1">Semantics </li></ul><p></p><p>READ STORE ADD </p><p>j | ↑&nbsp;j | = j r<sub style="top: 0.15em;">0 </sub>:= (r<sub style="top: 0.15em;">j </sub>| r<sub style="top: 0.15em;">r </sub>| j) </p><p>j</p><p>j | ↑&nbsp;j </p><p>(r<sub style="top: 0.15em;">j </sub>| r<sub style="top: 0.15em;">r </sub>) := r<sub style="top: 0.15em;">0 </sub></p><p>j</p><p>j | ↑&nbsp;j | = j r<sub style="top: 0.15em;">0 </sub>:= r<sub style="top: 0.15em;">0 </sub>+ (r<sub style="top: 0.15em;">j </sub>| r<sub style="top: 0.15em;">r </sub>| j) </p><p>j</p><p>SUB </p><p>j | ↑&nbsp;j | = j r<sub style="top: 0.15em;">0 </sub>:= r<sub style="top: 0.15em;">0 </sub>− (r<sub style="top: 0.15em;">j </sub>| r<sub style="top: 0.15em;">r </sub>| j) </p><p>j</p><p>HALF JUMP JPOS </p><p>r<sub style="top: 0.15em;">0 </sub>:= ⌊r<sub style="top: 0.15em;">0</sub>/2⌋ </p><p>κ := j if (r<sub style="top: 0.15em;">0 </sub>&gt; 0) then κ := j </p><p>if (r<sub style="top: 0.15em;">0 </sub>= 0) then κ := j κ := 0 </p><p>jj</p><ul style="display: flex;"><li style="flex:1">j</li><li style="flex:1">JZERO </li></ul><p>HALT </p><p>6<br>Theorem 5.7&nbsp;DTIME[t(n)] ⊆ RAM-TIME[t(n)] ⊆ DTIME[(t(n))<sup style="top: -0.36em;">3</sup>] Proof: Memorize program in finite control. Store all registers on one tape: </p><p>⊲ 1 1 , 0 : 1 0 1 , 1 0 1 : 0 , 1 0 1 1 : 1 0 ⊔ </p><p>κ</p><p></p><ul style="display: flex;"><li style="flex:1">r<sub style="top: 0.15em;">0 </sub></li><li style="flex:1">r<sub style="top: 0.15em;">5 </sub></li><li style="flex:1">r<sub style="top: 0.15em;">11 </sub></li></ul><p></p><p>Store workspace for calculations on second tape: </p><p>⊲ 1 0 0 , 1 0 1 1 ⊔ </p><p>′</p><p>κ</p><p>A</p><p>Use the third tape for copying and pasting sections of the first tape. </p><p>⊲ 0 : 1 0 1 , 1 0 1 : 0 , 1 0 1 1 : 1 0 ⊔ </p><p></p><ul style="display: flex;"><li style="flex:1">r<sub style="top: 0.15em;">0 </sub></li><li style="flex:1">r<sub style="top: 0.15em;">5 </sub></li><li style="flex:1">r<sub style="top: 0.15em;">11 </sub></li></ul><p></p><p>Each register contains at most n + t(n) bits. </p><p>[O(log n) would be more realistic.] </p><p>The total number of tape cells used is at most&nbsp;2t(n)(n + t(n)) = O((t(n))<sup style="top: -0.36em;">2</sup>). Each step takes at most O((t(n))<sup style="top: -0.36em;">2</sup>) steps to simulate. </p><p>ꢀ</p><p>7</p><p>CS601 </p><p>Nondeterministic TM </p><p>Lecture 5 </p><p>Nondeterministic Turing Machines choose one of two possible moves each step. guess.tm </p><p></p><ul style="display: flex;"><li style="flex:1">s</li><li style="flex:1">g</li><li style="flex:1">q</li></ul><p></p><p>01</p><p>⊔</p><p>⊲g, ⊔, − | q, ⊔, − s, 0, → |&nbsp;s, 1, → s, ⊲, → </p><p>comment </p><p>g or q </p><p></p><ul style="display: flex;"><li style="flex:1">guess 0 or 1 </li><li style="flex:1">the rest </li></ul><p></p><p>Nondeterministic Guess Machine is a typical example: </p><p>• Write down an arbitrary string, g ∈ {0, 1}<sup style="top: -0.36em;">⋆</sup>: the guess. • Proceed with the rest of the computation, using g if desired. • Accept iff there exists some guess that leads to acceptance. </p><p>8</p><p>ssgsgsgsg<br>⊲</p><p>⊔</p><p>⊲</p><p>⊔</p><p>⊲</p><p>⊔</p><p>⊲ 0 </p><p>⊔⊔</p><p>⊲ 0 </p><p>⊲ 0 1 </p><p>⊔⊔</p><p>⊲ 0 1 ⊲ 0 1 1 </p><p>⊔⊔</p><p>⊲ 0 1 1 </p><p>...</p><ul style="display: flex;"><li style="flex:1">.</li><li style="flex:1">.</li><li style="flex:1">.</li></ul><p></p><ul style="display: flex;"><li style="flex:1">.</li><li style="flex:1">.</li><li style="flex:1">.</li></ul><p></p><ul style="display: flex;"><li style="flex:1">.</li><li style="flex:1">.</li><li style="flex:1">.</li></ul><p>sq</p><p>⊲ 0 1 1 0 </p><p>· · · · · · </p><p>1 ⊔ </p><ul style="display: flex;"><li style="flex:1">⊲ 0 1 1 0 </li><li style="flex:1">1 ⊔ </li></ul><p></p><p>guess.tm </p><p></p><ul style="display: flex;"><li style="flex:1">s</li><li style="flex:1">g</li><li style="flex:1">q</li></ul><p></p><p>01</p><p>⊔</p><p>⊲g, ⊔, − | q, ⊔, − s, 0, → |&nbsp;s, 1, → s, ⊲, → </p><p>comment </p><p>g or q </p><p></p><ul style="display: flex;"><li style="flex:1">guess 0 or 1 </li><li style="flex:1">the rest </li></ul><p>9<br>Definition 5.8 The set accepted by a NTM, N: </p><p></p><ul style="display: flex;"><li style="flex:1">ꢁ</li><li style="flex:1">ꢀ</li></ul><p>ꢁ</p><p>L(N) </p><p>≡</p><p>w ∈ U some run of N(w) halts with output “1” </p><p>The time taken by N on w ∈ L(N) is the number of steps in the shortest computation of N(w) </p><p>that accepts. </p><p>ꢀ</p><p>Unfortunately, this is a mathematical fiction. </p><p>As far as we know, you can’t really build a nondeterministic Turing Machine. </p><p>10 </p><p>00000000010000000000000</p><p>t(n) s<br>2</p><p>t(n) </p><p></p><ul style="display: flex;"><li style="flex:1">b<sub style="top: 0.15em;">1 </sub></li><li style="flex:1">b<sub style="top: 0.15em;">2 </sub></li><li style="flex:1">b<sub style="top: 0.15em;">3 </sub></li></ul><p></p><p>· · · </p><p>b<sub style="top: 0.16em;">t(n) </sub></p><p>11 </p><p>CS601 </p><p>NTIME and&nbsp;NP </p><p>Lecture 5 </p><p>NTIME[t(n)] ≡ problems accepted by NTMs in time O(t(n)) </p><p>∞</p><p>[</p><p>NP <br>≡ NTIME[n<sup style="top: -0.37em;">O(1) </sup></p><p>]</p><p>≡</p><p>NTIME[n<sup style="top: -0.37em;">i</sup>] </p><p>i=1 </p><p>Theorem 5.9&nbsp;For any function t(n), </p><p>DTIME[t(n)] ⊆ NTIME[t(n)] ⊆ DSPACE[t(n)] ⊆ DTIME[2<sup style="top: -0.41em;">O(t(n)) </sup></p><p>]</p><p>Corollary 5.10&nbsp;L ⊆ P ⊆ NP ⊆ PSPACE </p><p>Corollary 5.11&nbsp;The definition of Recursive and r.e. are unchanged if we use nondeterministic instead of deterministic Turing machines. </p><p>12 <br>NSPACE[s(n)] is the set of problems accepted by NTMs using at most O(s(n)) space on each branch. [Can run in time t(n) ≤ 2<sup style="top: -0.37em;">O(s(n))</sup>.] </p><p>00000000010</p><p>t(n) </p><p>0</p><p></p><ul style="display: flex;"><li style="flex:1">s</li><li style="flex:1">2</li></ul><p></p><p>00000000000</p><p>t(n) </p><p></p><ul style="display: flex;"><li style="flex:1">b<sub style="top: 0.15em;">1 </sub></li><li style="flex:1">b<sub style="top: 0.15em;">2 </sub></li><li style="flex:1">b<sub style="top: 0.15em;">3 </sub></li><li style="flex:1">b<sub style="top: 0.15em;">4 </sub></li></ul><p></p><p>· · · </p><p>b<sub style="top: 0.16em;">t(n) </sub></p><p>13 </p><p>ꢁꢁ<br>ꢀ</p><p>⋆</p><p>s → t </p><p>Definition 5.12 </p><p>REACH = </p><p>G</p><p>ꢀ</p><p></p><ul style="display: flex;"><li style="flex:1">8</li><li style="flex:1">3</li></ul><p>2</p><p>5<br>7<br>11 </p><p>st</p><p>1<br>4</p><p>9<br>6</p><p>10 </p><p>Prop: REACH ∈ NL </p><p></p><ul style="display: flex;"><li style="flex:1">=</li><li style="flex:1">NSPACE[log n] </li></ul><p></p><p>1. b := s </p><p>2. for c := 1 to n = |V | do { </p><p>ab</p><p>2<br>3. </p><p>4. 5. 6. </p><p>if b = t then accept </p><p>a := b </p><p>4</p><p>choose new b </p><p>accept! </p><p>if (¬E(a, b)) then reject } <br>7. reject </p><p>14 <br>Def: Problem T is complete for complexity class C iff <br>1. T ∈ C, and </p><p>2. ∀A ∈ C (A ≤ T) </p><p>Reductions now must be in F(L). </p><p>15 </p><p>Arithmetic Hierarchy </p><p>FO∀(N) <br>FO(N) </p><p>r.e. complete co-r.e. complete </p><p>K<br>K</p><p></p><ul style="display: flex;"><li style="flex:1">co-r.e. </li><li style="flex:1">r.e. </li></ul><p></p><p>FO∃(N) </p><p>Recursive <br>Primitive Recursive </p><p>EXPTIME </p><p>O(1) </p><p>SO[2<sup style="top: -0.43em;">n </sup></p><p>]]</p><p>SO(LFP) </p><p>QSAT PSPACE complete </p><p>PSPACE </p><p>O(1) </p><p>SO[n<sup style="top: -0.43em;">O(1) </sup></p><p>FO[2<sup style="top: -0.43em;">n </sup></p><p>]</p><p>FO(PFP) </p><p>SO(TC) </p><p>PTIME Hierarchy </p><p>SO </p><p>NP complete </p><p>SAT </p><p>co-NP complete </p><p>SAT </p><p>co-NP SO∀ <br>NP </p><p>SO∃ </p><p>NP ∩ co-NP </p><p>FO[n<sup style="top: -0.43em;">O(1) </sup></p><p>]</p><p>P complete </p><p>HornSAT </p><p>P</p><p>FO(LFP) </p><p>SO(Horn) </p><p></p><ul style="display: flex;"><li style="flex:1">FO[(log n)<sup style="top: -0.43em;">O(1) </sup></li><li style="flex:1">]</li></ul><p></p><p>“truly </p><p>NC AC<sup style="top: -0.43em;">1 </sup>sAC<sup style="top: -0.43em;">1 </sup>NL </p><p>FO[log n] </p><p>FO(CFL) FO(TC) </p><p>feasible” </p><p>2SAT NL comp. </p><p>SO(Krom) </p><p>2COLOR L comp. </p><p>FO(DTC) </p><p>LNC<sup style="top: -0.43em;">1 </sup>ThC<sup style="top: -0.43em;">0 </sup>AC<sup style="top: -0.43em;">0 </sup></p><p>FO(REGULAR) FO(COUNT) <br>FO </p><p>LOGTIME Hierarchy </p><p>16 </p>

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    16 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us