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 = x1x2 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 T xi)) min(( ( ), ( T xi T xi)), 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
cd cd 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]