Thuật toán xây dựng cây quyết định

Một phần của tài liệu (LUẬN văn THẠC sĩ) bài toán đồ thị con đẳng cấu trong khai phá dữ liệu đồ thị và ứng dụng phát hiện đồ thị con phổ biến (Trang 44 - 48)

Trước tiên chúng ta cần lưu ý rằng trong cây quyết định nêu trên, ở mức k, k = 1, 2, …, n, mỗi đỉnh sẽ biểu diễn cho một thị con có k đỉnh. Số các đồ thị con S này sẽ bằng k!/a, trong đó a là các đồ thị con tự đẳng cấu với nhau. Như vậy, những đồ thị con tự đẳng cấu sẽ tương đương với nhau nên có sự dư thừa.

Giả sử N1 và N2 là hai đỉnh trên cây quyết định biểu diễn cho cùng một đồ thị con được biểu diễn bởi ma trận liền kề MS của một đồ thị mô hình. Giả thiết M1 và M2 là hai ma trận liền kề tương ứng với N1 và N2. Từ tính chất 2.1 suy ra tồn tại hai ma trận hoán vị P1 và P2 để

P1MSP1T = M1 và P2MSP2T = M2

Khi đó sẽ có ma trận hoán vị R = P1P2T để M1 = RM2RT. Thật vậy, thay thế R và M2 vào vế phải ta có

RM2RT = P1P2T(P2MSP2T) (P1P2T)T = P1MSP1T = M1

Nghĩa là mọi ma trận liền kề biểu diễn cho N1 có thể biến đổi thông qua ma trận R về ma trận liền kề biểu diễn cho đỉnh N2. Từ quan sát trên, ta có kết luận quan trọng [14]:

 Từ những đỉnh N1 trên cây quyết định như thế là không cần thiết phải phân lớp tiếp những ma trận liền kề để tạo ra những đỉnh con cháu của N1 mà cần phân lớp tiếp những ma trận liền kề để tạo ra những đỉnh con cháu mới của N1

và tạo ra một nhánh định hướng lại (redirecting branch) từ N1 sang N2. Ma trận để biến đổi (tái định hướng) này chính là R để tạo ra cây quyết định.

 Thay vào đó, cần phân lớp cho các ma trận liền kề được biểu diễn ở đỉnh N2.

Ví dụ 2.5. Cây quyết định cho đồ thị G và G’ có hai nhánh định hướng lại được ký hiệu bằng mũi tên đứt nét. Kết hợp với cả hai nhánh này là ma trận R = . Khi áp dụng vào các ma trận con cấp 22 của S2,2(A), S2,2(B) và S2,2(D) của đồ thị G, thu được kết quả S2,2(C), S2,2(E) và S2,2(F). Đối với đồ thị G’ các ma trận S2,2(A’), S2,2(D’) và S2,2(E’) được chuyển thành S2,2(C’), S2,2(F’) và S2,2(B’). Như vậy, cây quyết định compact sẽ tiếp kiệm (giảm) được 3 đỉnh.

Hình 2.5. Cây quyết định compact để phân lớp các ma trận liền kề {A, B, …, F} và {A, B, …, F} của đồ thị G và G

Một cách tổng quát, với mối đồ thị con S  G, ta chọn một đỉnh T từ tập các đỉnh biểu diễn cho S trên cây quyết định và chèn thêm cạnh tái đình hướng từ những đỉnh khác sang T. Kết quả là chỉ có một đỉnh trong số những đỉnh biểu diễn cho S trên cây quyết định được chọn để phân lớp tiếp cho các ma trận liền kề của G.

Dựa vào những nhận xét nêu trên để xây dựng thuật toán cây quyết định.

Thuật toán DecisionTree(G) [14]

Input: Đồ thị G

Output: Cây quyết định có gốc là Root

Procedure DecisionTree(G) {

Tạo ra nút gốc Root của cây quyết định nếu chưa có cây quyết định

for k = 1 to n do

for Sk  G, có k đỉnh //Với mọi đồ thị con có k đỉnh của G

MergeTree(Root, Sk); }

Thuật toán trên tạo ra cây quyết định cho tất cả các đồ thị con của đồ thị mô hình G. Đầu tiên tạo ra cây chỉ có đỉnh gốc là Root. Với mỗi đồ thị con thì chỉ một đỉnh trên cây quyết định được sử dụng để phân lớp tiếp. Sau đó tiếp tục tạo ra các đồ thị con của G và phân lớp trên cây quyết định, bắt đầu từ những đồ thị con có 1 đỉnh và kết thúc bằng chính đồ thị G. Với mỗi đồ thị con Sk gọi thuật toán

MergeTree(Root, Sk) để ghép vào cây quyết định.

Thuật toán MergeTree(Root, S)

Input: + Cây quyết định với gốc Root + Đồ thị S

Output: Cây quyết định có đỉnh gốc Root cho các đồ thị mô hình

Procedure MergeTree(Root, S){

1/ A(S) = {P- ma trận liền kề cấp kk của S} //k – số đỉnh của S

2/ for MP = (a1, a2, …, ak)  A(S) do { 3/ N = Root;

if(NS đỉnh con của N & ai == aNs) then N = NS;

else {

Tạo lập đỉnh NS là con trực tiếp của N; Thêm ai vào từ điển để gán cho NS; //Phần tử hàng-cột ai biểu diễn cho NS

N = NS; }

}

5/ Chọn đỉnh N ở mức k+1 được tạo ra hoặc là đỉnh N kết hợp với M1  A(S) ;

T = N;

M1 = P1M1P1T;

6/ for each T’  T ở mức k+1, T’ biểu diễn cho S do { Chèn thêm nhánh định hướng lại từ T’ tới T; if(M’  A(S) được phân lớp trên đỉnh T’ & P’ là ma trận liền kề sao cho M’ = P’MP’T)

then R = P1P’T sẽ được gắn cho nhánh định hướng lại từ T’ tới T;

} }

Bước đầu tiên của thuật toán MergeTree(Root, S) là tạo ra tập A(S) tất cả các ma trận liền kề của S. Những ma trận này có thể đã được phân lớp trên cây quyết định. Lưu ý rằng cây quyết định có thể được kết hợp từ một số đồ thị mô hình khác nhau hay một số đồ thị con của các đồ thị mô hình.

Ở bước 4/ nếu đỉnh N ở mức k mà ma trận tương ứng không phân lớp được, nghĩa là không có đỉnh con nào của N để đối sánh được với phần tử hàng cột ak thì phải tạo ra đỉnh con mới NS của đỉnh N và chèn vào cây quyết định. Đồng thời phần tử ak cũng được đưa thêm vào từ điển để gán cho cạnh từ N đến NS. Khi tất cả các ma trận liền kề của A(S) được phân lớp xong thì thực hiện việc chèn thêm các cạnh tái định hướng để tạo ra cây cô đọng. Chúng ta qui ước, đỉnh được tạo ra để biểu diễn cho mã trận M1 A(S) được ký hiệu là T. Bước 6/, tất cả các đỉnh đã được tạo ra cho các ma trận liền kề của A(S) được tái định hướng sang T.

Nhận xét, cấu trúc cây quyết định là độc lập với số các đồ thị mô hình cần phải phân lớp trên cây. Do vậy, không cần phải xây dựng cây quyết định mới cho mỗi đồ

thị mô hình. Nghĩa là cùng một cây quyết định có thể mở rộng và sử dụng cho số lượng các đồ thị mô hình bất kỳ của CSDL cho trước [15].

Một phần của tài liệu (LUẬN văn THẠC sĩ) bài toán đồ thị con đẳng cấu trong khai phá dữ liệu đồ thị và ứng dụng phát hiện đồ thị con phổ biến (Trang 44 - 48)

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

(66 trang)