Làm thế nào để hiển thị hai mô hình tính toán là tương đương?


21

Tôi đang tìm kiếm lời giải thích về cách người ta có thể chứng minh rằng hai mô hình tính toán là tương đương nhau. Tôi đã đọc sách về chủ đề này ngoại trừ bằng chứng tương đương bị bỏ qua. Tôi có một ý tưởng cơ bản về ý nghĩa của hai mô hình tính toán là tương đương (khung nhìn automata: nếu chúng chấp nhận cùng một ngôn ngữ). Có những cách nghĩ khác về sự tương đương? Nếu bạn có thể giúp tôi hiểu làm thế nào để chứng minh rằng mô hình máy Turing tương đương với phép tính lambda, điều đó là đủ.


Tôi đoán bạn đã chọn sai sách.
Raphael

@Raphael Một cuốn sách hay về chủ đề này là gì?
saadtaame

Tôi muốn nói "bất kỳ cuốn sách nào về automata", nhưng rõ ràng điều đó giờ đã đúng. Thật không may, tôi không có bất kỳ cuốn sách tiếng Anh phù hợp trong tay, xin lỗi.
Raphael

1
Một cuốn sách về automata sẽ không đủ.
Revierpost

Những cuốn sách bạn đang sử dụng?
saadtaame

Câu trả lời:


20

Bạn chỉ ra rằng một trong hai mô hình có thể mô phỏng mô hình kia, được đưa ra một máy trong mô hình A, cho thấy rằng có một máy trong mô hình B tính toán cùng chức năng. Lưu ý rằng mô phỏng này không phải tính toán (nhưng thường là).

Ví dụ, xem xét, automata đẩy xuống với hai ngăn xếp (2-PDA). Trong một câu hỏi khác , các mô phỏng theo cả hai hướng được phác thảo. Nếu bạn đã làm điều này một cách chính thức, bạn sẽ lấy một máy Turing chung (một tuple) và xây dựng rõ ràng những gì 2-PDA tương ứng sẽ là, và ngược lại.


Chính thức, một mô phỏng như vậy có thể trông như thế này. Để cho

M=(Q,ΣI,ΣO,δ,q0,QF)

là một máy Turing (với một băng). Sau đó,

AM=(Q{q1,q2},ΣI,ΣO,δ,q1,QF)

với ΣO=ΣO.{$}δ do

(q1,a,hl,hr)δ(q1,ahl,hr) với mọiaΣIhr,hlΣO ,
(q1,ε,hl,hr)δ(q2,hl,hr) cho tất cả cáchr,hlΣO ,
(q2,ε,hl,hr)δ(q2,ε,hlhr) cho tất cả cáchr,hlΣO vớihl$ ,
(q2,ε,$,hr)δ(q0,$,hr) cho tất cả cáchrΣO ,
(q,ε,hl,hr)δ(q,ε,hla)(q,hr)δ(q,a,L) cho tất cả cácqQhlΣO ,
(q,ε,$,hr)δ(q,$,a)(q,hr)δ(q,a,L) cho tất cả cácqQ ,
(q,ε,hl,hr)δ(q,ahl,ε)(q,hr)δ(q,a,R) cho tất cả cácqQ,hlΣO ,
(q,ε,hl,$)δ(q,hl,$) cho tất cả cácqQhlΣO , và
(q,ε,hl,hr)δ(q,hl,a)(q,hr)δ(q,a,N) cho tất cả cácqQ,hlΣO

là một 2-PDA tương đương. Ở đây, chúng tôi giả định rằng máy Turing sử dụng ΣO là biểu tượng trống, cả hai ngăn xếp bắt đầu với một dấu $ΣO (mà không bao giờ bị loại bỏ) và (q,a,hl,hr)δ(q,l1li,r1rj) phương tiện mà AM tiêu thụ đầu vào a , chuyển trạng thái từq đểq và cập nhật các ngăn xếp như vậy:

cập nhật ngăn xếp
[ nguồn ]

Nó vẫn còn để chứng minh rằng AM chuyển sang trạng thái cuối cùng về xΣI khi và chỉ khi M làm như vậy. Điều này khá rõ ràng bằng cách xây dựng; chính thức, bạn phải dịch việc chấp nhận chạy trên M thành chấp nhận chạy trên AM và ngược lại.


@frabala Bạn đã đúng, tôi đã có những trạng thái ban đầu sai cách. Đã sửa bây giờ, cảm ơn!
Raphael

4

Khi bắt đầu Hệ thống Giao tiếp và Di động: Tính toán Pi của Robin Milner, có một phần giới thiệu về automata và cách chúng có thể mô phỏng lẫn nhau để không thể phân biệt được: Bisimulation . (cf Bisimulation trên wikipedia)

Tôi không nhớ rõ, tôi nên đọc lại chương này, nhưng có một vấn đề với việc mô phỏng và chia nhỏ khiến chúng không đủ cho các phép tính tương đương.

Do đó, Robin Milner giới thiệu Pi-Compus của mình và trưng bày nó cho phần còn lại của cuốn sách.

Cuối cùng, trong cuốn sách cuối cùng của ông về Không gian và Chuyển động của các Đại lý Giao tiếp , bạn có thể có một cái nhìn về Bigraphs của Robin Milner. Họ có thể mô hình hóa Automata, lưới Petri, Pi-Tính và các phương pháp tính toán khác.


2

Theo như tôi biết, cách duy nhất (hoặc ít nhất là phổ biến nhất) để làm điều này là so sánh các ngôn ngữ mà máy móc / mô hình chấp nhận. Đó là toàn bộ quan điểm của lý thuyết Automata: nó lấy khái niệm mơ hồ về một vấn đề hoặc thuật toán và biến nó thành một tập hợp toán học cụ thể (tức là một ngôn ngữ) mà chúng ta có thể suy luận.

Cách dễ nhất để làm điều này là, được cung cấp một máy / hàm tùy ý từ một mô hình, để xây dựng một máy từ mô hình thứ hai tính toán cùng một ngôn ngữ. Các tỷ lệ cược là bạn sẽ sử dụng cảm ứng theo độ dài của biểu thức, trạng thái trong máy, quy tắc trong ngữ pháp, v.v.

Tôi chưa thấy điều này được thực hiện với Lambda và TM (mặc dù tôi chắc chắn 99% là có thể), nhưng tôi chắc chắn đã thấy loại điều này để chứng minh sự tương đương của NFA và các biểu thức thông thường. Trước tiên, bạn hiển thị một NFA có thể chấp nhận bất kỳ nguyên tử nào, sau đó sử dụng quy nạp, bạn tạo NFA chấp nhận liên kết / ghép / sao Kleene của bất kỳ NFA nhỏ hơn nào.

Sau đó, bạn làm ngược lại, để tìm RE cho bất kỳ NFA nào.

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.