Sự quyết định của ngôn ngữ ngữ pháp và tự động


16

Lưu ý đây là một câu hỏi liên quan đến việc học trong khóa học CS tại một trường đại học, nó KHÔNG phải là bài tập về nhà và có thể tìm thấy ở đây trong kỳ thi Fall 2011.

Đây là hai câu hỏi tôi đang xem từ một bài kiểm tra trước đây. Chúng dường như có liên quan, thứ nhất:

Để cho

FINITECFG={<G>∣G is a Context Free Grammar with |L(G)|<}

Chứng minh rằng là ngôn ngữ có thể quyết định. FINITECFG

và ...

Để cho

FINITETM={<M>∣M is a Turing Machine with |L(M)|<}

Chứng minh rằng là một ngôn ngữ không thể giải quyết được. FINITETM

Tôi hơi lạc lõng với cách giải quyết những vấn đề này, nhưng tôi có một vài hiểu biết mà tôi nghĩ có thể đi đúng hướng. Điều đầu tiên tôi biết là ngôn ngữ , nơiAREX

AREX={<R,w>∣R is a regular expression with wL(R)}

là một ngôn ngữ có thể quyết định (bằng chứng nằm trong Lý thuyết tính toán của Michael Sipser , trang 168). Nguồn tương tự cũng chứng minh rằng Ngữ pháp tự do bối cảnh có thể được chuyển đổi thành biểu thức chính quy và ngược lại. Do đó , cũng phải có thể quyết định vì nó có thể được chuyển đổi thành biểu thức chính quy. Điều này, và thực tế là A T Mkhông thể tin được, dường như có liên quan đến vấn đề này.ACFGATM

Điều duy nhất tôi có thể nghĩ đến là đi qua G để máy Turing cho (sau khi chuyển đổi G để một biểu thức chính quy) và A T M . Sau đó chấp nhận nếu G làm và từ chối nếu G không. Vì A T M là không thể giải quyết được, điều này sẽ không bao giờ xảy ra. Bằng cách nào đó tôi cảm thấy như mình đang phạm sai lầm ở đây, nhưng tôi không chắc nó là gì. Ai đó có thể xin vui lòng cho tôi mượn một bàn tay ở đây?AREXATMATM


5
"Ngữ pháp tự do ngữ cảnh có thể được chuyển đổi thành biểu thức chính quy và ngược lại" Điều đó không đúng (trừ khi bạn diễn giải nó là "tồn tại một CFG có thể được chuyển đổi thành biểu thức chính quy", nhưng tôi không nghĩ đó là những gì bạn có nghĩa là). Ngữ pháp thông thường có thể được chuyển đổi thành biểu thức thông thường. Không có thuật toán để chuyển đổi CFG thành biểu thức chính quy vì lý do đơn giản là hầu hết các ngôn ngữ không ngữ cảnh (nghĩa là tất cả các ngôn ngữ không ngữ cảnh không phải là ngôn ngữ thông thường) không thể được mô tả bằng biểu thức chính quy.
sepp2k

Câu trả lời:


9
  1. Chuyển đổi G thành Chomsky Bình thường . Theo cách này, đạo hàm trống duy nhất sẽ là biểu tượng bắt đầu không xuất hiện ở bất kỳ nơi nào khác và do đó, nếu có một số sản phẩm có thể tự tạo ra, thì ngữ pháp là vô hạn. Nếu không có sản phẩm như vậy tồn tại, mỗi biểu tượng sẽ chỉ có thể tạo ra một chuỗi các chuỗi hữu hạn, và sau đó ngữ pháp là hữu hạn. Vì vậy, xây dựng một biểu đồ có hướng trong đó mỗi sản xuất là một nút và mỗi biểu tượng bên trong sản xuất là một cạnh nhắm vào biểu tượng đó. Nếu đồ thị có một số chu kỳ, CFG là vô hạn, nếu không thì không. Do đó, một máy Turing cho có thể được xây dựng để thực hiện chính xác điều đó, và sau đó F IFINITECFG là quyết định.FINITECFG

  2. Giả sử rằng là có thể quyết định. Cho phép nói rằng H là một máy Turing rằng có một số chuỗi như là đầu vào và sử dụng chính nó như là một đầu vào để F Tôi N I T E T M . Nếu F I N I T E T M trả về true (nghĩa là H chỉ chấp nhận một ngôn ngữ hữu hạn), thì HFINITETMHFINITETMFINITETMHHchấp nhận đầu vào, dẫn đến mâu thuẫn vì bộ đầu vào là vô hạn (độ dài của đầu vào không bị ràng buộc, vì vậy chấp nhận bất kỳ chuỗi nào có thể vì đầu vào có nghĩa là chấp nhận một chuỗi vô hạn). Nếu trả về false (tức là ngôn ngữ của H là vô hạn), thì H từ chối đầu vào, nghĩa là ngôn ngữ của H là hữu hạn vì nó không chấp nhận bất kỳ đầu vào nào (tức là ngôn ngữ của nó trống), dẫn đến mâu thuẫn quá. Theo cách này, giả sử H tồn tại dẫn đến mâu thuẫn, và giả định này dựa trên giả định rằng F I N I TFINITETMHHHH là quyết định. Vì vậy, do mâu thuẫn, chúng ta có F I N I T E T M không thể quyết định được.FINITETMFINITETM

Nguồn tương tự cũng chứng minh rằng Ngữ pháp tự do bối cảnh có thể được chuyển đổi thành biểu thức chính quy và ngược lại.

Tôi thực sự nghi ngờ rằng Sipser sẽ nói rằng, bạn có thể đọc sai hoặc hiểu sai. Điều này có nghĩa là các ngữ pháp không ngữ cảnh tạo ra chính xác các ngôn ngữ giống như các ngữ pháp tuyến tính bên phải. Điều này là sai; các ngữ pháp tuyến tính bên phải tạo ra là một tập hợp con chính xác của các ngôn ngữ ngữ pháp không ngữ cảnh dp. Điều đó nói rằng, cách bạn cố gắng sử dụng các ngôn ngữ thông thường để trả lời các câu hỏi chỉ dẫn bạn đến hư không.

Như bạn có thể thấy ở trên trong các bằng chứng của tôi, hai câu hỏi thực sự là hai câu hỏi rất khác biệt, không liên quan. Nó chỉ xảy ra rằng họ đã được từ tương tự.


1
Tôi có một số vấn đề sau bằng chứng hai. OK để bạn vượt qua H đến G, vâng? Nếu G trả về true hơn H là hữu hạn, điều đó có ý nghĩa. Tuy nhiên, tôi không nhận được bộ đầu vào là vô hạn, đầu vào mà bạn đang giới thiệu là gì?
BrotherJack

1
HH

1
ĐỒNG Ý. Điều đó dường như có ý nghĩa. Sẽ chính xác nếu coi đầu vào đó là "bất kỳ chuỗi nào có thể có trong ngôn ngữ đầu vào H"?
BrotherJack

1
@BrotherJack - Tôi đã chỉnh sửa câu trả lời để làm cho điểm đó rõ ràng hơn.
Victor Stafusa

1
Giải thích tuyệt vời! Cảm ơn vi đa danh thơi gian cho tôi.
BrotherJack

2

FINITECFG

LNxLN

LLN

N2NLL

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.