Đường đi trong đồ thịtrọng số G

Một phần của tài liệu Một số phương pháp kiểm chứng tính đúng đắn của hệ thời gian thực bằng thuật toán (Trang 88)

4 Kỹ thuật rời rạc hoá và duyệt đồ thị đạt được

4.7Đường đi trong đồ thịtrọng số G

Mô hình nguyên σ = (s, t,[b, e]) nhận được từ σ bằng cách mở rộng quan sát về hai phía, cụ thể lấy b = tu l(p1) và e = tv +l(p3) ta nhận được

l(σ) = e−b = tv −tu+l(p1) +l(p3) = l(p1) +l(p2) +l(p3) =l(p). Tương tự,

θ(σ) = (tu−b)cu−1+θ(σ) + (e−tv)cv = θ(p1) +θ(p2) +θ(p3) =θ(p). Từ đó nếu p|= LDI thì ta cũng có σ |= LDI.

Ngược lại, lấyσ = (s, t,[b, e])∈ MI(A) là một mô hình nguyên không thoả LDI. Như đã biết σ thể hiện một đoạn quan sát từ thời điểm b đến e của dãy các vịtrí thời gian (s0, t0),(s1, t1). . ., trong đó δi = ti+1−ti, ∀i 0 là thời khoảng mà hệ thống nằm tại si trước khi chuyển đếnsi+1. Ngoài ra có tồn tại

các chỉ số u, v sao cho tu−1 < b ≤tutv ≤e < tv+1. Goịσ là mô hình nguyên (s, t,[tu, tv]). Từ đó theo định nghĩa của l(σ), θ(σ) và giả thiếtσ |= LDI, ta có:

A (tu−b) +l(σ) + (e−tv) B

Biểu thức trên cũng tương đương:

A−(tu−b)(e−tv) l(σ) ≤B (tu−b)(e−tv)

θ(σ) > M −cu−1(tu−b)−cv(e−tv) (4.8) Theo bổ đề 4.11 và 4.12, trong RG có tồn tại một thể hiện trọng số

=vuduvu+1du+1. . . dv−1vv, trong đó vi si, di N (∀i =u..v 1) sao cho:

A−(tu−b)(e−tv) ≤l() ≤B (tu −b)(e−tv)

θ() ≥θ(σ) > M −cu−1(tu−b)−cv(e−tv) (4.9) Theo bổ đề 4.11, trongGcó tồn tại đường đi tương ứng với, tức có đường đi p2 nối vu và vv sao cho l(p2) = l(), θ(p2) = θ(), từ đó:

A−(tu−b)(e−tv) ≤l(p2) ≤B (tu−b)(e−tv)

θ(p2)> M −cu−1(tu−b)−cv(e−tv) (4.10) Chú ý từ dãy vịtrí s trong mô hình σ ta cũng dễ dàng chứng minh được trongRG có cung(vu−1,vu)và(vv,vv+1)(vu−1 su−1,vv+1 sv+1), từ đó trong

G lấy đường đip1 thuộc cung(vu−1,vu) nối với vu và có độ dài tu−bđơn vịvà lấy p3 thuộc cung(vv,vv+1) đi từ vv và có độ dàie−tv đơn vị. Thực chấtp1, p3

là dãy gồm tu−be−tv các cung trọng số 1. Ta có: tu−b ≤tu−tu−1 uu−1

và tương tự e−tv tv+1−tv uv, trong đó uu−1 và uv là các cận trên của các cung (vu−1,vu) và (vv,vv+1).

Tóm lại, ta có: l(p) = l(p1) +l(p2) +l(p3) và θ(p) =θ(p1) +θ(p2) +θ(p3). Dễ thấy l(p1) =tu−b, θ(p1) = cu−1(tu−b), l(p3) =e−tvθ(p3) =cv(e−tv). Kết hợp với các đẳng thức trong 4.10 ta được A ≤l(p) Bθ(p) > M tức p|= LDI.

Định lý sau đây là kết quả của các thảo luận ở trên. Nó cung cấp tính tương đương giữa hai bài toán kiểm chứng LDI đối với ôtômat thời gian A và kiểm chứng công thức này đối với đồ thị G.

81

Định lý 4.4. Bài toán kiểm chứng tính thoả của 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ủa công thức LDI đối với tập đường đi P(G). Tức MI(A)|= LDI ⇔ P(G) |= LDI.

Kết quả của định lý dễ dàng suy được trực tiếp từ bổ đề 4.12. Do tính rời rạc hoá được của LDI đối với ôtômat A nên M(A) |= LDI ⇔ MI(A) |= LDI

⇔ P(G) |= LDI. Do vậy, để kiểm chứng tính thoả của A đối với LDI ta có thể kiểm chứng tính thoả của mọi đường đi trong G đối với LDI. Sau đây chúng tôi trình bày thuật toán để phục vụ cho bài toán kiểm chứng này.

4.3.3 Thuật toán kiểm chứng LDI

Dựa vào các kết quả ở trên, trong phần này chúng tôi đề nghịmột thuật toán kiểm chứng LDI bằng cách duyệt trên đồ thịđạt được G. Thuật toán gồm một thủ tục Traverse(vstart) duyệt mọi đường đi xuất phát từ một đỉnh vstartcố định, và thủ tụcChecking-LDI sẽ gọi chạy thủ tụcTraverse(vstart) với mọi đỉnh vstart V để quyết định tính thoả của A đối với LDI.

Thủ tục Traverse(vstart) được xây dựng theo kỹ thuật vét hết như sau: đường đi p xuất phát từ đỉnh ban đầu vstart của G (vớil(p) = 0 và θ(p) = 0), đi dọc theo các cạnh tới các đỉnh mới cho đến khi l(p) A. Bắt đầu từ thời điểm l(p) A trở đi, tại mỗi đỉnh mới nếu l(p) > B thuật toán quay lui. Ngược lại (tức A l(p) B) nếu θ(p) > M thuật toán dừng và cho câu trả lời phủ định (G |= LDI) và nếu θ(p) M thuật toán đi tiếp đến đỉnh khác. Thuật toán quay lui khi không còn đỉnh mới để đi tiếp và dừng với câu trả lời khẳng định (G|= LDI) khi đã quay lui về hết đường đi (p=).

Trường hợp B = , để tránh đường đi lặp lại vô hạn, thủ tục sẽ xử lý các chu trình gặp được (từ lúc l(p) ≥A trở đi) như sau: Nếu chu trình dương thuật toán dừng và kết luận G|= LDI (vì có thể bổ sung vào đường đi một số đủ lớn lần lặp của chu trình sao cho giá của đường đi lớn hơn M). Nếu chu trình âm hoặc bằng 0, việc đặt chu trình này vào đường đi là không cần thiết

vì giá của đường đi vẫn không tăng, do vậy thuật toán sẽ quay lui.

Để thể hiện ý tưởng vét hết, thuật toán sử dụng biến p như một ngăn xếp dùng để lưu lại đường đi. Mỗi phần tử của p gồm 2 thành phần : tên đỉnh x và tập đỉnh Ax chưa được thăm bởi x. Thủ tục succ(p) sẽ trả lại đỉnh y Ax (adsbygoogle = window.adsbygoogle || []).push({});

(với x là đỉnh cuối của p) và đồng thời loại y ra khỏi Ax. Như vậy, một đỉnhx có thể xuất hiện nhiều lần trong p, tuy nhiên tại mỗi vịtrí xuất hiện các tập đỉnh Ax là hoàn toàn độc lập với nhau và đều được khởi tạo bởi Adj(x) là tập đỉnh kề của x.

Các biến toàn thể được sử dụng trong thuật toán gồm có : v, v để chỉ đỉnh

cuối của p và đỉnh sẽ được bổ sung ở bước tiếp theo. preach dùng lưu lại vị trí tại đó đường đi p đạt đến độ dài A (các chu trình chỉ được xử lý nếu xuất hiện sau vịtrí preach). Để điều khiển việc đánh dấu này thuật toán sử dụng biến reach như một biến lôgic nhận giá trị1 nếu l(p) A và 0 nếu ngược lại. Hàm succ(p) tìm và trả lại đỉnh tiếp theo (đồng thời loại khỏi tập chưa thăm) hoặc trả lại giá trịNULL. Các hàm l(p), θ(p), l(C), θ(C) trả lại độ dài và giá của đường đi p và chu trình C. Thủ tục pop(p) loại phần tử cuối ra khỏi p và thủ tục push(x, Adj(x),p) thêm đỉnh x cùng tập Ax = Adj(x) vào cuối p. Cuối cùng thuật toán trả lại giá trịTRUE nếu LDI được thoả bởi G và FALSE trong trường hợp ngược lại. Sơ đồ của các thuật toánTraverse(vstart)

Checking-LDI được cho trong các bảng 4.3 và 4.4.

Hiện tại thuật toánChecking-LDIvẫn có độ phức tạp thời gian cao (hàm mũ trong trường hợp xấu nhất vì phải duyệt tất cả chu trình của đồ thị) nhưng nó cũng cung cấp câu trả lời về tính quyết định được của bài toán kiểm chứng LDI đối với ôtômat thời gian. Vì vậy, mặc dù nhiều bước trong thuật toán có thể rút gọn được để hạ thấp độ phức tạp, ví dụ việc xử lý chu trình, việc sử dụng đặc điểm của đồ thị(các cung có độ dài hoặc 0 hoặc 1), trong một chừng mực nào đó các đỉnh mẹ có thể thay thế cho tập các đỉnh con v.v.. nhưng để đơn giản các chi tiết đó không được trình bày ở đây.

83

Function Traverse(vstart):Boolean; { input : G = (V,E),D}

Begin { output : TRUE nếu và chỉ nếu G(vstart) |=D} p=; push(vstart, Adj(vstart),p);

while p= do begin

if succ(p) = NULL then begin pop(p); loop; end; { quay lui } v =succ(p); push(v, Adj(v),p);

if l(p) < A then begin reach= 0; loop; end;

if reach= 0 then begin preach =v; reach= 1; end;

if l(p) > B then begin pop(p); loop; end; { quay lui }

if (θ(p) > M) then return FALSE; {A ≤l(p) ≤B}

if ∃C (đoạn từ preach đến v) và B = then begin if θ(C) >0 then return FALSE;

if θ(C) 0 then pop(p); { quay lui }

end;

end;

return TRUE;

End;

Bảng 4.3: Thuật toán kiểm chứng LDI với đỉnh xuất phát cố định

Function Chekcking-LDI:Boolean; { input: G= (V,E),D}

Begin { output: G|=D hoặc G|= D}

for với mỗi đỉnh v V do

if Traverse(v)=FALSE then return G|= LDI; return G|= LDI;

End;

4.3.4 Kiểm chứng tính an toàn của hệ chắn tàu bằng rời rạc hoá

Trong phần này chúng tôi minh hoạ thuật toán kiểm chứng LDI bằng phương pháp rời rạc hoá đối với hệ chắn tàu được cho trong chương 3 (hình 3.1). Hệ gồm hai ôtômat chạy song song với phép chuyển (A,B) đồng bộ với phép chuyển (U,MD) và (MU,MD); (C,P) đồng bộ với (Dn,MU). Công thức LDI cần kiểm chứng là D = 0 ≤ ∞ ⇒ C− Dn 0. Ôtômat đạt được của hệ gồm 2 đồng hồ x, y, 8 vịtrí và 11 phép chuyển như minh hoạ trong hình 4.8, trong đó ((A,U),(B,MD)), ((A,MU),(B,MD)) và ((C,Dn),(P,MU)) là các phép chuyển đồng bộ. Tập hợp gán trên các phép chuyển là tập đồng hồ đặt về 0. Như vậy bài toán kiểm chứng công thức D trên hệ chắn tàu được đưa về kiểm chứng công thức D = 0 ≤≤ ∞ ⇒(C, MD)(B, Dn) 0.

Một phần của tài liệu Một số phương pháp kiểm chứng tính đúng đắn của hệ thời gian thực bằng thuật toán (Trang 88)