Là {a ^ n (a + b) ^ n | n> 0} một CFL xác định?


8

L={an(a+b)n|n>0}

Một cuốn sách tôi đang đọc nói rằng, nhưng xem xét chúng ta không thể biết phần thứ hai sẽ bắt đầu từ đâu và nó cũng có thể bắt đầu bằng một phần, vậy thì làm sao chúng ta có thể chấp nhận điều này bằng DPDA? Giống như sau khi đọc phần đầu tiên ( ), làm thế nào chúng ta có thể chắc chắn rằng đó là phần cuối của phần đầu tiên hay không xem xét phần thứ hai cũng có thể bắt đầu bằngana?

Đây có phải là quyết định?

Câu trả lời:


11

Bạn không cần xác định kết thúc của "phần đầu tiên".

Lưu ý chính xác là tập hợp các chuỗi thỏa mãn ba ràng buộc sau:L

  1. Chiều dài của nó là chẵn.

  2. Nó chỉ chứa và .ab

  3. Các đầu tiên xuất hiện trong nửa sau của nó.b

Các ràng buộc 1 và 2 rất dễ kiểm tra. Để kiểm tra ràng buộc 3, DPDA có thể đẩy một biểu tượng vào ngăn xếp của nó mỗi lần nó đọc một ký tự cho đến khi đầu tiên xuất hiện (không bao gồm), sau đó bật một biểu tượng mỗi khi nó đọc một ký tự. Ràng buộc 3 được thỏa mãn khi và chỉ khi biểu tượng ngăn xếp ban đầu không bao giờ được đọc trong quá trình bật.b


Cảm ơn câu trả lời, Vì vậy, trong DPDA, chúng ta nên đẩy một quả bóng mỗi khi chúng ta đọc một ký tự cho đến khi chúng ta đạt đến b đầu tiên, nhưng theo cách này, chuỗi aaab sẽ không được chấp nhận? bởi vì khi chúng ta đạt đến b đầu tiên, chúng ta có 3 quả bóng và chúng ta sẽ chỉ bật 1 quả bóng và ngăn xếp không trống, giả sử chúng ta sẽ chấp nhận mà không có ngăn xếp trống, vậy khi nào chúng ta sẽ đi đến trạng thái cuối cùng? nếu ngăn xếp không trống và không có thêm đầu vào có sẵn?
John P

@JohnP Xin lỗi vì tôi đã không đọc mô tả chính thức của một chiếc PDA nên câu trả lời trước khi chỉnh sửa có thể gây nhầm lẫn. Bây giờ tôi đã sửa đổi câu trả lời để làm cho nó tương thích với định nghĩa chính thức trong Wikipedia. Đối với câu hỏi của bạn, khi máy tự động đọc ký hiệu ngăn xếp ban đầu, nó sẽ chuyển sang trạng thái đặc biệt đại diện cho "từ chối" (sau đó lặp cho các đầu vào còn lại) và tất cả các trạng thái khác đang chấp nhận trạng thái (ngoại trừ trạng thái bắt đầu, vì ). n>0
xskxzr

Tôi không chắc chắn làm thế nào tất cả các ràng buộc có thể được kiểm tra mà không mất tính quyết định. Bạn có thể gợi ý hoặc cho biết chức năng chuyển tiếp?
Ông Sigma.

@Rithith. Đầu tiên, nó ở trạng thái A và khi đầu vào làmột, đẩy một biểu tượng. Khi đầu vào làb, chuyển sang trạng thái B và bật một biểu tượng. Ở trạng thái B, mỗi khi nó nhìn thấymột hoặc là b, bật một biểu tượng.
xskxzr

Khi nào bắt đầu bật lên nếu w=a2n?
Ông Sigma.

4

Trong trường hợp rõ ràng hơn, đây là CFG tương ứng với DPDA của xskxzr:

SϵSBSaaSBabBaBaBaBb

CFG đơn giản hơn một chút dưới đây không rõ ràng đối với các đầu vào chỉ bao gồm một số chẵn as, nhưng nó vẫn hoạt động với thuật toán LALR (1) bằng thuật toán giải quyết xung đột "tiêu chuẩn": "trong trường hợp không rõ ràng, thay đổi":

SBSaaSBϵBaBaBaBb
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.