- 2biến: Ràng buộc hạn chế trên cả hai bên (L và R) của luật, ví
1. Cài đặt thuật toán
Thuật tốn được cài đặt trong chương trình là thuật tốn Apriori, nội dung thuật tốn đã được trình bày ở chương trước, trong chương này thể hiện cách cài đặt thuật tốn, ngơn ngữ được sử dụng là VC++.NET ,thuật toán được xây dựng theo các lớp, mỗi lớp có 2 file: 1 file có đi (.h) và một file có đi (.cpp), cụ thể có các lớp:
tzObject: lớp cơ sở, được xây dựng với các phương thức ảo chính:
compare (so sánh), clone(sao chép), key (tạo khố cho object).
List (lớp danh sách): gồm có cấu trúc ListNode được định nghĩa như sau:
typedef struct listnode ListNode; struct listnode
{
tzObject *object; struct listnode *next; struct listnode *prev; };
2 con trỏ đầu cuối của danh sách:
listnode *head;
listnode *tail;
Và các phương thức chính: add (thêm vào danh sách), remove (xoá khỏi danh sách), get (lấy giá trị của phần tử trong danh sách khi biết index), indexOf(lấy index của phần tử trong danh sách), clone (sao chép danh sách), size (lấy kích thước của danh sách), set (thiết lập giá trị cho phần tử trong danh sách),…
ItemSet (lớp Item): kế thừa từ lớp tzObject, lớp này cũng có các phương
thức giống với lớp List ( chỉ giống phép toán còn cách thức khác nhau) như thêm vào tập, xoá phần tử khỏi tập, lấy giá trị khi biết index, lấy index của
phần tử,…thì nó còn có các phương thức khác được xây dựng của riêng lớp: concat (nối 2 tập item), compare (so sánh 2 tập item), left (lấy các phần tử của tập item từ bên trái), sub (lấy các phần tử trong tập từ vị trí này đến vị trí khác), subtract (bỏ đi một tập con của tập Item), support (tính độ hỗ trợ của tập Item),…
HashTree (xâydựng cây HashTree):
cấu trúc HashNode được định nghĩa như sau:
/* node in the hash tree*/
typedef struct hashnode HashNode; struct hashnode
{
int nodetype; /* nodetype L=leaf, N=non-terminal node*/ union {
List *largeset; /*corresponding to a leaf node*/ HashNode *tab[TABLE_SIZE];
/*corresponding to a non-tem node, each bucket points to another node*/ } vp;
};
Các phương thức chính: hash (chia các tập item theo các mức), newnode (tạo nút mới), freenode (giải phóng nút), insert (đưa các nút vào cây HashTree), subset (tăng bộ đếm của mỗi tập con của giao dịch có trong cây HashTree), scan (duyệt cây).
apriori: chức năng chủ yếu của lớp này là tìm tập các item phổ biến, các
phương thức chính: FindLargeItemSets (tìm tập item phổ biến (lớn nhất)), selfjoin (bản thân tập item tự kết nối vơi chính nó), prune (tỉa, bỏ đi những tập item khơng thoả mãn tính chất của tập item phổ biến ), join (kết nối 2 tập item),…