Thứ tự từ điển DFS:
Đánh chỉ số DFS: Khi biểu diễn tìm kiếm theo chiều sâu trong một đồ thị. Ta xây dựng một cây DFS, một đồ thị có thể có nhiều cây DFS khác nhau. Ví dụ các đồ thị trong Hình 2.3(b)-(d) là đẳng cấu với chúng trong Hình 2.3(a).
Hình 2.3. Cây tìm kiếm theo chiều sâu
Việc làm dày các cạnh trong Hình 2.3(b) – (d) biểu diễn ba cây DFS khác nhau cho đồ thị trong Hình 2.3(a). Tìm kiếm theo chiều sâu phát hiện các đỉnh theo thứ tự tuyến tính. Sử dụng chỉ số dưới để gán nhãn cho thứ tự số
lần phát hiện của chúng i<j nghĩa là vi được phát hiện trước vj. Gọi v0 là nút gốc còn vn là nút ngoài cùng bên phải, đường nối từ v0 đến vn là đường ngoài cùng bên phải. Hình 2.3(b) – (d) có ba chỉ số dưới được phát sinh cho đồ thị trong Hình 2.3(a). Đường ngoài cùng bên phải là (v0, v1, v4) trong Hình 2.3(b), (v0, v4) trong Hình 2.3(c) và (v0, v1, v2, v4) trong Hình 2.3(d). Biểu diễn chỉ số dưới của G là GT.
Cạnh trước và cạnh sau:
Cho GT cạnh trước là tập tất cả các cạnh trong cây DFS và cạnh sau là tập tất cả các cạnh không chứa trong cây DFS.
Ví dụ (i.j) là một cặp đỉnh có thứ tự để biểu diễn cho một cạnh. Nếu i<j
thì nó là cạnh trước, ngược lại là cạnh sau.
Một thứ tự tuyến tính ≺T được xây dựng dựa vào tất cả các cạnh trong G bởi các luật sau:
Giả sử: e1 = (i1, j1), e2 = (i2, j2)
i) if (i1=i2) and (j1<j2) then e1 ≺T e2 ii) if (i1<j1) and (j1=j2) then e1 ≺T e2
iii) if (e1 ≺T e2) and (e2 ≺T e3) then e1 ≺T e3
Định nghĩa Mã DFS
Cho một cây DFS T của một đồ thị G, một cạnh tuần tự (e1) có thể được xây dựng dựa trên, như là ei ≺T ei+1, trong đó i=0,…,|𝐸|-1. (ei) được gọi là một mã DFS, ký hiệu là Code(G,T).
Ví dụ 2.1.2. Một cạnh được biểu diễn bởi một bộ gồm năm thành phần (i,j,li,l(i,j),lj) trong đó li, lj là nhãn của vi và vj, l(i,j) là nhãn cạnh giữa chúng.
Ví dụ 2.1.2. (v0, v1) trong Hình 2.3(b) được biểu diễn bằng (0,1,X,a,Y).
Bảng 2.1. Mã DFS tương ứng cho Hình 2.3
Edge (Fig 1b) (Fig 1c) (Fig 1d) 0 (0,1,X,a,Y) (0,1,Y,a,X) (0,1,X,a,X) 1 (1,2,Y,b,X) (1,2,X,a,X) (1,2,X,a,Y) 2 (2,0,X,a,X) (2,0,X,b,Y) (2,0,Y,b,X) 3 (2,3,X,c,Z) (2,3,X,c,Z) (2,3,Y,b,Z) 4 (3,1,Z,b,Y) (3,0,Z,b,Y) (3,0,Z,c,X) 5 (1,4,Y,d,Z) (0,4,Y,d,Z) (2,4,Y,d,Z)
Định nghĩa Thứ tự từ điển DFS
Giả sử Z={Code(G,T) | T là một cây DFS của G}, Z là một tập bao gồm tất cả các mã DFS của tất cả các đồ thị có nhãn liên tục. Giả sử có một thứ tự tuyến tính (≺L) trong tập nhãn (L) thì sự kết hợp theo thứ tự từ điển của
≺T và ≺L là một thứ tự tuyến tính (≺e) trên tập ET x L x L x L.
+ Thứ tự từ điển là một thứ tự tuyến tính được định nghĩa như sau
Nếu = Code(G,T) = (a0, a1,…, an) và = Code(G,T) = (b0, b1,…, bn) ,Z thì ≤ nếu cả hai điều kiện dưới đây cùng thỏa mãn:
1. ∃t, 0 ≤ t ≤ min(m,n), ak = bk cho k < t, at ≺e bt 2. ak = bk cho 0 ≤ k ≤ m, và n > m
Cho đồ thị trong Hình 2.3(a) có mười mã DFS tồn tại khác nhau, ba trong số chúng được xây dựng dựa trên cây DFS Hình 2.3 (b)-(d) được liệt kê trong
Bảng 2.1. Theo quy tắc thứ tự từ điển DFS, ≺ ≺
Định nghĩa Mã DFS tối thiểu
Cho một đồ thị G, Z(G) = {Code(G, T) | T là một cây DFS của G}. Dựa trên thứ tự từ điển DFS, một tối thiểu min(Z(G)) được gọi là mã DFS tối thiểu của G, cũng được gọi là một nhãn chính tắc của G.
Định lý 3.1. Cho hai đồ thị G và G’, G là đẳng cấu với G’ nếu và chỉ nếu min(G) = min(G’). Theo đó vấn đề của khai phá các đồ thị con liên thông thường xuyên tương đương với việc khai phá các mã DFS tối thiểu của chúng.
Cho một mã DFS =(a0, a1,…, am) và mã DFS có giá trị bất kỳ =( a0, a1,…, am, b) được gọi là con của , và được gọi là cha của .
Để xây dựng một giá trị mã DFS thì b phải là một cạnh chỉ gia tăng từ các đỉnh ngoài cùng bên phải. Thứ tự liệt kê các cây con theo trình tự từ điển DFS là: Hình 2.4(b), Hình 2.4(c), Hình 2.4(d), Hình 2.4(e), và Hình 2.4(f)
Hình 2.4 Mã DFS/ Đồ thị gia tăng
Định nghĩa cây mã DFS
Trong cây mã DFS, mỗi node biểu diễn một mã DFS, mối quan hệ giữa node cha và node con tuân theo luật:
Với mối quan hệ cha –con đã mô tả phần trên. Mối quan hệ anh – em bao gồm thứ tự từ điển DFS, đó là tìm kiếm theo thứ tự trước của cây mã DFS theo thứ tự từ điển DFS.
Cho một tập nhãn L, một cây mã DFS chứa vô hạn số đồ thị, chỉ xét các đồ thị con thường xuyên trong một cơ sở dữ liệu vô hạn. Kích thước của một cây DFS là vô hạn. Hình 2.3 biểu diễn một cây mã DFS, các node mức nth chứa mã DFS của các đồ thị (n-1) – cạnh. Qua việc tìm kiếm của cây mã, tất cả các mã DFS tối thiểu của các đồ thị con thường xuyên có thể được phát hiện. Nghĩa là tất cả các đồ thị con thường xuyên có thể được phát hiện bằng cách thức này.
Thuật toán 2.3: GraphSet_Projection(D,S) [15]
1. Sắp xếp các nhãn trong D theo tần số xuất hiện của chúng; 2. Loại bỏ các đỉnh và cạnh không thường xuyên;
3. Dán nhãn các đỉnh và cạnh còn lại;
4. Gán tất cả các đồ thị đơn thường xuyên trong D vào tập S1; 5. Sắp xếp S1 theo thứ tự từ điển DFS;
6. Gán S1 vào S;
7. Chạy vòng lặp với mỗi e thuộc S1 thì thực hiện các bước sau: 8. Khởi tạo s với e, đặt s.D là đồ thị có chứa e;
9. Gọi thủ tục con Subgraph Mining(D, S, s); 10. Gán D-e cho D;
11. Nếu |𝐷| < minsup
12. Dừng vòng lặp for
Thủ tục con: Subgraph Mining(D, S, s) 1. Nếu s không phải nhỏ nhất; 2. quay trở lại;
3. Gán tập s vào S;
4. Liệt kê s trong tập dữ liệu đồ thị D và đếm các đồ thị con 5. Chạy vòng lặp với mỗi c là đồ thị con của s thì thực hiện: 6. Nếu độ hỗ trợ của c ≥ minsup;
7. gán c vào tập s;