Tạo ra thuật toán phân tích vạn năng (không bị hạn chế bởi luật văn phạm). Tạo ra thuật toán phân tích tốc độ cao[r]
Trang 1CHƯƠNG TRÌNH DỊCH
Bài 10: Phân tích văn phạm bằng
thuật toán CYK
Trang 21 Khắc phục hạn chế của các phương pháp thử-sai
2 Các phương pháp phân tích cú pháp vạn năng
3 Áp dụng quy hoạch động vào phân tích cú pháp
4 Thuật toán Cocke – Younger – Kasami (CYK)
Dạng chuẩn Chomsky (CNF)
Ý tưởng
Mã minh họa
Đánh giá thuật toán
5 Bài tập
Trang 3Khắc phục hạn chế của các
phương pháp thử-sai
Phần 1
Trang 4 Hai thuật toán thử-sai cơ bản top-down và
bottom-up đều có những hạn chế về văn phạm đầu vào
Top-down: văn phạm không có đệ quy trái
Bottom-up: văn phạm không có suy dẫn rỗng và không
có kí hiệu đệ quy (A ⇒+ A)
Các thuật toán thử-sai có hạn chế về mặt tốc độ
Tốc độ chấp nhận được với một số văn phạm đơn giản
và đơn nghĩa, đầu vào ngắn
Trường hợp xấu có độ phức tạp tính toán hàm mũ
Không có cơ chế hiệu quả loại bỏ sự trùng lặp về kết quả (chẳng hạn như nhiều suy dẫn tương đương)
Trang 5Các hạn chế của thử-sai
Nguyên nhân của những hạn chế này
Hạn chế do bản thân cơ chế hoạt động của thử-sai
Không có cơ chế loại bỏ các phương án chắc-chắn-sai
Ví dụ: quá trình suy dẫn S thành w = abcdefg
S ⇒ … ⇒ abcAx ⇒ … ⇒ abcdefg
Ta nhận thấy phương án có chuỗi trung gian abcAx
hoàn toàn không thể đạt được chuỗi w mong muốn
Vì x là kí hiệu không kết thúc, nó luôn luôn tồn tại trong các suy dẫn tiếp theo, trong khi chuỗi w không chứa x
Câu hỏi: thuật toán thử sai tốt ~ cắt nhánh sớm?
Trang 6Các phương pháp phân tích cú pháp vạn năng
Phần 2
Trang 7Phương pháp phân tích vạn năng
Như vậy các thuật toán thử-sai có 2 điểm yếu
1 Hệ luật văn phạm bị hạn chế
2 Yêu cầu nhiều thời gian tính toán
Vì vậy chúng ta cũng có 2 mục tiêu
1 Tạo ra thuật toán phân tích vạn năng (không bị hạn chế
bởi luật văn phạm)
2 Tạo ra thuật toán phân tích tốc độ cao
Tất nhiên nếu có thuật toán đạt được cả 2 mục tiêu trên thì quá tốt
Trong phần này ta nhắm tới mục tiêu thứ nhất