Ý chính
Có thể nhận ra có nghĩa là bạn có thể xây dựng một quy trình tự động (chúng ta sẽ quay lại vấn đề đó sau), lấy một từ làm tham số sao cho
- Nếu quá trình tự động kết thúc, nó sẽ trả về CÓ hoặc KHÔNG.
- Quá trình tự động này không phải chấm dứt trên mỗi đầu vào, nhưng nó phải chấm dứt nếu từ đầu vào có trong ngôn ngữ.
Có thể nhận dạng đồng nghĩa với việc ngôn ngữ (hoặc, trong tiếng Anh, tập hợp tất cả các từ không có trong , nghĩa là bổ ngữ của nó) có thể nhận ra được. Lw∈Σ∗,w∉LL
Có thể quyết định có nghĩa là bạn có thể xây dựng một quy trình tự động lấy một từ làm đầu vào, sao cho
- Quá trình tự động luôn kết thúc
- Nó trả lời CÓ hoặc KHÔNG. Nếu nó trả lời CÓ, từ đó nằm trong ngôn ngữ, nếu nó trả lời KHÔNG, thì từ đó không có trong ngôn ngữ.
Một kết quả quan trọng là có thể quyết định được khi và chỉ khi có thể nhận biết và đồng nhận biết.LLL
Ý tưởng để chứng minh kết quả này là bạn có thể xây dựng một quy trình tự động từ các quy trình có thể nhận biết và đồng nhận biết cho bạn, bằng cách xen kẽ các bước từ cả hai quy trình, cho đến khi một trong số đó cung cấp cho bạn câu trả lời CÓ. Một trong những điều đó phải làm như vậy, vì mỗi từ đều có hoặc không có trong ngôn ngữ)
Quy trình tự động
Không quá trang trọng, nhiều loại máy đã được thiết kế và về cơ bản tất cả chúng đều được liên kết với các loại ngôn ngữ (những loại này phụ thuộc vào các công cụ cần thiết để xác định ngôn ngữ đó. Để biết thêm thông tin, Chomsky HVELy có thể trợ giúp).
Ý nghĩa thông thường của quy trình tự động, liên quan đến tính quyết định, là Máy Turing. Bạn có thể định nghĩa Máy Turing sao cho có thể:
- Nhận giá trị từ đầu vào
- Lưu trữ giá trị
- Đọc các giá trị được lưu trữ
- Tính toán các phép toán cơ bản trên các giá trị
- Kiểm tra các thuộc tính toán học cơ bản trên các giá trị đó và hành động tương ứng, cuối cùng lặp lại.
Về cơ bản, Máy Turing có thể làm mọi thứ bạn có thể xác định trong một chương trình, ngoại trừ nó là một đối tượng toán học, với bộ nhớ vô hạn và thời gian dành cho việc tính toán. Nó không luôn luôn chấm dứt.
Một thuộc tính quan trọng khác của Turing Machines là bạn có thể mô tả máy Turing là một từ duy nhất (đây là mã hóa) và tồn tại một máy Turing, được đưa vào làm đầu vào mã hóa của máy và từ , có thể mô phỏng tính toán của trên đầu vào . Điều này sẽ quan trọng trong một chút.w M wMwMw
Chúng ta hãy chỉ ra rằng các ngôn ngữ thông thường - gần như là loại ngôn ngữ đơn giản nhất bạn có thể nghĩ theo quan điểm toán học - có thuộc tính đặc biệt mà chúng được đóng dưới bổ sung. Điều này về cơ bản có nghĩa là trên các ngôn ngữ đó, các khái niệm về tính dễ nhận biết và tính quyết định là tương đương. Điều này không giữ được khi bạn di chuyển lên trong Chomsky HVELy.
Ví dụ về một ngôn ngữ không thể giải quyết được
Chúng tôi sẽ nghiên cứu vấn đề Dừng . Câu hỏi đặt ra là, chúng ta có thể xây dựng một máy Turing rằng, do mã hóa của một máy Turing và một từ , quyết định thời tiết chấm dứt vào đầu vào ?w M wMwMw
Rõ ràng, điều này có thể nhận ra , vì chúng ta chỉ cần mô phỏng trên cho đến khi nó kết thúc, và khi nó xảy ra, hãy nói CÓ. Tuy nhiên, nếu không bao giờ chấm dứt, chúng tôi sẽ không nói KHÔNG, vì vậy chúng tôi nhận ra ngôn ngữ này, nhưng không quyết định nó. Người ta đã chứng minh rằng ngôn ngữ này không thể được quyết định bởi Máy Turing. Điều này liên quan đến một sơ đồ toán học thông thường: một đối số đường chéo, mà tôi sẽ không gọi là trực quan. Bạn có thể kiểm tra bản phác thảo bằng chứng này để làm quen với nó.w MMwM
Tóm lại
Bạn sẽ không thể, đưa ra một ngôn ngữ, chỉ nêu nếu nó có thể quyết định hay không. Không có thuật toán nào có thể làm được điều đó và việc chứng minh một ngôn ngữ không thể quyết định sẽ cần một số suy nghĩ và có thể yêu cầu một số kiến thức về Turing Machines, đối số đường chéo, v.v ...
Tuy nhiên, đây là cách cá nhân của tôi để xử lý câu hỏi này. Thông thường, khi nghiên cứu một ngôn ngữ, tôi cho rằng nó có thể quyết định được, trừ khi nó cho thấy một số hình thức tham khảo về cách thức hoạt động của Turing Machine. Trong trường hợp đó, tôi bắt đầu cảnh giác và cố gắng xác định một thuật toán quyết định ngôn ngữ. Nếu điều này có vẻ không dễ dàng, đôi khi nó giúp phân chia công việc theo cả thuật toán nhận dạng và thuật toán đồng nhận. Nếu tôi vẫn không thể làm được, tôi sẽ cố gắng tạo mối liên hệ giữa ngôn ngữ này và ngôn ngữ khác không thể giải quyết được, chẳng hạn như "Nếu tôi có thể quyết định ngôn ngữ đó, tôi có thể quyết định vấn đề tạm dừng". Đây là một giảm Turing cho một vấn đề không thể giải quyết được, vì vậy vấn đề đầu tiên không thể quyết định được. Nếu tất cả những điều đó không thành công, tôi có thể thử sử dụng các đối số đường chéo, nhưng điều này có thể hơi khó khăn.