2010-09-22 13 views
5

Tôi đang cố gắng hiểu và triển khai máy turing đơn giản nhất và muốn nhận phản hồi nếu tôi có ý nghĩa.Máy turing đơn giản của tôi

Chúng tôi có một băng vô hạn (cho phép nói một mảng gọi là T với con trỏ ở mức 0 ở đầu) và bảng hướng dẫn:

(S , R , W , D , N) 

S->STEP (Start at step 1) 
R->READ (0 or 1) 
W->WRITE (0 or 1) 
D->DIRECTION (0=LEFT 1=RIGHT) 
N->NEXTSTEP (Non existing step is HALT) 

sự hiểu biết của tôi là 3 trạng thái 2-biểu tượng là chiếc máy đơn giản nhất . 3-nhà nước tôi không hiểu. Biểu tượng 2 vì chúng tôi sử dụng 0 và 1 cho READ/WRITE.

Ví dụ:

(1,0,1,1,2) 
(1,1,0,1,2) 

Bắt đầu từ bước 1, nếu đọc là 0 thì {Viết 1, Di chuyển phải) else {Viết 0, di chuyển phải) và sau đó chuyển sang bước 2 - mà không tồn tại dừng chương trình.

Trạng thái 3 nghĩa là gì? Máy này có phải là máy turing không? Chúng ta có thể đơn giản hóa nhiều hơn?

Trả lời

1

Tôi tin rằng khái niệm về trạng thái cơ bản giống như trong Finite State Machines. Nếu tôi nhớ lại, bạn cần một trạng thái kết thúc riêng biệt, mà máy turing có thể chuyển đổi sau khi nó đã chạy xong chương trình. Đối với lý do tại sao 3 tiểu bang tôi đoán rằng hai tiểu bang khác là cho intialisation và thực hiện tương ứng.

Rất tiếc, không ai trong số đó được đảm bảo là chính xác, nhưng tôi nghĩ rằng tôi sẽ đăng ý kiến ​​của mình dù câu hỏi chưa được trả lời trong 5 giờ. Tôi nghi ngờ nếu bạn đã hỏi lại câu hỏi này trên cstheory.stackexchange.com bạn có thể nhận được câu trả lời rõ ràng hơn/nhiều hơn.

+0

Vậy sự khác nhau giữa FSM và TM là gì? – Yehonatan

+1

@Yehonatan: FSM không có băng. Bạn nạp một đầu vào FSM (một luồng của các đầu vào và số 0), nhưng luồng này không giống như một băng, vì FSM không thể tua lại hoặc sửa đổi nó. – Seth

+0

@Seth hiểu. – Yehonatan

0

"Trạng thái" trong ngữ cảnh của máy Turing phải được làm rõ như được mô tả: (i) hướng dẫn hiện tại hoặc (ii) danh sách các ký hiệu trên băng cùng với lệnh hiện tại hoặc (iii)) danh sách các biểu tượng trên băng cùng với lệnh hiện tại được đặt ở bên trái của biểu tượng được quét hoặc bên phải của biểu tượng được quét. Reference

2

Tôi nghĩ rằng sự nhầm lẫn có thể đến từ việc bạn sử dụng "các bước" thay vì "trạng thái". Bạn có thể nghĩ về trạng thái của máy như là giá trị trong bộ nhớ của nó (mặc dù như một poster trước đã lưu ý, một số người cũng lấy trạng thái của máy để bao gồm nội dung của băng - tuy nhiên, tôi không nghĩ rằng định nghĩa đó có liên quan cho câu hỏi của bạn). Có thể sự thay đổi trong thuật ngữ này có thể là trái tim của sự nhầm lẫn của bạn. Hãy để tôi giải thích những gì tôi nghĩ rằng đó là bạn đang suy nghĩ. :)

Bạn đã liệt kê năm số - ví dụ: (1,0,1,1,2). Khi bạn nói đúng, điều này sẽ được diễn giải (đọc từ trái sang phải) là "Nếu máy ở trạng thái 1 VÀ ô vuông hiện tại chứa số 0, in 1, di chuyển sang phải và chuyển sang trạng thái 2." Tuy nhiên, việc bạn sử dụng từ "bước" dường như gợi ý rằng "bước 2" phải được theo sau bởi "bước 3", v.v., trong thực tế, máy Turing có thể đi qua lại giữa các trạng thái (và tất nhiên, có chỉ có thể có nhiều trạng thái hữu hạn).

Vì vậy, để giải đáp thắc mắc của bạn:

  • máy Turing theo dõi "khẳng định" không phải là "bước";
  • Những gì bạn mô tả là máy Turing hợp pháp;
  • Máy Turing đơn giản hơn (mặc dù không thú vị) sẽ là máy bắt đầu ở trạng thái HALT.

Chỉnh sửa: Ngữ pháp, Định dạng và xóa mô tả không cần thiết về máy Turing.

Response to comment: Đúng tôi nếu tôi hiểu sai bình luận của bạn, nhưng tôi không có ý đề nghị một máy Turing có thể là nhiều hơn một nhà nước tại một thời điểm, chỉ rằng số lượng trạng thái có thể có thể là bất kỳ số hữu hạn nào. Ví dụ, đối với máy 3 trạng thái, bạn có thể gắn nhãn các trạng thái có thể A, B và C. (Trong ví dụ bạn đã cung cấp, bạn gắn nhãn hai trạng thái có thể là '1' và '2') Tại bất kỳ thời điểm nào, chính xác một trong những giá trị đó (trạng thái) sẽ nằm trong bộ nhớ của máy. Chúng tôi sẽ nói, "máy ở trạng thái A" hoặc "máy ở trạng thái B", v.v. (Máy của bạn bắt đầu ở trạng thái '1' và kết thúc sau khi nó vào trạng thái '2').

Ngoài ra, nó không còn rõ ràng với tôi những gì bạn có nghĩa là bởi một máy "đơn giản/est". Máy Turing phổ biến nhỏ nhất được biết đến (tức là máy Turing có thể mô phỏng một máy Turing khác, được đưa ra một băng thích hợp) yêu cầu 2 trạng thái và 5 ký hiệu (xem the relevant Wikipedia article).

Mặt khác, nếu bạn đang tìm kiếm một cái gì đó đơn giản hơn một máy Turing có cùng công suất tính toán, Post-Turing machines có thể được quan tâm.

+0

NEXTSTEP không nhất thiết có nghĩa là STEP + 1. Sử dụng từ 'STATE' thay vì 'STEP' ở đây sẽ không có ý nghĩa hơn vì có thể có 2 định nghĩa ngược với ý nghĩa của từ 'STATE'. Có thể có một từ tốt hơn cả STEP và STATE. Và có, khi tôi nói đơn giản, tôi có nghĩa là một định nghĩa đơn giản hơn mà vẫn có thể được lập trình để thực hiện bất kỳ tính toán nào. – Yehonatan

+0

@Yehonatan: Tôi đã cập nhật câu trả lời của tôi để phản hồi nhận xét của bạn. Tôi không hoàn toàn chắc chắn rằng tôi hiểu bạn một cách chính xác, mặc dù; nếu tôi vẫn chưa giải quyết đầy đủ các câu hỏi của bạn, tôi sẽ đánh giá cao việc làm rõ. – Seth