Với giải thuật BFS bình thường, độ phức tạp thuật toán trong trường hợp tệ nhất sẽ làm hàm mũ. Trong hệ thống phân tích cú pháp shift-reduce của mình, Kai Zhao đã sử dụng lý thuyết quy hoạch động để đạt được độ phức tạp thuật toán là hàm đa thức. Ý tưởng cơ bản của lý thuyết này là việc xác nhập các state được coi là “tương đương” lại với nhau để tránh trường hợp phải xét duyệt lại cùng một state nhiều lần. Nói một cách khác, thì đồ thị tìm kiếm ban đầu của phân tích shift-reduce sẽ được
Lê Quang Thắng – CNTT.KH.2012B 31
chuyển thành dạng siêu đồ thị (hyperpragh) giống như trong thuật toán CYK của phân tích cú pháp PCFG.
Trong lý thuyết quy hoạch động dành cho phân tích cú pháp shift-reduce, mỗi một state sẽ không lưu trữ toàn bộ stack và queue như cũ, mà thay vào đó là các thông tin đủ để xác định tập hợp đặc trưng được trích rút ra từ state đó. Như trong thuật toán CYK, thì mỗi state chỉ bao gồm 3 thông tin: <X,i,j>, với X là nhãn của nút lưu trữ hiện tại, [i,j] là vị trí bắt đầu và kết thúc của nút đó trong câu văn bản đầu vào. Mỗi một state trong CYK sẽ chỉ lưu lại quãng đường có chi phí tốt nhất tạo nên nút <X,i,j>, qua đó giảm thiểu một cách đáng kể số lần phải xét duyệt các state thừa. Như trong phân tích cú pháp shift-reduce, thì thông tin cơ bản dành cho mỗi state sẽ là<i,j,sd…s0>. Trong đó s0,s1…sd là d nút đầu tiên trong stack tham gia vào quá trình trích rút đặc trưng, còn [i,j] là vị trí bắt đầu và kết thúc của nút s0. Các nút si không cần thiết phải chứa toàn bộ thông tin liên quan đến nút đó mà chỉ cần chứa một số các đặc trưng cơ bản như nhãn của nút, từ trung tâm của nút tùy vào bộ đặc trưng được sử dụng. Ví dụ như bộ đặc trưng giản lược của Sagae (2006) được trình bày trong phần 3.1.3 thì các thông tin cơ bản tương ứng với mỗi state sẽ là: <i,j,s3,s2,s1,s0>. Với cách ký hiệu như vậy, thì nếu hai state p và p’ được tạo ra trong quá trình tìm kiếm có các thông tin cơ bản giống nhau thì chúng được coi là các state tương đương và sẽ được xác nhập làm một.
Về mặt lý thuyết, hệ thống phân tích cú pháp của luận văn cũng gần giống như hệ thống phân tích cú pháp PCFG sử dụng cấu trúc agenda. Hệ thống trong quá trình tìm kiếm đáp án tối ưu sẽ duy trì hai cấu trúc dữ liệu: một bảng C dùng để lưu trữ những state đã được duyệt qua và một hàng đợi Q bao gồm các state đang chờ được xét duyệt và được sắp xếp theo một thứ tự ưu tiên nào đó:
Quá trình tìm kiếm sẽ bắt đầu với Q chỉ chứa duy nhất state bắt đầu và C rỗng.
Lê Quang Thắng – CNTT.KH.2012B 32
o Lấy ra state p có ưu tiên cao nhất trong Q, thực hiện các action được định nghĩa ở trên để tạo ra các state mới ri.
o Các state mới ri sẽ được thêm vào trong Q, trong quá trình thêm sẽ kiểm tra xem ri có state nào tương đương với mình không. Nếu có, xác nhập hai state lại, nếu không thêm vào một cách bình thường.
o Thêm p vào C, tất nhiên cũng sẽ có bước kiểm tra tương đương
giống như với Q.
Thứ tự ưu tiên cho các state được định nghĩa bởi hai loại điểm số:
o Chi phí đường đi toàn cục (total cost) c: là tổng chi phí của tất cả các action từ state bắt đầu cho đến state hiện tại.
o Chi phí đường đi cục bộ (inside cost) v: là tổng chi phí của tất cả các action tạo nên nút s0 của state hiện tại.
o Khi so sánh thứ tự ưu tiên của hai state p và q, ta có hai trường hợp:
Nếu p.c > q.c thì p có thứ tự ưu tiên nhỏ hơn q và ngược lại.
Nếu p.c = q.c thì kiểm tra nếu p.v > q.v thì p có thứ tự ưu tiên nhỏ hơn q và ngược lại.
Nếu p.c = q.c và p.v = q.v thì cả hai có thứ tự ưu tiên bằng nhau.
Ngoài ra với lý thuyết quy hoạch động, thì sẽ có một chút khác biệt so với hệ thống phân tích shift-reduce ban đầu đó là: các action RE(X) và REU(Y,X) sẽ không thể thực hiện theo cách bình thường nữa vì giờ một state sẽ chỉ lưu các thông tin cơ bản thay vì toàn bộ stack và queue. Chính vì vậy, hai action này trong lý thuyết quy hoạch động sẽ được thực hiện như sau: action RE(X) sẽ thực hiện việc kết hợp hai state p:<i,j,sd…s0> với state q:<k,i,s’d...s’0>, với s’i si+1. Tương ứng sẽ có hai trường hợp xảy ra:
Lê Quang Thắng – CNTT.KH.2012B 33
o Kết hợp phải: giả sử state được chọn ra khỏi Q có dạng như p, hệ thống sẽ kết hợp p với tất cả các state thuộc C có dạng như q để tạo ra state mới r:<k,j,s’d...s’1X> với X s0s’0.
o Kết hợp trái: tương tự state được chọn ra khỏi Q có dạng như q, hệ thống sẽ kết hợp q với tất cả các state thuộc C dạng như p để tạo ra state mới.
o Mọi thứ hoàn toàn tương tự với action REU(Y,X).
Error! Reference source not found. minh họa biểu thức suy diễn của
ác action trong hệ thống phân tích cú pháp Shift-Reduce của luận văn sau khi áp dụng thêm thuật toán quy hoạch động. ca(p)= ( ) , là chi phí cho action a với các đặc trưng được trích rút từ state p. Mỗi một giá trị ca(p) đều được mặc định là đã được cộng thêm giá trị offset
để đảm bảo trọng số không âm cho các cạnh của đồ thị.
Hình 3-8 Biểu thức suy diễn của các action trong hệ thống phân tích cú pháp Shift-Reduce của luận văn.