Làm thế nào một hệ thống thẻ tuần hoàn có thể dừng lại với một đầu ra?


8

Ví dụ: chúng ta có thể nói rằng chúng ta có một chương trình trừu tượng, được cung cấp một chuỗi nhị phân hữu hạn làm đầu vào, loại bỏ tất cả các số không (ví dụ 0010001101011 ước tính thành 111111), đây chắc chắn là một hàm tính toán Turing.

Làm thế nào một hệ thống thẻ tuần hoàn có thể tính toán điều này (mà theo định nghĩa của nó là Turing-Complete) khi nó chỉ dừng lại khi đến chuỗi trống? Bài viết Wikipedia đưa ra một ví dụ về việc chuyển đổi sang hệ thống 2 thẻ, nhưng nó thêm phần tạm dừng giả lập mà hệ thống ban đầu không có.

Tôi không thể tìm thấy bất kỳ tài liệu tham khảo nào về cách hệ thống thẻ tuần hoàn tạm dừng một cách có ý nghĩa. Đầu ra của nó là gì? Tôi đã xem xét những thứ như

  • Số bước (nhưng sau đó đầu vào hạn chế đầu ra có thể mà không có loại mã hóa ưa thích nào tôi không thể tìm thấy)
  • Sản phẩm cuối cùng (nhưng chỉ có phạm vi đầu ra hữu hạn)
  • Điểm cố định (không thể được phát hiện trong hệ thống này và chỉ tồn tại với quy tắc sản xuất và đầu vào rất hạn chế)

nhưng chúng không hoạt động, ít nhất là không phải trong bất kỳ cách nào tôi có thể nhìn thấy.

Câu trả lời:


6

Neary và Woods mô tả một mô phỏng hiệu quả của các máy Turing sử dụng hệ thống thẻ tuần hoàn, cải thiện công việc của Matthew Cook . Turing-đầy đủ là một khái niệm hơi lỏng và không chính thức. Một hệ thống máy tính X mô phỏng một hệ thống máy tính Y khác nếu được cung cấp cho mỗi chương trình trong Y, chúng ta có thể đưa ra một chương trình trong X sao cho nhìn vào bảng điểm của chương trình X, chúng ta có thể khôi phục bản sao của chương trình Y.

Bạn có thể nhìn vào các giấy tờ ở trên để xem điều này có nghĩa gì đối với các hệ thống thẻ tuần hoàn. Ý tưởng cơ bản là khi máy Turing tạm dừng, các hệ thống thẻ tuần hoàn sẽ tiếp tục, lặp lại mãi chuỗi trình tự cấu hình tương tự, đại diện cho cấu hình tạm dừng của máy Turing. Theo nghĩa này, nó thực sự có thể tính toán các chức năng.


Trong một câu trả lời trước đó tôi đã lưu ý rằng một số mô hình tính toán chỉ có thể tính toán các vấn đề quyết định, theo nghĩa là chúng không dừng lại hoặc chúng dừng lại chỉ với một chút đầu ra. Trong trường hợp đó, bạn có thể mã hóa hàm chung theo ít nhất hai cách:

  1. Cho hàm , hãy xem xét ngôn ngữ của các cặp .fx,f(x)

  2. Cho hàm số , hãy xem xét ngôn ngữ của bộ ba sao cho bit thứ của (nếu có) bằng .fx,Tôi,bTôif(x)b

Như thường lệ, chúng tôi yêu cầu máy luôn dừng.


Tôi nghĩ rằng điều này không thực sự trả lời "Làm thế nào một hệ thống thẻ tuần hoàn có thể dừng lại với một đầu ra?" , nhưng giải thích tại sao một số không cần phải dừng lại. Các hệ thống thẻ tuần hoàn có thể được thực hiện để nhân đôi hành vi tạm dừng / không tạm dừng của bất kỳ hệ thống nào mà chúng mô phỏng (ví dụ: tạm dừng bất cứ khi nào một TM "mô phỏng" tạm dừng), vì vậy tôi đã đăng câu trả lời để giải thích cách thực hiện điều này.
res

3

Mặc dù các phiên bản không tạm dừng của thẻ tuần hoàn có thể được quan tâm đặc biệt cho automata di động, một hệ thống thẻ tuần hoàn cũng có thể được thiết kế để mô phỏng một máy Turing phổ dụng theo cách nó tạm dừng iff TM, hiển thị một từ đầu ra mã hóa đầu ra của máy:

  1. Mô phỏng TM với hệ thống 2 thẻ mã hóa tất cả các cấu hình tức thời của TM, sử dụng "bảng chữ cái đầu ra" riêng để mã hóa bất kỳ cấu hình tạm dừng nào, sao cho hệ thống thẻ tạm dừng (bằng cách xóa từng chữ cái này) TM dừng lại. ( Bài viết này cho thấy chi tiết làm thế nào điều này có thể được thực hiện bằng cách sử dụng công thức TM của máy Wang .)

  2. Mô phỏng hệ thống 2 thẻ bằng hệ thống thẻ tuần hoàn như được mô tả trong phần hệ thống thẻ tuần hoàn của bài viết Wikipedia . Vì mỗi chữ cái trong bảng chữ cái đầu ra 2 thẻ có một chuỗi trống là phần phụ của nó (khiến cho việc mô phỏng 2 thẻ bị dừng lại), hệ thống thẻ tuần hoàn sẽ có hành vi tạm dừng / đầu ra tương tự.

Chìa khóa trong cách tiếp cận này là một bảng chữ cái đầu ra được chỉ định, giả sử , cho phép mỗi chữ cái của nó có chuỗi rỗng như là ứng dụng của nó ( ), khiến cho việc mô phỏng xóa dữ liệu và tạm dừng lại.{αTôi}αTôiε

Lưu ý : Đối với cả ba loại hệ thống (TM, thẻ, thẻ tuần hoàn), việc xác định đầu ra rõ ràng có thể được đảm bảo bằng cách sử dụng bảng chữ cái đầu ra được chỉ định và điều này có thể được thực hiện cho cả hai loại tạm dừngkhông tạm dừng của các hệ thống này. (Cho rằng các TM "tiêu chuẩn" thuộc loại tạm dừng, thật mỉa mai là các máy tính ban đầu của Turing thuộc loại không dừng với bảng chữ cái đầu ra .){0,1}


Với cách tiếp cận tương tự, chúng ta cũng có thể trực tiếp xây dựng một hệ thống 2 thẻ đơn giản để xóa bất kỳ nào khỏi chuỗi nhị phân, sau đó mô phỏng điều đó bằng thẻ tuần hoàn. Việc tính toán nhanh chóng trở nên tẻ nhạt, vì vậy chúng tôi sẽ chỉ áp dụng nó cho chuỗi đầu vào , tạm dừng với chuỗi đầu ra . (Biểu tượng sẽ biểu thị chuỗi trống.)010111-

2 thẻ

input alphabet {a,b}, output alphabet {c}
input encoding:
<0> = aa
<1> = bb
input = <101> = bbaabb
output decoding: <cc> = 1

sản phẩm:

a -> - 
b -> cc 
c -> - 

tính toán:

bbaabb   <-- input word <101>
  aabbcc
    bbcc
      cccc  <-- output word <11>
        cc
         -

thẻ tuần hoàn

mã hóa bảng chữ cái 2 thẻ:

<a> = 100
<b> = 010
<c> = 001
cyclic tag system = [-,001001,-,-,-,-]
cyclic tag input = <bbaabb> = 010010100100010010 

tính toán:

appendant    dataword
---------    ---------------------------------------------------------------
-            010010100100010010  <-- input word <bbaabb> = <<101>>
001001        10010100100010010
-              0010100100010010001001
-               010100100010010001001
-                10100100010010001001
-                 0100100010010001001
-                  100100010010001001
001001              00100010010001001
-                    0100010010001001
-                     100010010001001
-                      00010010001001
-                       0010010001001
-                        010010001001
001001                    10010001001
-                          0010001001001001
-                           010001001001001
-                            10001001001001
-                             0001001001001
-                              001001001001  <-- output word <cccc> = <<11>>
001001                          01001001001
-                                1001001001
-                                 001001001
-                                  01001001
-                                   1001001
-                                    001001
001001                                01001
-                                      1001
-                                       001
-                                        01
-                                         1
-                                         -
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.