2.2.TÍNH RỜI RẠC HOÁ
2.2.1.Tập mô hình con của ôtômat thời gian
Xét dáng điệu = (s0, t0)(s1, t1)(s2, t2) ... của ôtômat thời gian A = <S, s0, , X, I, E>, tức dãy các vị trí s = s0, s1, ..., sm, ... và t = t0, t1, ..., tm, ... thoả:
+ t0 = 0, ti ti+1, i 0
+ i 1, <si-1, i, ai, i, si> sao cho nếu gọi i-1, i là các thể hiện đồng
hồ tương ứng tại các thời điểm ti-1, ti thì (si-1, i-1) i,ai(si, i), trong đó i = ti
ti-1
Khi đó s, t tương ứng với một thể hiện I
siI(t) = 1 t[ti, ti+1), i 0.
Như vậy xét ôtômat trong đoạn thời gian [b, e] (b e < ) sẽ là một mô hình = (I, [b, e]) trong đó I là một thể hiện hệ thống biểu diễn dáng điệu của ôtômat. Ta có kí hiệu bởi ( s , t , [b, e]) và tập các được kí hiệu bởi M(A).
Cũng theo [1] các tập mô hình con của A được kí hiệu: M0(A) = { = ( s ,t , [0, T]) M(A),T 0},
Muv(A) = { = ( s ,t , [tu, tv]) M(A), tu tv t }
MI(A) = { =( s , t,[b,e]) M(A)| ti, b, e N, (ti t , i0)}. Trong đó:
- M0(A) là tập mô hình biểu thị các quan sát xuất phát từ thời điểm ban đầu (0) của ôtômat kết thúc tại T bất kì.
- Muv(A) chứa các mô hình mà với = ( s, t, [b, e])Muv(A), với s = s0,
s1, ..., sm, ... và t = t0, t1, ..., tm, ... thì có tồn tại các chỉ số u, v sao cho b = tu và e =
tv.
- MI(A) biểu diễn cho các quan sát trên các dáng điệu nguyên của ôtômat, tức các ti và các cận quan sát b, e là những số nguyên. Các mô hình (đường chạy, dáng điệu) như vậy được gọi là các mô hình (đường chạy, dáng điệu) nguyên. Theo đó ta có: ( ) = e – b 1 ( ) m i i i c s
2.2.2. Khái niệm nguyên hoá và tính rời rạc hoá của công thức LDI
Khái niệm nguyên hoá theo [1] ta có thể viết:
(1) 0 1 (2) x x R x x
(1) : nếu phần thập phân của x là (2) : nếu phần thập phân của x là
Nhiều tính chất được đưa ra và chứng minh trong [1], trong luận văn chỉ xin được trình bày một số bổ đề, tính chất tiêu biều:
Bổ đề: Cho = (s, t, [b, e]) M(A) là một mô hình của ôtômat A
s = s0, s1, ..., sm, ... và t = t0, t1, ..., tm, .. khi đó [0,1) : ( , ,[ , ])s t b e
t t0,t1,...
Thì Cũng là một mô hình nguyên của A tức MI(A)
Tính chất này cũng đã chứng minh trong [1]. Cũng từ đó, với công lớp công thức trong DC ta có:
Định nghĩa 2.2. Cho ôtômat thời gian A và công thức D. D được gọi là rời rạc hoá được đối với A nếu M(A) ⊨ D MI(A) ⊨ D, tức A thoả D khi và chỉ khi mọi mô hình nguyên của Athoả D.
Tính rời rạc hoá của A là thực hiện được trên mọi mô hình của A, theo [1] đã chứng minh ta cũng có được:
Định lý [1]: Mọi tính chất khoảng tuyến tính và bất biến khoảng tuyến tính D là rời rạc hóa được đối với ôtômat thời gian A tức M(A) ⊨ D MI(A) ⊨ D
Như vậy ta có thể kết luận là chứng minh D trên mô hình nguyên và mô hình thực là có cùng kết quả như nhau. Dựa vào kết quả này ta thay vì chứng minh trên không gian thực ta sẽ chứng minh trên không gian nguyên. Làm như vậy không gian trạng thái sẽ giảm một cách đáng kể sẽ giúp thuật toán giảm độ phức tạp về không gian và thời gian. Điều này có một ý nghĩa to lớn như phần một đã phân tích trên.
2.3.ĐỒ THỊ TRỌNG SỐ
Cho ôtômat A và đồ thị vùng đạt được RG, và công thức LDI
1 : i m i i D A B c s M
Đồ thị trọng số G phục vụ cho kiểm chứng LDI được xây dựng từ tư tưởng cơ bản sau: với mỗi cạnh (vi, vj ,[l, u]) thuộc đồ thị RG sẽ được thay thế bởi một họ đường đi từ vi tới vj có độ dài bằng 1 hoặc 0 với đồ thị RG không chứa cung vô hạn. Việc chia này thể hiện tính rời rạc hoá được của LDI, và đảm bảo tính tương thích của ôtômat A và đồ thị RG, G. Như vậy một ôtômat A sẽ tương đương với một một đường đi trong đồ thị G, tính thoả của ôtômat A với công thức LDI, cũng được thể hiện qua tính thoả của đường đi trong G với LDI.
Cách chia chung được thực hiện như sau:
Đồ thị G = (V, E, ) được xây dựng từ RG = (V’, E’) không chứa cung vô hạn Bước 1: Giữ nguyên tập đỉnh, cung: V = V’, E = E’.
Bước 2: với mỗi cung (vi, vj,[l, u]) thì V, E, của G được xác định như sau: Thêm đỉnh V = V 1 2 ij 1 ij, ij,..., iju v v v và i jk cvi, k 0..ui j1 với 0 uij ij, ij v v là vi,vj E = E- e E = E 1 1 ij ij ij ij ij ij (vk,vk ) |k 0,...,u 1 ,(vk,vk ) 1, k 0...u 1 E = E 1 1 ij ij ij ij ij ij ij ij (vk,vk ) |k l ,...,u 1 ,(vk,vk ) 0, k l ...u 1
Với lij=uij chỉ có cung 1 đơn giản. Với lij < uij thì có 2 cung ij 1 ij
iju iju ( )j
v v v có trọng số bằng 1 và 0.
G được xây dựng bằng cách chia cung e = (vi, vj, [l, u]) thành u-1 đỉnh con, vi và u-1 đỉnh con này được gán trọng số là ci trong công thức LDI. Còn từ đỉnh thứ l trở đi sẽ có thêm cung nối từ đỉnh con này tới đỉnh vj của e có trọng số = 0.
Theo đó mỗi cung e trong RG được rời rạc hoá thành họ đường đi có độ dài nguyên, đỉnh ui, uj trong RG được giữ nguyên trong G là các đỉnh mẹ và các đỉnh được chia trong e là đỉnh con.
Theo cách chia này thì giá, và trọng số của đường đi trong G được tính bằng cách:
Nếu lấy p = v1v2..vm là đường đi trong G:
l(p) = 1 1 ( , ) m i i i v v 1 ( ) ( ) ( , ) i m i i j i p v v v
Đường đi p gọi là thoả mãn LDI Al p( ) B ( )p M
Theo [1] thì ôtômat A thoả LDI nếu mọi mô hình nguyên của ôtômat A thoả LDI, hay nếu có một mô hình nguyên không thoả LDI thì ôtômat A không thoả LDI. Đồ thị G được xây dựng là tương thích với RG và ôtômat A nên, nếu tồn tại đường đi p không thỏa mãn LDI thì ôtômat A cũng không thoả LDI. Như vậy việc kiểm chứng ôtômat A thoả LDI tương đương với kiểm chứng công thức này với đồ thị G thông qua kết quả [1].
Định lý [1]: Bài toán kiểm chứng tính thoả công thức LDI đối với lớp mô hình MI(A) là tương đương với bài toán kiểm chứng tính thoả công thức LDI đối với tập đường đi P(G). Tức MI( )A thoả LDI P(G) thoả LDI.
Từ bài toán kiểm chứng tính thoả của A tương đương bài toán kiểm chứng tính thoả của mọi đường đi G với LDI.
2.4.THUẬT TOÁN KIỂM CHỨNG
Thuật toán được thực hiện qua các bước:
Bước 1: Chuyển ôtômat sang đồ thị vùng đạt được nguyên.
Ở bước này đầu vào là tệp dữ liệu chứa thông tin ôtômat. Từ đó dựa vào thuật toán xây dựng đồ thị nguyên đạt được, và khái niệm nguyên hoá ta xây dựng được đồ thị có trọng số nguyên có các cạnh với trọng số gán là [l, u].
Bước 2: Chuyển đồ thị vùng nguyên sang đồ thị trọng số LDI: các cung có trọng số bằng 1, 0.
Cách chuyển đã được xây dựng ở trên mục 2.3.
Bước 3: Duyệt đồ thị trọng số LDI để tính toán và đưa ra kết luận hệ ôtômat có thoả LDI hay không.
Thuật toán được đưa ra dựa trên kĩ thuật duyệt đồ thị đạt được G. Thuật toán thủ tục traverseLdi(vStart) duyệt mọi đường đi xuất phát từ vStart V kiểm tra có thoả LDI không.
Cụ thể:
Khởi tạo: vStart , l(p)= 0, ( )p 0.
Duyệt theo chiều sâu từ vStart tới các đỉnh, cho đến khi l(p) A. Bắt đầu từ
l(p) A trở đi, khi duyệt đỉnh tiếp theo nếu l(p)> B thuật toán quy lui, nhưng nếu
( )p M
thì dừng thuật toán và kết luận G không thoả LDI hay A không thoả LDI. G được coi là thoả LDI nếu tất cả các đỉnh đều được duyệt và ( )p M
Trong trường hợp B = , nếu có chu trình xảy ra ta xử lý nếu chu trình dương thì kết luận không thoả mãn vì sẽ có thời điểm ( )p M, nếu chu trình âm thì ( )p M
nhưng không cần thiết ta sẽ quay lui.
Một số biến và hàm dùng trong thuật toán cần lưu ý là: P: mảng để lưu đường đi gồm tên đỉnh x .
Succ(p): trả lại đỉnh tiếp theo y và xoá đỉnh khỏi tập chưa được thăm. Preach: lưu lại vị trí mà tại đó đường đi đạt đến độ dài A.
Reach: biến logic nhận giá trị 1 nếu l(p) A, 0 nếu ngược lại.
L(p), ( )p , l(c), ( )c trả lại độ dài, giá của p, chu trình c.
verifyLDI sẽ thực hiện duyệt tất cả các đỉnh và cho kết quả true nếu thoả mãn và fasle nếu không thoả mãn. Bảng 2-2 và 2-3 sẽ thể hiện thuật toán.
{input : G =(V,E),D} {output : TRUE nếu và chỉ nếu G(vstart) |= D}
Function Traverse(vstart):Boolean;
Begin
Bước 1: p = rong; push(vstart,Adj(vstart),p);
Bước 2: While p <> rong do
Begin
Bước 3: if succ(p) = NULL then begin pop(p); loop; end; {quay lui}
Bước 4: v = succ(p); push(v, Adj(v), p);
Bước 5: if l(p) < A then begin reach = 0; loop; end;
Bước 6: if reach = 0 then begin preach = v; reach = 1 ; end;
Bước 7: if l(p) > B then begin pop(p); loop; end; {quay lui}
Bước 8: if (θ(p) > M) then return FALSE; {A ≤ l(p) ≤ B }
Bước 9: if ∃C (đoạn từ preach đến v) và B = ∞ then
begin
Bước 10: if θ(C) > 0 then return FALSE;
Bước 11: if θ(C) ≤ 0 then pop(p); {quay lui}
end ;
end;
return TRUE;
End;
Bảng 2-2: Thuật toán kiểm chứng LDI tại một đỉnh
{input: G =(V,E), D}
{output: G |= D hoặc G |= D} Function verifyLDI: Boolean; Begin
for với mỗi đỉnh v V do begin
if Traverse(v) == FALSE then return G LDI; end;
return G |= LDI; End ;
CHƯƠNG 3: THUẬT TOÁN CẢI TIẾN
Thuật toán LDI được xây dựng ở trên vẫn còn độ phức tạp thời gian cao, hàm mũ trong trường hợp xấu nhất khi phải duyệt tất cả các trạng thái, chu trình đồ thị. Mặc dù thuật toán LDI đã cung cấp câu trả lời tính thoả hay không thoả nhưng do số trạng thái là nhiều nên ảnh hưởng đến hiệu quả của kiểm chứng. Vì vậy vấn đề được đặt ra là giảm độ phức tạp thuật toán, giảm thời gian xử lí. Trong chương này luận văn xin trình bày phương pháp giảm độ phức tạp bằng cách cải tiến đồ thị trọng số LDI.
3.1.Ý TƯỞNG
Trong quá trình duyệt đồ thị LDI ta thấy: Đặc tính của LDI là gồm các cung có độ dài = 0 hoặc 1, cạnh e = (v, v’, l, u) sẽ được chia thành u - 1 đỉnh. Với các cung có độ dài liên tiếp bằng 1 thì xảy ra trường hợp:
+ Trường hợp 1: duyệt hết các cung này hệ thống vẫn thoả công thức kiểm chứng thì lãng phí rất nhiều thời gian duyệt, thay vì duyệt từng cung như vậy ta có thể gộp các cung này thành 1 cung lớn có trọng số bằng tổng các cung thành phần, như vậy số đỉnh sẽ được rút lại rất nhiều (kết hợp xem hình 3.1, 3.2).
+ Trường hợp 2: là khi gộp mà yếu tố l(p) B, ta chưa quay lui thuật toán mà tiến hành duyệt các đỉnh con (chia như cũ) xem điều kiện ( )p M có thoả mãn hay không, nếu trong trường hợp duyệt 1 đỉnh “con” không thoả mãn ( )p Mthì dừng thuật toán ngay và trả lời không thoả mãn.
Nhìn một cách trực quan ta có thể hình dung: