Thuật giải tìm và giải hệ phương trình

Một phần của tài liệu Nghiên cứu mô hình COKB thu hẹp và giải quyết vấn đề trên thành phần tri thức hàm (Trang 64)

Một vấn đề nữa ta gặp phải trong thuật toán giải toán tự động chính là vấn đề tìm kiếm và giải các hệ phương trình. Vấn đề đặt ra như sau: Từ tập các sự kiện đã cho của bài toán ta phải tìm kiếm các luật, các hàm cũng như là sự kiện có thể áp dụng được để sinh ra các phương trình, từ đó tính toán và suy luận sinh ra các sự kiện mới. Input: Tập các sự kiện, tập các luật, tập các hàm

62

Output: Sinh ra tập sự kiện mới và lưu lại các bước giải. Thuật giải này được thực hiện thông qua các bước như sau: Bước 1: Khởi tạo các biến cần dùng

RuleFunc:= []; # lưu các luật, hàm có thể áp dụng để sinh ra phương trình

Vars := {}; # lưu tất cả các biến

Bước 2: Thực hiện tìm kiếm các luật, hàm hay các sự kiện có khả năng sinh phương trình.

<2.1> find_rule(): Tìm kiếm các luật có thể áp dụng được

<2.2> find_fact8(): Tìm kiếm các sự kiện loại 8 thỏa điều kiện là có ít nhất một biến chưa biết trong tất cả các biến có trong sự kiện loại 8.

<2.3> find_fact9(): tương tự find_fact8() nhưng áp dụng cho các sự kiện loại 9. <2.4> find_fact10(): tương tự như find_fact8() nhưng áp dụng cho các sự kiện loại 10.

<2.5> find_fact3_object(): tìm kiếm sự kiện loại 3 bên trong cấu trúc một object với điều kiện vế trái của sự kiện loại 3 chưa xác định.

Sau mỗi bước, nếu tìm thấy luật, hàm hay sự kiện có thể sinh ra phương trình thì lưu chúng vào RuleFunc và lưu các biến trong luật, hàm hay sự kiện đó vào Vars.

Bước 3: Từ các luật, hàm, sự kiện tìm được ở trên, thực hiện sinh phương trình rồi chọn các hệ phương trình tương ứng để giải.

Vars := [op(Vars)];

Values := Get_Values(Vars); # lấy giá trị của Vars Nếu giá trị của các biến là giá trị đơn

Eqs := {}; # lưu phương trinh for rf to nops(RuleFunc) do

- Sinh phương trình

- Eqs := Eqs union {pt}

- Tìm kiếm trong Eqs những phương trình có thể giải được. - Giải phương trình để có được giá trị của biến chưa biết. - Sau đó loại những phương trình đã giải ra khỏi Eqs.

63

end for;

Nếu giá trị của các biến không phải là giá trị đơn for value in Values do

thực hiện như trường hợp giá trị đơn ở trên với mỗi value.

end for;

Một phần của tài liệu Nghiên cứu mô hình COKB thu hẹp và giải quyết vấn đề trên thành phần tri thức hàm (Trang 64)