Cài đặt thuật toán lập luận

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Biểu diễn tri thức và lập luận trong logic mô tả (Trang 75 - 80)

Chương 4 Cài đặt thử nghiệm thuật toán lập luận

4.1 Cài đặt thuật toán lập luận

Như đã đề cập trước đây, việc giải bài toán thoả có thể giải được bài toán bao hàm bằng cách chuyển bài toán bao hàm về bài toán không thoả theo bổ đề 2.3. Vì vậy, thay vì ta đi cài đặt cho hai thuật toán lập luận thì ta chỉ cài đặt cho thuật toán thoả.

Thuật toán làm việc như sau:

Bắt đầu với hệ ràng buộc S ={x:C}, sau đó áp dụng những luật chuyển đổi được giới thiệu trong chương 2 cho đến khi tất cả các ràng buộc thoả hoặc một mâu thuẩn xảy ra được xác định, nghĩa là thuật toán sẽ cho kết luận là không thoả nếu tất cả các hệ ràng buộc có chứa mâu thuẫn (clash) ngoài ra

nếu hệ ràng buộc không còn luật nào được áp dụng nữa và không chứa clash thì thuật toán sẽ cho kết luận là thoả.

Thuật toán thoả cho ngôn ngữ ALC được mô tả như trên có độ phức tạp về thời gian xử lý và bộ nhớ là một hàm mũ[11]. Với một khái niệm đầu vào Cn, thuật toán thoả sẽ dẫn đến một Abox đầy đủ, sự thể hiện của lập luận để khẳng định khái niệm này thoả hay không thoả là một cây nhị phân có chiều sâu n và nó chứa 2n+1 - 1 cá thể. Tuy vậy, thuật toán có thể được cải tiến tốt hơn để chi phí cho bộ nhớ cần cho quá trình xử lý là đa thức. Công việc chính trong việc lập luận ở đây là ta xét một cách riêng biệt trên những nhánh khác nhau của cây mô hình được sinh ra khi sử dụng thuật toán. Vì thế, cây mô hình được xây dựng và tìm kiếm theo chiều sâu. Ta mô tả một thuật toán không đơn định mà chi phí cho bộ nhớ chỉ là đa thức. Tức là, đối với luật không đơn định , ta sẽ giả sử rằng thuật toán chọn lần lượt một trong những ràng buộc sinh ra trong luật . Theo cơ chế này, thuật toán làm việc như sau:

Thuật toán bắt đầu với ràng buộc {C0(x0)} sau đó:

1) Áp dụng những luật và trong khi còn có thể, sau đó kiểm tra clash,

2) Áp dụng luật , phần tử sinh ra trong luật được sử dụng trong khi áp dụng luật , sau đó kiểm tra clash,

3) Lặp lại quá trình trên cho đến khi không còn luật nào để áp dụng.

Việc thực hiện thuật toán thoả của ngôn ngữ ALC có thể được mô tả bằng ngôn ngữ tựa Pascal như sau:

Input:- Cơ sở tri thức của lĩnh vực quan tâm, - Khái niệm cần kiểm tra,

Output: Kết luận khái niệm đã cho có thoả với cơ sở tri thức trong lĩnh vực quan tâm hay không.

ALC-SAT(C):=sat(x0,{x0:C}) Sat(x,A):

While (có thể áp dụng luật và luật ) và (A không mâu thuẩn) Do áp dụng các luật và luật vào A;

IF A chứa mâu thuẩn Then returnkhông thỏa

E:={x: R.D | x: R.D A}

While E Do Begin

Chọn tuỳ ý một x: R.D E;

Anew := {(x,y):R, y:D} ở đây y là một cá thể mới;

While (có thể áp dụng luật trong A ANew) Do áp dụng luật và thêm ràng buộc mới vào ANew ; IF hệ ràng buộc A ANew clash Then returnkhông thoả” E:=E\{x: R.D | y:D ANew}

Xoá bỏ ANew khỏi bộ nhớ;

End;

Returnthoả

Cài đặt chương trình thuật toán:

Thuật toàn được cài đặt bằng ngôn ngữ lập trình Visual C++ thực hiện trên hệ điều hành Windows.

Chú ý:

- Khi sử dụng chương trình chúng ta phải nhập các ký hiệu trong khái niệm cần kiểm tra theo đúng quy định: Các phép toán trong khái niệm đầu vào của chương trình phải được trình bày theo đúng quy tắc (Bảng 4.1). Viết

các phép toán giữa các biểu thức trong khái niệm phải dùng dấu ngoặc để phân cách.

Các ký hiệu đại diện cho các phép toán trong khái niệm mô tả như sau:

Các ký hiệu phép toán Các ký tự đại diện

^

$ -

#

&

Bảng 4.1: Ký hiệu các phép toán trong chương trình.

Giao diện của chương trình:

Hình 4.1: Giao diện của chương trình.

Trong đó hộp Edit Box “Co so tri thuc-KB” vừa thể hiện cơ sở tri thức của lĩnh vực, vừa thể hiện tiến trình làm việc của thuật toán. Khái niệm cần kiểm tra nhập vào ô Edit Box “Khai niem can kiem tra”. Thuật toán chỉ làm việc với các khái niệm đầu vào là tập hợp các khái niệm nguyên thuỷ. Kết quả của thuật toán được thể hiện trong ô Edit Box “Ket qua nhan duoc”, ô này sẽ cho kết quả là một chuỗi thông báo cho biết khái niệm cần kiểm tra có thoả hay không thoả. Nút lệnh “Mo CSTT” khi chọn nút lệnh này cho phép người dùng mở một cơ sở tri thức đã có sẵn, đồng thời cho phép người dùng cập nhật lại cơ sở tri thức. Nút lệnh “CSTT Moi” khi chọn nút lệnh này cho phép người sử dụng tạo một cơ sở tri thức mới. Nút lệnh “Luu CSTT” cho phép người dùng lưu cơ sở tri thức vào một tập tin. Nút lệnh “Kiem Tra” để thi hành lệnh triểm tra tính thoả của khái niệm cần kiểm tra. Nút lệnh “Thoat” để kết thúc chương trình kiểm tra.

Khi ta tạo một cơ sở tri thức mới ta thực hiện nút lệnh “CSTT Moi”

lúc đó ta sẽ nhận được một giao diện cho phép ta thực hiện nhập cơ sở tri thức mới như sau:

Hình 4.2: Cửa sổ soạn thảo cơ sở tri thức mới.

Trong ô Edit Box “Nhap CSTT Moi”cho phép ta nhập cơ sở tri thức mới. Nút lệnh “Luu” cho phép ta lưu cơ sở tri thức vào một tập tin và nút lệnh “Thoat”

cho phép ta thoát khỏi công việc tạo một cơ sở tri thức mà không lưu lại cơ sở tri thức đó.

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Biểu diễn tri thức và lập luận trong logic mô tả (Trang 75 - 80)

Tải bản đầy đủ (PDF)

(86 trang)