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à 12 xác định với tất cả x, y nhƣ sau [15, 16]:
(12)(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 12 là cặp trạng thái của 1 và 2, phép biến đổi của 12 xác định theo quy tắc sau:
(q1, a, b,wg1, q2) và (q1, b, c,wg2, q2) ((q1, q1), a, c,wg1wg2,(q2, q1)) 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 12.
//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 12;
Độ 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}.