Trên thực tế, Chomsky dạng bình thường (CNF) không cần phải chạy CYK, chỉ cần nhị phân. Binarization là điều cần thiết để duy trì độ phức tạp của phân tích cú pháp, mặc dù chỉ cần thiết đối với các thiết bị đầu cuối (NT). Nhưng sau đó, nếu bạn có các quy tắc chỉ bao gồm 2 thiết bị đầu cuối và một số thiết bị đầu cuối, thuật toán CYK trở nên phức tạp hơn để lập trình và giải thích.
Như bạn nói, có nhiều cách để thực hiện binarisation. Một số sẽ mang lại ngữ pháp nhỏ hơn so với khác. Ví dụ
X -> B C D
Y -> B C E
có thể được binarized như
X -> Z D
Y -> Z E
Z -> B C
do đó, lưu một quy tắc theo hệ số, có thể tiết kiệm tính toán và kích thước kết quả của nó.
Nhưng với các quy tắc khác, bạn có thể muốn nhân tố kết thúc quy tắc hơn là bắt đầu.
Tôi không quen thuộc với công việc của Song, Đinh và Lin , được trích dẫn bởi câu trả lời của Rob Simmons . Ý tưởng này rất thú vị nhưng tôi tự hỏi làm thế nào nó có thể được so sánh hiệu quả với các cách khác để tối ưu hóa tính toán. Tôi sợ không nhiều lắm.
Vấn đề là việc phân tích các vấn đề chỉ liên quan đến thuật toán CKY thuần túy có vẻ hơi khó học nhưng tốn kém vì có các loại tối ưu hóa khác có thể cải thiện đáng kể việc loại bỏ các phân tích cú pháp chết.
CYK chỉ là một trong những biến thể đơn giản hơn trong một nhóm các thuật toán được xây dựng trên cùng một mô hình lập trình động. Tôi đang nói rõ ràng bởi vì phiên bản đơn giản nhất của các thuật toán này không được gọi là lập trình động, mà là sản phẩm chéo. Đây là cấu trúc cũ của ngữ pháp CF G tạo ra giao điểm của ngôn ngữ CF ngữ pháp F và ngôn ngữ thông thường của một FSA A., do
Bar Hillel, Perles và Shamir (1961) , được nhận xét bởi Lang vào năm 1995 .
Tất cả các trình phân tích cú pháp biểu đồ hoặc trình phân tích cú pháp CF chung dựa trên lập trình động có thể được xem là biến thể "tối ưu hóa" của cấu trúc sản phẩm chéo đó, việc tối ưu hóa được sử dụng chủ yếu để tránh các tính toán vô dụng của trình phân tích cú pháp. Nhưng vấn đề là tinh tế vì tránh tính toán vô ích có thể dẫn đến việc nhân đôi những cái hữu ích, có thể tồi tệ hơn.
Từ dưới lên, thuật toán CKY tạo ra các tính toán vô dụng của các phân tích cú pháp một phần không thể xuất phát từ tiên đề của ngữ pháp.
Các thuật toán như trình phân tích cú pháp GLR (để đặt tên cho một trong những thuật toán được biết đến nhiều hơn, mặc dù phiên bản chưa hoàn thiện đã được xuất bản), có một số kiến thức từ trên xuống sẽ tránh được nhiều tính toán vô dụng như vậy, có thể phải trả giá. Và có nhiều biến thể khác với hành vi khác nhau liên quan đến việc tiết kiệm các tính toán vô dụng ..
Đó là với các chiến lược tối ưu hóa trong tâm trí rằng chiến lược nhị phân cần được phân tích. Điểm tối ưu hóa những gì có thể là một vấn đề nhỏ, và bỏ qua các kỹ thuật mạnh mẽ hơn.
Việc tối ưu hóa quá trình phân tích cú pháp cũng được liên kết chặt chẽ với "chất lượng" của cấu trúc phân tích thu được, đại diện cho tất cả các phân tích cú pháp sở hữu và thường được gọi là phân tích cú pháp (chia sẻ). Tôi thảo luận về điều đó trong một câu trả lời khác .
Một số vấn đề được thảo luận trong tài liệu. Ví dụ, bởi Billot và Lang phân tích một số khía cạnh của việc tăng giá đối với các chiến lược phân tích cú pháp.