Bao nhiêu thời gian để nhận ra palindromes trong không gian logarit?


20

Người ta biết rằng palindromes có thể được nhận ra theo thời gian tuyến tính trên máy Turing -tape, nhưng không phải trên máy Turing băng đơn (trong trường hợp thời gian cần thiết là bậc hai). Thuật toán thời gian tuyến tính sử dụng một bản sao của đầu vào và do đó cũng sử dụng một không gian tuyến tính.2

Chúng ta có thể nhận ra palindromes trong thời gian tuyến tính của máy Turing đa nhiệm, chỉ sử dụng một không gian logarit? Tổng quát hơn, loại đánh đổi không-thời gian nào được biết đến với palindromes?

Câu trả lời:


22

Sử dụng các chuỗi chéo hoặc độ phức tạp trong giao tiếp, thật đơn giản để tạo ra sự đánh đổi cho máy Turing tuần tự sử dụng thời gian và không gian .O ( T ( n ) ) O ( S ( n ) )T(n)S(n)=Ω(n2)O(T(n))O(S(n))

Kết quả này lần đầu tiên được Alan Cobham thu được bằng cách sử dụng các chuỗi chéo trong bài báo Vấn đề nhận biết cho tập hợp các hình vuông hoàn hảo xuất hiện tại SWAT (sau này là FOCS) năm 1966.


25

Bạn có thể sử dụng cùng một đối số được sử dụng để chứng minh thời gian bị ràng buộc trên một băng duy nhất.Ω(n2)

Giả sử rằng bạn có một TM có không gian nhận ra palindromes (trong đó là đảo ngược của ) trong thời gian . Khi đầu (đầu vào) vượt qua giữa nó chỉ có thể mang các bit thông tin . Vì vậy, nó cần phải tạo ra và mỗi lần chéo cần lần.{ xS(n){x0n3xR|x|=n/3}xRxT(n)0n/3S(n)Ω(n/S(n))n/3

Vậy .T(n)S(n)=Ω(n2)


Ops ... sau khi viết câu trả lời, tôi thấy rằng Kristoffer đã đăng giải pháp. Chấp nhận câu trả lời của anh ấy, tôi chỉ để lại cho tôi vì nó có thêm một vài chi tiết.
Marzio De Biasi

5
Tôi đoán nó thực tế đồng thời.
Kristoffer Arnsfelt Hansen

Như bạn đề xuất, tôi đã chấp nhận câu trả lời của Kristoffer vì anh ấy sớm hơn một chút ... Cảm ơn cả hai bạn!
Bruno

1
{x0n3xR|x|=|y|=n/3} trông lạ. Tốt hơn{x0n3xR|x|=n/3}R

2

Ngoài các câu trả lời khác, điều đáng chú ý là nếu cho phép ngẫu nhiên hóa, các palindromes có thể được nhận ra bằng không gian O (1) và thời gian O (n) bằng cách băm bên trái của chuỗi, băm chuyển vị của bên phải của chuỗi và kiểm tra nếu các giá trị băm bằng nhau. Không khó để làm điều này trên máy Turing.

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.