Hợp thành của hai máy biến đổi

Một phần của tài liệu Thuật toán kiểm tra tính chất mã bằng otomat hữu hạn (Trang 40 - 43)

Phép hợp thành là phép toán cơ bản trên máy biến đổi đƣợc sử dụng trong

nhiều ứng dụng. Cho 1, 2 là hai máy biến đổi trên nửa vành giao hoán , có bảng chữ cái vào của 2 trùng khớp bảng chữ cái ra của 1. Khi đó, hợp thành của 1 và 2 là máy biến đổi ký hiệu là 12 xác định với tất cả x, y nhƣ sau [15, 16]:

(12)(x, y) =

z

1(x, z) 2(z, y).

Tồn tại một thuật toán tổng quát và hiệu quả thực hiện phép hợp thành của hai máy biến đổi 1 và 2[15, 16], trạng thái của 12 là cặp trạng thái của 1 và 2, phép biến đổi của 12 xác định theo quy tắc sau:

(q1, a, b,wg1, q2) và (q1, b, c,wg2, q2)  ((q1, q1), a, c,wg1wg2,(q2, q1)) Thuật toán 2.1 thực hiện phép hợp thành của hai máy biến đổi.

- 41 -

Input: 1, 2 là hai máy biến đổi.

Output: Máy biến đổi 12.

//ENQUEUE, DEQUEUE là phép bổ sung và loại bỏ phần tử trên hàng đợi S.

Các bƣớc thực hiện 1. Q I1× I2; S  I1× I2; 2. while S  do 3. (q1, q2)  DEQUEUE(S); 4. if (q1, q2)  I1× I2 then II {(q1, q2)}; (q1, q2) 1(q1) 2(q2); 5. if (q1, q2) F1×F2 then F F {(q1, q2)}; (q1, q2)  1(q1) 2 (q2); 6. for each (e1, e2) in E[q1] ×E[q2] such that o[e1] = i[e2] do

if (n[e1], n[e2]) Q then

QQ{(n[e1],n[e2])}; ENQUEUE(S,(n[e1], n[e2]));

E E{((q1, q2), i[e1], o[e2], wg[e1]  wg[e2], (n[e1], n[e2]))}; 7. Return 12;

Độ phức tạp thời gian của thuật toán ((Q1 + E1)(Q2+E2)) [15, 16]. Ta có thể áp dụng Thuật toán 2.1 trên otomat có trọng số, otomat hữu hạn hay otomat Büchi. Khi đó, ta coi nhãn vào và nhãn ra của mỗi cung là trùng nhau, trọng số của các phép biến đổi bằng 0 với trƣờng hợp otomat hữu hạn hay otomat Büchi.

Ví dụ 2.17. Cho otomat hữu hạn  = (A, Q1, I1, F1, E1) (Hình 2.2.a), ở đó:

- 42 -

E1 = {(0, b, 1), (0, a, 2), (1, a, 1), (1, c, 3), (2, b, 3)}

Hình 2.2. Hợp thành của otomat với máy biến đổi trên nữa vành Tropical

Cho máy biến đổi  = (A, , Q2, I2, F2, E2, , ), ở đó:

A =  = {a, b, c}, Q2 = {0, 1, 2}, I2 = {0}, F2 = {2},

E2 = {(0, b, c, 0.3, 1), (1, a, b, 0.4, 2), (2, ɛ, b, 0.6, 2), (2, c, b, 0.2, 2)},

:{0} {0.0}, :{2}{0.7}.

Áp dụng Thuật toán 2.1 ta nhận đƣợc máy biến đổi = (A, , Q, I, F, E, , ), ở đó: A =  = {a, b, c}; Q = {v0 = (0,0), v1 = (1, 1), v2 = (1, 2), v3 = (3, 2)}; a 0 1 2 0 3 c b a b (a) 0 b:c/0.3 1 a:b/0.4 ɛ:b/0.6 2/0.7 c:b/0.2 (b) b:c/0.3 a:b/0.4 ɛ:b/0.6 (3,2)/0.7 (c) ɛ:b/0.6 c:b/0.2 (0,0) (1,1) (1,2)

- 43 -

I= {v0}; F = {v3};

E= {(v0, b, c, 0.3, v1), (v1, a, b, 0.4, v2), (v2, ɛ, b, 0.6, v2), (v2, c, b, 0.2, v3), (v3, ɛ, b, 0.6, v3)};

:{v0}{0.0}; :{v3}{0.7}.

Một phần của tài liệu Thuật toán kiểm tra tính chất mã bằng otomat hữu hạn (Trang 40 - 43)