Tôi đang cố gắng để hiểu sự tồn tại của các ngôn ngữ không thể nhận ra. Để có được điều này, tôi cần biết tại sao một máy Turing chỉ nhận ra một ngôn ngữ chứ không phải nhiều ngôn ngữ. Tại sao lại thế này?
Tôi đang cố gắng để hiểu sự tồn tại của các ngôn ngữ không thể nhận ra. Để có được điều này, tôi cần biết tại sao một máy Turing chỉ nhận ra một ngôn ngữ chứ không phải nhiều ngôn ngữ. Tại sao lại thế này?
Câu trả lời:
Theo định nghĩa, ngôn ngữ được máy Turing nhận ra là tập hợp các chuỗi mà nó chấp nhận. Khi một đầu vào được đưa cho máy, nó có được chấp nhận hay không. Bất kỳ đầu vào cụ thể nào cho máy đó luôn được chấp nhận (bằng ngôn ngữ) hoặc luôn không được chấp nhận (không phải bằng ngôn ngữ). Vì vậy, không có cơ chế nào mà một máy Turing thậm chí có thể chấp nhận nhiều hơn một ngôn ngữ.
Hãy nghĩ về nó theo cách này: một TM giống như một máy tính có phần mềm được tải. Mỗi phần mềm làm một việc, phải không? Ví dụ, hãy nghĩ về máy tính của bạn và cho rằng nó chỉ có 1 chương trình được tải trong đó. Sau đó, PC + "photoshop" chỉ thực hiện photoshop, trong khi PC + "mine quét" chỉ quét mìn.
Vì vậy, máy Turing là một sinh vật rất đơn giản, trên mỗi lần chạy sẽ có một đầu vào duy nhất và đầu ra là có hoặc không . Trên đó đầu vào nó nói có, và trên đó nó nói không - điều này được đặt bởi "chương trình" của TM như được xác định bởi trạng thái và chức năng chuyển đổi của nó. Khi các mục này được sửa, "chương trình" sẽ được sửa và đối với mọi đầu vào đã cho, chỉ có một câu trả lời: Có hoặc Không (chấp nhận / từ chối). Điều này xác định chính xác một ngôn ngữ duy nhất = tất cả các đầu vào mang lại Có khi được trao cho TM.
Mặt khác, các thiết lập của tất cả TMS là tương đương với tập hợp các máy tính + "phần mềm" với tất cả các chương trình có thể. Bây giờ có thể quyết định nhiều ngôn ngữ hơn - nhưng vẫn có thể, mỗi TM cụ thể quyết định (hoặc nhận ra) chỉ một ngôn ngữ.
Turing Machine hoạt động như họ làm vì chúng tôi chọn định nghĩa chúng như vậy. Chúng ta có thể có các định nghĩa phức tạp hơn, nhưng câu hỏi là liệu nó có phục vụ mục đích hay không, liệu nó có cho phép chúng ta làm nhiều việc hơn không. Và, theo như chúng tôi biết, câu trả lời là không.
Rất dễ dàng để tạo ra các mô hình Máy Turing nhận ra hai ngôn ngữ. Cho các ngôn ngữ và L 2 , chúng ta có thể định nghĩa một TM có 2 loại trạng thái chấp nhận: một cho L 1 và một cho L 2 . Một TM sẽ được cho là chấp nhận L i nếu nó đi vào một lúc nào đó trạng thái chấp nhận tương ứng. Nhưng nó sẽ tiếp tục tính toán để xem liệu nó cũng có thể vào loại trạng thái chấp nhận khác hay không. Và chúng ta có thể yêu cầu nó dừng lại sau đó, hoặc có thể không. Sau đó bạn có thể xây dựng toàn bộ lý thuyết trên các máy như vậy. Nó sẽ hoạt động và phức tạp hơn rất nhiều so với những gì chúng ta thường làm.
Để trả lời tuyên bố của David Richerby rằng " không có cơ chế nào mà một máy Turing thậm chí có thể chấp nhận nhiều hơn một ngôn ngữ ", đó chỉ là do chúng tôi chọn không xem xét các cơ chế đó. Ngay cả khi bạn giới hạn TM ở mô hình rất chuẩn, bạn có thể nói rằng đầu vào được nhận dạng bằng ngôn ngữ khi TM tạm dừng ở trạng thái chấp nhận với số bước lẻ và ở L 2 khi TM chấp nhận với số bước chẵn Nhờ tính không xác định, điều này sẽ không ngăn TM nhận ra cả hai ngôn ngữ giao nhau.
Vấn đề là tất cả các loại biến thể có thể được sử dụng để làm lý thuyết. Ngoài ra các cách tiếp cận rất khác nhau đã được cố gắng để mô hình hóa tính toán là gì, chẳng hạn như tính toán lambda, logic tính toán, lý thuyết hàm đệ quy, v.v.
Người ta luôn chứng minh rằng không ai trong số họ làm bất cứ điều gì không thể thực hiện được bằng mô hình đơn giản của chúng tôi khi TM chỉ nhận ra một ngôn ngữ. Đến mức nó đã được phỏng đoán rằng nó làm bất cứ điều gì có thể được thực hiện. Đó được gọi là luận án Church-Turing . Đó là nền tảng của lý thuyết tính toán, theo như chúng ta biết, xác định ngôn ngữ nào có thể nhận ra hay không.
Vì vậy, chúng tôi cũng có thể sử dụng một mô hình đơn giản, vì một mô hình phức tạp sẽ làm cho cuộc sống của chúng tôi khó khăn hơn, mà không có bất kỳ lợi ích thực sự.
Tất nhiên, đôi khi chúng tôi sử dụng các mô hình khác vì chúng cho phép chúng tôi hiểu rõ hơn một số vấn đề.
Tôi muốn mở rộng một điểm trong câu trả lời của Richerby:
Khi một đầu vào được đưa cho máy, nó có được chấp nhận hay không.
Lý do cho điều này là máy Turing có tính xác định: được đưa ra cùng một trạng thái bắt đầu và trạng thái bắt đầu, nó sẽ luôn làm điều tương tự mỗi khi bạn chạy nó (hoặc chấm dứt ở cùng trạng thái chấp nhận hoặc trong cùng trạng thái từ chối hoặc lặp lại mãi mãi ).
Ngoài ra, chúng tôi có thể dễ dàng chứng minh rằng mọi máy Turing đều nhận ra chính xác một ngôn ngữ:
Giả sử, do mâu thuẫn, máy Turing M nhận ra hai ngôn ngữ riêng biệt L1 và L2. Vì L1 và L2 là khác biệt, nên phải tồn tại một chuỗi S ở L1 nhưng không phải ở L2 (không mất tính tổng quát - có thể là cách khác nhưng bằng chứng sẽ được tiến hành theo cách tương tự từ đây với L1 và L2 được trao đổi ). Bây giờ chạy M trên S. Nếu nó chấp nhận, thì sẽ đạt được mâu thuẫn vì khi đó S sẽ ở L2. Nếu nó không chấp nhận (từ chối hoặc lặp), thì sẽ đạt được mâu thuẫn vì S sẽ không nằm trong L1.
Máy Turing nhận ra một ngôn ngữ vì đó là định nghĩa của từ nhận dạng : Ngôn ngữ mà máy Turing nhận ra là tập hợp tất cả các chuỗi / đầu vào mà máy Turing chấp nhận.
Câu trả lời cho điều này phụ thuộc vào chính xác những gì bạn hiểu khi bạn nói "Máy Turing". Có ba thành phần cho bất kỳ mô hình tính toán nào (giới hạn đối với người quyết định / người chấp nhận ở đây):
Đối với máy Turing, cú pháp sẽ là bộ dữ liệu của bộ trạng thái, bảng chữ cái, chức năng chuyển tiếp, v.v. Các ngữ nghĩa sẽ định nghĩa một tính toán , đó là mô tả cách áp dụng hàm chuyển đổi để lấy được nội dung băng sau một số bước. Các tiêu chí chấp nhận là để nói, "khi điều này xảy ra, chúng tôi dừng lại và kết quả là điều đó".
Bây giờ, máy Turing chỉ có cú pháp và ngữ nghĩa đối với bạn hay bạn có bao gồm tiêu chí chấp nhận không? Nếu bạn làm trước đây, bất kỳ TM nào cũng có thể chấp nhận nhiều ngôn ngữ bằng cách sử dụng các tiêu chí chấp nhận khác nhau; thậm chí bạn có thể hình dung phê bình chấp nhận cho phép sử dụng nhiều ngôn ngữ được chấp nhận (ví dụ, nghĩ về các TM hai tham số). Tuy nhiên, nếu bạn thực hiện sau, không có phòng ngọ nguậy và tiêu chí chấp nhận thông thường thực sự cho phép chính xác một ngôn ngữ trên mỗi TM (thuộc loại này).
Các thông thường định nghĩa và sử dụng các thuật ngữ trong TCS bao gồm tất cả ba thành phần. Điều đó có ý nghĩa bởi vì, đặc biệt, việc thay đổi tiêu chí chấp nhận có thể thay đổi lớp đối tượng mà máy tự động thể hiện quyết liệt , vì vậy chúng ta cần sửa tiêu chí để biết chúng ta nói về điều gì.
Ví dụ, so sánh automata hữu hạn và Büchi automata . Cú pháp và ngữ nghĩa hoàn toàn giống nhau, nhưng một người chấp nhận các từ hữu hạn trong khi cái còn lại chấp nhận các từ vô hạn!
Cố gắng tìm hiểu điều gì sẽ xảy ra nếu bạn cắm tiêu chí chấp nhận của Büchi automata vào định nghĩa TM.
Bây giờ, tại sao tiêu chí chấp nhận thông thường là một ý nghĩa? Miễn là bạn giới hạn bản thân trong ngôn ngữ của các chuỗi hữu hạn, sẽ không có nhiều thay đổi bằng cách có nhiều ngôn ngữ trên mỗi TM, ở cấp độ khái niệm: chúng tôi vẫn có thể chấp nhận cùng một bộ ngôn ngữ. Vì vậy, chúng tôi dính vào mô hình đơn giản hơn. Tuy nhiên, điều đó không có nghĩa là một mô hình có liên quan nhiều hơn không thể hữu ích cho việc mô hình hóa trong các ứng dụng - nhưng điều đó nằm ngoài phạm vi của TCS (nắm giữ thẩm quyền xác định).
.
Một ngôn ngữ là một tập hợp các chuỗi. Không phải là sự kết hợp của hai ngôn ngữ L1 và L2 là một chuỗi các chuỗi (hãy gọi nó là L3), và đó sẽ là một ngôn ngữ khác? Sau đó, nếu máy Turing nhận ra cả hai ngôn ngữ, nó sẽ nhận ra L3, một ngôn ngữ duy nhất.
không có câu trả lời nào khác chỉ ra sự tồn tại của (các) Máy Turing phổ dụng như được mô tả / phát hiện đầu tiên bởi Turing trong bằng chứng tạm dừng của mình. có, một TM chấp nhận một ngôn ngữ đệ quy đệ quy duy nhất, nhưng UTM có thể nhận ra bất kỳ ngôn ngữ liệt kê đệ quy nào nếu nó được mã hóa trên đầu vào cùng với chuỗi đầu vào. Vì vậy, câu hỏi có một số chất lượng zenlike. Cả hai TM chỉ chấp nhận một ngôn ngữ duy nhất và tất cả các ngôn ngữ có thể mã hóa có thể.