Tại sao máy Turing nhận ra chính xác một ngôn ngữ?


13

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?


12
Tôi nghi ngờ rằng bạn có thể không có ý tưởng rõ ràng về ý nghĩa của "ngôn ngữ". Bạn có thể nói những gì bạn tin một "ngôn ngữ" là?
Eric Lippert

Tại sao bạn cần phải gõ nó? Theo cách bạn nghĩ nó có thể tạo ra sự khác biệt?
babou

Câu trả lời:


29

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ữ.


6
"Theo định nghĩa" là chính xác những gì tôi sẽ nói.
Dave Clarke

1
@DaveClarke Tất nhiên, đó là theo định nghĩa. Nhưng điều này có vẻ hơi ngắn đối với tôi, vì nó cũng nói rằng chúng ta có thể làm cho định nghĩa của chúng ta khác nhau, để một TM sẽ chấp nhận hai ngôn ngữ hoặc bất kỳ số nào. Tôi thực sự không đồng ý với tuyên bố của David Richerby rằng không có cơ chế nào mà một TM có thể chấp nhận hai ngôn ngữ: đó chỉ là vì chúng tôi chọn bỏ qua chúng và chúng tôi có thể làm khác. Do đó, câu hỏi không được trả lời đầy đủ, imho, nếu chúng tôi không giải thích điều gì biện minh cho việc đó.
babou

2
Tôi nghĩ vấn đề ở đây là ngôn ngữ đang được sử dụng để mô tả "ngôn ngữ". Một máy Turing chấp nhận mọi thứ ở dạng chuỗi bất kể định nghĩa ngôn ngữ của chúng tôi. TM định nghĩa ngôn ngữ theo những gì nó chấp nhận, điều này không giống với sự hiểu biết về ngôn ngữ (con người) của chúng ta. Đây là lý do tại sao câu trả lời này là tốt và "... trả lời đầy đủ".
David Barker

2
Tôi đồng ý với David, OP rất có thể đã đọc ở đâu đó rằng máy Turing chỉ thừa nhận một ngôn ngữ và đang cố gắng hiểu điều đó có nghĩa là gì. Cho rằng điều này có lẽ đến từ một nguồn bình thường, chúng ta có thể giả sử rằng họ đang sử dụng định nghĩa thông thường của "ngôn ngữ" như được định nghĩa trong lý thuyết tính toán, chứ không phải bất kỳ định nghĩa nào khác. Định nghĩa có thể là tùy ý, nhưng nó là một định nghĩa được hiểu rõ và đồng ý.
Cort Ammon - Phục hồi Monica

3
Máy Turing chấp nhận hai ngôn ngữ là máy Turing chấp nhận ngôn ngữ là sự kết hợp của hai ngôn ngữ.
Simon Richter

9

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à 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: 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 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ữ.


Điểm nhỏ: Tôi sẽ không nói rằng một TM xuất ra "có hoặc không", vì điều này bỏ qua việc hủy bỏ. Đơn giản hóa này có thể gây ra vấn đề hơn nữa về sau.
chi

4

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ữ 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.L1L2L1L2Li

Để 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.L1L2

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 tin rằng đoạn đầu tiên là một chút sai lệch. Tôi sẵn sàng cá rằng OP không hỏi về lý do tại sao chúng ta định nghĩa mọi thứ theo cách này, nhưng họ thậm chí không biết đó là trường hợp. "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 không" khiến bạn có vẻ như cần phải biết mục đích của một khái niệm trước khi bạn có thể đặt tên cho nó - theo tôi, đó là một điều xấu cách học
thú vị khác

OP nói rằng anh ấy muốn biết tại sao TM chỉ nhận ra một ngôn ngữ để hiểu thứ khác. Tôi đang trả lời anh ta, họ làm bởi vì chúng tôi định nghĩa họ theo cách đó. Tôi nói thêm, điều đó đúng, rằng chúng ta có thể sử dụng các định nghĩa khác nhau, nhưng nó sẽ không thay đổi lý thuyết. Đó là một cách để nói với anh ta rằng bất cứ điều gì anh ta theo đuổi, sự lựa chọn định nghĩa là không quan trọng, và tính dễ nhận biết có thể được xác định để bao gồm chính xác các bộ giống nhau. Lý do chọn định nghĩa là sự tiện lợi và hiệu quả, và đó là lý do tại sao chúng phát triển theo thời gian, cũng như cách các khái niệm được đặt tên hoặc ghi chú.
babou

Được rồi, điều đó có ý nghĩa. Tôi nghĩ rằng tôi chủ yếu phản đối việc sử dụng "tinh vi" - nó ngụ ý rằng một định nghĩa ít đơn giản hơn là mong muốn.
thú vị khác

3

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.


2

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.


2
Chào mừng bạn đến với Khoa học máy tính ! Câu trả lời của bạn là (IMO) đúng nhưng tôi không nghĩ nó bổ sung vào các câu trả lời đã có từ trước. Chúng tôi có rất nhiều câu hỏi chưa được trả lời và sẽ rất thú vị và hữu ích hơn khi trả lời một trong những câu hỏi đó hơn là lặp lại các câu trả lời hiện có.
David Richerby

1
Cảm ơn! Lúc đầu tôi thực sự không thấy câu trả lời được chấp nhận (mà tôi nghĩ là tốt) bởi vì nó quá ngắn và tôi cảm thấy như những câu trả lời khác không trả lời câu hỏi một cách đơn giản.
thú vị khác

1

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):

  • cú pháp,
  • ngữ nghĩa học,
  • tiêu chí chấp nhận.

Đố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ạnBü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).


0

M1L1L2L1L2s1s1L1s1L2M1s1s1L2M1s1sL2sL1

MLsLMssMsL

sLMs

ATM .


Không cần thiết phải chứng minh rằng một TM chỉ nhận ra một ngôn ngữ: đó là ngay lập tức từ định nghĩa "nhận biết". Với định nghĩa đó, thậm chí không rõ ý nghĩa của việc TM chấp nhận nhiều hơn một ngôn ngữ (như bạn cho là trong câu đầu tiên của bạn) hoặc liệu bất kỳ suy luận nào từ giả định đó (như trong câu thứ ba của bạn) là hợp lệ. Bằng chứng bằng mâu thuẫn chỉ hoạt động nếu các khoản khấu trừ kín nước: ở đây, lỗi có thể nằm ở giả định về cách một TM nhận ra TM hoạt động, thay vì giả định rằng một máy như vậy tồn tại.
David Richerby 11/05/2015

-2

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.


2
Nhưng máy Turing không nhận ra cả hai ngôn ngữ trừ khi chúng thực sự giống nhau. Nhận biết L1 có nghĩa là nó không chấp nhận bất kỳ chuỗi nào ngoài L1; nhận ra L2 có nghĩa là nó không chấp nhận bất cứ điều gì ngoài L2. Nếu L1 và L2 khác nhau, nó không thể nhận ra cả hai.
David Richerby

-3

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ể.


4
{M,xM accepts x}

& nó khác với những gì được viết như thế nào?
vzn

2
Nhận dạng mã hóa ngôn ngữ không giống như nhận dạng ngôn ngữ.
David Richerby 11/05/2015

có chính xác như đã nêu
vzn

1
{(m,x)m=M,}xm
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.