2013-12-11 14 views

Trả lời

8

Mỗi chuyển đổi trong DFA đọc một ký tự đầu vào, sau một chuyển đổi, sau đó chuyển sang ký tự tiếp theo của đầu vào. Khi tất cả đầu vào đã được đọc, DFA chấp nhận nếu nó ở trạng thái chấp nhận và từ chối khác.

Bạn có thể trực tiếp mô phỏng điều này bằng máy Turing. Xây dựng kiểm soát trạng thái hữu hạn của máy Turing bằng cách tạo một trạng thái cho mỗi trạng thái trong DFA. Đối với mỗi lần chuyển đổi trong DFA trên ký tự c, hãy thay thế sự chuyển tiếp đó trong TM bằng một ký tự, đọc ký tự c, ghi lại một số ký tự tùy ý vào băng (không quan trọng) và sau đó di chuyển đầu băng sang phải (đến vị trí tiếp theo trên băng). Sau đó, đối với mỗi tiểu bang, giới thiệu quá trình chuyển đổi trên biểu tượng trống từ trạng thái đó sang trạng thái chấp nhận của TM hoặc trạng thái từ chối của TM (dựa trên trạng thái đó là chấp nhận hoặc từ chối). TM này có hiệu quả chạy DFA bằng cách đẩy thủ công qua chuỗi đầu vào và cuối cùng quyết định có chấp nhận hoặc từ chối vào cuối chạy hay không.

Hy vọng điều này sẽ hữu ích!

+0

Khi nào xảy ra khi ký tự c được đọc mà không dẫn đến chuyển đổi trạng thái? Là một nhân vật tùy ý được viết và đầu băng di chuyển phải không? – Paradox

+0

@Paradox Theo hầu hết các định nghĩa của DFA, DFA phải có một quá trình chuyển đổi được xác định cho từng ký tự và mỗi trạng thái. Tương tự như vậy, hầu hết các TM được định nghĩa theo cách cho phép bạn hạn chế những loại biểu tượng nào có thể được nạp dưới dạng đầu vào, và vì vậy bạn sẽ không bao giờ phải lo lắng về điều này: bất kỳ biểu tượng TM nào có thể gặp phải sẽ là thứ mà DFA sẽ có chuyển đổi được xác định cho. Ngoài ra, nếu bạn không có giới hạn đó, chỉ cần từ chối - ngôn ngữ của DFA bị hạn chế chỉ sử dụng các ký tự từ bảng chữ cái, vì vậy nếu bạn thấy ký tự nước ngoài, bạn biết chuỗi không có trong ngôn ngữ. – templatetypedef

Các vấn đề liên quan