Tính toán độ dài đầu vào trên máy Turing một băng


13

Liên quan đến câu hỏi này, tôi tự hỏi: độ phức tạp thời gian của máy Turing một đầu băng đơn để tính độ dài đầu vào của nó là bao nhiêu? Để cụ thể, giả sử rằng bảng chữ cái băng là , đầu vào là một chuỗi trong ( 0 + 1 ) ∗ được bao quanh bởi các khoảng trống, máy bắt đầu ở ký hiệu đầu vào ngoài cùng bên trái và nó phải kết thúc tại biểu tượng tận cùng bên trái của một chuỗi trong ( 0 + 1 ) *{0,1,b}(0+1)(0+1)(một lần nữa được bao quanh bởi các khoảng trống) cung cấp biểu diễn nhị phân của độ dài đầu vào. Điều này cũng có thể được coi là vấn đề chuyển đổi một số từ đơn nhất sang nhị phân.

Thật dễ dàng để giải quyết vấn đề này trên máy hai băng hoặc máy hai đầu theo thời gian tuyến tính (chỉ cần quét đầu vào bằng một đầu trong khi sử dụng đầu kia để tăng liên tục bộ đếm; tăng là hoạt động thời gian được khấu hao không đổi). Nhưng các giải pháp một đầu mà tôi có thể đưa ra chỉ là (ví dụ: liên tục tăng một bộ đếm và sau đó dịch chuyển nó theo một vị trí dọc theo băng). Có một giới hạn dưới phù hợp?Ôi(nđăng nhậpn)

Tôi đã thử một số tìm kiếm nhưng các cụm từ như "một đầu" và "độ dài đầu vào" rất phổ biến đến mức gây khó khăn cho việc tìm kiếm tài liệu cho các kết quả đã biết về vấn đề này.


Thật thú vị .. Điều này ít rõ ràng hơn nó nên xuất hiện. Tôi tò mò liệu có mối quan hệ nào giữa giới hạn dưới đối với điều này và giới hạn dưới đối với mô phỏng TM không biết. (Theo định nghĩa, bất kỳ TM nào giải quyết vấn đề này sẽ bị lãng quên (hoặc có mã không cần thiết).)
Daniel Apon

Câu trả lời:


11

Nó không thể được tính trong thời gian .o(nlgn)

Đặt là một máy có chuỗi đầu vào x dừng với kích thước x được ghi dưới dạng nhị phân trên băng.Mxx

Chúng ta có thể thêm một DFA đơn giản (không thời gian tuyến tính không gian) vào để kiểm tra xem kích thước của đầu vào có phải là hai không: chỉ cần kiểm tra xem bit đầu tiên có phải là 1 không và phần còn lại bằng không.M

Giả sử rằng chạy thời gian o ( n lg n ) . Sau đó, chúng ta có thể quyết định trong thời gian o ( n lg n ) rằng kích thước của đầu vào là một sức mạnh của hai. Nói cách khác, ngôn ngữ sau có thể quyết định trong D T i m e ( n lg n ) . L = { 0 i | k i = 2 k } Sau đó từ D T i m e (Mo(nlgn)o(nlgn)DTTôime(nlgn)

L= ={0Tôi|k Tôi= =2k}
rằng L nên đều đặn. Nhưng thật dễ dàng để kiểm tra rằng ngôn ngữ không thường xuyên. Vì vậy M không thể chạy trong thời gian o ( n lg n ) .DTTôime(o(nlgn))= =RegLMo(nlgn)

Tôi nhớ một cái gì đó ở đây: Khi bạn nói rằng , bạn có đang xem xét tính toán trên một máy băng đơn không? Thông thường tôi nghĩ, máy hai băng được sử dụng để xác định các lớp phức tạp. Một câu hỏi rất liên quan là kết quả trên đến từ đâu? DTTôime(o(nlgn))= =Reg
Bruno

@Bruno, vâng, tôi đang nói về máy Turing băng đơn. Tôi không chắc tiêu chuẩn để xác định các lớp phức tạp là gì, các sách khác nhau sử dụng các mô hình khác nhau. Tôi nghĩ rằng các bài báo gốc về lý thuyết phức tạp đã sử dụng nhiều băng từ nhưng có vẻ như điều đó đã thay đổi, hãy xem điều này . Với bạn có thể tìm thấy nó trong "Lý thuyết đệ quy cổ điển" tập. II và "Sổ tay khoa học máy tính lý thuyết". DTTôime(nlgn)= =Reg
Kaveh

Cảm ơn các gợi ý, tôi đã xem qua "Lý thuyết đệ quy cổ điển" tập. II. Đối với thực tế là nó đã thay đổi, nó không quá rõ ràng đối với tôi. Chẳng hạn, cuốn sách của Sipser sử dụng các TM băng đơn để xác định các lớp phức tạp về thời gian, nhưng cuốn sách của Hopcroft-Ullman và các TM đa dạng gần đây nhất của Arora-Barak và Goldreich.
Bruno

1
@Bruno, tôi nghĩ định nghĩa phổ biến hơn về DTime là gì phức tạp hơn. Ví dụ, tuyên bố thường được tuyên bố rằng "định lý phân cấp thời gian không được biết là chặt chẽ" chỉ đúng với các máy băng đơn, đối với máy hai băng, nó đã được biết là chặt chẽ kể từ năm 1982.
Kaveh

DTTôime
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.