Kỹ thuật cải tiến cho việc trả lời các câu hỏi kiểm tra thành viên

Một phần của tài liệu Tối ưu việc sinh giả thiết bằng giải thuật học L cho kiểm chứng từng phần phần mềm dựa trên thành phần (Trang 30)

Dựa trên tư tưởng của giải thuật L* được đưa ra trong [4], giải thuật thực hiện huấn luyện dần dần tập trạng thái của giả thiết cần tìm. Tuy nhiên, phương pháp trong [9, 10] sẽ cải tiến cách trả lời câu hỏi kiểm tra thành viên đã được đưa ra trong giải thuật đó. Như đã đề cập ở trên, để học ngôn ngữ của giả thiết, giải thuật học L* trong [4] đã xây dựng một bảng quan sát (S, E, T) trong đó T là một hàm thực hiện ánh xạ tập (SS. ). E sang tập {true, false}. Với mỗi chuỗi s(SS. ). E, giá trị T(s) được

gán là true nếu s L(AW) và bằng false nếu ngược lại. Tuy nhiên, trong trường hợp s L(AW), chúng ta không chắc chắn được rằng chuỗi s có nằm trong giả thiết cần được huấn luyện hay không (tức là, s L(A(p))?). Nếu s L(A(p)) khi đó T(s) phải nhận giá

trị false. Tuy nhiên, giải thuật trong [4] đặt T(s) là true trong trường hợp này. Vì lý do

giải quyết được hạn chế này, phương pháp sinh giả thiết tối thiểu [9, 10] sử dụng một giá trị mới “?” để gán cho giá trị của T(s) trong những trường hợp trên. Phương pháp đề xuất định nghĩa một kỹ thuật cải tiến để trả lời câu hỏi kiểm tra thành viên như sau. Để tạo một giả thiết tối thiểu, giải thuật học L* cải tiến sẽ xây dựng một bảng quan sát (S, E, T), trong đó S và E tương ứng là tập tiền tố và hậu tố. T là một hàm thực hiện ánh xạ tập (SS. ). E sang tập {true, false, “?”}, trong đó “?” có thể được xem như là

một giá trị “chưa xác định”. Giá trị “chưa xác định” có nghĩa là với mỗi chuỗi ( . ).

sSSE, thậm chí s L(AW), chúng ta không biết chuỗi s có nằm trong giả thiết

được huấn luyện hay không. Chúng có thể nhận giá trị true hoặc false. Nếu nhận giá trị là true, tức là nó sẽ thuộc vào L(A(p)) còn nhận giá trị là false, tức là nó không thuộc

vào L(A(p)). Câu trả lời cho câu hỏi kiểm tra thành viên được cải tiến như sau:

Một chuỗi s = a1, a2, ..., an (SS. ). E.

Nếu s = λ (chuỗi rỗng), khi đó T(s) = true.

Nếu s  L(AW), thì T(s) = false.

Ngược lại, T(s) = “?”.

Một phần của tài liệu Tối ưu việc sinh giả thiết bằng giải thuật học L cho kiểm chứng từng phần phần mềm dựa trên thành phần (Trang 30)