Ngữ pháp miễn phí ngữ cảnh cho {a ^ ib ^ j | i, j ≥ 0; tôi ≠ 2j}


7

Có ai có thể giúp cho việc này không:

L={aibji,j0 and i2j}

Tôi đang cố gắng viết một ngữ pháp cho ngôn ngữ này? Tôi không biết làm thế nào để làm điều này. Tôi đã thử điều này:
SaaAbaAAaAa


5
Bạn có thể đơn giản hóa tác vụ bằng cách tách ngôn ngữ: L={aibji<2j}{aibji>2j}
Mike B.

3
Lý do là CFG bị đóng cửa dưới sự kết hợp.
Paresh

1
Về cơ bản câu hỏi đã được trả lời ở đây: Ngữ pháp miễn phí cho ngữ pháp
Hendrik

Câu trả lời:


7

Hãy xem xét hai ngôn ngữ:
L1={aibji,j0 and i>2j}
L2={aibji,j0 and i<2j}

Hãy thuyết phục bản thân rằng L=L1L2.

Trong L1, số lượng a's là nhiều hơn gấp đôibVì vậy, phải có ít nhất một a (khi không có b'S). Ngoài ra, cho mỗi lần thêmb, ít nhất 2 aphải được thêm vào. Bạn có thể tạoL1 như:

S1aAAaaAbaAε

L2là một chút khó khăn hơn. Số lượngaít hơn gấp đôi số lượng bVì vậy, có thể có 0 anhưng không phải là không b'S. Hãy xem xét "trường hợp cơ sở" của1 b. Chuỗi có thể là một trong haib hoặc là ab. Chúng tôi sẽ để quy tắc đầu tiên tạo ra trường hợp cơ sở này. Sau đó, lưu ý rằng cứ thêmb, chúng ta có thể tăng số lượng alà bởi nhiều nhất 2. Vì vậy, chúng tôi có thể thêm0, 1, hoặc là 2 acho mỗi lần thêm b. Chúng ta sẽ để quy tắc thứ hai xử lý việc này. Vì vậy, CFG choL2 trở thành:

S2BbaBbBBbaBbaaBbε

Lưu ý rằng CFG bị đóng dưới liên minh, nghĩa là liên minh của hai CFG cũng là CFG. Vì vậy, để có được CFG choL, hãy để trạng thái bắt đầu S của L dẫn đến trạng thái bắt đầu của L1, hoặc của L2:

SS1S2

Phần còn lại của các quy tắc vẫn giống như trong hai ngôn ngữ. Có thể có một ngữ pháp đơn giản hơn, nhưng đây là lần đầu tiên xuất hiện trong tâm trí.


0

Bắt đầu với một ngữ pháp cho {aib2i:i0}:

SaSbbϵ
Bây giờ hãy hack nó để có nhiều hơn a hơn bb:
SaSbbAAaAa
Các sửa đổi để buộc nhiều hơn blà tương tự, và để lại cho bạn. Nó thêm một nonterminal và ba sản phẩm.

3
Điều này sẽ không tạo ra chuỗi của tất cả acủa tất cả bĐó là một phần của L.
Paresh

Nếu tôi thay đổi câu hỏi thành i, j≥1 và i ≠ j và i <2j vậy làm thế nào tôi có thể nghĩ ra giải pháp?
user6885

@Paresh, một phần của phụ bs còn lại để hoàn thành. Và tất cảas là SAak.
vonbrand

À ... tôi không biết làm thế nào tôi bỏ lỡ điều đó. Lấy làm tiếc!
Paresh

@Vonbrand vấn đề mà tôi không biết tôi làm thêm bso rằng nó sẽ không nhiều hơn a.
user6885
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.