q0, a, λ q1, b, λ q2, b, λ q0, b, λ q2, a, λ q1, a, λ π open start stop stop find find find start find open find find Hình 3.12: LTS A1||Input||Ordererr
Teacher tiến hành ghép nối A1||Input||Ordererr như trong hình 3.12. Ta thấy vẫn còn tồn tại dẫn xuất đến được trạng thái lỗi π nên Teacher trả về một phản ví dụ cex =
open.start.stop.open, cex↑Σ = start.stop.
Bước 5. Cập nhật bảng quan sát và sinh ứng viên LTS A2
Kết quả cập nhật bảng quan sát như ở bảng 3.4. Ta thấy, bảng quan sát này đã đóng vì thế DFA M2 sinh ra như trên hình 3.13. L* sẽ tiến hành chuyển M2 thành LTS A2 λ find find stop start stop find stop start start find start Hình 3.13: DFA M2
Bảng 3.4:Cập nhật bảng quan sát từ phản ví dụ mà Teacher trả về E E
T λ stop
λ True True
find False False
start True False
start True False
stop True True
find False False
find start False False
find stop False False
find find False False
start start True True
start stop False False
start find True True
λ stop start start find λ stop start start find start
Hình 3.14: LTS A2 được L* chuyển từ DFA M2
Bước 6: L* sẽ thực hiện truy vấn ứng viên để hỏi Teacher xem với LTS A2 thì L(M2) = U?
Teacher tiến hành ghép nối A2||Input||Ordererr, kết quả sau khi ghép nối được thể hiện như ở hình 3.15 λλ start find λλ stop start start π find start
Hình 3.15: LTS A2err chuyển từ LTS A2
Ta thấy LTS A2||Input||Ordererr không tồn tại một dẫn xuất đến được trạng thái lỗi π, vì thế A2||Input╞ Order
Bước 7: Kiểm tra kết quả của biểu thức true M2 A2 bằng cách chuyển LTS A2 sang LTS A2err như trên hình 3.16, sau đó Teacher tiến hành ghép nối M2||A2err như trên hình 3.17. q2, a, λ q1, b, λ q2, b, start q1, a, λ q0, a, λ q1, b, start q0, a, start q0, b, λ π q0, b, start q2, b, λ stop open start find open open stop start find q2, a, start start find q2, a, λ q1, a, start start find open find find Hình 3.16: LTS Input||Order||A2 q0 , λ q2 , λ q1 , λ startq0 , π q2 , start q1 , start start find stop start find stop
Hình 3.17: LTS Output||A2err Ta thấy A2||Input╞ Order và Output╞ A2 Ta thấy A2||Input╞ Order và Output╞ A2
Vì tồn tại giả định A2 để hai biểu thức A2 Input Order và True Output A2 đều thỏa mãn vì thế Input||Output╞ Order
3.2. Phƣơng pháp kiểm chứng giả định đảm bảo sử dụng thuật toán CDNF
3.2.1. Thuật toán CDNF
Nội dung phần này mô tả về thuật CDNF [8], với X là một tập cố định các biến lôgic và f(X) là một hàm lôgic trên tập X, thuật toán CDNF sẽ học một hàm f’(X) tương đương với f(X) (đương đương lôgic) trong một số bước hữu hạn bước. Thuật toán CDNF là thuật toán học chính xác cho các hàm lôgic. Giống như thuật toán L*, thuật toán CDNF sử dụng một mô hình học chủ động. Trong mô hình này, giả sử rằng có một Teacher. Teacher này biết hàm lôgic cần học f(X) và đưa ra câu trả lời cho thuật toán CDNF dựa vào hai loại câu hỏi. Loại câu hỏi thứ nhất là loại câu hỏi truy vấn thành viên MEM(υ) cho f(X) với υ là một phép gán trên X. Nếu f[υ] = T, Teacher trả lời Yes và nếu ngược lại Teacher trả lời là No. Loại câu hỏi thứ hai là loại câu hỏi truy vấn ứng viên EQ(θ) cho hàm f(X), trong đó θ(X) là một hàm lôgic trên tập X. Nếu θ(X) tương đương với hàm f(X), Teacher trả lời là Yes, ngược lại Teacher trả lời No và đưa ra một phép gán υ trên tập X là một phản ví dụ sao cho θ[υ] ≠ f[υ].
Ví dụ, giả sử f(x, y, z) = ∧ ̅ ∧ ∨ ̅ ∧ ∧ ̅ là hàm lôgic cần học trên tập X = { }. Teacher trả lời No đến truy vấn MEM(υ) trong đó υ( ) = FFT (υ( ) = F, υ( ) = F, υ( ) = T), khi đó Teacher kiểm tra f[υ( ), υ( ), υ( )] = f(F, F, T) = F nên Teacher trả lời No. Với truy vấn khác υ( ) = TFT, Teacher trả lời Yes. Một ví dụ về truy vấn ứng viên EQ( ∨ ∨ ). Teacher trả lời No và trả về một phản ví dụ là phép gán υ( ) = TTT vì f(T, T, T) = F EQ(TTT) = T. Với một truy vấn ứng viên khác EQ( ∧ ̅ ∧ ∨ ̅ ∧ ∧ ̅ ), Teacher trả lời Yes. Với f(X) là một hàm lôgic trên tập X, |f(X)|DNF và |f(X)|CNF được kí hiệu là kích thước của f(X) trong dạng chuẩn DNF và CNF. Dựa theo phương pháp học này, thuật toán CDNF tính toán ra một đại diện cho hàm lôgic f(X) bất kì thông qua một chuỗi các truy vấn trong |f(X)|DNF và |f(X)|CNF và |X| [7].
3.2.2. Sinh giả dịnh dựa trên thuật toán CDNF
Thuật toán 3.2 sẽ trình bày chi tiết về thuật toán CDNF [8]. Hàm ứng viên có dạng là hội của các Hi, với t là số lượng các Hi trong ứng viên cần học. Đầu tiên, chúng ta khởi tạo t = 0 (dòng 1) và đưa ra một truy vấn ứng viên EQ(1) đến Teacher. Nếu câu trả lời của Teacher là Yes thì f’(X) = 1 là hàm lôgic cần tìm, thuật toán kết thúc (dòng 2). Nếu câu trả lời của Teacher là No kèm theo một phản ví dụ cex. Tiếp
theo, thuật toán khởi tạo t = 0, H1 = F, S0 = Ø, a1 = cex (dòng 3), cex ở đây chính là một phép gán υ.
Thuật toán 3.2: Thuật toán CDNF Đầu vào: Không có
Đầu ra: Hàm lôgic f’(X)
1: t ← 0
2: EQ(1) → υ; If câu trả lời của Teacher là Yes then thuật toán kết thúc. 3: t ← t + 1, Ht ← 0, St ← Ø, at ← υ
4: EQ(∧ Hi) → υ; If câu trả lời của Teacher là Yes then thuật toán kết thúc. 5: I ← {i | Hi(υ) = 0}
6: If I = Ø then Goto 3 7: for i ∈ I do
8: υi ← υ
9: Đi từ υi về hướng ai sao cho f(υi) = 1 10: Si ← Si {υi ai}
11: Hi ← MDNF (Si)(x ⊕ai) với i = 1, …, t 12: Quay trở lại bước 4
Độ phức tạp: Độ phức tạp của thuật toán CDNF là O(n2
|f|CNF|f|DNF) với các truy vấn thành viên và O(|f|CNF|f|DNF) với các truy vấn ứng viên.
Lúc này, ứng viên cần học có dạng ∧ Hi = H1, thuật toán đưa ra truy vấn ứng viên EQ(H1) đến Teacher. Nếu câu trả lời của Teacher là Yes, thuật toán kết thúc (dòng 4). Ngược lại, thuật toán phân tích tìm ra tập I = {i | Hi(υ) = 0} (dòng 5). Nếu tập I rỗng, thuật toán toán quay lại dòng 3. Ngược lại, với mỗi phần tử i ∈ I, thuật toán sẽ sử dụng việc đi từ υi về hướng ai sao cho f[υi] = 1. Ví dụ việc đi từ υi = 010 về hướng ai = 101 được thực hiện như trên hình 3.17.
Với υi = 010, ai = 101, trong đó mỗi giá trị trên hình 3.18 là một phép gán υi. Việc đi từ giá trị υi đến υi+1 được thực hiện bằng cách lật một bit của υi từ 1 sang 0 hoặc ngược lại [8], sao cho mỗi giá trị υi+1 là duy nhất và υi+1 ≠ υi. Trong quá trình đi từ υi đến ai theo các đường mũi tên trên hình 3.18, từ giá trị υi, chúng ta đi đến giá trị υi+1 bằng cách sử dụng câu hỏi truy vấn thành viên MEM(υi+1), nếu câu trả lời của Teacher là Yes, tức là f[υi+1] = 1 thì chúng ta tiếp tục đi đến giá trị υi+2 ở dưới υi+1 theo hướng mũi tên và tiếp tục hỏi Teacher, nếu câu trả lời của Teacher là No, thuật toán dừng lại. Đưa phép gán υi gần nhất mà f[υi] = 1 vừa tìm được vào trong tập Si (dòng
10) và tiến hành cập nhật lại biểu thức Hi (dòng 11). Sau đó thuật toán quay trở lại dòng 7 đê cập nhật các Hi tiếp theo. Sau khi tất cả các Hi đều đã được cập nhật lại, thuật toán lại quay trở lại dòng 4 để hỏi Teacher.
010 000 110 011 001 100 111 101 Hình 3.18: Mô hình đi từ υi = 010 đến ai = 101
Mục tiêu của chúng ta là sinh ra giả định N = X, E, τA(X, E, X’), ιA(X). Giả định này bao gồm hai hàm: ι(X) và τ(X, E, X’) là các hàm lôgic tương ứng trên tập X, X X’ và E. Chúng ta sẽ sử dụng thuật toán CDNF để học cả hai hàm lôgic này. Một cách chính xác, hai thực thể của thuật toán CDNF sẽ được thực thi, một thực thể cho hàm khởi tạo ι(X) và một thực thể cho hàm chuyển trạng thái τ(X, E, X’). Tương ứng với hai loại thực thể của thuật toán CNDF sẽ có 4 loại câu hỏi truy vấn cho phía Teacher:
Câu hỏi truy vấn thành viên MEM(μ) cho hàm khởi tạo ιA(X),
Câu hỏi truy vấn thành viên MEM(μ, γ, μ’) cho hàm chuyển trạng thái τA(X, E, X’),
Câu hỏi truy vấn ứng viên EQ(ι) cho hàm khởi tạo ιA(X), và
Câu hỏi truy vấn ứng viên EQ(τ) cho hàm chuyển trạng thái τA(X, E, X’).
Câu hỏi truy vấn thành viên MEM(μ) cho hàm khởi tạo ιA(X) được xử lí bằng cách kiểm tra xem μ có thỏa mãn ι1(X) hay không. Nếu μ thỏa mãn ι1(X) thì μ cũng sẽ thỏa mãn ιA(X) bởi vì M1 A. Câu hỏi truy vấn thành viên MEM(μ, γ, μ’) cho hàm chuyển trạng thái τA(X, E, X’) cũng được xử lí một cách tương tự. Với các câu hỏi truy vấn ứng viên, câu trả lời của Teacher là Yes khi và chỉ khi giả định A được tìm thấy. Cả hai câu hỏi truy vấn ứng viên ι(X) và τ(X, E, X’) đều cần thiết để quyết định xem A có là giả định hay không. Hai câu hỏi truy vấn ứng viên EQ(ι) và EQ(τ) không thể xử lí một các độc lập với nhau. Ngược lại với các thuật toán xử lí các truy vấn thành viên, chỉ có một thuật toán xử lí các truy vấn ứng viên cho cả hai câu hỏi truy vấn EQ(ι) và EQ(τ).
Hình 3.19 minh họa sự tương tác giữa các thành phần trong thuật toán sinh giả định được biểu diễn bởi dạng đặc tả sử dụng hàm lôgic. Trong hình này, gồm có hai
thành phần chính: Learner chính là hai thực thể của thuật toán CDNF nằm ở hai phía (thực thể CDNF ιA và thực thể CDNF τA), Teacher chính là phần trung tâm đặt trong khung nét đứt. Phần Teacher có ba thuật toán xử lí các truy vấn từ phía Learner. Với μ là một phép gán trên tập X. Câu hỏi truy vấn thành viên MEM(μ) hỏi xem μ có là một phép gán thỏa mãn hàm khởi tạo ιA(X) của giả định A hay không. Thuật toán 3.3 và 3.4 dưới đây lần lượt minh họa việc xử lí truy vấn thành viên MEM(μ) và MEM(μ, γ, μ’). Thuật toán CDNF ιA Thuật toán CDNF τA Xử lí truy vấn thành viên IsMember ιA(μ) Xử lí truy vấn thành viên IsMember τA(μ, γ, μ)
Xử lí truy vấn ứng viên IsEquivalent(ι, τ)
MEM(μ) Yes, No EQ(ι) Yes, ceι MEM(μ, γ, μ ) Yes, No EQ(τ) Yes, ceτ
Hình 3.19: Mô hình sinh giả định sử dụng thuật toán CDNF
Thuật toán 3.3. Thuật toán IsMember ιA(X)
Đầu vào: MEM(μ): Một truy vấn thành viên cho hàm khởi tạo ιA(X)
Đầu ra: Yes hoặc No
1: if ι1[μ] = T 2: return Yes 3: else
4: return No
Thuật toán 3.3 minh họa việc xử lí truy vấn thành viên MEM(μ). Chúng ta nhớ lại rằng M1 A trong quy tắc giả định – đảm bảo. Hàm lôgic biểu diễn trạng thái khởi tạo cho giả định A phải thỏa mãn X: ι1(X) ⇒ ιA(X). Với phép gán μ trên tập X, Teacher sẽ kiểm tra xem ι1[μ] = T hay không. Nếu ι1[μ] = T thì Teacher trả lời Yes. Ngược lại, Teacher trả về No và thuật toán kết thúc. Đối với các truy vấn thành viên MEM(μ, γ, μ’) cho hàm biểu diễn chuyển trạng thái τA(X, E, X’) của giả định A chưa biết. Với μ, μ’ lần lượt là các phép gán trên tập X và X’, γ là phép gán trên tập E. Nếu τ1[μ, γ, μ’] = T thì Teacher trả lời Yes. Ngược lại, Teacher trả lời No.
Thuật toán xử lí các câu hỏi truy vấn ứng viên gọi chung là Teacher sẽ trả lời hai loại câu hỏi truy vấn ứng viên khác nhau từ hai thực thể của thuật toán CDNF. Truy vấn ứng viên EQ(ι) từ thực thể CDNF ιA hỏi xem xem hàm lôgic ι(X) có phải là hàm khởi tạo của giả định cần tìm hay không. EQ(τ) từ thực thể CDNF τ sẽ hỏi xem hàm
lôgic τ(X, E, X’) có phải là hàm biểu diễn cho chuyển trạng thái của giả định cần tìm hay không. Với ι(X) và τ(X, E, X’) là các câu hỏi truy vấn ứng viên, xét hệ chuyển trạng thái được biểu diễn bằng dạng đặc tả sử dụng hàm lôgic A = X, E, τA(X, E, X’), ιA(X). Thuật toán xử lí câu hỏi truy vấn ứng viên ban đầu sẽ kiểm tra xem A có phải là hệ chuyển trạng thái mô phỏng cho M1 hay không. Nếu không phải, thuật toán xử lí câu hỏi truy ứng viên sẽ trả lại một phản ví dụ cho thực thể CDNF ιA hoặc thực thể CDNF τA. Ngược lại, Teacher tiếp tục kiểm tra kiểm tra xem A có thực sự là giả định hay không bằng việc xác minh M2||A╞ π dựa trên một thuật toán kiểm chứng mô hình. Nếu M2||A╞ π, Teacher trả lời là Yes. Chúng ta kết thuật M2||A╞ π. Nếu M2||A ⊭ π Teacher trả lời câu hỏi truy vấn ứng viên sẽ phân tích phản ví dụ cex được trả về bởi thuật toán kiểm chứng mô hình. Nếu phản ví dụ được trả về là bằng chứng để M1||M2
⊭ π, chúng ta kết luận M1||M2 ⊭ π. Ngược lại thuật toán xử lí truy vấn ứng viên trả về một phản ví dụ cho thực tể CDNF ιA hoặc thực thể CDNF τA.
Thuật toán 3.4. Thuật toán IsMember τA(X, E, X’)
Đầu vào: MEM(μ, γ, μ’): Một truy vấn thành viên cho hàm khởi tạo τA(X, E, X’)
Đầu ra: Yes hoặc No
1: if τ1[μ, γ, μ’] = T 2: return Yes 3: else
4: return No
Thuật toán 3.5 đưa ra chi tiết về thuật toán xử lí câu hỏi truy vấn ứng viên. Với A là hệ chuyển trạng thái được biểu diễn bằng dạng đặc tả sử dụng hàm lôgic A = X, E, τA(X, E, X’), ιA(X). Để kiểm chứng xem A có phải hệ chuyển trạng thái mô phỏng cho M1 hay không, thuật toán kiểm tra xem ι1(X) ˄ ̅̅̅̅̅̅ có thỏa mãn hay không. Nếu ι1(X) ˄ ̅̅̅̅̅̅ được thỏa mãn bởi phép gán μ thì phép gán μ được trả về cho thực thể CDNF ιA như là một phản ví dụ cho câu hỏi truy vấn ứng viên EQ(ι) (dòng 2). Thuật toán xử lí truy vấn truy vấn ứng viên (Teacher) quay trở lại trạng thái ban đầu và nhận được một câu hỏi truy vấn ứng viên mới từ thực thể CDNF ιA (dòng 3). Một cách hoàn toàn tương tự nếu τ1(X, E, X’) ˄ ̅̅̅̅̅̅̅̅̅̅̅̅̅ được thỏa mãn bởi μγμ’ thì phép gán μγμ’ được Teacher trả về cho CDNF τA như là một phản ví dụ cho câu hỏi truy vấn ứng viên EQ(τ) (dòng 6). Thuật toán xử lí truy vấn ứng viên quay trở lại trạng thái ban đầu và nhận một câu hỏi truy vấn ứng viên mới từ thực thể CDNF τA (dòng 7). Sau bước này, chúng ta thu được giả định A của M1 (M1 A). Bước tiếp theo là kiểm tra xem A có thật sự là giả định của M2 hay không. Teacher sử dụng phương pháp kiểm chứng
kiểm chứng tính đúng đắn của biểu thức M2||A╞ π. Nếu M2||A╞ π, Teacher kết luận M1||M2╞ π. Ngược lại, Teacher trả về một phản ví dụ α là bằng chứng để M2||A ⊭ π.
Chúng ta chú ý A hệ chuyển trạng thái mô phỏng cho M1 nên L(M1) ⊆ L(A). Với α là bằng chứng để M2||A ⊭ π thì không có nghĩa α là một bằng chứng để M1||M2
⊭ π với α↓X không phải là một vết của M1. Vì thế thuật toán 3.6 sẽ kiểm tra xem α↓X∈
L(M1) hay không.
Thuật toán 3.5: IsEquivalent(ι, τ)
Đầu vào: EQ(ι): Một truy vấn ứng viên cho hàm khởi tạo ιA(X);
EQ(τ): Một truy vấn ứng viên cho hàm chuyển trạng thái τA(X, E, X’)
Đầu ra: Yes hoặc No cùng một phản ví dụ cho EQ(ι) hoặc một phản ví dụ cho
EQ(τ)
Với A là một hệ chuyển trạng thái được biểu diễn bởi dạng đặc tả sử dụng hàm lôgic A = X, E, τA(X, E, X’), ιA(X);
1. if ι1(X) ˄ ̅̅̅̅̅̅ được thỏa mãn bởi μ 2. Trả lời EQ(ι) với phản ví dụ μ
3. Nhận một truy vấn ứng viên khác EQ(ι’); 4. Gọi hàm IsEquivalent(ι’, τ)
5. if τ1(X, E, X’) ˄ ̅̅̅̅̅̅̅̅̅̅̅̅̅ được thỏa mãn bởi μγμ’ 6. Trả lời EQ(τ) với phản ví dụ μγμ’
7. Nhận một truy vấn ứng viên khác EQ(τ’) 8. Gọi hàm IsEquivalent(ι, τ’)
9. if M2||A╞ π
10. Trả lời EQ(ι) là Yes; 11. Trả lời EQ(τ) là Yes; 12. Thông báo “M2||A╞ π” 13. else
14. Với α là một witness để M2||A ⊭ π 15. Gọi hàm IsWitness(α)
16. end
Thuật toán 3.6 lấy bằng chứng α mà làm cho M2||A ⊭ π làm đầu vào, thuật toán phân tích α có tên là IsWitness(α) kiểm tra α để xem α↓X có phải là là một vết của M1 hay không. Nếu α↓X ∈L(M1) thì M1||M2 ⊭ π. Ngược lại, hệ chuyển trạng thái A khác với M1 tại một số điểm α↓X. Những điểm khác này được trả lại hoặc cho thực thể CDNF ιA hoặc thực thể CDNF τA như là một phản ví dụ tương ứng cho EQ(ι) hoặc EQ(τ). Cụ thể hơn, α↓X = μ0e0μ1e1 … etμt là một chuỗi các phép gán trên tập X và tập E. Thuật toán 3.6 kiểm tra xem μ0 có phải là phép gán thỏa mãn ι1 hay không. Nếu
ι1[μ0] = F thì μ0 là một phải ví dụ của try vấn ứng viên EQ(ι) (dòng 3). Ngược lại, thuật toán IsWitness(α) kiểm tra mỗi chuyển trạng thái μi-1γi-1μi
trong α↓X của A có phải là phép gán thỏa mãn hàm biểu diễn chuyển trạng thái của M1 hay không. Nếu tồn tại chuỗi phép gán μiγiμi+1
(0 ≤ i ≤ t) trong α↓X để τ1[μi-1, γi-1