Thuật toán BS sau sẽ trình bày và mô tả các bước để thu gọn một hệ sinh ánh xạ đóng cho trước về dạng hệ sinh cân bằng. Đây cũng là kết quả chính của luận án khi nghiên cứu về hệ sinh cân bằng, đã công bố trong [VI].
Thuật toán 3.6 AlgorithmBS Format:BS(α) Input: - Hệ sinh α = (U, F) Output: - Hệ sinh β = (V, G) Begin 1. Đưa F về dạng thỏa các tính chất B2, B3 và B4 G := NR(F); 2. Tính giao các cơ sở: UI := U \ RS(G); 3. Tính lượng thu gọn: 3.1. P := RS(G) \ LS(G) 3.2. M := fα(PUI) 3.3. Tạo β = (V,G); V := U; 4.whileM ≠ do
4.1. Thu gọn β theo M với β=(V,G); V:=V\M; G:=G\M; 4.2. Loại khỏi G các luật dạng X;
4.3. Nhóm các luật sinh cùng vế trái XY1,XY2,…,XYk thành luật sinh dạng XY1Y2…Yk;
4.4. M := V \ LS(G); endwhile;
5. return β ;
EndBS.
Thuật toán thu gọn một hệ sinh về dạng hệ sinh cân bằng với các bước có độ phức tạp không quá O(mn). Vì M là tập con có tối đa n phần tử, do đó để số lần lặp cho đến khi M có thể là trong vòng lặp while cần thực hiện tối đa n lần. Tổng hợp lại, thuật toán BS thu gọn một hệ sinh về dạng cân bằng có độ phức tạp tính toán là
98
U. Do tích mn chính là chiều dài dữ liệu vào của thuật toán nên O(mn2) cũng chính là độ phức tạp đa thức theo chiều dài dữ liệu vào.
Thí dụ 3.17
Cho hệ sinh AXĐ = (U, F) với U = ABCDEH và tập luật sinh F={AE D, BC CE, E B, E C, H C}. Theo thuật toán BS ta có,
1. G :=NR(F)={AE D, BC E, E BC, H C} 2. RS(G)=BCDE; UI=U\RS(G) = ABCDEH\BCDE = AH
3. LS(G) = ABCEH; RS(G) = BCDE;
3.1. P = RS(G) \ LS(G) = BCDE \ ABCEH = D 3.2. M = f(PUI) = f(ADH) = ACDH
3.3. Xét β = (V,G); V = ABCDEH, G = {AE D, BC E, E BC, H C}. 4. Lặp
4.1 β=(V,G)=β\M=β\ACDH; V=ABCDEH\ACDH=BE;
4.2. G=G \ACDH={E (loại), BE, EB, (lọai)} 4.3. G = {B E, E B}
4.4. M = V\LS(G) = BE\BE = .
5. Kết quả: β=(V,G); V=BE; G={BE, EB} Định lý sau khẳng định thuật toán trên là đúng đắn,
Định lý 3.7
Hệ sinh AXĐ thu được sau khi thực hiện thuật toán BS là hệ sinh cân bằng.
Chứng minh
Để ý rằng sau bước 1 của thuật toán BS ta đã thu được một tập luật sinh thu gọn G của F, nghĩa là G đã thỏa các tính chất B2, B3 và B4. Ta có nhận xét sau,
Nếu tập luật sinh G thỏa tính chất B3 thì sau khi thực hiện các phép thu gọn
G := G \ M thì tính chất B3 vẫn được bảo toàn. Vậy B3 là bất biến của vòng lặp while trong thuật toán BS. Nếu G có chứa luật sinh tầm thường thì luật sinh đó chỉ
99
có thể có dạng X, bởi vì nếu có X Y và XY thì theo tính chất B3 ta suy ra
XY = Y = .
Trước hết ta chứng minh rằng nếu hệ sinh β = (V,G) đã thỏa các tính chất B2, B3 và B4 thì sau bước 4.1 của thuật toán BS ta thu được hệ sinh thỏa tính chất B1.
Thật vậy, lúc đầu ta có, P = RS(G) \ LS(G), M = fβ(PUI), V = U và G = F. Theo tính chất B3 của G ta có fG: RS(f) LS(f) = , hay là RS(f)\LS(f) = RS(f) và do đó, G R L I U R L U RS G U \ ( \ ) \ ( ) Ta có, G f f G M G LS M f LS M f LS G LS ( ( )\ ) ( )\ ( )\ ) ( Tương tự, RS(G) = RS(G) \ M
Ta chứng minh đẳng thức LS(G)\M = RS(G)\M = V\M như sau:
LS(G) \ MV \ MRS(G) \ MLS(G) \ M
Tại bước lặp đầu tiên ta có, a) LS(G)\MV\M. Hiển nhiên.
b) V\M RS(G)\M . Nếu A V\M thì A M = fβ(PUI) UI, do đó, A UI =
V\RS(G). Từ đó suy ra ARS(G) và do đó ARS(G)\ M.
c) RS(G)\M LS(G)\M. Nếu A RS(G)\M thì A RS(G) và A M = fβ(PUI) P, do đó A P = RS(G)\LS(G). Từ đây suy ra ALS(G), và do đó ALS(G) \ M.
Từ lần lặp thứ hai trở đi, tại bước 4.2 của thuật toán, sau khi loại bỏ các luật sinh dạng X khỏi G, các tập V và RS(G) không thay đổi, cụ thể là đẳng thức
V = RS(G) vẫn bảo toàn, tuy nhiên tập LS(G) có thể bị giảm đi. Như vậy là sau bước
4.2 tính chất B1 có thể bị vi phạm. Vòng lặp while có nhiệm vụ cân bằng ba tập V,
LS(G) và RS(G), trong đó V = RS(G). Muốn vậy, trước hết phải tính lượng chênh lệch M := V \ LS(G) tại bước 4.4. Theo tính chất của các phần tử phi cơ sở, ta có M
100
M Uo nên tập cơ sở Base(β) luôn luôn được bảo toàn. Vì hệ sinh lúc đầu là hữu hạn và các phép thu gọn đều thu nhỏ kích thước của các tập V, LS(G) và RS(G) nên đến một lúc nào đó ta phải thu được điều kiện kết thúc vòng lặp, cụ thể là M = . Ta chỉ cần chứng minh rằng khi kết thúc vòng lặp, tức là khi M = ta sẽ thu được hệ sinh thỏa tính chất B1. Thật vậy, từ M = ta suy ra V = LS(G), kết hợp với bất biến V = RS(G) của vòng lặp ta thu được tính chất B1: LS(G) = RS(G) = V ■