Sự khác biệt giữa TM chấp nhận và quyết định ngôn ngữ là gì?


7

Thành thật mà nói tôi rất khó chịu với các tài liệu ngay bây giờ. Có một số điều tôi có thể hiểu, nhưng nhiều điều tôi vẫn chưa làm được.

Nhiệm vụ đầu tiên của tôi là hỏi tôi trong một câu hỏi (mà tôi biết cách làm) để đưa ra một mô tả đầy đủ về một TM chấp nhận một ngôn ngữ L={x{0,1}x is divisible by 4}. Tôi biết rằng bất kỳ chuỗi nhị phân kết thúc bằng00 chia hết cho 4, vì vậy {00,100,1100,1000,11100,11000,10100,10000,} là ngôn ngữ mà TM này chấp nhận.

Nhưng về chủ đề (un) tính quyết định: Tôi biết rằng một ngôn ngữ có thể quyết định được nếu tồn tại một TM chấp nhận tất cả các chuỗi trong và chỉ các chuỗi từ ngôn ngữ đó - và cùng một TM từ chối tất cả các chuỗi và chỉ các chuỗi không có trong ngôn ngữ đó.

Điều này dẫn đến câu hỏi: sự khác biệt giữa máy Turing chấp nhậnquyết định ngôn ngữ là gì?


1
Thông thường, máy Turing chấp nhận (hoặc từ chối ) một chuỗi trong một số ngôn ngữ, trong khi nó quyết định một số ngôn ngữ. Nói cách khác, ngôn ngữ một máy TuringM quyết định chính xác là tập hợp các chuỗi nó chấp nhận .
Pål GD

Câu trả lời:


8

Trong những tình huống như thế này, nơi bạn đang tự hỏi về sự khác biệt giữa hai cụm từ, điều cần làm là tìm kiếm một số định nghĩa và suy nghĩ về chúng. Bạn sẽ khám phá một số biến thể, có lẽ một cái gì đó như thế này:

  1. Một cỗ máy "ăn" một ngôn ngữ L nếu đầu vào x nó dừng lại và đầu ra 1 nếu xL0 nếu không thì.

  2. Một cỗ máy "uống" một ngôn ngữ L nếu đầu vào xnó dừng lại ở accepttrạng thái khixLvà ở rejecttrạng thái nếuxL.

  3. Một cỗ máy "đánh hơi" một ngôn ngữ L nếu đầu vào xnó dừng lại ở accepttrạng thái khixLvà không bao giờ chấm dứt nếu xL.

  4. Một cỗ máy "ngấu nghiến" một ngôn ngữ L nếu đầu vào xnó đạt đến OKtrạng thái khixLvà không bao giờ vào OKnhà nước khác.

  5. Một cỗ máy "nhai" một ngôn ngữ L nếu đầu vào xnó dừng lại ở trạng thái 0khixLvà không bao giờ chấm dứt hoặc tạm dừng ở trạng thái 1khixL.

Tất cả đều trông giống nhau nhưng đều hơi khác nhau. Bạn nên mong đợi một số định nghĩa sẽ bị phá vỡ một chút (vì bạn đã nhận được nó từ Wikipedia hoặc ghi chú của bạn cùng lớp), hoặc diễn đạt theo một cách kỳ lạ phù hợp với nhu cầu của một texbook cụ thể, v.v.

Điều quan trọng nhất cần làm là tìm ra những định nghĩa thực sự đang cố gắng truyền đạt. Nếu chúng là những định nghĩa cơ bản mà mọi người đề cập đến, có khả năng chúng sẽ cho bạn biết điều gì đó quan trọng. (Trong một bài viết nghiên cứu, đôi khi người ta đưa ra các định nghĩa để làm tê liệt bộ não của độc giả.) Một khi các khái niệm đã rõ ràng, việc họ được gọi là gì không quan trọng. Ngoài ra, trong trường hợp nhầm lẫn về thuật ngữ, bạn sẽ luôn có thể giải quyết một cách khéo léo sự hiểu lầm có thể xảy ra bởi vì bạn đã biết những khái niệm nào sẽ xảy ra.

Trong trường hợp hiện tại, thực sự có hai khái niệm có thể. Một trong đó một máy luôn tạm dừng và báo hiệu chấp nhận / không chấp nhận theo một cách nào đó, ví dụ bằng cách tạm dừng ở một số trạng thái nhất định hoặc bằng cách xuất ra các ký hiệu nhất định. Khái niệm khác là khi một máy không phải lúc nào cũng dừng lại và nó sử dụng tạm dừng để biểu thị sự chấp nhận và không dừng lại để biểu thị sự không chấp nhận.

Một bài tập hay là tìm ra định nghĩa nào trong năm định nghĩa nêu trên tương ứng với khái niệm nào trong hai khái niệm (và định nghĩa nào không rõ ràng, nếu có). Nhưng ngay cả trước khi tập thể dục, bạn cần biết tại sao đây là hai khái niệm khác nhau! Bạn cần nhận thức được một ngôn ngữ thuộc một nhưng không phải là khái niệm khác.

Rắc rối với việc học toán là bạn phải đồng thời học các cụm từ mới sự uốn khúc của chúng, tìm ra lý do tại sao mọi người phát minh ra chúng.


1
+1 vì không bị ấn tượng bởi từ vựng CS đôi khi được sử dụng không nhất quán và tạo nên từ vựng riêng (miễn là một định nghĩa rõ ràng được cung cấp)
David Tonhofer

8

Có sự khác biệt lớn. Một máy turing "chấp nhận" một ngôn ngữ, nếu nó đi vào trạng thái chấp nhận cho bất kỳ đầu vào nào từ langue, trong khi nó "quyết định" ngôn ngữ nếu nó "chấp nhận" nó đi vào trạng thái từ chối cho bất kỳ đầu vào nào không có ngôn ngữ.

Đây là những khác nhau, bởi vì có một điều thứ ba mà máy Turing có thể làm: không bao giờ dừng lại. Máy Turing như vậy chấp nhận ngôn ngữ, nhưng không quyết định nó.

Xem thêm câu hỏiđịnh nghĩa khác về ngôn ngữ có thể quyết định trên WP .


Tôi không biết, nơi tôi đến từ "chấp nhận và quyết định" là từ đồng nghĩa, trong khi tùy chọn thứ ba là "nhận biết".
Andrej Bauer

@AndrejBauer: Thật vậy, thuật ngữ này dường như không hoàn toàn thống nhất. Nhưng tôi đã liên kết định nghĩa trên WikiPedia, trong đó nói rõ ràng "có thể quyết định" có nghĩa là bổ sung của nó cũng có thể quyết định được.
Jan Hudec

3

Chúng thường được sử dụng như từ đồng nghĩa. Trong ví dụ của bạn, trước tiên, Máy Turing phải đi đến hết đầu vào, sau đó kiểm tra xem hai chữ số ngoài cùng bên phải là 0, như bạn đề xuất.


7
Không, thực sự "quyết định" có nghĩa là nó chấp nhận hoặc từ chối, trong khi nó có thể chấp nhận hoặc không bao giờ dừng lại.
Jan Hudec

Thuật ngữ dường như không được cố định ở đây. Tôi không đồng ý với Jan, nhưng tôi không thực sự quan tâm, tôi hoàn toàn có thể thích nghi với thuật ngữ của Jan.
Andrej Bauer
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.