Chứng minh rằng hàm boolean có thể tính toán được trong T (n) bằng máy RAM nằm trong DTIME (T (n) ^ 2)


10

Câu hỏi là bài tập 1.9 từ cuốn sách Tính phức tạp tính toán của Arora-Barak - Cách tiếp cận hiện đại :


Xác định máy RAM Turing là máy Turing có bộ nhớ truy cập ngẫu nhiên. Chúng tôi chính thức hóa điều này như sau: Máy có một mảng A vô hạn được khởi tạo cho tất cả các khoảng trống. Nó truy cập mảng này như sau. Một trong các băng làm việc của máy được chỉ định là băng địa chỉ. Ngoài ra, máy có hai ký hiệu bảng chữ cái đặc biệt được ký hiệu là R và W và trạng thái bổ sung mà chúng tôi biểu thị bằng q_access. Bất cứ khi nào máy nhập vào q_access, nếu băng địa chỉ của nó chứa 'i'R (trong đó' i 'biểu thị biểu diễn nhị phân của i) thì giá trị A [i] được ghi trong ô bên cạnh ký hiệu R. Nếu băng của nó chứa 'i'Wa (trong đó a là một số ký hiệu trong bảng chữ cái của máy) thì A [i] được đặt thành giá trị a.

Chỉ ra rằng nếu hàm Boolean có thể tính toán được trong thời gian T ( n ) (trong một thời gian có thể xây dựng T ) bằng RAM TM, thì đó là trong D T I M E ( T ( n ) 2 ) .fT(n)TDTIME(T(n)2)


Giải pháp tầm thường bằng cách sử dụng một cặp ghi băng bổ sung (địa chỉ, giá trị) hóa ra là ở , vì băng đó có thể có kích thước O ( T ( n ) 2 ) với O ( T ( n ) ) cặp trong khi địa chỉ của mỗi cặp có thể có kích thước O ( T ( n ) ) .DTIME(T(n)3)O(T(n)2)O(T(n))O(T(n))


Làm thế nào để bạn biết ràng buộc về kích thước địa chỉ? Không thể viết đầu tiên của tôi là ? Và nếu bạn có thể ràng buộc nó với T ( n ) , thì kích thước địa chỉ là log ( T ( n ) ) , không phải T ( n ) . 22T(n)T(n)log(T(n))T(n)
Xodarap

1
Do địa chỉ phải được ghi trong băng bởi Máy Turing thời gian , kích thước (tức là độ dài chuỗi) của địa chỉ không thể vượt quá O ( T ( n ) ) , không gian địa chỉ có thể truy cập là O ( 2 T ( n ) ) . T(n)O(T(n))O(2T(n))
cc

3
Lưu ý rằng Arora và Barak hỏi rõ ràng trong phần giới thiệu của họ cho người khác không đăng câu trả lời cho câu hỏi của họ. Xem thêm chính sách về câu hỏi bài tập về nhà .
Kaveh

Xin lỗi vì chuyện đó. Tôi chỉ tự mình nghiên cứu cuốn sách và gặp rắc rối trong câu hỏi đó. Tôi không biết liệu mô phỏng thực sự tồn tại hay nó chỉ là một lỗi đánh máy. Nếu bạn biết câu trả lời, xin vui lòng gửi email riêng tư cho tôi đến ccqmpux @ gmail, và sau đó tôi sẽ đóng câu hỏi. O(T(n)2)
cc

Bạn có thể tìm thấy nhiều hơn trong chương đầu tiên của cuốn cẩm nang về khoa học máy tính lý thuyết.
Kaveh

Câu trả lời:


2

Bạn viết trong các ý kiến :

Vì địa chỉ phải được ghi trong băng bởi Máy Turing thời gian , nên kích thước (tức là độ dài chuỗi) của địa chỉ không thể vượt quá O ( T ( n ) ) .T(n)O(T(n))

Bạn có thể sử dụng một đối số tương tự để cải thiện giới hạn

O(T(n)2)O(T(n))O(T(n))

bạn đề cập đến trong câu hỏi? Bạn có thể cần nhớ những hoạt động nào có thể xảy ra trong thời gian không đổi trên RAM, đó là sử dụng định nghĩa chính xác mà các tác giả sử dụng.


Tôi hy vọng gợi ý này đủ mơ hồ để tôn trọng mong muốn của tác giả cuốn sách nhưng cũng có phần hữu ích. (Heuristic: Tôi sẽ nói với một học sinh nhiều như vậy nếu vấn đề được đưa ra là tập thể dục. Tuy nhiên, có lẽ không phải trong một kỳ thi.)
Raphael
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.