Sự mơ hồ trong ngôn ngữ thông thường và không có ngữ cảnh


11

Tôi hiểu các tuyên bố sau đây là đúng:

  1. Hai dẫn xuất riêng biệt của một chuỗi trong CFG đã cho đôi khi có thể quy cùng một cây phân tích cú pháp cho chuỗi.
  2. Khi có đạo hàm của một số chuỗi trong một CFG đã cho thuộc tính các cây phân tích khác nhau, CFG không rõ ràng.
  3. Một số ngôn ngữ không ngữ cảnh được tạo bởi các CFG mơ hồ cũng được tạo bởi các CFG không rõ ràng.
  4. Một số ngôn ngữ sao cho các CFG duy nhất có thể tạo ra chúng (và có một số ngôn ngữ như vậy) là mơ hồ.

Q1. Tôi hiểu điều đó cũng không thể chắc chắn được nếu một CFG tùy tiện là mơ hồ, theo nghĩa của điểm 3 ở trên. Hay đúng hơn là không thể tin được liệu một ngôn ngữ không ngữ cảnh có mơ hồ hay không, theo nghĩa của điểm 4? Hay cả hai đều không thể giải quyết được?

Quý 2 Điểm 1-4 nào trở thành sai khi chúng ta thay thế "không ngữ cảnh" bằng "thông thường"? Có phải ngữ pháp và ngôn ngữ thông thường luôn không rõ ràng?


Các ngôn ngữ bạn đề cập ở điểm 4 là "Hoàn toàn mơ hồ". Đối với Q1, tôi nghĩ rằng không thể chắc chắn liệu GRAMMAR có mơ hồ hay không. Do đó, cả 3 và 4 đều không thể giải quyết được.
Lamine

Đúng, điểm 4 ngôn ngữ được gọi là "mơ hồ vốn có".
dubiousjim

4
Q1: cả hai không thể giải quyết được. Q2: 1 là không thể, bởi vì có nhiều nhất một thiết bị đầu cuối không xuất hiện dưới bất kỳ hình thức cảm tính nào, do đó, mọi dẫn xuất đều ở ngoài cùng bên phải và ngoài cùng bên phải; 2 điều đó vẫn đúng; 3 vẫn đúng nếu bạn loại bỏ bit `` cũng ''; 4 không còn đúng nữa, chẳng hạn như bằng cách xác định ngữ pháp của bạn, bạn sẽ có được một từ rõ ràng.
Sylvain

1
@Sylvain làm cho câu trả lời?
Yuval Filmus

@Sylvain, cảm ơn, và vâng làm cho câu trả lời. Tôi có thể xác nhận tôi đã hiểu không? re 2: Vì vậy, có tồn tại một ngữ pháp thông thường có thể tạo ra cùng một chuỗi với các cây phân tích khác nhau không? (Kể từ khi tôi bắt gặp một tài liệu tham khảo về "NFA mơ hồ", nhưng tôi không chắc nó sử dụng "ambig" theo nghĩa của tôi). Re 3 và 4, tôi nghĩ rằng bạn đang nói rằng một số ngôn ngữ thông thường có thể được tạo ra bởi các ngữ pháp thông thường mơ hồ, nhưng cũng sẽ luôn được tạo bởi một ngữ pháp thông thường unambig?
dubiousjim

Câu trả lời:


19

Giới thiệu về Q1: Cả vấn đề mơ hồ (được đưa ra là CFG, cho dù đó là mơ hồ) và vấn đề mơ hồ vốn có (được đưa ra là CFG, liệu ngôn ngữ của nó có mơ hồ hay không, tức là liệu có bất kỳ CFG tương đương nào không rõ ràng hay không). Dưới đây là các tài liệu tham khảo ban đầu:


Giới thiệu về Q2: Một ngữ pháp thông thường là một ngữ pháp không ngữ cảnh "một chiều", trong đó nhiều nhất là một nonterminal xuất hiện trong bất kỳ phần quy tắc nào, và trong đó nonterminal nằm ở cuối (trong ngữ pháp tuyến tính bên phải ) hoặc đầu tiên (trong ngữ pháp tuyến tính bên trái ) vị trí. Các ngữ pháp như vậy dễ dàng được dịch sang automata trạng thái hữu hạn tương đương (đại khái bằng cách coi mỗi nonterminal là một trạng thái), điều này không rõ ràng nếu ngữ pháp thông thường không rõ ràng. Lớp các ngữ pháp thông thường rõ ràng và automata không rõ ràng đã được nghiên cứu đặc biệt bởi Stearns và Hunt (1985) , người cho thấy rằng họ thích các thuật toán có thể điều chỉnh được cho vấn đề đưa vào.

  1. βAγβαγAαAX1,,XmAX1Xm

    γAηBθABAαγαηBθBβγAηβθγαηβθ(luôn luôn lấy đạo hàm ngoài cùng bên trái dưới bất kỳ hình thức cảm tính nào) hoặc các đạo hàm ngoài cùng bên phải áp đặt một trật tự cố định cho việc truy cập các cây phái sinh, và sau đó có một đạo hàm duy nhất cho một cây phái sinh nhất định.

    Trong một ngữ pháp không ngữ cảnh tuyến tính , không có sự lựa chọn nào như vậy, vì có nhiều nhất một nonterminal ở bất kỳ dạng cảm tính nào, và có một đạo hàm duy nhất cho một cây phái sinh nhất định, cả hai bên trái và ngoài cùng bên phải.

  2. www

  3. và 4. Nếu bạn có chế độ xem automata trạng thái hữu hạn, điều đó đủ để xác định máy tự động mơ hồ của bạn để có được một máy tự động rõ ràng cho cùng một ngôn ngữ: sẽ có một lần chạy cho bất kỳ từ nào. Máy tự động xác định này tương đương với một ngữ pháp thông thường rõ ràng. 

    SAB,Aa,BaaSAaSBaSa

O(|G|2)(q,q)qq


1

GΣ

Tôi hoàn toàn không hiểu về loại ngôn ngữ mà bạn nói trong 4. Mọi ngôn ngữ CF đều có một ngữ pháp mơ hồ.

Quý 2 Mọi thứ đều có thể quyết định nếu bạn có một thỏa thuận với một ngữ pháp thông thường. Bạn chỉ nên xây dựng DFA tối thiểu và sử dụng nó, bạn có thể xây dựng ngữ pháp rõ ràng. Nếu bạn có thỏa thuận với ngôn ngữ thông thường được xác định bởi ngữ pháp CF, câu trả lời là không - xem Q1.


Cảm ơn, làm rõ lại quý 2. Các câu hỏi về một ngôn ngữ thông thường có thể được quyết định nếu ngôn ngữ được chỉ định bởi một ngữ pháp thông thường; nhưng điều đó chưa có nghĩa là họ có thể quyết định được nếu ngôn ngữ được chỉ định bởi CFG --- đó là những gì bạn đang nói, phải không? Vì vậy, chúng ta có biết đó là trường hợp câu hỏi về sự không rõ ràng và do đó không thể giải quyết được đối với các CFG tùy ý cũng không thể giải quyết được khi bị giới hạn trong các CFG đó xảy ra để tạo ngôn ngữ thông thường?
dubiousjim

Không thể, nhưng họ luôn luôn quyết định. Ý tôi là khi bạn có một thỏa thuận với một ngôn ngữ được mô tả bởi một ngữ pháp thông thường - lớp con của CFG, bất kỳ câu hỏi nào bạn thích đều có thể quyết định được. Nhưng một số CFG không thường xuyên có thể tạo ra một ngôn ngữ thông thường và thậm chí không thể xác minh được nếu CFG tạo ra một ngôn ngữ thông thường.
Alexander Rubtsov

2
@ alexandr-rubtsov "Khi bạn đối phó với một ngôn ngữ được mô tả bởi một ngữ pháp thông thường, bất kỳ câu hỏi nào bạn thích đều có thể quyết định được". Điều này có vẻ như một tuyên bố lạc quan quá mức ...
J.-E.

Cảm ơn, tôi có nghĩa là "có thể" trong chức năng hùng biện của nó, không phải theo nghĩa "ai biết?"
dubiousjim

@ J.-E.Pin vâng, tôi nên tinh tế hơn và nói điều gì đó như «tất cả các câu hỏi tự nhiên như sự mơ hồ».
Alexander Rubtsov

0

Nó phụ thuộc vào việc bạn thay thế 'không ngữ cảnh' bằng 'thông thường' chỉ trước 'ngôn ngữ' hoặc trước mặt 'ngữ pháp'.

Tất cả các ngôn ngữ thông thường được tạo ra bởi các ngữ pháp thông thường , và đặc biệt, bởi các ngữ pháp thông thường không rõ ràng, ví dụ LL (1) ngữ pháp thông thường, tất cả đều không rõ ràng.

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.