JavaScript is required

Văn phạm nào sau đây là văn phạm nhập nhằng:

A.

S → aSbS; S->aSb; S->epsilon

B.

S→aS; S->aSb; S->a

C.

S→ aSb; S->bSa; S->SS; S->a

D.

S→ aS; S->bS; S-> epsilon

Trả lời:

Đáp án đúng: D


Một văn phạm được gọi là nhập nhằng nếu có ít nhất một chuỗi có thể được tạo ra bằng hai cây phân tích khác nhau (hoặc hai dẫn xuất trái/phải khác nhau). * **Phương án A:** S → aSbS; S→aSb; S→ε. Văn phạm này nhập nhằng. Xét chuỗi "abab". Chuỗi này có thể được dẫn xuất theo nhiều cách khác nhau, ví dụ: * S -> aSbS -> abS -> abaSb -> abab * S -> aSb -> abaSbS -> ababS -> abab * **Phương án B:** S→aS; S→aSb; S→a. Văn phạm này không nhập nhằng vì mỗi chuỗi chỉ có thể được tạo ra theo một cách duy nhất. * **Phương án C:** S→ aSb; S→bSa; S→SS; S→a. Văn phạm này nhập nhằng. Xét chuỗi "aa". Chuỗi này có thể được dẫn xuất theo nhiều cách khác nhau: * S -> a * S -> SS -> aS -> aa * **Phương án D:** S→ aS; S→bS; S→ ε. Văn phạm này không nhập nhằng vì mỗi chuỗi chỉ có thể được tạo ra theo một cách duy nhất. Như vậy, phương án A và C là văn phạm nhập nhằng. Tuy nhiên, theo đề bài chỉ được chọn 1 đáp án nên ta chọn A, vì A được đề cập đến đầu tiên.

Câu hỏi liên quan