Làm cách nào tôi có thể chuyển đổi máy Turing nhận dạng ngôn ngữ


19

Theo bài viết Wikipedia này , ngữ pháp không giới hạn tương đương với máy Turing. Bài viết lưu ý rằng tôi có thể chuyển đổi bất kỳ máy Turing nào thành ngữ pháp không hạn chế, nhưng nó chỉ cho thấy cách chuyển đổi ngữ pháp sang máy Turing.

Làm thế nào để tôi thực sự làm điều đó và chuyển đổi máy Turing nhận dạng ngôn ngữ thành một ngữ pháp không hạn chế? Tôi đã thử thay thế các quy tắc chuyển đổi bằng các quy tắc ngữ pháp, nhưng một máy Turing có thể có nhiều cấu hình trạng thái khác nhau ...L

Câu trả lời:


9

Chúng tôi mã hóa nội dung băng của máy Turing ở dạng cảm tính; một tập hợp đặc biệt của các thiết bị đầu cuối mã hóa trạng thái hiện tại. Chỉ có thể có một trong số chúng ở dạng gửi tại bất kỳ thời điểm nào, được đặt ở bên phải của biểu tượng mà TM hiện đang trỏ tới.

Ý tưởng quan trọng thứ hai là chúng ta phải đảo ngược quá trình: Các TM lấy từ này làm đầu vào và chuyển đổi nó thành hoặc , hoặc chúng không chấm dứt. Ngữ pháp, tuy nhiên, phải tạo ra từ. May mắn thay, ngữ pháp vốn dĩ không mang tính quyết định, vì vậy chúng ta chỉ có thể để nó "đoán" nơi chấp nhận đến từ đâu; tất cả các từ khiến TM chấp nhận có thể được tạo sau đó.0 1101

Đặt tập hợp các trạng thái không có giá trị; wlog hãy để là trạng thái bắt đầu-nonterminal và tập hợp các trạng thái chấp nhận-trạng thái-nonterminals. Đầu tiên, chúng ta cần các quy tắc bắt đầu tạo ra tất cả các cấu hình chấp nhận có thể:Q 0 Q FQQ={Q0,,Qk}Q0QFQ

S#1Qf# cho tất cả .QfQF

Tương tự, chúng tôi chấm dứt khi chúng tôi "đạt" trạng thái bắt đầu ở vị trí chính xác, cụ thể là trên biểu tượng đầu tiên:

#aQ0#a cho tất cả .aΣ

Dịch các chuyển đổi trạng thái thực tế là đơn giản:

aQcQ  for a,cΣ(a,Q,N)δ(c,Q)aQbacQ for a,b,cΣ(b,Q,L)δ(c,Q)abQcQb for a,b,cΣ(a,Q,R)δ(c,Q)

Có một số kink kỹ thuật để giải quyết; chẳng hạn, bạn phải loại bỏ các dấu mốc ranh giới ở cuối. Điều đó có thể được thực hiện bằng cách sinh ra hai số nguyên tố đặc biệt thay vì chấm dứt, hoán đổi chúng đến tận cùng và sau đó xóa### cùng với chúng. Hơn nữa, nhiều phải được tạo ra theo yêu cầu; yêu cầu một số hack các quy tắc với d = # .#d=#

Ngoài ra, việc xây dựng trở nên phức tạp hơn một chút nếu TM sử dụng các ký hiệu không phải đầu vào. Trong trường hợp đó, các quy tắc chấm dứt có thể sai: nếu có các ký hiệu không nhập ở đâu đó trên băng, chúng tôi đã không tạo ra một từ thích hợp. Điều này có thể được cố định tương tự để loại bỏ : đẻ trứng đặc biệt không bị đầu cuối từ Q 0 được hoán đổi sang bên phải và chỉ gỡ bỏ nếu tất cả những biểu tượng là từ Σ .#Q0Σ

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.