Cho văn phạm gồm 5 luật sinh: (1) S->AB; (2) A->0A; (3) A->1; (4) B- >1A; (5) B- >0. Phân tích xâu vào “0111” bằng thuật toán topdown. Chọn lần lượt các sản xuất (1) (2) (3) (4) (3) để phân tích thì phải quay lui bao nhiêu lần mới đạt trạng thái thành công?
Đáp án đúng: A
Câu hỏi liên quan
Chúng ta sẽ kiểm tra từng phương án:
* Phương án A: (1)(3)(2)(2)(3)
* S -> AB (1)
* AB -> 1B (3) (A -> 1)
* 1B -> 11B (2) (B -> 1A không phải 1B nên loại)
* => Loại phương án A
* Phương án B: (1)(3)(4)(2)(3)
* S -> AB (1)
* AB -> 1B (3) (A -> 1)
* 1B -> 11A (4) (B -> 1A)
* 11A -> 110A (2) (A -> 0A)
* 110A -> 1101 (3) (A -> 1)
* => Không tạo ra xâu 1011, loại phương án B.
* Phương án C: (3)(4)(2)(2)(3)
* Không bắt đầu từ S, loại.
* => Loại phương án C.
* Phương án D: (1)(3)(4)(3)(2)
* S -> AB (1)
* AB -> 1B (3) (A -> 1)
* 1B -> 11A (4) (B -> 1A)
* 11A -> 111 (3) (A -> 1)
* 111 -> Không có luật nào sinh ra 0. => Loại phương án D.
Vậy, không có đáp án nào đúng. Tuy nhiên, có vẻ như có một lỗi nhỏ trong đề bài hoặc các đáp án. Nếu chúng ta giả sử luật (4) là B -> 0A thay vì B->1A và làm lại phương án B:
* Phương án B (sửa đổi luật 4): (1)(3)(4)(2)(3)
* S -> AB (1)
* AB -> 1B (3) (A -> 1)
* 1B -> 10A (4) (B -> 0A) (sửa đổi)
* 10A -> 101 (3) (A -> 1) => 101
* Chưa ra 1011, nhưng nếu (2) A -> 1A; thì *10A -> 101A (2) (A -> 1A); * 101A -> 1011 (3). Tức (1)(3)(4)(2)(3) => S->AB->1B->10A->101A->1011. Xem xét lại luật (2): A->0A hoặc A->1A.
Do các phương án đưa ra đều không đúng, và không đủ thông tin để xác định chắc chắn, tôi sẽ chọn một đáp án gần đúng nhất, giả sử có lỗi nhỏ trong đề bài. Phương án B có vẻ gần đúng nhất nếu chúng ta sửa đổi luật sinh hoặc có thể có một số bước bị thiếu trong quá trình phân tích.
Lưu ý: Vì không có đáp án chính xác dựa trên thông tin hiện tại, hãy coi giải thích này như một hướng dẫn và kiểm tra lại đề bài gốc để đảm bảo tính chính xác.
Giả định rằng phương án B là gần đúng nhất (với một vài chỉnh sửa nhỏ).
1. Gạt (shift): Đọc '1' từ xâu vào, đưa vào ngăn xếp. Ngăn xếp: $1; Xâu vào: 011$
2. Thu gọn (reduce) theo (4) A -> 1: Thay '1' trong ngăn xếp bằng 'A'. Ngăn xếp: $A; Xâu vào: 011$
3. Gạt (shift): Đọc '0' từ xâu vào, đưa vào ngăn xếp. Ngăn xếp: $A0; Xâu vào: 11$
4. Thu gọn (reduce) theo (2) A -> A0: Thay 'A0' trong ngăn xếp bằng 'A'. Ngăn xếp: $A; Xâu vào: 11$
5. Gạt (shift): Đọc '1' từ xâu vào, đưa vào ngăn xếp. Ngăn xếp: $A1; Xâu vào: 1$
6. Thu gọn (reduce) theo (5) B -> A1: Thay 'A1' trong ngăn xếp bằng 'B'. Ngăn xếp: $B; Xâu vào: 1
7. Gạt (shift): Đọc '1' từ xâu vào, đưa vào ngăn xếp. Ngăn xếp: $B1; Xâu vào: $
Không thể thu gọn tiếp.
* Luật 4: B -> 1A: Vì luật sinh này bắt đầu bằng một ký tự kết thúc '1', nên '1' thuộc First(B).
* Luật 5: B -> 0: Vì luật sinh này bắt đầu bằng một ký tự kết thúc '0', nên '0' thuộc First(B).
Do đó, First(B) = {0, 1}.
Để tìm FIRST(A), ta cần xác định tập hợp các terminal có thể xuất hiện đầu tiên khi dẫn xuất từ A.
- Từ luật (4): A -> 1, suy ra 1 ∈ FIRST(A).
- Từ luật (2): A -> A0, luật này không giúp tìm FIRST(A) trực tiếp vì A xuất hiện ở đầu vế phải.
- Từ luật (3): A -> B0, ta cần xét FIRST(B).
- Từ luật (6): B -> 0, suy ra 0 ∈ FIRST(B). Do đó, 0 ∈ FIRST(B) kéo theo 0 ∈ FIRST(A) (vì A -> B0).
Vậy, FIRST(A) = {0, 1}.
Để tìm FIRST(B), ta xem xét các luật sinh có B ở vế trái:
- (5) B -> A1
- (6) B -> 0
Từ luật (6), ta thấy ngay 0 thuộc FIRST(B). Từ luật (5), ta cần tìm FIRST(A).
Các luật sinh có A ở vế trái là:
- (2) A -> A0
- (3) A -> B0
- (4) A -> 1
Từ luật (4), ta có 1 thuộc FIRST(A). Từ luật (3), ta cần tìm FIRST(B). Vì B -> 0, nên 0 thuộc FIRST(B), do đó 0 thuộc FIRST(A). Vì A -> 1, nên 1 thuộc FIRST(A).
Vậy FIRST(A) = {0, 1}.
Do B -> A1 và FIRST(A) = {0, 1}, nên B có thể bắt đầu bằng 0 hoặc 1, sau đó là 1.
Ngoài ra, B -> 0, nên 0 thuộc FIRST(B).
Vậy FIRST(B) = {0, 1}.

Bộ Đồ Án Tốt Nghiệp Ngành Trí Tuệ Nhân Tạo Và Học Máy

Bộ 120+ Đồ Án Tốt Nghiệp Ngành Hệ Thống Thông Tin

Bộ Đồ Án Tốt Nghiệp Ngành Mạng Máy Tính Và Truyền Thông

Bộ Luận Văn Tốt Nghiệp Ngành Kiểm Toán

Bộ 370+ Luận Văn Tốt Nghiệp Ngành Kế Toán Doanh Nghiệp

Bộ Luận Văn Tốt Nghiệp Ngành Quản Trị Thương Hiệu
ĐĂNG KÝ GÓI THI VIP
- Truy cập hơn 100K đề thi thử và chính thức các năm
- 2M câu hỏi theo các mức độ: Nhận biết – Thông hiểu – Vận dụng
- Học nhanh với 10K Flashcard Tiếng Anh theo bộ sách và chủ đề
- Đầy đủ: Mầm non – Phổ thông (K12) – Đại học – Người đi làm
- Tải toàn bộ tài liệu trên TaiLieu.VN
- Loại bỏ quảng cáo để tăng khả năng tập trung ôn luyện
- Tặng 15 ngày khi đăng ký gói 3 tháng, 30 ngày với gói 6 tháng và 60 ngày với gói 12 tháng.