Relationships Between Nondeterministic and Deterministic Tape Complexities

About this paper中文日本語

This paper is under a licence that does not allow it to be reproduced, so what is here is its front matter and a short abstract. Read it at the publisher's page.

Tiếng Việt
English

Mối quan hệ giữa độ phức tạp băng từ không tất định và tất định*

Walter J. Savitch

Department of Applied Physics and Information Science, University of California, San Diego, La Jolla, California 92037

Nhận ngày 29 tháng 8, 1969

Lượng bộ nhớ cần thiết để mô phỏng một máy Turing bị giới hạn băng từ không tất định trên một máy Turing tất định được nghiên cứu. Các kết quả bao gồm những điều sau: Định lý. Một máy Turing bị giới hạn băng từ L(n)L(n) không tất định có thể được mô phỏng bởi một máy Turing bị giới hạn băng từ [L(n)]2[L(n)]^2 tất định, với điều kiện L(n)≥log⁡2nL(n) \geq \log_2 n. Các tính toán của các máy không tất định được chỉ ra là tương ứng với các phép luồn qua của một số mê cung nhất định. Sự tương ứng này được sử dụng để tạo ra một tập cụ thể, cụ thể là tập tất cả các mã hóa của các mê cung có thể luồn qua, sao cho, nếu có bất kỳ tập nào phân biệt các lớp độ phức tạp băng từ không tất định với các lớp độ phức tạp băng từ tất định, thì đây là một tập như vậy.

Department of Applied Physics and Information Science, University of California, San Diego, La Jolla, California 92037

Received August 29, 1969

The amount of storage needed to simulate a nondeterministic tape bounded Turing machine on a deterministic Turing machine is investigated. Results include the following: Theorem. A nondeterministic L(n)L(n)-tape bounded Turing machine can be simulated by a deterministic [L(n)]2[L(n)]^2-tape bounded Turing machine, provided L(n)≥log⁡2nL(n) \geq \log_2 n. Computations of nondeterministic machines are shown to correspond to threadings of certain mazes. This correspondence is used to produce a specific set, namely the set of all codings of threadable mazes, such that, if there is any set which distinguishes nondeterministic tape complexity classes from deterministic tape complexity classes, then this is one such set.

Giới thiệu

Introduction

Một bài toán mở nổi tiếng trong lý thuyết ngôn ngữ hình thức và độ phức tạp tính toán là quyết định liệu có tồn tại hay không một ngôn ngữ phi ngữ cảnh nhạy cảm không tất định, tức là quyết định liệu có hay không một tập được chấp nhận bởi một ôtômát bị giới hạn tuyến tính không tất định, nhưng không được chấp nhận bởi bất kỳ máy tất định tương tự nào. Trong bài báo này, chúng tôi đưa ra một số câu trả lời từng phần cho một khái quát hóa tự nhiên của bài toán này. Chúng tôi cố gắng trả lời câu hỏi sau: "Cho một máy Turing bị giới hạn băng không tất định chấp nhận một tập AA, một máy Turing tất định cần bao nhiêu bộ nhớ bổ sung để nhận biết AA?"

A well-known open problem in the theory of formal languages and computational complexity is to decide whether or not there exists a nondeterministic context-sensitive language, that is, to decide whether or not there is a set which is accepted by a nondeterministic linear bounded automaton, but is accepted by no such deterministic machine. In this paper, we give some partial answers to a natural generalization of this problem. We attempt to answer the following question: "Given a nondeterministic tape bounded Turing machine which accepts a set AA, how much addition storage does a deterministic Turing machine require to recognize AA?"

Cụ thể hơn, chúng tôi chỉ ra rằng bất kỳ máy Turing bị giới hạn băng L(n)L(n) không tất định nào cũng có thể được mô phỏng bởi một máy Turing bị giới hạn băng [L(n)]2[L(n)]^2 tất định, với điều kiện L(n)≥log⁡2nL(n) \geq \log_2 n. Do đó, đặc biệt, mọi ngôn ngữ nhạy cảm ngữ cảnh đều có thể được nhận biết trong bộ nhớ tất định n2n^2, trong đó nn là độ dài của đầu vào. Như một hệ quả của chứng minh định lý này, chúng tôi thu được rằng nếu một ngôn ngữ nhạy cảm ngữ cảnh được

More specifically, we show that any nondeterministic L(n)L(n)-tape bounded Turing machine can be simulated by a deterministic [L(n)]2[L(n)]^2-tape bounded Turing machine, provided L(n)≥log⁡2nL(n) \geq \log_2 n. Thus, in particular, every context-sensitive language can be recognized within deterministic storage n2n^2, where nn is the length of the input. As a corollary of the proof of this theorem, we get that if a context-sensitive language is

  • Công trình này dựa trên một phần luận án tiến sĩ của tác giả tại Khoa Toán học của University of California, Berkeley. Phần lớn các kết quả đã được công bố trong [9]. Một phần của nghiên cứu này được thực hiện khi tác giả là National Science Foundation Graduate Fellow.
  • This work is based on a portion of the author's doctoral dissertation in the Department of Mathematics of the University of California, Berkeley. Most of the results were announced in [9]. Part of this research was done while the author was a National Science Foundation Graduate Fellow.

chấp nhận bởi một ôtômát bị giới hạn tuyến tính không tất định trong thời gian đa thức, thì ngôn ngữ đó được chấp nhận bởi một máy Turing tất định trong bộ nhớ nlog⁡2nn \log_2 n. Cũng chỉ ra rằng nếu các lớp độ phức tạp băng không tất định và tất định bằng nhau đối với các hàm "nhỏ", thì chúng cũng bằng nhau đối với các hàm "lớn".

accepted by a nondeterministic linear bounded automaton within polynomial time, then the language is accepted by a deterministic Turing machine within storage nlog⁡2nn \log_2 n. It is also shown that if nondeterministic and deterministic tape complexity classes are equal for "small" functions, then they are equal for "large" functions.

Khái niệm mê cung được hình thức hóa và các tính toán của các máy không tất định được liên hệ với các cách đi xuyên qua của một số mê cung nhất định. Mối liên hệ này được sử dụng để thu được một tập cụ thể, cụ thể là tập các mã hóa của các mê cung có thể đi xuyên qua, sao cho, nếu có bất kỳ tập nào phân biệt các lớp độ phức tạp băng không tất định với các lớp độ phức tạp băng tất định, thì đây là một tập như vậy. Nghĩa là, có một máy Turing không tất định chấp nhận các mã hóa của các mê cung có thể đi xuyên qua trong bộ nhớ log⁡2n\log_2 n. Ngoài ra, nếu có một máy Turing tất định chấp nhận chúng trong cùng bộ nhớ, log⁡2n\log_2 n, thì với mọi hàm bộ nhớ L(n)≥log⁡2nL(n) \geq \log_2 n, bất kỳ máy Turing bị giới hạn băng L(n)L(n) không tất định nào cũng có thể được kích thích bởi một máy Turing bị giới hạn băng L(n)L(n) tất định.

The notion of a maze is formalized and computations of nondeterministic machines are related to threadings of certain mazes. This relation is used to obtain a specific set, namely the set of codings of threadable mazes, such that, if there is any set which distinguishes nondeterministic tape complexity classes from deterministic tape complexity classes, then this is one such set. That is, there is a nondeterministic Turing machine which accepts the codings of threadable mazes within storage log⁡2n\log_2 n. Also, if there is a deterministic Turing machine which accepts them within the same storage, log⁡2n\log_2 n, then, for every storage function L(n)≥log⁡2nL(n) \geq \log_2 n, any nondeterministic L(n)L(n)-tape bounded Turing machine can be stimulated by a deterministic L(n)L(n)-tape bounded Turing machine.

Mô hình máy

Machine Model

Thiết bị được nghiên cứu trong bài báo này là Máy Turing nhiều băng. Theo thuật ngữ của [3], đây là một máy Turing với hữu hạn băng lưu trữ vô hạn hai chiều và một băng đầu vào chỉ đọc được cung cấp các dấu kết thúc. Chúng tôi chỉ đưa ra một định nghĩa không chính thức về thiết bị này. Một máy Turing nhiều băng (sau đây gọi đơn giản là máy Turing) là một bộ điều khiển trạng thái hữu hạn được gắn với một băng đầu vào chỉ đọc và hữu hạn các băng lưu trữ đọc/ghi. Các băng được chia thành các ô. Mỗi ô của một băng lưu trữ có khả năng chứa một ký hiệu từ bảng chữ cái băng lưu trữ hữu hạn Γ\Gamma. Băng đầu vào sẽ luôn chứa một chuỗi hữu hạn ww gồm các ký hiệu từ bảng chữ cái đầu vào hữu hạn Σ\Sigma. Chuỗi ww được phân cách bởi hai ký hiệu không thuộc Σ\Sigma được gọi là dấu kết thúc bên trái và dấu kết thúc bên phải. Mỗi băng có một đầu đọc giao tiếp với bộ điều khiển hữu hạn.

The device studied in this paper is the multitape Turing Machine. In the terminology of [3], it is a Turing machine with finitely many two-way infinite storage tapes and a read only input tape provided with end markers. We shall give only an informal definition of the device. A multitape Turing machine (hereafter called simply Turing machine) is a finite state control attached to a read only input tape and finitely many read/write storage tapes. The tapes are divided into squares. Each square of a storage tape is capable of holding one symbol from the finite storage tape alphabet Γ\Gamma. The input tape will always contain a finite string ww of symbols from the finite input alphabet Σ\Sigma. The string ww is separated by two symbols not in Σ\Sigma called left and right end markers. Each tape has one head communicating with the finite control.

Tại bất kỳ thời điểm nào, mỗi đầu đọc sẽ quét một ô trên băng của nó và bộ điều khiển sẽ ở một trạng thái. Phụ thuộc vào trạng thái này và các ký hiệu được các đầu đọc quét, máy sẽ, trong một bước, chuyển sang một trạng thái khác, ghi đè một ký hiệu trên ô đang được quét của mỗi băng lưu trữ của nó, rồi dịch chuyển một số đầu đọc của nó (có thể bao gồm cả đầu đọc đầu vào) sang trái hoặc phải một ô. Bộ điều khiển hữu hạn được thiết kế sao cho đầu đọc đầu vào sẽ không bao giờ rời khỏi đoạn băng chứa ww và các dấu kết thúc. Máy được gọi là tất định nếu chỉ có một hành động khả dĩ tại mỗi bước. Máy được gọi là không tất định nếu có hữu hạn hành động khả dĩ tại mỗi bước.

At any point in time, each head will scan one square on its tape and the control will be in one state. Depending on this state and the symbols scanned by the heads, the machine will, in one step, assume another state, overwrite a symbol on the scanned square of each of its storage tapes, and then shift some of its heads (including possibly the input head) either left or right one square. The finite control is designed so that the input head will never leave the segment of tape containing ww and the end markers. The machine is said to be deterministic if there is only one possible action at each step. It is said to be nondeterministic if there are finitely many possible actions at each step.

Một số trạng thái được phân biệt và gọi là các trạng thái chấp nhận và một trạng thái được phân biệt và gọi là trạng thái ban đầu. Chúng tôi nói máy tất định ZZ chấp nhận chuỗi đầu vào ww trên Σ\Sigma nếu ZZ đi vào một trạng thái chấp nhận sau hữu hạn bước, khi bắt đầu ở trạng thái ban đầu, với tất cả các băng lưu trữ trống, ww trên băng đầu vào và đầu đọc đầu vào đang quét dấu kết thúc bên trái. Định nghĩa này cũng giống trong trường hợp ZZ là không tất định ngoại trừ việc chúng ta chỉ yêu cầu rằng có một chuỗi hữu hạn các bước khả dĩ dẫn đến một trạng thái chấp nhận, bắt đầu từ cấu hình ban đầu được mô tả ở trên.

Some states are distinguished and called accepting states and one state is distinguished and called the initial state. We say the deterministic machine ZZ accepts the input string ww over Σ\Sigma if ZZ enters an accepting state after finitely many steps, when started in the initial state, with all storage tapes blank, ww on its input tape and its input head scanning the left end marker. The definition is the same in the case ZZ is nondeterministic except that we merely require that there be a possible finite sequence of steps leading to an accepting state, starting from the initial configuration described above.

Định nghĩa. Giả sử L(n)L(n) là một hàm trên các số tự nhiên, ZZ là một máy Turing (tất định hoặc không tất định), và AA là một tập các chuỗi trên bảng chữ cái đầu vào của ZZ. ZZ được nói là chấp nhận tập AA trong bộ nhớ L(n)L(n) nếu

Definition. Suppose L(n)L(n) is a function on the natural numbers, ZZ is a Turing machine (deterministic or nondeterministic), and AA is a set of strings over the input alphabet of ZZ. ZZ is said to accept the set AA within storage L(n)L(n) provided that

(i) với mỗi chuỗi ww trong AA, có ít nhất một tính toán khả dĩ của ZZ chấp nhận ww và trong đó mỗi đầu đọc băng lưu trữ quét nhiều nhất L(∣w∣)L(|w|) ô, và

(i) for each string ww in AA, there is at least one possible computation of ZZ which accepts ww and in which each storage tape head scans at most L(∣w∣)L(|w|) squares, and

(ii) ZZ không chấp nhận chuỗi nào không thuộc AA. ∣w∣|w| là độ dài của chuỗi, ww.

(ii) ZZ accepts no string not in AA. ∣w∣|w| is the length of the string, ww.

Trong bài báo này chúng tôi chỉ xem xét tốc độ tăng trưởng của các hàm bộ nhớ. Nghĩa là, đối với mục đích của chúng tôi, các hàm bộ nhớ L(n)L(n) và ϵL(n)\epsilon L(n) là giống nhau, với mọi hằng số ϵ>0\epsilon > 0. Sự đồng nhất này của các hàm xuất phát từ thực tế rằng các máy Turing của chúng tôi được phép có các bảng chữ cái băng lưu trữ hữu hạn tùy ý. Vì vậy, bất kỳ máy Turing nào hoạt động với bộ nhớ L(n)L(n) đều có thể được sửa đổi để hoạt động với bộ nhớ ϵL(n)\epsilon L(n) và vẫn chấp nhận cùng một tập băng. (Xem, ví dụ, [3].) Chúng tôi giả sử người đọc quen thuộc với các kỹ thuật giảm băng như vậy.

In this paper we are considering only the growth rates of storage functions. That is, for our purposes, the storage functions L(n)L(n) and ϵL(n)\epsilon L(n) are the same, for any constant ϵ>0\epsilon > 0. This identification of functions follows from the fact that our Turing machines are allowed arbitrary finite storage tape alphabets. Thus, any Turing machine which operates in storage L(n)L(n) can be modified to operate in storage ϵL(n)\epsilon L(n) and still accept the same set of tapes. (See, for example, [3].) We assume the reader is familiar with such tape reduction techniques.

Trong phần tiếp theo, đôi khi sẽ thuận tiện khi giả sử rằng các hàm lưu trữ là "tốt". Điều kiện về tính tốt mà chúng ta muốn là các hàm phải đo được [4].

In what follows, it will sometimes be convenient to assume that the storage functions are "nice". The niceness condition we want is that the functions be measurable [4].

Định nghĩa. Một hàm L(n)L(n) được gọi là đo được nếu tồn tại một máy Turing chỉ với một băng lưu trữ sao cho, với bất kỳ đầu vào nào có độ dài nn, máy sẽ dừng sau một quá trình tính toán trong đó đầu đọc của băng lưu trữ quét chính xác L(n)L(n) ô.

Definition. A function L(n)L(n) is said to be measurable if there is some Turing machine with just one storage tape such that, given any input of length nn, the machine will halt after a computation in which the storage tape head scans exactly L(n)L(n) squares.

Có vẻ như tất cả các hàm lưu trữ thông dụng L(n)≥log⁡2nL(n) \geq \log_2 n đều đo được. Cụ thể, mọi đa thức theo nn và log⁡2n\log_2 n đều đo được.

Apparently, all common storage functions L(n)≥log⁡2nL(n) \geq \log_2 n are measurable. In particular, any polynomial in nn and log⁡2n\log_2 n is measurable.

Mô phỏng xác định của các máy Turing không xác định

Deterministic Simulation of Nondeterministic Turing Machines

Định lý 1. Nếu một tập, AA, được chấp nhận bởi một máy Turing không xác định, ZNZ_N, trong phạm vi lưu trữ L(n)≥log⁡2nL(n) \geq \log_2 n, thì AA được chấp nhận bởi một máy Turing xác định nào đó, ZDZ_D, trong phạm vi lưu trữ [L(n)]2[L(n)]^2.

Theorem 1. If a set, AA, is accepted by a nondeterministic Turing machine, ZNZ_N, within storage L(n)≥log⁡2nL(n) \geq \log_2 n, then AA is accepted by some deterministic Turing machine, ZDZ_D, within storage [L(n)]2[L(n)]^2.

Chứng minh. Định lý được chứng minh bằng cách đưa ra một thuật toán theo đó ZDZ_D có thể mô phỏng các phép tính của ZNZ_N. Thuật toán này tương tự như thuật toán được Lewis, Stearns, và Hartmanis [7] sử dụng để chỉ ra rằng mọi ngôn ngữ phi ngữ cảnh đều được chấp nhận bởi một máy Turing xác định trong phạm vi lưu trữ (log⁡2n)2(\log_2 n)^2.

Proof. The theorem is proved by exhibiting an algorithm whereby ZDZ_D can simulate the computations of ZNZ_N. The algorithm is similar to that used by Lewis, Stearns, and Hartmanis [7] to show that every context-free language is accepted by a deterministic Turing machine within storage (log⁡2n)2(\log_2 n)^2.

Giả sử máy Turing ZNZ_N có kk băng lưu trữ, bảng chữ cái của băng lưu trữ Γ\Gamma, và tập trạng thái bên trong QQ. Gọi Δ=Q∪Γ∪{1,2,∗,↓}\Delta = Q \cup \Gamma \cup \{1, 2, *, \downarrow\}, trong đó ↓\downarrow và ∗* là hai ký hiệu mới. Một mô tả tức thời (ID) của ZNZ_N là một chuỗi trên Δ\Delta có dạng pq u₁ ↓ v₁ u₂ ↓ v₂ ... uₖ ↓ vₖ, trong đó p là một số ở dạng ký hiệu dyadic¹ chỉ vị trí của đầu đọc đầu vào của ZNZ_N, q là một phần tử của Q chỉ ra rằng bộ điều khiển hữu hạn của ZNZ_N đang ở trạng thái q, và ui,viu_i, v_i là các phần tử của Γ∗\Gamma^*, i=1,2,...,ki = 1, 2, ..., k. ui↓viu_i ↓ v_i được hiểu là uiviu_i v_i là nội dung của băng lưu trữ thứ i của ZNZ_N và đầu đọc trên băng này đang quét ký hiệu đầu tiên của chuỗi viv_i. Vì vậy, ngoại trừ nội dung của băng đầu vào, một ID của ZNZ_N là một mô tả hoàn chỉnh về một cấu hình của ZNZ_N.

Suppose the Turing machine ZNZ_N has kk storage tapes, storage tape alphabet Γ\Gamma, and internal state set QQ. Let Δ=Q∪Γ∪{1,2,∗,↓}\Delta = Q \cup \Gamma \cup \{1, 2, *, \downarrow\}, where ↓\downarrow and ∗* are two new symbols. An instantaneous description (ID) of ZNZ_N is a string over Δ\Delta of the form pq u₁ ↓ v₁ u₂ ↓ v₂ ... uₖ ↓ vₖ, where p is a number in dyadic notation¹ indicating the position of the input head of ZNZ_N, q is an element of Q indicating that the finite control of ZNZ_N is in state q, and ui,viu_i, v_i are elements of Γ∗\Gamma^*, i=1,2,...,ki = 1, 2, ..., k. ui↓viu_i ↓ v_i is interpreted to mean that uiviu_i v_i is the contents of the ith storage tape of ZNZ_N and the head on this tape is scanning the first symbol of string viv_i. Thus, except for the contents of the input tape, an ID of ZNZ_N is a complete description of a configuration of ZNZ_N.

Vì ZNZ_N chấp nhận tập AA trong phạm vi lưu trữ L(n)≥log⁡2nL(n) \geq \log_2 n, nên suy ra rằng với mỗi chuỗi w có độ dài n được ZNZ_N chấp nhận, tồn tại một phép tính của ZNZ_N chấp nhận w trong đó mỗi ID có độ dài không vượt quá cL(n)cL(n). Hơn nữa, vì mỗi ID có độ dài nhiều nhất là cL(n)cL(n), phép tính cần không quá 2c′L(n)2^{c'L(n)} bước. c và c′c' là các hằng số chỉ phụ thuộc vào ZNZ_N chứ không phụ thuộc vào đầu vào w.

Since ZNZ_N accepts the set AA within storage L(n)≥log⁡2nL(n) \geq \log_2 n, it follows that for each string w of length n accepted by ZNZ_N, there is a computation of ZNZ_N accepting w in which every ID has length not exceeding cL(n)cL(n). Furthermore, since each ID is of length at most cL(n)cL(n), the computation need take no more than 2c′L(n)2^{c'L(n)} steps. c and c′c' are constants depending only on ZNZ_N and not on the input w.

Trước hết chúng ta đưa ra thuật toán cho trường hợp: L(n)L(n) là đo được.

We first give the algorithm for the case: L(n)L(n) is measurable.

Với một đầu vào có độ dài n, ZDZ_D khởi tạo phép tính của nó bằng cách chia một trong các băng lưu trữ của nó thành [c′L(n)]+1[c'L(n)] + 1 khối (được gọi là các thanh ghi), mỗi khối có độ dài [cL(n)][cL(n)], tiếp theo là [c′L(n)]+1[c'L(n)] + 1 khối (được gọi là các thẻ), mỗi khối có khả năng lưu trữ hoặc 0 hoặc 1. Nó có thể dễ dàng thực hiện việc này nếu L(n)L(n) là đo được. [y] là số nguyên lớn nhất không vượt quá y. Lưu ý rằng mỗi thanh ghi có khả năng chứa bất kỳ ID nào của ZNZ_N trong đó phần không trắng của mỗi băng lưu trữ nhiều nhất là L(n)L(n). ZDZ_D có một băng lưu trữ thứ hai cho công việc tạm thời.

Given an input of length n, ZDZ_D initializes its computation by dividing one of its storage tapes into [c′L(n)]+1[c'L(n)] + 1 blocks (called registers), each of length [cL(n)][cL(n)], followed by [c′L(n)]+1[c'L(n)] + 1 blocks (called tags), each capable of storing either 0 or 1. This it can easily do if L(n)L(n) is measurable. [y] is the largest integer not exceeding y. Note that each register is capable of holding any ID of ZNZ_N in which the nonblank portion of every storage tape is at most L(n)L(n). ZDZ_D has a second storage tape for scratch work.

Ý tưởng của thuật toán như sau. ZDZ_D có chuỗi w làm đầu vào. Trong quá trình của thuật toán, ZDZ_D sẽ xem xét hai ID I, I′′I'' được lưu trong các thanh ghi cụ thể. Với một m được chọn trước, nó sẽ cần kiểm tra xem, với đầu vào w, ZNZ_N có thể trong 2m2^m bước thay đổi cấu hình của nó từ I sang I′′I'' hay không. Hơn nữa, ZDZ_D sẽ phải thực hiện nhiệm vụ này chỉ sử dụng m thanh ghi. ZDZ_D tiến hành như sau. Nó duyệt qua (theo một cách có hệ thống) tất cả các ID I′I' của ZNZ_N và với mỗi I′I', kiểm tra xem có một tính toán gồm không quá 2m−12^{m-1} bước từ I đến I′I', và một tính toán gồm không quá 2m−12^{m-1} bước từ I′I' đến I′′I'' hay không. ZDZ_D cần một thanh ghi để theo dõi I′I', khiến nó còn lại m−1m - 1 thanh ghi. Vì vậy ZDZ_D đã giảm nhiệm vụ mô phỏng 2m2^m chuyển động của ZNZ_N sử dụng m thanh ghi thành mô phỏng 2m−12^{m-1} chuyển động của ZNZ_N sử dụng m−1m - 1 thanh ghi. Sau đó ZDZ_D giảm mỗi tính toán gồm 2m−12^{m-1} bước thành hai tính toán gồm 2m−22^{m-2} bước. ZDZ_D tiếp tục giảm độ dài của các tính toán mà nó cần kiểm tra cho đến khi nó chỉ cần kiểm tra, với các ID thích hợp I1I_1 và I2I_2, liệu với đầu vào w, ZNZ_N có thể trong một bước đi từ I1I_1 đến I2I_2 hay không. Điều này nó có thể dễ dàng thực hiện bằng cách sử dụng không gian lưu trữ bằng không. Bây giờ nếu có bất kỳ tính toán chấp nhận nào của ZNZ_N, thì có một tính toán chấp nhận trong 2c′L(n)2^{c'L(n)} bước. Vì vậy ZDZ_D có thể mô phỏng tính toán này bằng cách sử dụng c′L(n)c'L(n) thanh ghi hoặc khoảng [L(n)]2[L(n)]^2 ô của băng lưu trữ.

The idea of the algorithm is as follows. ZDZ_D has the string w as input. In the course of the algorithm, ZDZ_D will consider two ID's I, I′′I'' stored in particular registers. For a prechosen m, it will need to check if, with input w, ZNZ_N can in 2m2^m steps change its configuration from I to I′′I''. Furthermore, ZDZ_D will have to perform this task using only m registers. ZDZ_D proceeds as follows. It runs through (in a systematic way) all ID's I′I' of ZNZ_N and for each I′I', checks to see if there is a computation of at most 2m−12^{m-1} steps from I to I′I', and a computation of at most 2m−12^{m-1} steps from I′I' to I′′I''. ZDZ_D needs one register to keep track of the I′I', leaving it with m−1m - 1 registers. So ZDZ_D has reduced the task of simulating 2m2^m moves of ZNZ_N using m registers to simulating 2m−12^{m-1} moves of ZNZ_N using m−1m - 1 registers. ZDZ_D then reduces each computation of 2m−12^{m-1} steps to two computations of 2m−22^{m-2} steps. ZDZ_D continues to reduce the length of the computations it need check until it need only check, for appropriate ID's I1I_1 and I2I_2, whether, with input w, ZNZ_N can in one step go from I1I_1 to I2I_2. This it can easily do using zero storage. Now if there is any accepting computation of ZNZ_N, then there is one which accepts in 2c′L(n)2^{c'L(n)} steps. So ZDZ_D can simulate this computation using c′L(n)c'L(n) registers or about [L(n)]2[L(n)]^2 squares of storage tape.

Bây giờ chúng ta định nghĩa một số ký hiệu cho phát biểu hình thức của thuật toán. Vì các ID là các chuỗi trên một bảng chữ cái hữu hạn, Δ\Delta, chúng có thể được xem như các số nguyên trong ký hiệu m-adic, trong đó m là số ký hiệu trong Δ\Delta. Cụ thể hơn, nếu Δ={a1,a2,...,am}\Delta = \{a_1, a_2, ..., a_m\} thì chuỗi aikaik−1⋯ai0a_{i_k} a_{i_{k-1}} \cdots a_{i_0} sẽ biểu diễn số ∑j=0kijmj\sum_{j=0}^k i_j m^j. Chúng ta sẽ không phân biệt giữa một chuỗi và số mà nó biểu diễn.

We now define some notation for a formal statement of the algorithm. Since ID's are strings over a finite alphabet, Δ\Delta, they may be considered to be integers in m-adic notation, where m is the number of symbols in Δ\Delta. More precisely, if Δ={a1,a2,...,am}\Delta = \{a_1, a_2, ..., a_m\} then the string aikaik−1⋯ai0a_{i_k} a_{i_{k-1}} \cdots a_{i_0} will represent the number ∑j=0kijmj\sum_{j=0}^k i_j m^j. We will not distinguish between a string and the number it represents.

¹ Chuỗi dldl−1⋯d0d_l d_{l-1} \cdots d_0 trên bảng chữ cái {1, 2} là biểu diễn dyadic của số ∑i=0ldi2i\sum_{i=0}^l d_i 2^i.

¹ The string dldl−1⋯d0d_l d_{l-1} \cdots d_0 over the alphabet {1, 2} is the dyadic representation of the number ∑i=0ldi2i\sum_{i=0}^l d_i 2^i.

ĐỊNH NGHĨA. Nếu II và I′I' là các ID của ZNZ_N và nếu ZNZ_N có thể trong một bước, với đầu vào ww, chuyển từ cấu hình II sang cấu hình I′I', hoặc nếu I=I′I = I', thì ta sẽ viết I→wI′I \xrightarrow{w} I'. Trong thuật toán, ta sẽ kiểm tra xem I→wI′I \xrightarrow{w} I' có đúng với các chuỗi tùy ý I,I′I, I' trên Δ\Delta hay không. Nếu II hoặc I′I' không phải là một ID của ZNZ_N, thì phép kiểm tra thất bại.

DEFINITION. If II and I′I' are ID's of ZNZ_N and if ZNZ_N can in one step, with input ww, pass from configuration II to configuration I′I', or if I=I′I = I', then we will write I→wI′I \xrightarrow{w} I'. In the algorithm we will test if I→wI′I \xrightarrow{w} I' is true for arbitrary strings I,I′I, I' over Δ\Delta. If either II or I′I' is not an ID of ZNZ_N, then the test fails.

Trong thuật toán sau, xix_i biểu thị nội dung của thanh ghi thứ ii và TiT_i biểu thị nội dung của thẻ thứ ii [1≤i≤c′L(n)+1][1 \leq i \leq c'L(n) + 1]. ZDZ_D có một chuỗi ww làm đầu vào và mọi tham chiếu đến các tính toán của ZNZ_N đều có nghĩa là các tính toán của ZNZ_N dưới đầu vào ww và trong đó phần không trắng của mỗi băng công việc luôn dài không quá L(∣w∣)L(|w|) ô. Tại bất kỳ thời điểm nào trong tính toán của ZDZ_D, nếu Ti=1T_i = 1, thì tồn tại một tính toán của ZNZ_N từ ID bắt đầu đến xix_i.

In the following algorithm, xix_i denotes the contents of the ii-th register and TiT_i denotes the contents of the ii-th tag [1≤i≤c′L(n)+1][1 \leq i \leq c'L(n) + 1]. ZDZ_D has a string ww as input and all references to computations of ZNZ_N mean computations of ZNZ_N under the input ww and in which the nonblank portion of each work tape remains at most L(∣w∣)L(|w|) squares long. At any point in the computation of ZDZ_D, if Ti=1T_i = 1, then there is a computation of ZNZ_N from the start ID to xix_i.

THUẬT TOÁN CHO MÁY ZDZ_D

ALGORITHM FOR MACHINE ZDZ_D

Tóm tắt ký hiệu

Summary of Notation

ww là chuỗi đầu vào. nn là độ dài của ww. rr là số nguyên nhỏ nhất sao cho r≥c′L(n)r \geq c'L(n). c′c' là số sao cho, với ww làm đầu vào, nếu ZNZ_N chấp nhận ww tại bất kỳ thời điểm nào, thì ZNZ_N chấp nhận ww trong 2c′L(n)2^{c'L(n)} bước. I0I_0 là ID ban đầu của ZNZ_N. NN là số nguyên lớn nhất có biểu diễn mm-adic có thể được lưu trong một thanh ghi. xix_i là nội dung của thanh ghi thứ ii. TiT_i là nội dung của thẻ thứ ii.

ww is the input string. nn is the length of ww. rr is the least integer such that r≥c′L(n)r \geq c'L(n). c′c' is such that, with ww as input, if ZNZ_N accepts ww at all, then ZNZ_N accepts ww in 2c′L(n)2^{c'L(n)} steps. I0I_0 is the initial ID of ZNZ_N. NN is the largest integer whose mm-adic representation can be stored in a register. xix_i is the contents of the ii-th register. TiT_i is the contents of the ii-th tag.

D0 (Khởi tạo). Tính rr và thiết lập r+1r + 1 thanh ghi và thẻ. Với i=1,2,...,ri = 1, 2, ..., r, đặt xi←1x_i \leftarrow 1 và Ti←0T_i \leftarrow 0. Đặt xr+1←I0x_{r+1} \leftarrow I_0 (ID ban đầu) và Tr+1←1T_{r+1} \leftarrow 1.

D0 (Initialize). Compute rr and set up the r+1r + 1 registers and tags. For i=1,2,...,ri = 1, 2, ..., r set xi←1x_i \leftarrow 1 and Ti←0T_i \leftarrow 0. Set xr+1←I0x_{r+1} \leftarrow I_0 (the initial ID) and Tr+1←1T_{r+1} \leftarrow 1.

D1 (Kiểm tra). Nếu mỗi Ti=1T_i = 1, chuyển đến D3. Ngược lại, đặt jj là chỉ số nhỏ nhất sao cho Tj=0T_j = 0. Kiểm tra: Với một chỉ số hh nào đó, Th=1T_h = 1 và xh→wxjx_h \xrightarrow{w} x_j. Có: Chuyển đến D2. Không: Chuyển đến D3.

D1 (Test). If each Ti=1T_i = 1, go to D3. Otherwise, let jj be the smallest index such that Tj=0T_j = 0. Test: For some index hh, Th=1T_h = 1 and xh→wxjx_h \xrightarrow{w} x_j. Yes: Go to D2. No: Go to D3.

D2 (Xóa bộ nhớ) (jj như trong D1). Nếu xjx_j là một ID chấp nhận, ACCEPT. Ngược lại, đặt Tj←1T_j \leftarrow 1 và với i=1,2,...,j−1i = 1, 2, ..., j - 1 đặt xi←1x_i \leftarrow 1 và Ti←0T_i \leftarrow 0. Chuyển đến D1.

D2 (Clear Storage) (jj as in D1). If xjx_j is an accepting ID, ACCEPT. Otherwise, set Tj←1T_j \leftarrow 1 and for i=1,2,...,j−1i = 1, 2, ..., j - 1 set xi←1x_i \leftarrow 1 and Ti←0T_i \leftarrow 0. Go to D1.

D3 (Quay lui). Nếu xi=Nx_i = N với mỗi i≤ri \leq r, REJECT. Ngược lại, đặt kk là chỉ số nhỏ nhất sao cho xk≠Nx_k \neq N. Đặt xk←xk+1x_k \leftarrow x_k + 1, Tk←0T_k \leftarrow 0, và với i=1,2,...,k−1i = 1, 2, ..., k - 1 đặt xi←1x_i \leftarrow 1, Ti←0T_i \leftarrow 0. Chuyển đến D1.

D3 (Back Track). If xi=Nx_i = N for each i≤ri \leq r, REJECT. Otherwise, let kk be the smallest index such that xk≠Nx_k \neq N. Set xk←xk+1x_k \leftarrow x_k + 1, Tk←0T_k \leftarrow 0, and for i=1,2,...,k−1i = 1, 2, ..., k - 1 set xi←1x_i \leftarrow 1, Ti←0T_i \leftarrow 0. Go to D1.

Rõ ràng thuật toán hoạt động với bộ nhớ c′′[L(n)]2c''[L(n)]^2, trong đó c′′c'' là một hằng số chỉ phụ thuộc vào ZNZ_N. Bằng các kỹ thuật chuẩn [3], hằng số này có thể được giảm xuống còn một. Một phép quy nạp đơn giản theo số bước đã hoàn thành cho thấy rằng nếu ZDZ_D chấp nhận một đầu vào ww, thì máy không tất định ZNZ_N cũng chấp nhận. Vì vậy, chỉ cần chỉ ra rằng ZDZ_D chấp nhận mọi chuỗi mà ZNZ_N chấp nhận. Để chỉ ra điều này, chúng ta cần một số bổ đề sơ bộ. Các bổ đề dễ phát biểu hơn trong trường hợp máy không dừng khi nó chấp nhận. Vì vậy, giả sử D2 (Xóa bộ nhớ) đã được sửa đổi để bỏ dòng đầu tiên ("If xjx_j is an accepting ID, ACCEPT"). Ta sẽ nói rằng ZDZ_D đang ở cấu hình

Clearly the algorithm works within storage c′′[L(n)]2c''[L(n)]^2, where c′′c'' is a constant depending only on ZNZ_N. By standard techniques [3] the constant can be reduced to one. A simple induction on the number of steps completed shows that if ZDZ_D accepts an input ww, then the nondeterministic machine ZNZ_N does. Thus, it will suffice to show that ZDZ_D accepts all strings that ZNZ_N accepts. To show this, we need some preliminary lemmas. The lemmas are easier to state in case the machine does not stop when it accepts. So assume D2 (Clear Storage) has been modified to omit the first line ("If xjx_j is an accepting ID, ACCEPT"). We shall say ZDZ_D is in configuration

⟨x1,x2,...,xr+1⟩,⟨T1,T2,...,Tr+1⟩\langle x_1, x_2, ..., x_{r+1} \rangle,\quad \langle T_1, T_2, ..., T_{r+1} \rangle
⟨x1,x2,...,xr+1⟩,⟨T1,T2,...,Tr+1⟩\langle x_1, x_2, ..., x_{r+1} \rangle,\quad \langle T_1, T_2, ..., T_{r+1} \rangle

nếu nó sắp thực thi D1, và nội dung của các thanh ghi và các thẻ lần lượt là x1,x2,...,xr+1x_1, x_2, ..., x_{r+1} và T1,T2,...,Tr+1T_1, T_2, ..., T_{r+1}.

if it is about to execute D1, and the contents of the registers and tags are, respectively, x1,x2,...,xr+1x_1, x_2, ..., x_{r+1} and T1,T2,...,Tr+1T_1, T_2, ..., T_{r+1}.

Bổ đề 1. (Đối với D2 đã sửa đổi). Với mỗi chỉ số i(i=1,2,...,r)i (i = 1, 2, ..., r) và mỗi số nguyên xx (x=1,2,...,Nx = 1, 2, ..., N), nếu tại một thời điểm nào đó trong một phép tính của ZDZ_D cấu hình của ZDZ_D là

Lemma 1. (For modified D2). For each index i(i=1,2,...,r)i (i = 1, 2, ..., r) and each integer xx (x=1,2,...,Nx = 1, 2, ..., N) if at some time in a computation of ZDZ_D the configuration of ZDZ_D is

⟨1,1,...,1⏟i,xi+1,xi+2,...,xr,I0⟩,⟨0,0,...,0⏟i,Ti+1,Ti+2,...,Tr,1⟩(1)\langle \underbrace{1, 1, ..., 1}_{i}, x_{i+1}, x_{i+2}, ..., x_r, I_0 \rangle,\quad \langle \underbrace{0, 0, ..., 0}_{i}, T_{i+1}, T_{i+2}, ..., T_r, 1 \rangle \tag{1}
(1)
⟨1,1,...,1⏟i,xi+1,xi+2,...,xr,I0⟩,⟨0,0,...,0⏟i,Ti+1,Ti+2,...,Tr,1⟩(1)\langle \underbrace{1, 1, ..., 1}_{i}, x_{i+1}, x_{i+2}, ..., x_r, I_0 \rangle,\quad \langle \underbrace{0, 0, ..., 0}_{i}, T_{i+1}, T_{i+2}, ..., T_r, 1 \rangle \tag{1}
(1)

với một số xi+1,xi+2,...,xrx_{i+1}, x_{i+2}, ..., x_r và một số Ti+1,Ti+2,...,TrT_{i+1}, T_{i+2}, ..., T_r, thì tại một thời điểm sau đó cấu hình sẽ là

for some xi+1,xi+2,...,xrx_{i+1}, x_{i+2}, ..., x_r and some Ti+1,Ti+2,...,TrT_{i+1}, T_{i+2}, ..., T_r, then at some later time the configuration will be

⟨1,1,...,1⏟i−1,x,xi+1,xi+2,...,xr,I0⟩,⟨0,0,...,0⏟i,Ti+1,Ti+2,...,Tr,1⟩(2)\langle \underbrace{1, 1, ..., 1}_{i-1}, x, x_{i+1}, x_{i+2}, ..., x_r, I_0 \rangle,\quad \langle \underbrace{0, 0, ..., 0}_{i}, T_{i+1}, T_{i+2}, ..., T_r, 1 \rangle \tag{2}
(2)
⟨1,1,...,1⏟i−1,x,xi+1,xi+2,...,xr,I0⟩,⟨0,0,...,0⏟i,Ti+1,Ti+2,...,Tr,1⟩(2)\langle \underbrace{1, 1, ..., 1}_{i-1}, x, x_{i+1}, x_{i+2}, ..., x_r, I_0 \rangle,\quad \langle \underbrace{0, 0, ..., 0}_{i}, T_{i+1}, T_{i+2}, ..., T_r, 1 \rangle \tag{2}
(2)

hoặc

or

⟨1,1,...,1⏟j−1,xj,xj+1,...,xr,I0⟩,⟨0,0,...,0⏟j−1,1,Tj+1,...,Tr,1⟩,(3)\langle \underbrace{1, 1, ..., 1}_{j-1}, x_j, x_{j+1}, ..., x_r, I_0 \rangle,\quad \langle \underbrace{0, 0, ..., 0}_{j-1}, 1, T_{j+1}, ..., T_r, 1 \rangle, \tag{3}
(3)
⟨1,1,...,1⏟j−1,xj,xj+1,...,xr,I0⟩,⟨0,0,...,0⏟j−1,1,Tj+1,...,Tr,1⟩,(3)\langle \underbrace{1, 1, ..., 1}_{j-1}, x_j, x_{j+1}, ..., x_r, I_0 \rangle,\quad \langle \underbrace{0, 0, ..., 0}_{j-1}, 1, T_{j+1}, ..., T_r, 1 \rangle, \tag{3}
(3)

trong đó jj là chỉ số nhỏ nhất trong (1) sao cho j>ij > i và Tj=0T_j = 0. (Nếu không tồn tại jj như vậy, thì (2) xảy ra.)

where jj is the least index in (1) such that j>ij > i and Tj=0T_j = 0. (If no such jj exists, then (2) happens.)

Thuật toán đang cố gắng thiết lập rằng tồn tại một phép tính của ZNZ_N từ ID ban đầu đến xjx_j. Nó cố gắng thực hiện điều này bằng cách chỉ sử dụng các thanh ghi ở bên trái của xjx_j. Vì vậy, bổ đề nói rằng ZDZ_D có thể đưa bất kỳ ID nào vào bất kỳ thanh ghi nào, nếu cần.

The algorithm is trying to establish that there is a computation of ZNZ_N from the start ID to xjx_j. It is trying to do this using only registers to the left of xjx_j. So the lemma says that ZDZ_D can get any ID into any register, if it needs to.

Chứng minh. Một chứng minh hình thức sẽ sử dụng quy nạp trên ii và xx. Chúng tôi liệt kê một số cấu hình tiêu biểu trong một tính toán. Điều này sẽ làm rõ bổ đề. Lưu ý rằng vì NN là một chuỗi mà tất cả các chữ số của nó đều giống nhau, NN không phải là một ID và do đó, x↑wNx \uparrow_w N không đúng với bất kỳ số nguyên xx nào. Giả sử ZDZ_D được khởi động trong cấu hình (1) và tại không thời điểm nào sau đó ZDZ_D nhận các cấu hình (3). Khi đó ZDZ_D sẽ nhận các cấu hình sau:

Proof. A formal proof would use induction on ii and xx. We list some representative configurations in a computation. This should make the lemma clear. Note that since NN is a string all of whose digits are the same, NN is not an ID and, hence, x↑wNx \uparrow_w N is not true for any integer xx. Suppose ZDZ_D is started in configuration (1) and that at no later time does ZDZ_D assume configurations (3). ZDZ_D will then assume the following configurations:

⟨1,1,...,1,x−1;xi+1,xi+2,...,xr,I0⟩,\langle 1, 1, ..., 1, x - 1; x_{i+1}, x_{i+2}, ..., x_r, I_0 \rangle,
⟨1,1,...,1,x−1;xi+1,xi+2,...,xr,I0⟩,\langle 1, 1, ..., 1, x - 1; x_{i+1}, x_{i+2}, ..., x_r, I_0 \rangle,
⟨0,0,...,0,Ti+1,Ti+2,...,Tr,1⟩\langle 0, 0, ..., 0, T_{i+1}, T_{i+2}, ..., T_r, 1 \rangle
⟨0,0,...,0,Ti+1,Ti+2,...,Tr,1⟩\langle 0, 0, ..., 0, T_{i+1}, T_{i+2}, ..., T_r, 1 \rangle
⟨1,1,...,1,N,x−1,xi+1,xi+2,...,xr,I0⟩,\langle 1, 1, ..., 1, N, x - 1, x_{i+1}, x_{i+2}, ..., x_r, I_0 \rangle,
⟨1,1,...,1,N,x−1,xi+1,xi+2,...,xr,I0⟩,\langle 1, 1, ..., 1, N, x - 1, x_{i+1}, x_{i+2}, ..., x_r, I_0 \rangle,
⟨0,0,...,0,Ti,Ti+1,Ti+2,...,Tr,1⟩\langle 0, 0, ..., 0, T_i, T_{i+1}, T_{i+2}, ..., T_r, 1 \rangle
⟨0,0,...,0,Ti,Ti+1,Ti+2,...,Tr,1⟩\langle 0, 0, ..., 0, T_i, T_{i+1}, T_{i+2}, ..., T_r, 1 \rangle

trong đó Ti=0T_i = 0 hoặc 1.

where Ti=0T_i = 0 or 1.

⟨N,N,...,N,x−1,xi+1,xi+2,...,xr,I0⟩,\langle N, N, ..., N, x - 1, x_{i+1}, x_{i+2}, ..., x_r, I_0 \rangle,
⟨N,N,...,N,x−1,xi+1,xi+2,...,xr,I0⟩,\langle N, N, ..., N, x - 1, x_{i+1}, x_{i+2}, ..., x_r, I_0 \rangle,
⟨0,0,...,0,Ti,Ti+1,Ti+2,...,Tr,1⟩\langle 0, 0, ..., 0, T_i, T_{i+1}, T_{i+2}, ..., T_r, 1 \rangle
⟨0,0,...,0,Ti,Ti+1,Ti+2,...,Tr,1⟩\langle 0, 0, ..., 0, T_i, T_{i+1}, T_{i+2}, ..., T_r, 1 \rangle

Cuối cùng, thông qua D3, ZDZ_D nhận (2) như mong muốn.

Finally, via D3, ZDZ_D assumes (2) as desired.

Bổ đề 2. (Đối với D2 đã sửa đổi). Giả sử tại một thời điểm nào đó trong một tính toán, cấu hình của ZDZ_D là

Lemma 2. (For modified D2). Suppose that at some time in a computation the configuration of ZDZ_D is

⟨1,1,...,1,x,xj+1,xj+2,...,xr,I0⟩,\langle 1, 1, ..., 1, x, x_{j+1}, x_{j+2}, ..., x_r, I_0 \rangle,
⟨1,1,...,1,x,xj+1,xj+2,...,xr,I0⟩,\langle 1, 1, ..., 1, x, x_{j+1}, x_{j+2}, ..., x_r, I_0 \rangle,
⟨0,0,...,0,Tj,Tj+1,Tj+2,...,Tr,1⟩(4)\langle 0, 0, ..., 0, T_j, T_{j+1}, T_{j+2}, ..., T_r, 1 \rangle \tag{4}
(4)
⟨0,0,...,0,Tj,Tj+1,Tj+2,...,Tr,1⟩(4)\langle 0, 0, ..., 0, T_j, T_{j+1}, T_{j+2}, ..., T_r, 1 \rangle \tag{4}
(4)

với Tj=0T_j = 0 và các giá trị bất kỳ cho các xx và các TT còn lại. Nếu với một chỉ số nào đó q,Tq=1q, T_q = 1 và có một tính toán của ZNZ_N gồm không quá 2j2^j bước từ xqx_q đến xx, thì tại một thời điểm sau đó cấu hình của ZDZ_D sẽ là (4) với Tj=1T_j = 1.

with Tj=0T_j = 0 and any values for the xx's and remaining TT's. If for some index q,Tq=1q, T_q = 1 and there is a computation of ZNZ_N of at most 2j2^j steps from xqx_q to xx, then at some later time the configuration of ZDZ_D will be (4) with Tj=1T_j = 1.

Bổ đề phát biểu rằng jj thanh ghi là đủ để ZDZ_D kiểm tra một tính toán gồm 2j2^j bước của ZNZ_N.

The lemma says that jj registers are sufficient for ZDZ_D to check a computation of 2j2^j steps of ZNZ_N.

Bổ đề 3. (Đối với D2 đã sửa đổi). Giả sử tại một thời điểm nào đó trong một tính toán, cấu hình của ZDZ_D là

Lemma 3. (For modified D2). Suppose that at some time in a computation the configuration of ZDZ_D is

⟨1,1,...,1,xj,xj+1,...,xj+p,x,xj+p+2,...,xr,I0⟩,\langle 1, 1, ..., 1, x_j, x_{j+1}, ..., x_{j+p}, x, x_{j+p+2}, ..., x_r, I_0 \rangle,
⟨1,1,...,1,xj,xj+1,...,xj+p,x,xj+p+2,...,xr,I0⟩,\langle 1, 1, ..., 1, x_j, x_{j+1}, ..., x_{j+p}, x, x_{j+p+2}, ..., x_r, I_0 \rangle,
⟨0,0,...,0,1,1,...,1,0,Tj+p+2,Tj+p+3,...,Tr,1⟩(5)\langle 0, 0, ..., 0, 1, 1, ..., 1, 0, T_{j+p+2}, T_{j+p+3}, ..., T_r, 1 \rangle \tag{5}
(5)
⟨0,0,...,0,1,1,...,1,0,Tj+p+2,Tj+p+3,...,Tr,1⟩(5)\langle 0, 0, ..., 0, 1, 1, ..., 1, 0, T_{j+p+2}, T_{j+p+3}, ..., T_r, 1 \rangle \tag{5}
(5)

với các giá trị bất kỳ của các xx và TT. Nếu với một chỉ số nào đó q,Tq=1q, T_q = 1 và có một tính toán của ZNZ_N gồm không quá 2j2^j bước từ xqx_q đến xx, thì tại một thời điểm sau đó cấu hình của ZDZ_D sẽ là

for any values of the xx's and TT's. If for some index q,Tq=1q, T_q = 1 and there is a computation of ZNZ_N of at most 2j2^j steps from xqx_q to xx, then at some later time the configuration of ZDZ_D will be

⟨1,1,...,1,x,xj+p+2,xj+p+3,...,xr,I0⟩,\langle 1, 1, ..., 1, x, x_{j+p+2}, x_{j+p+3}, ..., x_r, I_0 \rangle,
⟨1,1,...,1,x,xj+p+2,xj+p+3,...,xr,I0⟩,\langle 1, 1, ..., 1, x, x_{j+p+2}, x_{j+p+3}, ..., x_r, I_0 \rangle,
⟨0,0,...,0,1,Tj+p+2,Tj+p+3,...,Tr,1⟩.(6)\langle 0, 0, ..., 0, 1, T_{j+p+2}, T_{j+p+3}, ..., T_r, 1 \rangle. \tag{6}
(6)
⟨0,0,...,0,1,Tj+p+2,Tj+p+3,...,Tr,1⟩.(6)\langle 0, 0, ..., 0, 1, T_{j+p+2}, T_{j+p+3}, ..., T_r, 1 \rangle. \tag{6}
(6)

Chứng minh của Cả Hai Bổ đề. Bổ đề 2 và 3 về cơ bản là một bổ đề duy nhất và được chứng minh đồng thời bằng quy nạp trên jj. Trường hợp cơ sở, j=1j = 1, là rõ ràng. Giả sử cả hai bổ đề đúng khi jj được thay bằng j−1j - 1. Chúng tôi sẽ chứng minh rằng Bổ đề 2 đúng với jj.

Proof of Both Lemmas. Lemmas 2 and 3 are basically a single lemma and are proven simultaneously by induction on jj. The base case, j=1j = 1, is clear. Assume both lemmas hold with jj replaced by j−1j - 1. We will show that Lemma 2 holds for jj.

Giả sử ZDZ_D đang ở cấu hình (4) với Tj=0T_j = 0 và với một chỉ số nào đó, qq, có một tính toán của ZNZ_N từ xqx_q đến xx gồm nhiều nhất 2j2^j bước. Phân rã tính toán này từ xqx_q đến xx, ta thu được rằng tồn tại một yy sao cho có các tính toán gồm nhiều nhất 2j−12^{j-1} bước từ xqx_q đến yy và từ yy đến xx. Theo Bổ đề 1, suy ra rằng, tại một thời điểm sau đó, hoặc cấu hình của ZDZ_D là

Suppose ZDZ_D is in configuration (4) with Tj=0T_j = 0 and that for some index, qq, there is a computation of ZNZ_N from xqx_q to xx of at most 2j2^j steps. Decomposing this computation from xqx_q to xx, we get that there is a yy such that there are computations of at most 2j−12^{j-1} steps from xqx_q to yy and from yy to xx. By Lemma 1, it follows that, at some later time, either the configuration of ZDZ_D is

⟨1,1,...,1,y,x,xj+1,xj+2,...,xr,I0⟩,\langle 1, 1, ..., 1, y, x, x_{j+1}, x_{j+2}, ..., x_r, I_0 \rangle,
⟨1,1,...,1,y,x,xj+1,xj+2,...,xr,I0⟩,\langle 1, 1, ..., 1, y, x, x_{j+1}, x_{j+2}, ..., x_r, I_0 \rangle,
⟨0,0,...,0,Tj−1,0,Tj+1,Tj+2,...,Tr,1⟩\langle 0, 0, ..., 0, T_{j-1}, 0, T_{j+1}, T_{j+2}, ..., T_r, 1 \rangle
⟨0,0,...,0,Tj−1,0,Tj+1,Tj+2,...,Tr,1⟩\langle 0, 0, ..., 0, T_{j-1}, 0, T_{j+1}, T_{j+2}, ..., T_r, 1 \rangle

với Tj−1=0T_{j-1} = 0 hoặc cấu hình là (4) với Tj=1T_j = 1. Cấu hình (4) với Tj=1T_j = 1 là kết quả mong muốn. Vì vậy, giả sử ZDZ_D đã nhận cấu hình (7) với Tj−1=0T_{j-1} = 0. Theo giả thiết quy nạp trên Bổ đề 2, suy ra rằng tại một thời điểm vẫn sau đó nữa, cấu hình của ZDZ_D sẽ là (7) với Tj−1=1T_{j-1} = 1. Nếu sau đó áp dụng giả thiết quy nạp trên Bổ đề 3, ta thu được rằng tại một thời điểm sau đó nữa, cấu hình của ZDZ_D sẽ là (4) với Tj=1T_j = 1. Vì vậy Bổ đề 2 đúng với jj. Bổ đề 3 với jj được thiết lập theo cách tương tự. Do đó, giả thiết quy nạp được thiết lập và chứng minh của cả hai bổ đề được hoàn thành.

with Tj−1=0T_{j-1} = 0 or the configuration is (4) with Tj=1T_j = 1. Configuration (4) with Tj=1T_j = 1 is the desired outcome. So assume ZDZ_D assumed configuration (7) with Tj−1=0T_{j-1} = 0. By induction hypothesis on Lemma 2, it follows that at some still later time the configuration of ZDZ_D will be (7) with Tj−1=1T_{j-1} = 1. If we then apply the induction hypothesis on Lemma 3, we get that at a still later time the configuration of ZDZ_D will be (4) with Tj=1T_j = 1. So Lemma 2 holds for jj. Lemma 3 for jj is established in a similar fashion. Thus, the induction hypothesis is established and the proof of both lemmas is completed.

Sử dụng các Bổ đề 1 và 2, ta dễ dàng hoàn thành chứng minh của định lý. Giả sử máy không tất định ZNZ_N chấp nhận ww. Ta phải chỉ ra rằng ZDZ_D chấp nhận ww. Vì ZNZ_N chấp nhận ww, tồn tại một ID chấp nhận, xx, của ZNZ_N sao cho có một tính toán, với ww là đầu vào, gồm nhiều nhất 2r2^r bước từ I0I_0 (ID ban đầu của ZNZ_N) đến xx. Theo Bổ đề 1, suy ra rằng ZDZ_D cuối cùng sẽ nhận cấu hình

Using Lemmas 1 and 2 it is easy to complete the proof of the theorem. Suppose the nondeterministic machine ZNZ_N accepts ww. We must show that ZDZ_D accepts ww. Since ZNZ_N accepts ww, there is an accepting ID, xx, of ZNZ_N such that there is a computation, with ww as input, of at most 2r2^r steps from I0I_0 (the initial ID of ZNZ_N) to xx. By Lemma 1, it follows that ZDZ_D eventually assumes configuration

⟨1,1,...,1,x,I0⟩,⟨0,0,...,0,Tr,1⟩\langle 1, 1, ..., 1, x, I_0 \rangle, \quad \langle 0, 0, ..., 0, T_r, 1 \rangle
⟨1,1,...,1,x,I0⟩,⟨0,0,...,0,Tr,1⟩\langle 1, 1, ..., 1, x, I_0 \rangle, \quad \langle 0, 0, ..., 0, T_r, 1 \rangle

với Tr=0T_r = 0. Theo Bổ đề 2, suy ra rằng tại một thời điểm sau đó ZDZ_D sẽ nhận cấu hình (8) với Tr=1T_r = 1. Tất cả điều này là đối với D2 đã sửa đổi. D2 chưa sửa đổi sẽ chấp nhận ww thay vì đặt Tr←1T_r \leftarrow 1. Điều này hoàn thành chứng minh Định lý 1 trong trường hợp: L(n)L(n) đo được.

with Tr=0T_r = 0. By Lemma 2, it follows that at some later time ZDZ_D will assume configuration (8) with Tr=1T_r = 1. All this was for the modified D2. The unmodified D2 will accept ww rather than set Tr←1T_r \leftarrow 1. This completes the proof of Theorem 1 in the case: L(n)L(n) is measurable.

Nếu L(n)L(n) không đo được, thì thuật toán trên phải được thay đổi, vì ZDZ_D không nhất thiết có thể đánh dấu các khối có độ dài cL(n)cL(n) trong phạm vi bộ nhớ tỷ lệ với [L(n)]2[L(n)]^2. Tuy nhiên, nếu bằng cách nào đó ZDZ_D được cung cấp giá trị của L(n)L(n), thì theo thủ tục trên, ZDZ_D có thể xác định liệu ZNZ_N có chấp nhận đầu vào ww trong phạm vi bộ nhớ L(n)L(n) hay không. Vì vậy ZDZ_D hoạt động như sau. Đầu tiên ZDZ_D giả sử L(n)=1L(n) = 1. Nếu ZNZ_N chấp nhận trong phạm vi bộ nhớ L(n)=1L(n) = 1, thì ZDZ_D sẽ chấp nhận. Nếu ZNZ_N không chấp nhận trong phạm vi bộ nhớ 1, thì tiếp theo ZDZ_D giả sử L(n)=2L(n) = 2. Nếu ZNZ_N chấp nhận trong phạm vi bộ nhớ 2, thì ZDZ_D chấp nhận. Nếu không, thì tiếp theo ZDZ_D giả sử L(n)=3L(n) = 3. ZDZ_D tiếp tục theo cách này bằng cách thử các giá trị ngày càng lớn hơn của L(n)L(n). Nếu ZNZ_N chấp nhận đầu vào ww, thì cuối cùng ZDZ_D sẽ tìm được giá trị đúng của L(n)L(n) và chấp nhận ww trong phạm vi bộ nhớ tỷ lệ với [L(n)]2[L(n)]^2. Nếu ZNZ_N không chấp nhận ww, thì ZDZ_D tính toán vô hạn trên đầu vào ww. Điều này hoàn thành chứng minh của Định lý 1.

If L(n)L(n) is not measurable, then the above algorithm must be altered, since ZDZ_D cannot necessarily mark off blocks of length cL(n)cL(n) within storage proportionate to [L(n)]2[L(n)]^2. However, if ZDZ_D were somehow given the value of L(n)L(n), then by the above procedure, ZDZ_D could determine whether or not ZNZ_N accepts the input ww within storage L(n)L(n). So ZDZ_D operates as follows. ZDZ_D first assumes L(n)=1L(n) = 1. If ZNZ_N accepts within storage L(n)=1L(n) = 1, then ZDZ_D will accept. If ZNZ_N does not accept within storage 1, then ZDZ_D next assumes L(n)=2L(n) = 2. If ZNZ_N accepts within storage 2, then ZDZ_D accepts. If not, then ZDZ_D next assumes L(n)=3L(n) = 3. ZDZ_D proceeds in this manner trying larger and larger values for L(n)L(n). If ZNZ_N accepts the input ww, then ZDZ_D will eventually find the correct value for L(n)L(n) and accept ww within storage proportionate to [L(n)]2[L(n)]^2. If ZNZ_N does not accept ww, then ZDZ_D computes forever on input ww. This completes the proof of Theorem 1.

Các ngôn ngữ phụ thuộc ngữ cảnh chính xác là những tập được chấp nhận bởi các máy Turing không tất định trong phạm vi bộ nhớ L(n)=nL(n) = n (xem, ví dụ, [3]). Vì vậy, đặt L(n)=nL(n) = n trong Định lý 1, ta thu được,

The context-sensitive languages are precisely those sets accepted by nondeterministic Turing machines within storage L(n)=nL(n) = n (see, for example, [3]). So, setting L(n)=nL(n) = n in Theorem 1, we get,

Hệ quả 1. Mọi ngôn ngữ phụ thuộc ngữ cảnh đều được chấp nhận bởi một máy Turing tất định nào đó trong phạm vi bộ nhớ n2n^2.

Corollary 1. Every context-sensitive language is accepted by some deterministic Turing machine within storage n2n^2.

Định lý 1 có thể được tổng quát hóa như sau.

Theorem 1 can be generalized as follows.

Định lý 2. Nếu một tập, AA, được chấp nhận bởi một máy Turing không tất định trong phạm vi bộ nhớ L(n)L(n) và thời gian T(n)T(n), thì AA được chấp nhận bởi một máy Turing tất định nào đó trong phạm vi bộ nhớ L(n)log⁡2T(n)L(n) \log_2 T(n).

Theorem 2. If a set, AA, is accepted by a nondeterministic Turing machine within storage L(n)L(n) and time T(n)T(n), then AA is accepted by some deterministic Turing machine within storage L(n)log⁡2T(n)L(n) \log_2 T(n).

Định nghĩa. Một máy Turing, ZZ, được nói là chấp nhận một tập, AA, trong phạm vi bộ nhớ L(n)L(n) và thời gian T(n)T(n) với điều kiện rằng

Definition. A Turing machine, ZZ, is said to accept a set, AA, within storage L(n)L(n) and time T(n)T(n) provided that

(i) với mỗi ww trong AA, có ít nhất một phép tính của ZZ chấp nhận ww, thực hiện không quá T(n)T(n) bước, và trong đó mỗi đầu băng làm việc quét không quá L(n)L(n) ô, trong đó nn là độ dài của ww, và với điều kiện rằng

(i) for each ww in AA, there is at least one computation of ZZ which accepts ww, takes at most T(n)T(n) steps, and in which each work tape head scans at most L(n)L(n) squares, where nn is the length of ww, and provided that

(ii) ZZ chấp nhận không có chuỗi nào không thuộc AA.

(ii) ZZ accepts no string not in AA.

Chứng minh Định lý 2. Phân tích chứng minh của Định lý 1 cho thấy rằng thuật toán sử dụng một cận về bộ nhớ của máy không xác định để thu được một cận, cụ thể là hàm mũ theo bộ nhớ, về thời gian của máy không xác định. Sau đó nó đánh dấu [log⁡2T(n)][\log_2 T(n)] khối bộ nhớ, trong đó T(n)T(n) là một cận về thời gian. Rõ ràng, nếu cận thời gian dễ tính toán, thuật toán có thể được sửa đổi để sử dụng nó làm cận về thời gian. Khi đó ta sẽ thu được Định lý 2. Nếu hàm thời gian không dễ tính toán, thì ta sử dụng cùng một loại thủ thuật như thủ thuật được dùng cho các hàm không đo được trong chứng minh của Định lý 1.

Proof of Theorem 2. An analysis of the proof of Theorem 1 shows that the algorithm uses a bound on the storage of the nondeterministic machine to obtain a bound, namely exponential in the storage, on the time of the nondeterministic machine. It then marks off [log⁡2T(n)][\log_2 T(n)] blocks of storage, where T(n)T(n) is a bound on the time. Clearly, if the time bound were easy to compute, the algorithm could be modified to use it as the bound on the time. We would then get Theorem 2. If the time function is not easy to compute, then we use the same sort of trick as that used for nonmeasurable functions in the proof of Theorem 1.

Hệ quả 2. Nếu một ngôn ngữ phụ thuộc ngữ cảnh được chấp nhận bởi một máy Turing không xác định trong phạm vi bộ nhớ tuyến tính và thời gian đa thức, thì nó được chấp nhận bởi một máy Turing xác định nào đó trong phạm vi bộ nhớ nlog⁡2nn \log_2 n.

Corollary 2. If a context-sensitive language is accepted by a nondeterministic Turing machine within linear storage and polynomial time, then it is accepted by some deterministic Turing machine within storage nlog⁡2nn \log_2 n.

Định lý sau đây nói rằng đối với mọi hàm bộ nhớ "có tính chất tốt" L(n)L(n), nếu mọi máy Turing bị giới hạn băng L(n)L(n) không xác định có thể được mô phỏng bởi một máy Turing bị giới hạn băng L(n)L(n) xác định, thì đối với mọi hàm bộ nhớ lớn hơn, độ phức tạp băng không xác định và xác định là như nhau.

The following theorem says that for any "well behaved" storage function L(n)L(n), if every nondeterministic L(n)L(n)-tape bounded Turing machine can be simulated by a deterministic L(n)L(n)-tape bounded Turing machine, then for all larger storage functions nondeterministic and deterministic tape complexities are the same.

ĐỊNH LÝ 3. Giả sử rằng L(n)L(n) và H(n)H(n) là đo được, rằng L(n)L(n) là đơn điệu tăng và không bị chặn, và rằng log⁡2n≤L(n)≤H(n)\log_2 n \leq L(n) \leq H(n), với mọi nn. Gọi hàm k(n)k(n) được định nghĩa như sau. Với mỗi số tự nhiên nn, k(n)k(n) là số tự nhiên nhỏ nhất sao cho H(n)≤L[k(n)]H(n) \leq L[k(n)].

THEOREM 3. Suppose that L(n)L(n) and H(n)H(n) are measurable, that L(n)L(n) is monotone increasing and unbounded and that log⁡2n≤L(n)≤H(n)\log_2 n \leq L(n) \leq H(n), for all nn. Let the function k(n)k(n) be defined as follows. For each natural number nn, k(n)k(n) is the least natural number such that H(n)≤L[k(n)]H(n) \leq L[k(n)].

Giả sử thêm rằng đối với bất kỳ tập hợp nào, AA, nếu AA được chấp nhận bởi một máy Turing không xác định trong phạm vi bộ nhớ L(n)L(n), thì AA được chấp nhận bởi một máy Turing xác định trong phạm vi bộ nhớ L(n)L(n). Khi đó suy ra rằng đối với bất kỳ tập hợp nào, BB, nếu BB được chấp nhận bởi một máy Turing không xác định trong phạm vi bộ nhớ H(n)H(n), thì BB được chấp nhận bởi một máy Turing xác định trong phạm vi bộ nhớ L[k(n)]L[k(n)].

Suppose further that for any set, AA, if AA is accepted by a nondeterministic Turing machine within storage L(n)L(n), then AA is accepted by a deterministic Turing machine within storage L(n)L(n). It then follows that for any set, BB, if BB is accepted by a nondeterministic Turing machine within storage H(n)H(n), then BB is accepted by a deterministic Turing machine within storage L[k(n)]L[k(n)].

Định lý này mạnh hơn một chút so với vẻ ngoài của nó. Đối với hầu hết các hàm bộ nhớ thông dụng, LL, tồn tại một hằng số cc sao cho cL[k(n)]≤H(n)≤L[k(n)]cL[k(n)] \leq H(n) \leq L[k(n)], với mọi HH và nn. Vì vậy, trong các trường hợp này, kết luận có thể được củng cố để nói rằng bất kỳ tập hợp nào được chấp nhận trong phạm vi bộ nhớ không xác định H(n)H(n) có thể được chấp nhận trong phạm vi bộ nhớ xác định H(n)H(n). Cụ thể,

The theorem is a bit stronger than it seems. For most common storage functions, LL, there is a constant cc such that cL[k(n)]≤H(n)≤L[k(n)]cL[k(n)] \leq H(n) \leq L[k(n)], for all HH and nn. Thus, in these cases, the conclusion can be strengthened to say that any set accepted within nondeterministic storage H(n)H(n) can be accepted within deterministic storage H(n)H(n). In particular,

HỆ QUẢ 3. Giả sử L(n)L(n) là một đa thức theo log⁡2n,n\log_2 n, n và cnc^n, với một hằng số cc nào đó. Giả sử thêm rằng đối với bất kỳ tập hợp nào, AA, nếu AA được chấp nhận bởi một máy Turing không xác định trong phạm vi bộ nhớ L(n)L(n), thì AA được chấp nhận bởi một máy Turing xác định nào đó trong phạm vi bộ nhớ L(n)L(n).

COROLLARY 3. Suppose L(n)L(n) is a polynomial in log⁡2n,n\log_2 n, n and cnc^n, for some constant cc. Suppose further that for any set, AA, if AA is accepted by a nondeterministic Turing machine within storage L(n)L(n), then AA is accepted by some deterministic Turing machine within storage L(n)L(n).

Khi đó suy ra rằng đối với bất kỳ hàm đo được nào H(n)≥L(n)H(n) \geq L(n) và bất kỳ tập hợp nào, BB, nếu BB được chấp nhận bởi một máy Turing không xác định trong phạm vi bộ nhớ H(n)H(n), thì BB được chấp nhận bởi một máy Turing xác định nào đó trong phạm vi bộ nhớ H(n)H(n).

It then follows that for any measurable function H(n)≥L(n)H(n) \geq L(n) and any set, BB, if BB is accepted by a nondeterministic Turing machine within storage H(n)H(n), then BB is accepted by some deterministic Turing machine within storage H(n)H(n).

Trong số các điều khác, hệ quả nói rằng nếu mọi ngôn ngữ phụ thuộc ngữ cảnh đều được chấp nhận bởi một ôtômát giới hạn tuyến tính xác định (tức là máy Turing xác định với cận bộ nhớ nn), thì độ phức tạp băng không xác định và xác định là như nhau đối với mọi cận băng đo được H(n)≥nH(n) \geq n.

Among other things, the corollary says that if every context-sensitive language is accepted by a deterministic linear bounded automaton (i.e., deterministic Turing machine with storage bound nn), then nondeterministic and deterministic tape complexities are the same for all measurable tape bounds H(n)≥nH(n) \geq n.

Chứng minh Hệ quả 3. Có thể dễ dàng kiểm tra rằng với mọi đa thức L(n)L(n) như vậy, tồn tại một hằng số cc sao cho L(n)/L(n+1)≥cL(n)/L(n+1) \geq c với mọi nn. Do đó cL[k(n)]≤L[k(n)−1]cL[k(n)] \leq L[k(n)-1]. k(n)k(n) là hàm được định nghĩa trong phát biểu của định lý. Theo định nghĩa của k(n)k(n), L[k(n)−1]≤H(n)L[k(n)-1] \leq H(n). Do đó cL[k(n)]≤H(n)cL[k(n)] \leq H(n).

Proof of Corollary 3. It is easy to check that for any such polynomial L(n)L(n), there is a constant cc such that L(n)/L(n+1)≥cL(n)/L(n+1) \geq c for all nn. So cL[k(n)]≤L[k(n)−1]cL[k(n)] \leq L[k(n)-1]. k(n)k(n) is the function defined in the statement of the theorem. By definition of k(n)k(n), L[k(n)−1]≤H(n)L[k(n)-1] \leq H(n). So cL[k(n)]≤H(n)cL[k(n)] \leq H(n).

Giả sử giả thuyết của hệ quả đúng và giả sử BB được chấp nhận bởi một máy Turing không tất định trong phạm vi bộ nhớ H(n)H(n). Theo Định lý 3, BB được chấp nhận bởi một máy Turing tất định trong phạm vi bộ nhớ L[k(n)]L[k(n)]. Vì vậy, bằng các kỹ thuật rút gọn băng tiêu chuẩn [3], suy ra rằng BB được chấp nhận bởi một máy Turing tất định trong phạm vi bộ nhớ cL[k(n)]cL[k(n)]. Cuối cùng, vì cL[k(n)]≤H(n)cL[k(n)] \leq H(n), điều này có nghĩa là BB được chấp nhận bởi một máy Turing tất định trong phạm vi bộ nhớ H(n)H(n).

Assume the hypothesis of the corollary and suppose BB is accepted by a nondeterministic Turing machine within storage H(n)H(n). By the Theorem 3, BB is accepted by a deterministic Turing machine within storage L[k(n)]L[k(n)]. So, by standard tape reduction techniques [3], it follows that BB is accepted by a deterministic Turing machine within storage cL[k(n)]cL[k(n)]. Finally, since cL[k(n)]≤H(n)cL[k(n)] \leq H(n), this means that BB is accepted by a deterministic Turing machine within storage H(n)H(n).

Chứng minh Định lý 3. Giả sử giả thuyết của Định lý 3 đúng và giả sử BB là một tập được chấp nhận bởi một máy Turing không tất định, ZNHZ_N^H, trong phạm vi bộ nhớ H(n)H(n).

Proof of Theorem 3. Assume the hypothesis of the Theorem 3 and suppose BB is a set accepted by a nondeterministic Turing machine, ZNHZ_N^H, within storage H(n)H(n).

Chúng tôi sẽ xây dựng một máy tất định, ZDHZ_D^H, chấp nhận BB trong phạm vi bộ nhớ L[k(n)]L[k(n)].

We will construct a deterministic machine, ZDHZ_D^H, which accepts BB within storage L[k(n)]L[k(n)].

Cho β\beta là một ký hiệu mới. Cho A={wβh∣w trong B vaˋ ∣w∣+h≥k(∣w∣)}A = \{ w\beta^h \mid w \text{ trong } B \text{ và } |w| + h \geq k(|w|) \}. Một máy Turing không tất định, ZNLZ_N^L, chấp nhận AA trong phạm vi bộ nhớ L(n)L(n) có thể được xây dựng như sau. Với đầu vào wβhw\beta^h, ZNLZ_N^L trước hết đánh dấu L(n)L(n) ô của bộ nhớ, trong đó n=∣wβh∣n = |w\beta^h|. Sau đó nó kiểm tra xem L(n)≥H(∣w∣)L(n) \geq H(|w|) hay không. Nếu điều này không đúng, thì n=∣w∣+h<k(∣w∣)n = |w| + h < k(|w|) và tính toán dừng lại. Nếu L(n)≥H(∣w∣)L(n) \geq H(|w|), thì ZNLZ_N^L mô phỏng ZNHZ_N^H để xem ww có thuộc BB hay không. Nếu ZNHZ_N^H chấp nhận, thì nó cũng chấp nhận. Vì L(n)≥H(∣w∣)L(n) \geq H(|w|), máy này sẽ chấp nhận AA trong phạm vi bộ nhớ L(n)L(n). Vì vậy, theo giả thuyết, tồn tại một máy tất định, ZDLZ_D^L, chấp nhận AA trong phạm vi bộ nhớ L(n)L(n). Hơn nữa, vì LL là đo được, chúng ta có thể giả sử rằng với mọi đầu vào có độ dài nn, ZDLZ_D^L dừng sau một tính toán trong đó nhiều nhất L(n)L(n) ô của băng bộ nhớ được quét. (Các định nghĩa của chúng tôi chỉ yêu cầu điều này khi máy chấp nhận đầu vào.)

Let β\beta be a new symbol. Let A={wβh∣w in B and ∣w∣+h≥k(∣w∣)}A = \{ w\beta^h \mid w \text{ in } B \text{ and } |w| + h \geq k(|w|) \}. A nondeterministic Turing machine, ZNLZ_N^L, which accepts AA within storage L(n)L(n) can be constructed as follows. Given input wβhw\beta^h, ZNLZ_N^L first marks off L(n)L(n) squares of storage, where n=∣wβh∣n = |w\beta^h|. It then checks to see if L(n)≥H(∣w∣)L(n) \geq H(|w|). If this is not the case, then n=∣w∣+h<k(∣w∣)n = |w| + h < k(|w|) and the computation halts. If L(n)≥H(∣w∣)L(n) \geq H(|w|), then ZNLZ_N^L mimics ZNHZ_N^H to see if ww is in BB. If ZNHZ_N^H accepts, then it does. Since L(n)≥H(∣w∣)L(n) \geq H(|w|), this machine will accept AA within storage L(n)L(n). So, by hypothesis, there is a deterministic machine, ZDLZ_D^L, which accepts AA within storage L(n)L(n). Furthermore, since LL is measurable, we may assume that on every input of length nn, ZDLZ_D^L halts after a computation in which at most L(n)L(n) squares of storage tape are scanned. (Our definitions merely require this when the machine accepts the input.)

Máy tất định, ZDHZ_D^H, chấp nhận BB trong phạm vi bộ nhớ L[k(n)]L[k(n)] hoạt động như sau. Với một đầu vào ww, ZDHZ_D^H mô phỏng ZDLZ_D^L hoạt động trên wβhw\beta^h với các giá trị khác nhau của hh. Trước tiên nó thử h=0h = 0. Nếu ZDLZ_D^L chấp nhận ww, thì ZDHZ_D^H cũng chấp nhận. Nếu không, nó thử h=1h = 1. Nếu ZDLZ_D^L chấp nhận wβw\beta, thì ZDHZ_D^H cũng chấp nhận. Nếu không, nó thử h=2h = 2. Nếu ZDLZ_D^L chấp nhận wβ2w\beta^2, thì ZDHZ_D^H cũng chấp nhận. Nếu không, nó thử h=3h = 3, và cứ tiếp tục như vậy. Nếu ww thuộc BB, thì cuối cùng ZDHZ_D^H sẽ tìm thấy giá trị hh nhỏ nhất sao cho ∣w∣+h≥k(∣w∣)|w| + h \geq k(|w|) và sẽ chấp nhận ww trong phạm vi bộ nhớ L(∣wβh∣)=L[k(∣w∣)]L(|w\beta^h|) = L[k(|w|)]. Điều này hoàn thành chứng minh của Định lý 3.

The deterministic machine, ZDHZ_D^H, which accepts BB within storage L[k(n)]L[k(n)] operates as follows. Given an input ww, ZDHZ_D^H mimics ZDLZ_D^L operating on wβhw\beta^h for various values of hh. It first tries h=0h = 0. If ZDLZ_D^L accepts ww, then ZDHZ_D^H does. If not, it then tries h=1h = 1. If ZDLZ_D^L accepts wβw\beta, then ZDHZ_D^H does. If not, it then tries h=2h = 2. If ZDLZ_D^L accepts wβ2w\beta^2, the ZDHZ_D^H does. If not, it then tries h=3h = 3, and so forth. If ww is in BB, then ZDHZ_D^H will eventually find the least hh such that ∣w∣+h≥k(∣w∣)|w| + h \geq k(|w|) and will accept ww within storage L(∣wβh∣)=L[k(∣w∣)]L(|w\beta^h|) = L[k(|w|)]. This completes the proof of Theorem 3.

Một cách tự nhiên, người ta đặt câu hỏi liệu có hàm bộ nhớ nào mà các lớp độ phức tạp tất định và không tất định của nó bằng nhau hay không. Câu trả lời được đưa ra bởi Manuel Blum và là "có". Blum đã chỉ ra rằng có các hàm bộ nhớ L(n)L(n) lớn tùy ý sao cho một tập hợp được chấp nhận trong bộ nhớ tất định L(n)L(n) khi và chỉ khi nó được chấp nhận trong bộ nhớ không tất định L(n)L(n). Tuy nhiên, các hàm L(n)L(n) này không "có tính chất tốt" và Định lý 3 không áp dụng cho chúng. Chúng không đo được. Một phác thảo của chứng minh cho kết quả của Blum xuất hiện trong [8].

It is natural to ask if there is any storage function whose deterministic and nondeterministic complexity classes are equal. The answer was given by Manuel Blum and is "yes". Blum showed that there are arbitrarily large storage functions L(n)L(n) such that a set is accepted within deterministic storage L(n)L(n) if, and only if, it is accepted within nondeterministic storage L(n)L(n). These functions L(n)L(n) are not, however, "well-behaved" and Theorem 3 does not apply to them. They are not measurable. A sketch of the proof of Blum's result appears in [8].

Người ta cũng có thể hỏi liệu có một hàm bộ nhớ (đủ lớn để có ý nghĩa) mà các lớp độ phức tạp tất định và không tất định của nó khác nhau hay không. Phần tiếp theo dành cho câu hỏi này. Tuy nhiên, chỉ có một câu trả lời chưa hoàn chỉnh được đưa ra, và câu hỏi vẫn còn bỏ ngỏ.

One may also ask if there is a storage function (large enough to be interesting) whose deterministic and nondeterministic complexity classes are different. The next section is devoted to this question. Only an incomplete answer is given, however, and the question is open.

Mê cung và Máy Turing

Mazes and Turing Machines

Một cách không chính thức, một mê cung là một tập hợp các phòng được nối với nhau bởi các hành lang một chiều. Một số phòng được chỉ định là phòng đích và một phòng được chỉ định là phòng bắt đầu. Do đó, một mê cung là một đồ thị có hướng với một số nút hoặc phòng được phân biệt. Mê cung có thể luồn qua được nếu có một đường đi từ phòng bắt đầu đến một phòng đích nào đó.

Informally, a maze is a set of rooms connected by one-way corridors. Certain rooms are designated goal rooms and one room is designated the start room. Thus, a maze is a directed graph with certain nodes or rooms distinguished. The maze is threadable if there is a path from the start room to some goal room.

Một máy Turing không tất định, với đầu vào ww, tạo ra một mê cung theo một cách tự nhiên. Các phòng của mê cung là các mô tả tức thời của máy và các hành lang được cho bởi hàm chuyển của máy. Nghĩa là có một hành lang từ phòng I1I_1 đến phòng I2I_2 nếu, với đầu vào ww, máy có thể trong một bước thay đổi cấu hình của nó từ I1I_1 sang I2I_2. Mô tả tức thời ban đầu của máy được chỉ định là phòng bắt đầu. Những mô tả tức thời bao gồm một trạng thái chấp nhận được chỉ định là các phòng đích. Máy sẽ chấp nhận đầu vào ww khi và chỉ khi mê cung tương ứng có thể luồn qua được.

A nondeterministic Turing machine, with input ww, gives rise in a natural way to a maze. The rooms of the maze are the instantaneous descriptions of the machine and the corridors are given by the transition function of the machine. That is there is a corridor from room I1I_1 to room I2I_2 if, with input ww, the machine can in one step change its configuration from I1I_1 to I2I_2. The initial instantaneous description of the machine is designated the start room. Those instantaneous descriptions which include an accepting state are designated goal rooms. The machine will accept the input ww if, and only if, the corresponding maze is threadable.

Thuật toán mô phỏng một máy Turing không tất định, được đưa ra trong phần trước, thực sự là một phương pháp hiệu quả để xác định liệu mê cung tương ứng có thể luồn qua được hay không. Trong phần này, chúng tôi chỉ ra rằng nếu có thể tìm được một phương pháp đủ hiệu quả để "luồn qua" các mê cung, thì các máy tất định có thể mô phỏng các máy không tất định với cùng một bộ nhớ. Chính xác hơn, tập hợp các mê cung có thể luồn qua được, được mã hóa thích hợp, có thể được nhận biết bởi một máy Turing không tất định trong phạm vi bộ nhớ log⁡2n\log_2 n. Tập hợp này có thể được nhận biết bởi một máy Turing tất định nào đó trong phạm vi bộ nhớ log⁡2n\log_2 n khi và chỉ khi các máy Turing bị chặn bởi băng L(n)L(n) tất định có thể mô phỏng các máy Turing bị chặn bởi băng L(n)L(n) không tất định, với mọi L(n)≥log⁡2nL(n) \geq \log_2 n.

The algorithm for simulating a nondeterministic Turing machine, given in the last section, is really an efficient method for determining whether the corresponding maze is threadable. In this section we show that if an efficient enough method for "threading" mazes could be found, then deterministic machines could simulate nondeterministic machines in the same storage. More precisely, the set of threadable mazes, suitably coded, can be recognized by a nondeterministic Turing machine within storage log⁡2n\log_2 n. This set can be recognized by some deterministic Turing machine within storage log⁡2n\log_2 n if, and only if, deterministic L(n)L(n)-tape bounded Turing machines can simulate nondeterministic L(n)L(n)-tape bounded Turing machines, for all L(n)≥log⁡2nL(n) \geq \log_2 n.

Định nghĩa. Một mê cung trên Σ\Sigma (một bảng chữ cái hữu hạn) là một bộ bốn, M=(X,R,s,G)\mathcal{M} = (X, R, s, G), trong đó XX là một tập hữu hạn các chuỗi trên Σ\Sigma (XX là tập các phòng), RR là một quan hệ nhị phân trên XX (cho các hành lang), ss là một phần tử của XX (ss là phòng bắt đầu), và GG là một tập con của XX (GG là tập các phòng đích).

Definition. A maze over Σ\Sigma (a finite alphabet) is a quadruple, M=(X,R,s,G)\mathcal{M} = (X, R, s, G), where XX is a finite set of strings over Σ\Sigma (XX is the set of rooms), RR is a binary relation on XX (giving the corridors), ss is an element of XX (ss is the start room), and GG is a subset of XX (GG is the set of goal rooms).

Định nghĩa. Mê cung M=(X,R,s,G)\mathcal{M} = (X, R, s, G) là có thể luồn được nếu có một chuỗi r1,r2,...,rer_1, r_2, ..., r_e các phòng sao cho r1=sr_1 = s (phòng bắt đầu), rer_e là một phần tử của GG (các phòng đích), và R(ri,ri+1)R(r_i, r_{i+1}) đúng với i=1,2,...,e−1i = 1, 2, ..., e - 1.

Definition. The maze M=(X,R,s,G)\mathcal{M} = (X, R, s, G) is threadable if there is a sequence r1,r2,...,rer_1, r_2, ..., r_e of rooms such that r1=sr_1 = s (the start room), rer_e is an element of GG (the goal rooms), and R(ri,ri+1)R(r_i, r_{i+1}) holds for i=1,2,...,e−1i = 1, 2, ..., e - 1.

Định nghĩa. Gọi ], [,* là ba ký hiệu mới. Một mã hóa của mê cung M=(X,R,s,G)\mathcal{M} = (X, R, s, G) là một chuỗi có dạng

Definition. Let ], [,* be three new symbols. A coding of the maze M=(X,R,s,G)\mathcal{M} = (X, R, s, G) is a string of the form

s[x1∗y11∗y21∗⋯yn(1)1][x2∗y12∗y22∗⋯∗yn(2)2]s[x_1 * y_1^1 * y_2^1 * \cdots y_{n(1)}^1][x_2 * y_1^2 * y_2^2 * \cdots * y_{n(2)}^2]
s[x1∗y11∗y21∗⋯yn(1)1][x2∗y12∗y22∗⋯∗yn(2)2]s[x_1 * y_1^1 * y_2^1 * \cdots y_{n(1)}^1][x_2 * y_1^2 * y_2^2 * \cdots * y_{n(2)}^2]
⋯[xl∗y1l∗⋯yn(l)l]u1∗u2∗⋯ug\cdots [x_l * y_1^l * \cdots y_{n(l)}^l] u_1 * u_2 * \cdots u_g
⋯[xl∗y1l∗⋯yn(l)l]u1∗u2∗⋯ug\cdots [x_l * y_1^l * \cdots y_{n(l)}^l] u_1 * u_2 * \cdots u_g

trong đó ss là phòng bắt đầu của M\mathcal{M}; x1,x2,...,xlx_1, x_2, ..., x_l là một phép liệt kê không lặp lại các phòng trong XX; với 1≤i≤l1 \leq i \leq l, y1i,y2i,...,yn(i)iy_1^i, y_2^i, ..., y_{n(i)}^i là một phép liệt kê không lặp lại của tất cả các yy trong XX sao cho R(xi,y)R(x_i, y) đúng; và u1,u2,...,ugu_1, u_2, ..., u_g là một phép liệt kê không lặp lại các phòng trong GG.

where ss is the start room of M\mathcal{M}; x1,x2,...,xlx_1, x_2, ..., x_l is an enumeration without repetitions of the rooms in XX; for 1≤i≤l1 \leq i \leq l, y1i,y2i,...,yn(i)iy_1^i, y_2^i, ..., y_{n(i)}^i is an enumeration without repetitions of all yy in XX such that R(xi,y)R(x_i, y) holds; and u1,u2,...,ugu_1, u_2, ..., u_g is an enumeration without repetitions of the rooms in GG.

Ký hiệu. MΣM_\Sigma biểu diễn tập hợp tất cả các mã hóa của các mê cung có thể luồn được trên Σ\Sigma.

Notation. MΣM_\Sigma denotes the set of all codings of threadable mazes over Σ\Sigma.

Định lý 4. Với mọi bảng chữ cái hữu hạn Σ\Sigma, tồn tại một máy Turing không tất định chấp nhận MΣM_\Sigma trong giới hạn bộ nhớ log⁡2n\log_2 n.

Theorem 4. For any finite alphabet Σ\Sigma, there is a nondeterministic Turing machine which accepts MΣM_\Sigma within storage log⁡2n\log_2 n.

Chứng minh. Nếu mê cung có độ dài nn, thì nó có nhiều nhất nn phòng. Vì vậy mỗi phòng có thể được mã hóa bởi một số có thể được lưu trữ trong log⁡2n\log_2 n ô băng. Cụ thể hơn, nếu mê cung được cho bởi (1), thì phòng xix_i được mã hóa bởi số ii trong ký pháp nhị phân. Thuật toán rất đơn giản. Máy ghi số mã của phòng ban đầu lên băng làm việc, tìm các phòng kế tiếp có thể có, đoán một trong số chúng, xóa băng làm việc, và ghi một mã hóa của phỏng đoán của nó. Sau đó nó tìm các phòng kế tiếp có thể có, đoán một trong số chúng, và cứ tiếp tục như vậy. Sau mỗi lần đoán nó kiểm tra xem đã đến một phòng đích hay chưa. Nếu đã đến, nó chấp nhận. Rõ ràng băng làm việc sẽ bị giới hạn bởi clog⁡2nc \log_2 n, với một hằng số cc nào đó.

Proof. If the maze has length nn, then it has at most nn rooms. So each room can be coded by a number which can be stored in log⁡2n\log_2 n squares of tape. More specifically, if the maze is given by (1), then the room xix_i is coded by the number ii in dyadic notation. The algorithm is very simple. The machine writes down the code number of the initial room on its work tape, finds the possible next rooms, guesses at one of them, erases its work tape, and writes down a coding of its guess. It then finds the possible next rooms, guesses at one of them and so forth. After each guess it checks to see if it has reached a goal room. If it has, it accepts. Clearly the work tape will be bounded by clog⁡2nc \log_2 n, for some constant cc.

Một lập luận dãy giao cắt trực tiếp, giống như lập luận của Cobham [2], cho thấy rằng cận log⁡2n\log_2 n trong Định lý 4 là tốt nhất có thể, sai khác không quá một hệ số hằng số.

A straight forward crossing sequence argument, like that of Cobham [2] shows that the bound, log⁡2n\log_2 n in Theorem 4, is the best possible, up to a constant factor.

Áp dụng các Định lý 1 và 4 cho MΣM_\Sigma thu được

Applying Theorems 1 and 4 to MΣM_\Sigma yields

Hệ quả 4. Với mọi bảng chữ cái hữu hạn Σ\Sigma, tồn tại một máy Turing tất định chấp nhận MΣM_\Sigma trong giới hạn bộ nhớ (log⁡2n)2(\log_2 n)^2.

Corollary 4. For any finite alphabet Σ\Sigma, there is a deterministic Turing machine which accepts MΣM_\Sigma within storage (log⁡2n)2(\log_2 n)^2.

Bổ đề 4. Với mọi bảng chữ cái hữu hạn Σ\Sigma và Δ\Delta có ít nhất hai phần tử, MΣM_\Sigma được chấp nhận bởi một máy Turing tất định nào đó trong giới hạn bộ nhớ log⁡2n\log_2 n khi và chỉ khi MΔM_\Delta được như vậy.

Lemma 4. For any finite alphabets Σ\Sigma and Δ\Delta with at least two elements, MΣM_\Sigma is accepted by some deterministic Turing machine within storage log⁡2n\log_2 n if, and only if, MΔM_\Delta is.

Chứng minh. Với mọi mã hóa, ww, của một mê cung trên Σ\Sigma, tồn tại một mã hóa, δ(w)\delta(w), của một mê cung trên Δ\Delta đẳng cấu với ww. Vì vậy ww thuộc MΣM_\Sigma khi và chỉ khi δ(w)\delta(w) thuộc MΔM_\Delta. Cụ thể hơn, nếu ww là

Proof. For every coding, ww, of a maze over Σ\Sigma, there is a coding, δ(w)\delta(w), of a maze over Δ\Delta which is isomorphic to ww. So ww is in MΣM_\Sigma if, and only if, δ(w)\delta(w) is in MΔM_\Delta. More specifically, if ww is

s[x1∗y11∗y21∗⋯yn(1)1][x2∗y12∗y22∗⋯∗yn(2)2]s[x_1 * y_1^1 * y_2^1 * \cdots y_{n(1)}^1][x_2 * y_1^2 * y_2^2 * \cdots * y_{n(2)}^2]
s[x1∗y11∗y21∗⋯yn(1)1][x2∗y12∗y22∗⋯∗yn(2)2]s[x_1 * y_1^1 * y_2^1 * \cdots y_{n(1)}^1][x_2 * y_1^2 * y_2^2 * \cdots * y_{n(2)}^2]
⋯[xl∗y1l∗⋯yn(l)l]u1∗u2∗⋯ug\cdots [x_l * y_1^l * \cdots y_{n(l)}^l] u_1 * u_2 * \cdots u_g
⋯[xl∗y1l∗⋯yn(l)l]u1∗u2∗⋯ug\cdots [x_l * y_1^l * \cdots y_{n(l)}^l] u_1 * u_2 * \cdots u_g

thì δ(w)\delta(w) có thể được lấy là

then δ(w)\delta(w) may be taken to be

δ(s)[δ(x1)∗δ(y11)∗δ(y21)∗⋯δ(yn(1)1)][δ(x2)∗δ(y12)∗δ(y22)∗⋯∗δ(yn(2)2)]\delta(s)[\delta(x_1) * \delta(y_1^1) * \delta(y_2^1) * \cdots \delta(y_{n(1)}^1)][\delta(x_2) * \delta(y_1^2) * \delta(y_2^2) * \cdots * \delta(y_{n(2)}^2)]
δ(s)[δ(x1)∗δ(y11)∗δ(y21)∗⋯δ(yn(1)1)][δ(x2)∗δ(y12)∗δ(y22)∗⋯∗δ(yn(2)2)]\delta(s)[\delta(x_1) * \delta(y_1^1) * \delta(y_2^1) * \cdots \delta(y_{n(1)}^1)][\delta(x_2) * \delta(y_1^2) * \delta(y_2^2) * \cdots * \delta(y_{n(2)}^2)]
⋯[δ(xl)∗δ(y1l)∗⋯δ(yn(l)l)]δ(u1)∗δ(u2)∗⋯δ(ug)\cdots [\delta(x_l) * \delta(y_1^l) * \cdots \delta(y_{n(l)}^l)] \delta(u_1) * \delta(u_2) * \cdots \delta(u_g)
⋯[δ(xl)∗δ(y1l)∗⋯δ(yn(l)l)]δ(u1)∗δ(u2)∗⋯δ(ug)\cdots [\delta(x_l) * \delta(y_1^l) * \cdots \delta(y_{n(l)}^l)] \delta(u_1) * \delta(u_2) * \cdots \delta(u_g)

trong đó nếu kk là số ký hiệu trong Δ\Delta, thì δ(xi)\delta(x_i) là biểu diễn kk-phân của số ii và do đó là một phần tử của Δ∗\Delta^*. Vì các uu và yy và ss đều bằng một số xix_i nào đó, điều này cũng xác định δ\delta trên chúng.

where if kk is the number of symbols in Δ\Delta, then δ(xi)\delta(x_i) is the kk-adic representation of the number ii and so is an element of Δ∗\Delta^*. Since the uu's and yy's and ss are each equal to some xix_i, this defines δ\delta on them as well.

Cho một máy tất định, ZΔZ_\Delta, chấp nhận MΔM_\Delta trong phạm vi bộ nhớ log⁡2n\log_2 n, ta xây dựng một máy tất định, ZΣZ_\Sigma, chấp nhận MΣM_\Sigma trong phạm vi bộ nhớ log⁡2n\log_2 n, như sau. Với một đầu vào ww, ZΣZ_\Sigma hoạt động bằng cách mô phỏng ZΔZ_\Delta hoạt động trên δ(w)\delta(w). Cụ thể hơn, giả sử ZΣZ_\Sigma có đầu vào ww như trong (1). Khi ZΣZ_\Sigma đang mô phỏng ZΔZ_\Delta với đầu đọc đầu vào của ZΔZ_\Delta đang ở một vị trí nào đó trong δ(z)\delta(z), trong đó zz là một trong s,x,y,s, x, y, hoặc uu nào đó trong (1), thì ZΣZ_\Sigma sẽ có đầu đọc đầu vào của nó đọc ký hiệu đầu tiên của zz và sẽ có δ(z)\delta(z) được ghi trên một băng lưu trữ phụ. ZΣZ_{\Sigma} sử dụng băng lưu trữ phụ này chứa δ(z)\delta(z) để mô phỏng băng đầu vào của ZΔZ_{\Delta}. Khi, trong quá trình mô phỏng, đầu đọc đầu vào của ZΔZ_{\Delta} sẽ rời khỏi đầu bên trái (tương ứng, bên phải) của δ(z)\delta(z), thì ZΣZ_{\Sigma} di chuyển đầu đọc đầu vào của nó tới s,x,y,s, x, y, hoặc uu ở bên trái (tương ứng, bên phải) của zz, tính δ\delta của s,x,y,s, x, y, hoặc uu này và thay thế δ(z)\delta(z) bằng δ\delta của s,x,y,s, x, y, hoặc uu này. δ\delta của s,x,y,s, x, y, hoặc uu này trở thành δ(z)\delta(z) mới và quá trình mô phỏng tiếp tục. Để tính δ(z)\delta(z) mới, ZΣZ_{\Sigma} chỉ cần so sánh zz mới với từng xix_i cho đến khi tìm thấy xix_i bằng với zz. Nó có thể thực hiện điều này từng ký hiệu một và do đó giữ lượng băng lưu trữ được sử dụng nhỏ hơn clog⁡2nc \log_2 n, với một hằng số cc nào đó.

Given a deterministic machine, ZΔZ_\Delta, which accepts MΔM_\Delta within storage log⁡2n\log_2 n, we construct a deterministic machine, ZΣZ_\Sigma, which accepts MΣM_\Sigma within storage log⁡2n\log_2 n, as follows. Given an input ww, ZΣZ_\Sigma operates by mimicking ZΔZ_\Delta operating in δ(w)\delta(w). More specifically, suppose ZΣZ_\Sigma has input ww as in (1). When ZΣZ_\Sigma is simulating ZΔZ_\Delta with the input head of ZΔZ_\Delta someplace in δ(z)\delta(z), where zz is some s,x,y,s, x, y, or uu in (1), then ZΣZ_\Sigma will have its input head reading the first symbol of zz and will have δ(z)\delta(z) written on an auxiliary storage tape. ZΣZ_{\Sigma} uses this auxiliary storage tape containing δ(z)\delta(z) to mimic the input tape of ZΔZ_{\Delta}. When, in the mimicking process, the input head of ZΔZ_{\Delta} would leave the left (respectively, right) end of δ(z)\delta(z), then ZΣZ_{\Sigma} moves its input head to the s,x,y,s, x, y, or uu to the left (respectively, right) of zz, calculates δ\delta of this s,x,y,s, x, y, or uu and replaces δ(z)\delta(z) by δ\delta of this s,x,y,s, x, y, or uu. δ\delta of this s,x,y,s, x, y, or uu becomes the new δ(z)\delta(z) and the simulation continues. To calculate the new δ(z)\delta(z), ZΣZ_{\Sigma} need only compare the new zz to each xix_i until it finds the xix_i which equals zz. This it can do symbol by symbol and, thus, keep the amount of storage tape used less than clog⁡2nc \log_2 n, for some constant cc.

Vì Σ\Sigma và Δ\Delta là đối xứng trong phát biểu của bổ đề, điều này đủ để chứng minh bổ đề.

Since Σ\Sigma and Δ\Delta are symmetric in the statement of the lemma, this is sufficient to prove the lemma.

Định lý 5. Với mọi bảng chữ cái hữu hạn, Σ\Sigma, có ít nhất hai phần tử, các phát biểu sau là tương đương:

Theorem 5. For any finite alphabet, Σ\Sigma, with at least two elements, the following statements are equivalent:

(1) MΣM_{\Sigma} được chấp nhận bởi một máy Turing tất định nào đó trong phạm vi bộ nhớ log⁡2n\log_2 n.

(1) MΣM_{\Sigma} is accepted by some deterministic Turing machine within storage log⁡2n\log_2 n.

(2) Với mọi bảng chữ cái hữu hạn Γ\Gamma, mọi tập, AA, các chuỗi trên Γ\Gamma và mọi hàm L(n)≥log⁡2nL(n) \geq \log_2 n, nếu AA được chấp nhận bởi một máy Turing không tất định trong bộ nhớ L(n)L(n), thì AA được chấp nhận bởi một máy Turing tất định nào đó trong bộ nhớ L(n)L(n).

(2) For any finite alphabet Γ\Gamma, any set, AA, of strings over Γ\Gamma and any function L(n)≥log⁡2nL(n) \geq \log_2 n, if AA is accepted by a nondeterministic Turing machine within storage L(n)L(n), then AA is accepted by some deterministic Turing machine within storage L(n)L(n).

Chứng minh. Phát biểu (1) suy ra từ phát biểu (2) theo Định lý 4.

Proof. Statement (1) follows from statement (2) by Theorem 4.

Giả sử (1) đúng và AA là một tập được chấp nhận bởi một máy Turing không tất định nào đó, ZNZ_N, trong bộ nhớ L(n)≥log⁡2nL(n) \geq \log_2 n. Chúng tôi sẽ xây dựng một máy tất định, ZDZ_D, chấp nhận AA với cùng cận bộ nhớ L(n)L(n). Giả sử L(n)L(n) đo được. Sau này chúng tôi sẽ chỉ ra cách loại bỏ hạn chế này. Với mỗi chuỗi ww trên bảng chữ cái đầu vào của ZNZ_N, gắn với mê cung M(w)=(X,R,s,G)\mathcal{M}(w) = (X, R, s, G), trong đó XX là tập tất cả các ID's của ZNZ_N mà phần không trắng của mỗi băng công tác có độ dài nhiều nhất là L(∣w∣)L(|w|), ss là ID khởi đầu của ZNZ_N, GG là tập các ID's trong XX có chứa một trạng thái chấp nhận, và RR được định nghĩa bởi: R(x,y)R(x, y) đúng khi và chỉ khi x→wyx \xrightarrow{w} y. Rõ ràng, ZNZ_N chấp nhận ww khi và chỉ khi M(w)\mathcal{M}(w) có thể xâu luồn. Gọi m(w)m(w) là một mã hóa của mê cung M(w)\mathcal{M}(w). Máy tất định ZDZ_D chấp nhận AA hoạt động như sau. Với một đầu vào ww, ZDZ_D xây dựng m(w)m(w) trên một trong các băng lưu trữ của nó, rồi mô phỏng máy trong phát biểu (1) để xác định liệu m(w)m(w) có thuộc MΣM_{\Sigma} hay không. Nếu có, thì ZDZ_D chấp nhận ww. Theo Bổ đề 4, ta có thể giả sử Σ\Sigma đủ lớn để tất cả ID's của ZNZ_N đều là các chuỗi trên Σ\Sigma. Vì vậy m(w)m(w) thuộc MΣM_{\Sigma} khi và chỉ khi ZNZ_N chấp nhận ww. Do đó, ZDZ_D chấp nhận chính xác tập AA. m(w)m(w) có độ dài nhiều nhất là hL(n)h^{L(n)}, trong đó n=∣w∣n = |w| và hh là một hằng số chỉ phụ thuộc vào ZNZ_N. Ngoại trừ băng được dùng để lưu trữ m(w)m(w), ZDZ_D hoạt động với bộ nhớ log⁡2hL(n)\log_2 h^{L(n)} tỉ lệ với L(n)L(n).

Assume (1) holds and that AA is a set accepted by some nondeterministic Turing machine, ZNZ_N, within storage L(n)≥log⁡2nL(n) \geq \log_2 n. We will construct a deterministic machine, ZDZ_D, which accepts AA within the same storage bound L(n)L(n). Assume L(n)L(n) is measurable. We will later indicate how this restriction may be eliminated. With each string ww over the input alphabet of ZNZ_N associate the maze M(w)=(X,R,s,G)\mathcal{M}(w) = (X, R, s, G), where XX is the set of all ID's of ZNZ_N in which the nonblank portion of each work tape has length at most L(∣w∣)L(|w|), ss is the start ID of ZNZ_N, GG is the set of ID's in XX which include an accepting state, and RR is defined by: R(x,y)R(x, y) holds if, and only if, x→wyx \xrightarrow{w} y. Clearly, ZNZ_N accepts ww if, and only if, M(w)\mathcal{M}(w) is threadable. Let m(w)m(w) denote a coding of the maze M(w)\mathcal{M}(w). The deterministic machine ZDZ_D which accepts AA operates as follows. Given an input ww, ZDZ_D constructs m(w)m(w) on one of its storage tapes, and then simulates the machine of statement (1) to determine whether m(w)m(w) is in MΣM_{\Sigma}. If it is, then ZDZ_D accepts ww. By Lemma 4, we may assume Σ\Sigma is large enough so that all ID's of ZNZ_N are strings over Σ\Sigma. So m(w)m(w) is in MΣM_{\Sigma} if, and only if, ZNZ_N accepts ww. Thus, ZDZ_D accepts precisely the set AA. m(w)m(w) is of the length at most hL(n)h^{L(n)}, where n=∣w∣n = |w| and hh is a constant depending only on ZNZ_N. Except for the tape used to store m(w)m(w), ZDZ_D operates in storage log⁡2hL(n)\log_2 h^{L(n)} which is proportionate to L(n)L(n).

Máy ZDZ_D không thể viết ra toàn bộ chuỗi, m(w)m(w), cùng một lúc mà vẫn hoạt động trong phạm vi bộ nhớ được cấp phát. Tuy nhiên, tất cả những gì cần thiết để mô phỏng máy trong phát biểu (1) là ZDZ_D có thể tính toán từng ký hiệu một của chuỗi m(w)m(w) và theo dõi vị trí của các ký hiệu trong m(w)m(w). Nó có thể làm được điều này nếu, trong phạm vi bộ nhớ L(n)L(n), nó có thể sinh ra m(w)m(w), từ phải sang trái, từng ký hiệu một.

The machine ZDZ_D cannot write down the entire string, m(w)m(w), at once and still work within the allotted storage. However, all that is necessary in order to simulate the machine of statement (1) is that ZDZ_D be able to compute one symbol at a time of the string m(w)m(w) and keep track of the symbols position in m(w)m(w). This it could do provided it could, within storage L(n)L(n), generate m(w)m(w), from right to left, one symbol at a time.

Các nhận xét của chúng tôi cho đến nay áp dụng cho bất kỳ mã hóa m(w)m(w) nào của mê cung M(w)\mathcal{M}(w). Bây giờ chúng tôi cố định m(w)m(w) là mã hóa sau đây của mê cung M(w)\mathcal{M}(w)

Our remarks so far applied to any coding m(w)m(w) of the maze M(w)\mathcal{M}(w). We now fix m(w)m(w) to be the following coding of the maze M(w)\mathcal{M}(w)

s[x1∗y11∗y21∗⋯yn(1)1][x2∗y12∗y22∗⋯∗yn(2)2]s[x_1 * y_1^1 * y_2^1 * \cdots y_{n(1)}^1][x_2 * y_1^2 * y_2^2 * \cdots * y_{n(2)}^2]
s[x1∗y11∗y21∗⋯yn(1)1][x2∗y12∗y22∗⋯∗yn(2)2]s[x_1 * y_1^1 * y_2^1 * \cdots y_{n(1)}^1][x_2 * y_1^2 * y_2^2 * \cdots * y_{n(2)}^2]
⋯[xl∗y1l∗⋯yn(l)l]u1∗u2∗⋯ug\cdots [x_l * y_1^l * \cdots y_{n(l)}^l] u_1 * u_2 * \cdots u_g
⋯[xl∗y1l∗⋯yn(l)l]u1∗u2∗⋯ug\cdots [x_l * y_1^l * \cdots y_{n(l)}^l] u_1 * u_2 * \cdots u_g

trong đó x1<x2<x3<⋯<xlx_1 < x_2 < x_3 < \cdots < x_l với mỗi i=1,2,…,li = 1, 2, \ldots, l, y1i<y2i<y3i<⋯<yn(i)iy_1^i < y_2^i < y_3^i < \cdots < y_{n(i)}^i và u1<u2<⋯<ug.<u_1 < u_2 < \cdots < u_g . < là thứ tự "nhỏ hơn" thông thường trên các số tự nhiên. Các xx's, yy's, và uu's là các chuỗi trên một bảng chữ cái hữu hạn và do đó có thể được xem như các số trong ký hiệu kk-adic, với một kk nào đó. Theo định nghĩa của M(w)\mathcal{M}(w), các xx's, yy's, uu's, và ss là các ID của ZNZ_N có độ dài nhỏ hơn cL(n)cL(n), trong đó cc là một hằng số chỉ phụ thuộc vào ZNZ_N. ZDZ_D có thể tạo ra m(w)m(w) ký hiệu từng ký hiệu một, trong bộ nhớ được cấp phát, như sau. ZDZ_D có thể dễ dàng tính ss, ID ban đầu của ZNZ_N. Sau khi tạo ra ss, ZDZ_D tiếp theo duyệt theo thứ tự số tất cả các chuỗi có độ dài nhỏ hơn cL(n)cL(n) cho đến khi tìm thấy một chuỗi là một ID của ZNZ_N. Đây sẽ là x1x_1. Như vậy ZDZ_D đã tạo ra x1x_1. Tiếp theo nó tạo ra tất cả các yy sao cho x1→wyx_1 \xrightarrow{w} y. Theo cách này, nó tạo ra các yj1y_j^1. Tiếp theo nó duyệt theo thứ tự số tất cả các chuỗi có độ dài nhỏ hơn cL(n)cL(n) cho đến khi tìm thấy chuỗi đầu tiên như vậy là một ID của ZNZ_N và lớn hơn x1x_1. Đây là x2x_2. Bây giờ nó có thể xóa x1x_1. Điều duy nhất nó cần giữ trong bộ nhớ tại thời điểm này là x2x_2. ZDZ_D sau đó tiếp tục tạo ra các yj2y_j^2. Nó tạo ra x3x_3 từ x2x_2 theo cùng cách mà nó đã tính x2x_2 từ x1x_1. Nó tiếp tục theo cách này cho đến khi tìm thấy xix_i lớn nhất. Sau khi đã tạo ra xix_i lớn nhất và các yy tương ứng của nó, nó tiếp tục tạo ra các uiu_i như sau. Nó duyệt qua tất cả các chuỗi có độ dài nhiều nhất là cL(n)cL(n) và kiểm tra xem những chuỗi nào là các ID có chứa một trạng thái chấp nhận. Những chuỗi đó là các uiu_i. Điều này hoàn tất quá trình tạo và chứng minh cho trường hợp: L(n)L(n) là đo được.

where x1<x2<x3<⋯<xlx_1 < x_2 < x_3 < \cdots < x_l for each i=1,2,…,li = 1, 2, \ldots, l, y1i<y2i<y3i<⋯<yn(i)iy_1^i < y_2^i < y_3^i < \cdots < y_{n(i)}^i and u1<u2<⋯<ug.<u_1 < u_2 < \cdots < u_g . < is the usual "less than" ordering on the natural numbers. Recall that the xx's, yy's, and uu's are strings over a finite alphabet and, thus, may be regarded as numbers in kk-adic notation, for some kk. By definition of M(w)\mathcal{M}(w), the xx's, yy's, uu's, and ss are ID's of ZNZ_N of length less than cL(n)cL(n), where cc is a constant depending only on ZNZ_N. ZDZ_D can generate m(w)m(w) symbol by symbol, in the allotted storage, as follows. ZDZ_D can easily calculate ss, the initial ID of ZNZ_N. Having generated ss, ZDZ_D next runs through in numerical order, all strings of length less than cL(n)cL(n) until if finds one which is an ID of ZNZ_N. This will be x1x_1. So ZDZ_D has generated x1x_1. Next it produces all yy such that x1→wyx_1 \xrightarrow{w} y. In this way, it generates the yj1y_j^1. Next it runs through, in numerical order, all strings of length less than cL(n)cL(n) until it finds the first such string which is an ID of ZNZ_N and is greater than x1x_1. This is x2x_2. It now may erase x1x_1. The only thing it need keep in storage at this point is x2x_2. ZDZ_D then proceeds to generate the yj2y_j^2. It generates x3x_3 from x2x_2 in the same way it computed x2x_2 from x1x_1. It proceeds in this way until it finds the largest xix_i. Having generated the largest xix_i and its associated yy's, it then generates the uiu_i's as follows. It runs through all strings of length at most cL(n)cL(n) and checks to see which are ID's which include an accepting state. Those that do are the uiu_i. This completes the generating process and the proof for the case: L(n)L(n) is measurable.

Nếu L(n)L(n) không đo được, thì ZDZ_D không nhất thiết có thể sinh chính xác các chuỗi có độ dài nhỏ hơn cL(n)cL(n) trong phạm vi bộ nhớ tỷ lệ với L(n)L(n) và do đó thủ tục trên sẽ không hoạt động. Tuy nhiên, nếu bằng cách nào đó ZDZ_D được cung cấp giá trị của L(n)L(n), thì theo thủ tục trên nó có thể xác định liệu ww có được ZNZ_N chấp nhận hay không trong phạm vi bộ nhớ L(n)L(n). ZDZ_D sử dụng cùng loại thủ thuật đã được sử dụng cho các hàm không đo được trong chứng minh của Định lý 1. Nghĩa là, trước tiên nó giả sử L(n)=1L(n) = 1. Nếu ZNZ_N chấp nhận đầu vào ww trong phạm vi bộ nhớ L(n)=1L(n) = 1, thì ZDZ_D chấp nhận ww. Nếu không, ZDZ_D tiếp theo thử L(n)=2L(n) = 2. Nếu ZNZ_N chấp nhận trong phạm vi bộ nhớ L(n)=2L(n) = 2, thì ZDZ_D cũng làm như vậy. Nếu không, ZDZ_D tiếp theo thử L(n)=3L(n) = 3, và cứ tiếp tục như vậy. Nếu ZNZ_N chấp nhận đầu vào ww, thì cuối cùng ZDZ_D sẽ tìm được giá trị đúng của L(n)L(n) và chấp nhận ww trong phạm vi bộ nhớ tỷ lệ với L(n)L(n).

If L(n)L(n) is not measurable, then ZDZ_D cannot necessarily generate precisely the strings of length less than cL(n)cL(n) within storage proportionate to L(n)L(n) and so the above procedure will not work. However, if ZDZ_D were somehow given the value of L(n)L(n), then by the above procedure it could determine whether or not ww is accepted by ZNZ_N within storage L(n)L(n). ZDZ_D uses the same sort of trick as was used for nonmeasurable functions in the proof of Theorem 1. That is, first it assumes L(n)=1L(n) = 1. If ZNZ_N accepts the input ww within storage L(n)=1L(n) = 1, then ZDZ_D accepts ww. If not, ZDZ_D next tries L(n)=2L(n) = 2. If ZNZ_N accepts within storage L(n)=2L(n) = 2, then ZDZ_D does. If not, ZDZ_D tries L(n)=3L(n) = 3 next, and so forth. If ZNZ_N accepts the input ww, then ZDZ_D will eventually find the correct value for L(n)L(n) and accept ww within storage proportionate to L(n)L(n).

Một vấn đề chưa được giải quyết trong lý thuyết độ phức tạp băng là liệu có tồn tại một tập AA gồm các chuỗi và một hàm L(n)≥log⁡2nL(n) \geq \log_2 n nào đó sao cho AA được một máy Turing không tất định chấp nhận trong phạm vi bộ nhớ L(n)L(n) nhưng không được bất kỳ máy Turing tất định nào chấp nhận trong phạm vi bộ nhớ L(n)L(n) hay không. Định lý 5 chỉ ra rằng nếu tồn tại bất kỳ AA và L(n)L(n) như vậy, thì A=MΣA = M_\Sigma và L(n)=log⁡2nL(n) = \log_2 n sẽ thỏa mãn.

An unsolved problem in the theory of tape complexity is whether there is some set AA of strings and some function L(n)≥log⁡2nL(n) \geq \log_2 n such that AA is accepted by some nondeterministic Turing machine within storage L(n)L(n) but accepted by no deterministic Turing machine within storage L(n)L(n). Theorem 5 shows that if any such AA and L(n)L(n) exist, then A=MΣA = M_\Sigma and L(n)=log⁡2nL(n) = \log_2 n will do.

SAVITCH

SAVITCH

Lời cảm ơn

Acknowledgments

Tác giả cảm ơn Stephen A. Cook vì sự giúp đỡ và khích lệ của ông trong công trình này.

The author thanks Stephen A. Cook for his help and encouragement in this work.

References

  1. M. Blum, A machine-independent theory of the complexity of recursive functions, J. Assoc. Comput. Mach. 14 (1967), 322–336.
  2. A. Cobham, “The Recognition Problem for the Set of Perfect Squares.” IEEE Conference Record of the Seventh Annual Symposium on Switching and Automata Theory, Berkeley, Calif., 1966, pp. 78–87.
  3. J. E. Hopcroft and J. D. Ullman, “Formal Languages and Their Relation to Automata.” Addison-Wesley, Reading, Mass., 1969.
  4. J. E. Hopcroft and J. D. Ullman, Relations between time and tape complexities. J. Assoc. Comput. Mach. 15 (1968), 414–427.
  5. S. Y. Kuroda, Classes of languages and linear-bound automata. Information and Control 7 (1964), 207–223. (The relevant material also appears in [3], pp. 115–119.)
  6. P. S. Landweber, Three theorems on phrase structure grammars of type 1. Information and Control 6 (1963), 131–136. (The relevant material also appears in [3], pp. 115–119.)
  7. P. M. Lewis II, R. E. Stearns, and J. Hartmanis, “Memory Bounds for the Recognition of Context-Free and Context-Sensitive Languages.” IEEE Conference Record on Switching Circuit Theory and Logical Design, Ann Arbor, Mich., 1965, pp. 191–202. (The relevant material also appears in [3], pp. 162–164.)
  8. E. M. McCreight and A. R. Meyer, “Classes of Computable Functions Defined by Bounds on Computation: Preliminary Report.” Conference Record of ACM Symposium on Theory of Computing, Marina del Rey, Calif., May 1969, pp. 79–88.
  9. W. J. Savitch, “Deterministic Simulation of Non-deterministic Turing Machines (Detailed Abstract). Conference Record of ACM Symposium on Theory of Computing, Marina del Rey, Calif., May 1969, pp. 247–248.

Read off the page by a vision model reading the page images using olmOCR-2-7B-1025-FP8. Translated into Tiếng Việt by gpt-5, against glossary version 7. Translated from the English.

Read off the page by a vision model reading the page images using olmOCR-2-7B-1025-FP8.