III- CÔNG CỤ PHÂN TÍCH CÚ PHÁP YACC
1. 5 Sự liên quan giữa giải thuật Earley và Chart Parsing
Giải thuật Chart Parsing là một dạng tổng quát của giải thuật Earley, sau đây là một số đặc điểm chỉ rõ sự tương quan này :
• Mỗi trạng thái trong giải thuật Earley tương ứng với một cung trong Chart Parsing. Trạng thái kết thúc tương ứng với cung chết và trạng thái không kết thúc tương ứng với cung sống.
• Mỗi tập trạng thái tương ứng với một nút trong Chart Parsing.
• Tác vụ predict trong giải thuật Earley tương ứng với qui tắc từ trên xuống trong giải thuật Chart Parsing.
• Tác vụ Scan trong Earley tương ứng với quá trình khỡi tạo trong Chart Parsing.
• Tác vụ Complete trong Earley tương ứng với các qui tắc cơ bản trong Chart Parsing.
1.6.1- Độ Phức Tạp Thời Gian Theo Chiều Dài Chuỗi Nhập
Bộ phân tích có độ phức tạp n3 vì các lý do sau :
(a) Số các trạng thái trong tập trạng thái Ii tỉ lệ với i (∼ i) vì miền giá trị của các thành phần p, j của một trạng thái bị giới hạn, chỉ có thành phần f phụ thuộc vào i mà i lại phụ thuộc vào n.
(b) Mỗi tác vụ Scan và Predict thực hiện một số bước hữu hạn trên một trạng thái trong một tập trạng thái bất kỳ. Do vậy tổng số bước xử lý các trạng thái trong tập trạng thái Ii cộng với các tác vụ Scan và Predict ∼ i
(c) Trong trường hợp xấu nhất, tác vụ complete thực thi ∼ i bước cho mỗi trạng thái nó xử lý bỡi vì nó phải thêm ∼ f trạng thái tới If, tập trạng thái được trỏ trở lại khi thực hiện tác vụ complete. Do đó mất ∼ i2 bước trong Ii
(d) Tính tổng I = 0,..., n+1 của i2 ta được ∼ n3
Vậy độ phức tạp của giải thuậy Earley theo chiều dài chuỗi nhập là O(n3).
Độ phức tạp này không tốt hơn giải thuật CYK nhưng Earley vẫn tốt hơn vì hai lý do :
+ Giải thuật Earley không yêu cầu nhập một văn phạm đặc biệt mà là một văn phạm phi ngữ cảnh tổng quát, trong khi giải thuật CYK lại yêu cầu giải thuật phải đưa về dạng chuẩn Chomsky.
+ Giải thuật của Earley thực sự chạy tốt hơn O(n3) trong hầu hết các lớp văn phạm (giải thuật CYK luôn có độ phức tạp O(n3)
Hơn nữa giải thuật CYK có độ phức tạp thời gian O(n3) trên máy Turing, và nó không thể có kết quả tốt hơn O(n3) khi chạy trên máy RAM (Random Access Machine).
1.6.2 Độ Phức Tạp Theo Kích Thước Văn Phạm
Số ký hiệu tối đa của vế phải của một luật sinh bất kỳ là m (có nghĩa là chiều dài vế phải là hữu hạn). Gọi n là số luật sinh của văn phạm, giả sửû chiều dài chuỗi nhập là hữu hạn.
Như vậy, số trạng thái tối đa trong một trạng thái là m x n. Do m hữu hạn nên số trạng thái trong một tập trạng thái phải ~ n.
Khi thực hiện 3 tác vụ predict, sacn và complete trên một trạng thái bất kỳ thì : Predict : sẽ sinh ra tối đa n trạng thái, do đó số trạng thái tỉ lệ với n
Scan : sẽ sinh ra một số trạng thái hữu hạn. Complete : sẽ sinh ra tối đa n trạng thái (~n).
Với một trạng thái bất kỳ thì số trạng thái được sinh ra khi thực hiện một trong 3 tác vụ là ~n. Do đó trên một tập trạng thái thì số trạng thái được sinh ra khi thực hiện cả 3 tác vụ là ~n2.
Do chiều dài chuỗi nhập là hữu hạn nên khi phân tích chuỗi nhập thì số trạng sinh ra cũng ~ n2.
Vậy : Độ phức tạp của giải thuật Earley theo kích thước văn phạm là O(n2)
1.6.3- Độ Phức Tạp Theo Không Gian (Theo Chiều Dài Chuỗi Nhập)
Số tập trạng thái tối đa trong giải thuật Earley là n, mà mỗi tập trạng thái lại có số trạng thái tỉ lệ với n (∼n). Do đó trong trường hợp tổng quát, độ phức tạp của giải thuật Earley là O(n2).
Giải thuật CKY cũng có độ phức tạp không gian là O(n2), tuy nhiên ưu điểm của giải thuật Earley so với giải thuật CYK là : n2 là cận trên trong giải thuật Earley trong khi giải thuật CYK lại luôn luôn có độ phức tạp là O(n2).