Cài đặt thuật toán hợp giải mờ

Một phần của tài liệu Suy diễn trong logic ngôn ngữ1 (Trang 25 - 31)

Với thuật toán hợp giải mờ ta nghiên cứu được ở trên, ta sẽ tiến hành cài đặt

cho thuật toán đó

Bài toán đặt ra của chúng ta là, cho đầu vào là tập các mệnh đề, mỗi mệnh đề

là dạng hội ( phép OR) của các biến. Mỗi biến có 1 giá trị chân lý cho sẵn. Ta sẽ

tiến hành hợp giải cho từng cặp mệnh đề ( nếu có thể hợp giải được ) trong tập

mệnh đề ban đầu. Tập mệnh đề mới sẽ bao gồm toàn bộ các mệnh đề của tập mệnh đề ban đầu và các mệnh đề có được từ hợp giải của các cặp mệnh đề.

Quá trình hợp giải mờ sẽ kết thúc khi tập hợp giải cấp n xuất hiện mệnh đề rỗng.

Nếu quá trình hợp giải mà không xuất hiện mệnh đề rỗng thì sẽ dừng ở bước thứ n

nếu số phần tử của hợp giải cấp n bằng số phần tử của hợp giải cấp n+1.

Ý tưởng: Do mệnh đề là dạng hội của các biến. Một biến xicó thể xuất hiện

trong mệnh đề hoặc không xuất hiện trong mệnh đề, nếu xuất hiện trong mệnh đề

thì có thể xuất hiện là xi hoặc xi. Như vậy một biến chỉ có 1 trong 3 trạng thái ở

trong mệnh đề.

Giả sử số biến là n, ta sẽ chuyển mệnh đề về dạng chuỗi số gồm có n số. Xét

biến xi, nếu biến xi không xuất hiện trong mệnh đề thì ta sẽ lưu ở vị trí thứ i giá trị

là 0, nếu xuất hiện xi thì ta sẽ lưu là 1, còn nếu xuất hiện xi thì ta sẽ lưu là 2

Ví dụ: giả sử có 4 biến x x x x1, 2, 3, 4. Mệnh đề c = x1x2 x4 thì ta sẽ lưu c = 1102

Mệnh đề rỗng sẽ là mệnh đề bao gồm toàn 0

Nhắc lại khái niệm về hợp giải của 2 mệnh đề : Giả sử 2 mệnh đề , với

=   với không chứa hoặc ¬ như các chỉ số và không có cặp biến bổ sung

Như vậy là điều kiện để tiến hành hợp giải được là 2 mệnh đề phải có 1 cặp

biến bổ sung, với cách lưu mệnh đề như trên thì 2 mệnh đề C1và C2 phải tồn tại

một vị trí i sao cho C i1[ ] 1 và C i2[ ]2 hoặc ngược lại

Thuật toán kiểm tra, hàm check sẽ trả về 1 nếu 2 mệnh đề hợp giải được, trả về 0

nếu không hợp giải được

int check(clause c1,clause c2,int i=0) {

if (i==n) return 0; //n là số biến

if (((c1[i]==1)&&(c2[i]==2))||((c1[i]==2)&&(c2[i]==1))) return 1;

elsereturn check(c1,c2,i+1); }

Nếu 2 mệnh đề mà hợp giải được, giả sử phép hợp giải kí hiệu bởi phép “+”, ta sẽ

tiến hành hợp giải ở từng vị trí Ta có quy tắc hợp giải 1+1=1+0=0+1=1 2+2=2+0=0+2=2 2+1=1+2=0+0=0 Hình 1.1: Quy tắc hợp giải

Độ tin cậy của hợp giải chính là cd x( )i max( ( ), (T xi Txi)) min(( ( ), ( T xi Txi)), màT(xi) 1 T x( )i cho nên cd x( ) | 1 2i   T x( ) |i

Sau khi tiến hành hợp giải cho tất cả các cặp mệnh đề của tập mệnh đề thì độ

tin cậy của hợp giải của hợp giải cấp 1 mà 1

min{ ( )}i

cdcd x trong đó {cd x( )}i là tập các độ tin cậy của các hợp giải.

Tiến hành đệ quy quá trình hợp giải trên. Thuật toán sẽ kết thúc khi ở hợp

giải cấp m có xuất hiện mệnh đề rỗng (mệnh đề chứa toàn 0)

Đầu vào của bài toán sẽ là file data.txt có dòng đầu tiên lưu số mệnh đề của

tập mệnh đề ban đầu(m), từ dòng thứ 2 đến dòng m+1 sẽ lưu m mệnh đề của tập

mệnh đề, dòng thứ m+2 sẽ lưu số biến (n), từ dòng thứ m+3 đến m+n+3 sẽ lưu n giá

trị chân lý của các biến T x( )i

Xét bài toán ví dụ 1.3.1: Chứng minh rằng công thức A→C có thể suy ra từ nguyên lý A→B và B→C với T(A) = 0.8, T(B)=0.7 và T(C)=0.9

Ta có tập mệnh đề ban đầu S = {(¬A  B),(¬B  C), A, ¬C } chuyển về dạng số ta

có S={210,021,100,002} và tập T={0.8,0.7,0.9} Như vậy ta sẽ có file data.txt có dạng

Hình 1.2 : Cấu trúc file data

Hình 1.3: Kết quảchương trình hợp giải

CHƯƠNG 2 ĐẠI SỐ GIA TỬ 2.1. Giới thiệu

Lý thuyết suy diễn xấp xỉ được giới thiệu và phát triển vào những năm 1970

bởi Zadeh và cơ sở của nó là các biến ngôn ngữ và logic mờ. Một cách hình thức,

các biến ngôn ngữ là một bộ (X, T(X), U, R, M), với X là tên của biến, T(X) là tập

giá trị(term-set) của X, U là không gian tham chiếu, R là cú pháp sản sinh ra các

phần tử của T(X), M là tập các luật ngữ nghĩa. Giá trị của các biến ngôn ngữ được

sinh ra bởi các giá trị sơ cấp(primary terms) còn gọi là các phần tử sinh, bởi các gia

tử (như very, approximate, more or less,…) và các từ nối (AND, OR,…).

Theo ý tưởng của Zadeh, các biến ngôn ngữ có hai đặc điểm quan trọng sau:

- Ý nghĩa của các phần tử sinh phụ thuộc vào ngữ cảnh còn các gia tử và từ

nối thì không.

- Tính phổ biến của cấu trúc, nghĩa là hầu hết các biến ngôn ngữ có cùng cấu trúc cơ bản theo cách hiểu rằng các giá trị ngôn ngữ riêng của chúng

có các biểu thức giống nhau ngoại trừ phần tử sinh.

Cũng theo Zadeh, các giá trị chân lí là ngôn ngữ (như “true”, “false”, “very

true”,… có thể được xem như là các giá trị của biến ngôn ngữ Truth ) và các luật

suy diễn là xấp xỉ hơn là chính xác, những điều này vượt quá phạm vi logic kinh điển. Do đó, cần phải đi tìm một nền tảng logic mới cho logic mờ và suy diễn xấp xỉ

(ví dụ như các đề xuất của Zadeh hay của Godo và Hajek).

Một trong những ý tưởng quan trọng về vấn đề này là dựa vào mối quan hệ “đóng” giữa cấu trúc logic và cấu trúc đại số của các giá trị chân lí của logic mà hệ

thống suy diễn dựa vào có thể được quyết định bởi cấu trúc đại số của tập các giá trị

chân lí của logic này. Và một cách tiếp cận đại số đến cấu trúc tự nhiên của các

miền của các biến ngôn ngữ đã được đề xuất bởi N. Cat Ho và W. Wechler, và nó

định nghĩa một lớp các đại số gọi là đại số gia tử (HA). Đại số này có một số hạn

chế là:

- Là dàn đầy đủ nhưng không phân bố.

- Vẫn còn “hơi thô” và sẽ được mở rộng thành đại số gia tử mịn hóa

(RHA).

Tuy nhiên, nó cũng có một số ưu điểm sau:

- Nó là một cấu trúc tự nhiên để mô hình các miền ngôn ngữ một cách

chính xác.

- Tập các giá trị của biến chân lí ngôn ngữ có thể trở thành một cấu trúc đại

số.

- Các phần tử của chúng có ngữ nghĩa được quyết định bởi quan hệ thứ tự.

Các kết quả (định nghĩa, định lí, hệ quả, bổ đề,…) trong chương này chủ yếu được

trích từ tài liệu tham khảo [21]

Một phần của tài liệu Suy diễn trong logic ngôn ngữ1 (Trang 25 - 31)