Tải bản đầy đủ (.pdf) (70 trang)

Nghiên cứu và thử nghiệm một số thuật toán phát hiện các đồ thị con thường xuyên

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.18 MB, 70 trang )

MỞ ĐẦU

Hiện nay, các phương pháp khai phá dữ liệu đang phải đối diện với vấn
đề số lượng ngày càng gia tăng của các đối tượng dữ liệu phức tạp. Bên cạnh
đó đồ thị là một cấu trúc dữ liệu tổng quát, có thể sử dụng để mô hình hóa các
đối dữ liệu tượng phức tạp đó và vấn đề khai phá đồ thị con thường xuyên là
một trong những vấn đề quan trọng trong khai phá đồ thị. Việc khai phá đồ thị
để tìm đồ thị con thường xuyên nhằm xác định tất cả các đồ thị con trong một
tập dữ liệu đồ thị với giá trị ngưỡng cho trước [1],[3].
Những khó khăn của vấn đề khai phá đồ thị con thường xuyên nảy sinh
hai vấn đề, đó là: liệt kê tất cả các đồ thị con trong CSDL đồ thị và tính toán
hàm hỗ trợ của các đồ thị con này trong CSDL. Do các đỉnh của đồ thị có thể
được sắp xếp theo nhiều cách, một đồ thị có thể có số lượng lớn các bản sao
hình học tương đương, được gọi là đồ thị đẳng cấu. Để liệt kê tất cả các đồ thị
con, ta phải tính toán phù hợp với quy tắc biểu diễn đồ thị để giải quyết vấn
đề đồ thị đẳng cấu. Hơn nữa, việc kiểm tra nếu một đồ thị có chứa trong một
CSDL đồ thị hay không được xem như bài toán NP-khó và được gọi là bài
toán đồ thị con đẳng cấu. Trong tất cả các trường hợp, việc tính toán hàm hỗ
trợ chiếm chi phí nhiều nhất trong việc tìm các đồ thị con thường xuyên của
CSDL. Tuy nhiên, sự phức tạp của những vấn đề này sẽ giảm khi CSDL đồ
thị có thêm thông tin về các đỉnh và các cạnh đã được gán nhãn. Có thể sử
dụng các nhãn để hạn chế các đỉnh có thể tạo thành các cặp trong quá trình
kiểm tra sự đẳng cấu của đồ thị con. Tuy nhiên, nếu CSDL đồ thị chưa được
gán nhãn hoặc chỉ có một số ít các nhãn thì độ phức tạp của bài toán sẽ làm
giảm đáng kể kích thước của tập dữ liệu.
Như vậy, vấn đề khai phá đồ thị nói chung và khai phá đồ thị con thường
xuyên nói riêng cũng gặp nhiều khó khăn, vì vậy ta cần lựa chọn phương pháp

1



và thuật toán phù hợp để giải quyết cho từng bài toán cụ thể, đem lại hiệu quả
cao đó chính là ý nghĩa thực tiễn của đề tài.
 Nội dung của luận văn và các vấn đề cần giải quyết:
1. Tìm hiểu về các phương pháp khai phá dữ liệu đồ thị.
2. Tìm hiểu các thuật toán phát hiện đồ thị con thường xuyên trong CSDL đồ
thị.
3. Cài đặt thử nghiệm thuật toán phát hiện các đồ thị con thường xuyên
trong CSDL đồ thị
 Phương pháp nghiên cứu
+ Nghiên cứu về khai phá dữ liệu đồ thị với trọng tâm là phát hiện các đồ
thị con thường xuyên trong CSDL đồ thị.
+ Tìm hiểu các nguồn thông tin từ các sách,bài báo,tạp chí, Internet..,liên
quan đến khai phá dữ liệu đồ thị.
 Cấu trúc luận văn chia làm 4 chương:
Chương 1: “ Tổng quan về khai phá dữ liệu đồ thị ” trình bày tổng quan
các hướng nghiên cứu hiện nay về khai phá dữ liệu đồ thị.
Chương 2: “ Phát hiện các cấu trúc con thường xuyên ” trình bày cơ sở lý
thuyết đồ thị, cách tiếp cận dựa trên Apriori, cách tiếp cận dựa trên sự phát
triển mẫu.
Chương 3: “ Các thuật toán phát hiện đồ thị con thường xuyên ” trình
bày một số thuật toán phát hiện đồ thị con thường xuyên theo chiến lược tìm
kiếm theo chiều rộng và chiều sâu.
Chương 4: “ Thiết kế hệ thống thử nghiệm ” trình bày kết quả cài đặt của
thuật toán trong chương 3.

2


CHƯƠNG 1: TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU ĐỒ THỊ


1.1. TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU ĐỒ THỊ:
Khai phá dữ liệu đồ thị là một trong số các lĩnh vực quan trọng trong
khai phá dữ liệu. Hầu hết nguồn dữ liệu hiện nay có thể biểu diễn được dưới
dạng cấu trúc dữ liệu đồ thị, chẳng hạn như: dữ liệu từ mạng Internet, mạng
xã hội, cấu trúc protein, hợp chất hóa học,... Do đó, khai phá dữ liệu đồ thị
nhằm tìm kiếm các thông tin hữu ích trong một lượng lớn dữ liệu là vấn đề
đang được các nhà nghiên cứu và các tổ chức CNTT quan tâm.
1.1.1. Định nghĩa dữ liệu lớn:
Hiện nay, thuật ngữ “Dữ liệu lớn” (Big data) đang thu hút sự quan tâm
cũng như đặt ra những thách thức mới với các nhà nghiên cứu, các nhà cung
cấp dịch vụ công nghệ thông tin và các tổ chức, doanh nghiệp. Dữ liệu lớn
được xem như sự ra đời tất yếu của quá trình bùng nổ thông tin.
Trong nhiều năm qua, các doanh nghiệp thường đưa ra các quyết định kinh
doanh dựa trên dữ liệu giao dịch được lưu trữ trong cơ sở dữ liệu quan hệ.
Ngoài ra những dữ liệu quan trọng lại thường ở dạng tiềm năng, phi truyền
thống, phi cấu trúc lại có thể được khai thác một cách hữu ích, giảm chi phí cả
về lưu trữ và tính toán. Khi dữ liệu lớn được được khai thác và phân tích, kết
hợp với dữ liệu doanh nghiệp truyền thống thì các doanh nghiệp sẽ có cái
nhìn toàn diện và sâu sắc hơn về tình hình kinh doanh của họ, dẫn tới nâng
cao năng suất và vị thế cạnh tranh. Do đó, ngày càng có nhiều công ty tìm
kiếm để có được các dữ liệu phi truyền thống nhưng rất có giá trị trong công
việc kinh doanh này.
Có thể định nghĩa một cách chung nhất thì “Dữ liệu lớn” là một tập hợp
của các tập dữ liệu lớn và/hoặc phức tạp mà những phương pháp hiện tại của
CNTT chưa thể phân tích và xử lý tốt được chúng.

3


Dữ liệu lớn bao gồm cả tính chất về độ lớn lưu trữ (Volume), đa dạng,

phức tạp (Variety) và tăng trưởng nhanh chóng (Velocity)[8].
Dữ liệu lớn thường đề cập tới các kiểu dữ liệu như sau:
- Dữ liệu doanh nghiệp truyền thống: bao gồm các thông tin khách hàng, dữ
liệu giao dịch, dữ liệu kế toán tổng hợp.
- Dữ liệu cảm biến hoặc máy sinh dữ liệu: bao gồm các bản ghi chi tiết các
cuộc gọi, nhật ký web, hệ đo thông minh, dữ liệu từ các cảm biến, các hệ
thống dữ liệu truyền thống.
- Dữ liệu xã hội: bao gồm các luồng thông tin phản hồi của khách hàng, dữ
liệu từ các trang nhật ký và mạng xã hội như Twitter, Facebook, ...
1.1.2. Giải pháp dữ liệu lớn của một số nhà cung cấp dịch vụ:
* Giải pháp Big data của Oracle
Oracle là nhà cung cấp đầu tiên cung cấp một giải pháp hoàn chỉnh và tích
hợp để giải quyết đầy đủ yêu cầu về dữ liệu lớn của doanh nghiệp. Các dữ
liệu lớn của Oracle tập trung trên ý tưởng có thể phát triển kiến trúc dữ liệu
doanh nghiệp hiện tại để kết hợp dữ liệu lớn và cung cấp giá trị kinh doanh,
linh hoạt, hiệu suất để giải quyết yêu cầu về dữ liệu lớn với doanh nghiệp.
Với việc giới thiệu ứng dụng Quản lý Dữ liệu lớn (Oracle Big Data
Appliance), Oracle cung cấp một giải pháp hoàn chỉnh đáp ứng mọi yêu cầu
liên quan đến dữ liệu lớn của doanh nghiệp. Thiết bị xử lý dữ liệu lớn Oracle
Big Data Appliance, cùng với máy chủ cơ sở dữ liệu Oracle Exadata và Máy
chủ thông tin hỗ trợ ra quyết định Oracle Exalytics mới, giúp khách hàng có để
thu thập, tổ chức, phân tích và khai thác tối đa giá trị của dữ liệu lớn.
Oracle Big Data Appliance có thể được tích hợp dễ dàng với cơ sở dữ liệu
Oracle Database 11g, Oracle Exadata Database Machine và Oracle Exalytics
Business Intelligence Machine.

4


* Giải pháp Big Data của Microsoft

Giải pháp Big Data của Microsoft dựa trên nền tảng SQL Server,
Hadoop, Windows Azure và Windows Server, cung cấp các công cụ quản lý,
mở rộng nhằm đạt được cái nhìn sâu sắc hơn về dữ liệu của doanh nghiệp,
thúc đẩy hiệu quả kinh doanh.
Microsoft Big Data cho phép quản lý hầu như bất kỳ loại dữ liệu nào,
bất kể kích thước hoặc vị trí. Microsoft sử dụng SQL Server 2012 và SQL
Server Parallel Data Warehouse để quản lý các dữ liệu lớn có cấu trúc. Với dữ
liệu phi cấu trúc, Microsoft sử dụng Hadoop trên Windows Azure và
Windows Server, sẽ cho phép xử lý dữ liệu phi cấu trúc với quy mô hàng
petabyte. Với dữ liệu luồng, Microsoft sử dụng công cụ SQL Server
StreamInsight để quản lý các dữ liệu luồng với thời gian thực.
Microsoft Big Data cho phép làm phong phú thêm dữ liệu với bất kỳ
loại dữ liệu nào: Cửa hàng dữ liệu Azure Marketplace cho phép các doanh
nghiệp có được dữ liệu của bên thứ ba; bộ công cụ phòng thí nghiệm Data
Explorer Azure dành cho các tập dữ liệu đề xuất và Data Hub dành cho việc
tạo ra các cửa hàng dữ liệu riêng.
1.2.

TỔNG QUAN VỀ KHAI PHÁ ĐỒ THỊ CON THƯỜNG XUYÊN:
Cho một CSDL đồ thị D, một hàm hỗ trợ của đồ thị G trong D, được viết

là sup(G, D) là số lượng các đồ thị trong D có chứa đồ thị G như một cạnh tạo
nên đồ thị con. Cho giá trị ngưỡng hỗ trợ cực tiểu smin, vấn đề khai phá đồ thị
con thường xuyên bao gồm việc tìm ra các đồ thị liên thông thường xuyên
trong D.
Có hai nhóm phương pháp được đề xuất để giải quyết vấn đề trên, đó là:
nhóm phương pháp khai phá theo chiều rộng và nhóm phương pháp khai phá
theo chiều sâu:

5



Một số kỹ thuật khai phá theo chiều rộng như: kỹ thuật AGM được
phát triển bởi Inokuchi, kỹ thuật FSG được đề xuất bởi Kuramochi và
Karypis. Các kỹ thuật này khai phá đồ thị theo từng mức trong đó mỗi mức
chứa các đồ thị có nhiều hơn một đỉnh hoặc một cạnh so với mức trước đó.
Các đồ thị thường xuyên của mức tiếp theo được tìm ra bằng cách, đầu tiên
tạo ra các đồ thị ứng viên với các cặp đồ thị của mức hiện tại, sau đó lọc ra
các đồ thị không thường xuyên. Ưu điểm chính của những kỹ thuật này dựa
trên nguyên tắc ưu tiên bằng cách một đồ thị chỉ được xem là thường xuyên
nếu tất cả các đồ thị con của nó là thường xuyên. Vì một đồ thị được tìm ra
sau khi tìm ra các đồ thị con của nó, do đó có thể loại bỏ các đồ thị không
thường xuyên mà không cần phải tính toán hàm hỗ trợ của chúng bằng cách
kiểm tra nếu các đồ thị con của chúng là thường xuyên. Tuy nhiên, nhóm
phương pháp tìm kiếm theo chiều rộng có hai vấn đề đó là: sinh ra nhiều đồ
thị ứng viên và yêu cầu về lưu trữ các đồ thị thường xuyên ở mỗi mức.
Nhóm phương pháp khai phá theo chiều sâu đã khắc phục những vấn
đề này bằng cách tìm kiếm đồ thị theo chiều sâu, có thể kể đến một số thuật
toán như: gSpan được đề xuất bởi Han và Yan, FFSM được đề xuất bởi Huan,
và GASTON bởi Nijssen và Kok. Tư tưởng của nhóm phương pháp này bắt
đầu với một đồ thị có chứa một đỉnh hoặc một cạnh thường xuyên, những kỹ
thuật này được mở rộng đệ quy bằng cách thêm mới một cạnh giữa hai đỉnh
hiện tại hoặc thêm mới một đỉnh kết nối tới một đỉnh hiện tại khác. Vì một đồ
thị là không thường xuyên hơn các đồ thị con của nó, do đó không cần mở
rộng tới các đồ thị không thường xuyên. Các đồ thị không thường xuyên có
thể được bỏ bớt mà không xảy ra rủi ro gì trong quá trình khai phá.
1.3.

KẾT LUẬN
Chương 1 trình bày tổng quan về khai phá dữ liệu đồ thị trong đó có nêu


vấn đề của khai phá dữ liệu đồ thị là tìm những thông tin hữu ích trong một

6


lượng lớn dữ liệu, đưa ra định nghĩa chung nhất về dữ liệu lớn (Big Data) và
các giải pháp Big Data của Oracle và Microsoft.
Trình bày tổng quan về khai phá đồ thị con thường xuyên theo hai nhóm
phương pháp đó là nhóm phương pháp khai phá theo chiều rộng và nhóm
phương pháp khai phá theo chiều sâu cùng với ưu và nhược điểm của hai
nhóm phương pháp này.

7


CHƯƠNG 2: PHÁT HIỆN CÁC CẤU TRÚC CON THƯỜNG XUYÊN

2.1.

CƠ SỞ LÝ THUYẾT ĐỒ THỊ
Chúng ta biểu diễn tập đỉnh của đồ thị g bằng V(g) và tập cạnh bằng

E(g). Một hàm nhãn L ánh xạ một đỉnh hoặc một cạnh tới một nhãn. Một đồ
thị glà một đồ thị con của đồ thị g’ khác nếu tồn tại một đồ thị con đẳng cấu từ
g tới g’.
2.1.1. Định nghĩa 2.1 (Graph):

Chomột nhãn node bằng chữ cái (alphabet) LV và một nhãn cạnh bằng
chữ cái LE đồ thị g (có hướng) được định nghĩa bằng bộ gồm 4 thành phần

g=(V , E, µ, ν), trong đó:
• V biểu diễn một tập hữu hạn các node.
• E⊆V×V biểu diễn một tập các cạnh.
• µ:V→LV biểu diễn một hàm ghi nhãn node.
• ν:E→LE biểu diễn một hàm ghi nhãn cạnh.
Tập V có thể được coi là một tập các định danh nút và thường được chọn
bằng V = {1, ..., | V |}. Trong khi V xác định các nút, tập các cạnh E thể hiện
cấu trúc của đồ thị. Đó là một nút u ∈ V được kết nối với một nút v ∈ V bằng
một cạnh= (u, v) nếu (u, v) ∈ E. Hàm ghi nhãn có thể được sử dụng để tích
hợp thông tin về các node và các cạnh vào trong các đồ thị bằng cách gán các
thuộc tính từ LV và LE tới các node và các cạnh tương ứng.
Đồ thị được định nghĩa ở trên bao gồm một số trường hợp đặc biệt. Để
định nghĩa đồ thị vô hướng, cho một thể hiện yêu cầu u , v   E cho mỗi cạnh

u , v   E

sao cho ν(u, v) = ν(v, u). Trong trường hợp đồ thị không thuộc tính,

bảng chữ cái nhãn được xác định bởi LV  L E  , bởi vậy mỗi node và mỗi

8


cạnh được gán nhãn null nhãn

. Đồ thị rỗng được định nghĩa bằng gε

=( , ,µε,νε).
2.1.2. Định nghĩa 2.2 (Subgraph):
Cho g1=(V1,E1,µ1,ν1) và g2=(V2,E2,µ2,ν2) là các đồ thị, đồ thị g1 là một đồ

thị con của g2 , ký hiệu g1⊆g2 nếu
• V1⊆V2.

• E1=E2∩(V1×V1).
• µ1(u) = µ2(u) cho tất cả u ∈ V1.
• ν1(u, v)=ν2(u, v) cho tất cả (u, v) ∈ E1.
Ngược lại, đồ thị g2 được gọi là một đồ thị con của g1 đôi khi điều kiện
thứ hai của định nghĩa này được thay thế bằng E1⊆ E2.
2.1.3. Định nghĩa 2.3 (Graph Isomorphism):
Cho g1=(V1,E1,µ1,ν1) và g2=(V2,E2,µ2,ν2) là các đồ thị.Một đồ thị đẳng
cấu giữa g1 và g2 là một hàm song ánh f:V1→V2 thỏa mãn:
• µ1(u)=µ2(f (u)) cho tất cả các node u∈ V1.
• Cho mỗi cạnh e1=(u, v)∈E1, tồn tại một cạnh e2=(f (u), f (v))∈ E2 sao
cho ν1(e1)=ν2(e2).
• Cho mỗi cạnh e2=(u, v)∈E2, tồn tại một cạnh e1=(f-1(u), f-1(v))∈ E1 sao
cho ν1(e1)=ν2(e2).
Hai đồ thị g1 và g2 được gọi là đẳng cấu nếu tồn tại một đồ thị đẳng cấu
giữa chúng.

9


Hình 2.1. (b) đẳng cấu với (a), (c) đẳng cấu với một đồ thị con của (a).
2.1.4. Định nghĩa 2.4 (Subgraph Isomorphism):
Cho g1=(V1,E1,µ1,ν1) và g2=(V2,E2,µ2,ν2) là các đồ thị. Một hàm đơn ánh
f:V1→V2 được gọi là một đồ thị con đẳng cấu từ g1 tới g2 nếu tồn tại một đồ
thị con g⊆g2 sao cho f là một đồ thị đẳng cấu giữa g1 và g.
Một đồ thị con đẳng cấu tồn tại từ g1 tới g2 nếu đồ thị g2 lớn hơn có thể
trở thành một đồ thị đẳng cấu tới đồ thị g1 nhỏ hơn bằng cách loại bỏ một số
node và một số cạnh. Để minh họa hai đồ thị với một đồ thị con đẳng cấu giữa

chúng xem hình 2.1(a) và hình 2.1(c).
2.1.5. Định nghĩa 2.5 (Maximum Common Subgraph, MCS):
Cho g1=(V1,E1,µ1,ν1) và g2=(V2,E2,µ2,ν2) là các đồ thị. Một đồ thị g
=(V,E,µ,ν) được gọi là một đồ thị con phổ biến của g1 và g2 nếu tồn tại đồ thị
con đẳng cấu từ g tới g1 và từ g tới g2 . Một đồ thị con phổ biến của g1 và g2
được gọi là đồ thị con phổ biến cực đại (MCS) nếu không tồn tại một đồ thị
con phổ biến khác của g1 và g2 mà có các node nhiều hơn g.

Hình 2.2.Hai đồ thị: (a) và (b) và một đồ thị con phổ biến cực đại (c)

10


2.1.6. Định nghĩa 2.6 (Frequent Graph)
Cho một tập dữ liệu đồ thị có gán nhãn D={G1,G2,...,Gn},support(g) (
hoặc frequency(g)) là phần trăm (hoặc số) của các đồ thị trong D trong đó g
là một đồ thị con. Một đồ thị là thường xuyên nếu độ hỗ trợ của nókhông nhỏ
hơn ngưỡng hỗ trợ tối thiểu minsupport.

Hình 2.3. Mẫu cơ sở dữ liệu đồ thị

Hình 2.4. Các đồ thị con thường xuyên
Ví dụ 2.1: Hình 2.3 biểu diễn một mẫu cơ sở dữ liệu đồ thị biểu diễn cấu
trúc hóa học , hình 2.4 mô tả hai đồ thị con thường xuyên trong tập dữ liệu
này nếu độ hỗ trợ tối thiểu minsupport được thiết lập là 66,6%.
2.2.

CÁC DẠNG CHUẨN CỦA CÂY
Cây tự do (free tree) là một đồ thị vô hướng liên thông và phi chu trình.


Cây có gốc (gọi tắt là cây) là cây tự do, trong đó có một đỉnh đặc biệt được
gọi là gốc thỏa mãn các tính chất sau:
1. Tồn tại một đỉnh phân biệt không có các đỉnh đầu vào được gọi là nút gốc,
2. Mỗi đỉnh khác gốc đều có đúng một đỉnh vào,
3. Có đúng một đường đi từ gốc tới các đỉnh khác của cây.

11


Trong cấu trúc cây, đỉnh (nút) v trên đường đi từ gốc tới w được gọi là
tiền bối (ancestor) của w, còn w được gọi là hậu duệ (descendent) của v. Nếu
w liền kề với v (có cạnh nối v với w) thì v là cha của w, ngược lại w là con
của v. Kích thước của cây t được định nghĩa là số đỉnh của cây, ký hiệu là |t|.
Để tiện lợi, ta qui định cây có kích thước k sẽ gọi là k-cây. Trong cây, một
đỉnh v không phải là lá (không có đỉnh con) có bậc, ký hiệu là deg(v), được
xác định chính là số đỉnh con của v. Hiển nhiên, nếu v là lá thì deg(v) = 0.
Chiều cao của cây t, ký hiệu là high(t), là độ dài của đường đi dài nhất
trên cây (bắt đầu từ gốc). Thông thường, đối với k-cây thì độ dài của cây h 
k. Một đỉnh trên cây được gọi là ở mức m nếu đường đi từ gốc tới nó có độ
dài (số cạnh) là m. Đỉnh gốc có mức là 0. Đỉnh không phải là gốc, không phải
là lá được gọi là đỉnh trong của cây.
Các cây có thể phân chia thành hai loại: cây có thứ tự và cây không có thứ
tự. Một cây có thứ tự (rooted ordered tree) là một cây, trong đó các đỉnh con
của mỗi đỉnh đều được xếp theo thứ tự từ trái qua phải, ngược lại được gọi là
cây không có thứ tự.
Ví dụ 2.2: xét các cây có thứ tự, trong đó sử dụng các nhãn để ký hiệu cho
các đỉnh của cây.

A
B


A

D

C

B

B

C

(a)

B

C
C

E
E

B

B

B

D

B

E

B

D

C

A

A

(b)

B

(c)

12

B

C

D

C
B


E

(d)

C


A
B

A

D

C

B

B

E

C
B

(e)

A


D

C
B

(f)

B

B

C

C

A
B

B
C

D

E

E

(g)

C

B

B
D

C
B

E

(h)

Hình 2.5: Tám cây không có thứ tự nhận được từ một cây có thứ tự

Một cây t (với tập đỉnh Vt và tập cạnh Et) được gọi là cây con của cây s
(với tập đỉnh Vs và tập cạnh Es) nếu và chỉ nếu:
1. Vt Vs
2. Et Es
3. Các nhãn của các đỉnh trong Vt và các cạnh trong Et được bảo toàn
trong cây s.
Trong cây có thứ tự, các đỉnh con của một đỉnh trong bất kỳ đều được
sắp xếp theo một thứ tự nhất định, ví dụ được liệt kê từ trái qua phải. Để phân
biệt được các cây con của cây có thứ tự, chúng ta định nghĩa quan hệ trên tập
V để thể hiện quan hệ anh em (sibling relation)như sau:
v1

v2 nếu v1, v2 là hai đỉnh con của cùng một cha và v2 là anh (chị)

của v1.
Ví dụ trên cây (a) ở Hình 2.5, gốc được gắn nhãn là A có 2 đỉnh con

cùng có nhãn là B ứng với 2 cây con có quan hệ anh em với nhau và có thể
cây con bên phải là anh của cây con bên trái. Hiển nhiên đổi với cây có thứ tự
thì việc đổi vị trí của các đỉnh có quan hệ sẽ tạo thành cây có thứ tự mới.
Nếu t là cây con (thực sự - proper) của s thì s được gọi là cây trên
(supertree) (thực sự) của t.

13


Lưu ý cây con và cây trên đều áp dụng cho cả cây không thức tự và cây
có thức tự. Hiển nhiên, đối với cây có thứ tự s, thứ tự từ trái qua phải của các
đỉnh con của mỗi đỉnh sẽ tạo ra thứ tự bộ phận trong cây s.
Cây con định nghĩa như trên còn được gọi là cây con cảm sinh (induced
subtree).
Một cây t (với tập đỉnh Vt và tập cạnh Et) được gọi là cây con nhúng
trong cây s (với tập đỉnh Vt và tập cạnh Et) khi và chỉ khi:
1. Vt Vs
2. (v1, v2)  Et (nghĩa là, v1 là cha của v2 trong t) chỉ khi v1 là tổ tiên
của v2 trong s
3. Tất cả các nhãn của Vt được bảo toàn trong s.
Cây t và s được gọi là đẳng cấu với nhau (isomorphism) nếu tồn tại một
ánh xạ 1-1 giữa hai tập đỉnh của t, s và bảo toàn được các nhãn của đỉnh và
các cạnh. Tự đẳng cấu (automorphism) là một đẳng cấu của cây t vào chính nó.
Một cây con t đẳng cấu với cây s nếu tồn tại một đẳng cấu của t với một
cây con nào đó của s.
Dễ dàng nhận thấy từ một cây có thứ tự có thể suy ra nhiều cây không có
thứ tự đẳng cấu với nhau. Những cây trên Hình 2.5 là đẳng cấu với nhau.
Do vậy, từ một cây có thứ tự ta muốn xây dựng một dạng chuẩn biểu
diễn duy nhất cho những cây không có thứ tự, đẳng cấu với nhau.
Lưu ý rằng, đối với cây được gắn nhãn, hoàn toàn không mất tính tổng

quát ta có thể giả thiết rằng tất cả các nhãn của các cạnh là đồng nhất, bởi vì
mỗi cạnh đều nối một đỉnh với cha của nó, do vậy ta có thể xem mỗi cạnh đó
cùng với nhãn trên cạnh là một phần của đỉnh con. Đối với gốc không có cạnh
đi tới nó, ta giả thiết đó là cạnh null nối với gốc. Từ đây trở về sau, ta giả thiết
rằng các nhãn trên các cạnh là tương đương, nghĩa là không cần gắn nhãn cho
các cạnh mà chỉ cần xét các nhãn trên các đỉnh là đủ.

14


2.2.1. Dạng chuẩn của cây theo chiều rộng:
Không mất tính tổng quát ta có thể giả thiết rằng có hai ký hiệu đặc biệt
“$” và “#” không nằm trong bảng chữ cái  được sử dụng để gắn nhãn cho
các đỉnh của cây. Trên tập ’ =  {$, #} ta giả thiết có một quan hệ thứ tự
toàn phần 
1. Giữa các nhãn v, w trên các đỉnh của cây luôn có quan hệ v  w hoặc w 
v
2. v  $  #, với v .
Ta định nghĩa mã chuỗi theo chiều rộng BFSE (Breadth-First String
Encoding) của cây có thứ tự theo thuật toán duyệt cây theo chiều rộng như
sau:
Thuật toán 2.1. Xác định mã chuỗi theo chiều rộng của cây t có thứ tự.
OrderedTree tập (kiểu dữ liệu) các cây có thứ tự và  là phép ghép hai chuỗi
ký tự.
Input: Cây có thứ tự t
Output: BFSE của t
Procedure BFSE(OrderedTree t){
BFSE = L(root(t))  $;
for(int h = 1; h <= high(t); h++) //Duyệt từ trên (gốc) xuống dưới
//Liệt kê các nhãn của các đỉnh con của đỉnh v ở mức h-1 từ trái qua phải:

if( deg(v) == 0) // Đỉnh v ở mức h-1 là lá
BFSE = BFSE  $;
else {// v có các đỉnh con
Ghép các đỉnh con của v vào BFSE;
BFSE = BFSE  $;

15


}
Đổi ký hiệu ‘$’ cuối của BFCF thành ‘#’;
}
2.2.2. Dạng chuẩn của cây theo chiều sâu:
Mã chuỗi theo chiều sâu DFSE (Depth-First String Encoding) của cây có
thứ tự là chuỗi các nhãn nhận được theo phương pháp duyệt cây theo chiều
sâu, trong đó “$” biểu diễn cho “quay về đỉnh cũ” (backtrack) và “#” là kết
thúc của chuỗi mã.
Thuật toán xác định mã chuỗi theo chiều sâu của một cây có thứ tự được
thực hiện theo phương pháp đệ qui như sau.
Thuật toán 2.2. Xác định mã chuỗi theo chiều sâu của cây t có thứ tự
OrderedTree tập (kiểu dữ liệu) các cây có thứ tự và  là phép ghép hai chuỗi
ký tự.
Input: Cây có thứ tự t
Output: DFSE của t
Procedure DFSE(OrderedTree t){
if(t là 1-cây) //Cây có 1 đỉnh
DFSE = L(root(t)) ;
else { // Cây t có gốc r và có n cây con được ký hiệu là r1; . . . ; rn,
DFSE = L(root(t));
for(int i = 1; i <= n; i++)

for(int j = 1; j <= high(ri); j++) //Ghép thêm ký hiệu $
DFSE = DFSE  DFSE(ri)  “$”;
}

16


Ghép ký hiệu ‘#’ vào cuối của DFSE;
}
2.3.

CÁCH TIẾP CẬN DỰA TRÊN APRIORI
Nền tảng tổng quát của phương thức dựa trên Apriori được phác thảo

trong thuật toán 2.3. Trong đó Sk là tập cấu trúc con thường xuyên kích thước
k. Thuật toán 2.3 chấp nhận một mức khai phá phương pháp luận. Tại mỗi
bước lặp, kích thước của cấu trúc con thường xuyên phát hiện mới được tăng
lên bằng 1.Cấu trúc con mới được phát sinh lần đầu bằng phép hòa nhập hai
đồ thị đồng dạng nhưng khác nhau về đồ thị con thường xuyên được phát hiện
trong lời gọi cuối cùng của thuật toán 2.3. Thủ tục phát sinh ứng viên được
biểu diễn trên dòng 4 các đồ thị mới được hình thành và sau đó được kiểm tra
tần suất xuất hiện của chúng. Các đồ thị con thường xuyên được phát hiện và
sử dụng để phát sinh các ứng viên lớn hơn trong các vòng lặp kế tiếp.
Thuật toán 2.3. Apriori(D, min_support,Sk) [10,tr.101]

Ý tưởng chính của thuật toán khai phá cấu trúc con thường xuyên dựa
trên Apriori là bước phát sinh các ứng viên.Phát sinh các ứng viên cho tập
thường xuyên là không phức tạp.Ví dụ độ hỗ trợ ta có hai tập thường xuyên
kích thước là 3: (abc) và (bcd)tập thường xuyên ứng viên kích thước là 4 phát


17


sinh từ hai tập trên là (abcd). Nghĩa là sau khi tìm được hai tập thường xuyên
là (abc) và (bcd)ta nên kiểm tra tần suất của (abcd).Tuy nhiên vấn đề phát
sinh ứng viên trong khai phá cấu trúc con thường xuyên trở nên khó hơn so
với trường hợp khai phá tập thường xuyên vì có rất nhiều cách để hòa nhập
hai cấu trúc con.
AGM [5] đề xuất một đỉnh dựa trên phương thức phát sinh ứng viên đó
là tăng kích thước cấu trúc con lên 1 đỉnh tại mỗi vòng lặp của thuật toán 2.3.
Hai đồ thị con thường xuyên kích thước k chỉ được hòa nhập khi hai đồ thị
này có cùng đồ thị con kích thước (k 1).Ở đây kích thước của một đồ thị
nghĩa là số các đỉnh trong một đồ thị.Các ứng viên mới được thành lập bao
gồm các đồ thị con kích thước (k 1) và bổ sung hai đỉnh từ hai mẫu kích
thước k. Vì nó không được xác định mặc dù có một cạnh nối hai đỉnh bổ
sung, chúng thực sự có thể hình thành hai đồ thị con ứng viên. Hình 2.6 mô tả
hai cấu trúc con hòa nhập bởi hai dãy.

Hình 2.6. AGM [5]
FSG được đề xuất bởi Kuramochi và Karypis [4] thông qua một cạnh
dựa trên phương thức tăng kích thước của cấu trúc con lên một cạnh trong
mỗi lời gọi thuật toán 2.3. Trong FSG , hai mẫu kích thước k được hòa nhập
nếu và chỉ nếu chúng chia sẻ cùng đồ thị con có k-1 cạnh được gọi là core. Ở
đây kích thước của một đồ thị nghĩa là số các cạnh trong một đồ thị. Các ứng
viên mới được thành lập bao gồm core và hai cạnh bổ sung từ các mẫu kích
thước k. Hình 2.7 biểu diễn các ứng viên tiềm năng được hình thành bởi hai
mẫu cấu trúc. Mỗi ứng viên có hơn một cạnh so với hai mẫu . Ví dụ này minh

18



họa độ phức tạp của phép hòa nhập hai cấu trúc từ một mẫu ứng viên
lớn.Trong [4] Kuramochi và Karypis minh họa hai trường hợp phát sinh ứng
viên khác

Hình 2.7. FSG [4]
Các thuật toán dựa trên Apriori có chi phí đáng kể tại phép hòa nhập hai
cấu trúc con thường xuyên kích thước k để phát sinh các đồ thị ứng viên kích
thước k+1. Để tránh những chi phí như vậy, những thuật toán không dựa trên
Apriori gần đây đã được phát triển, hầu hết các thuật toán này áp dụng
phương pháp luận sự phát triển mẫu mà có mục đích để mở rộng các mẫu trực
tiếp từ một mẫu đơn.
2.4.

CÁCH TIẾP CẬN DỰA TRÊN SỰ PHÁT TRIỂN MẪU
Một đồ thị g có thể được mở rộng bằng cách thêm vào một cạnh mới e.

Đồ thị mới được hình thành được ký hiệu bởi gxe. Cạnh e có thể hoặc
không đưa ra một đỉnh mới tới g. Nếu e đưa ra một đỉnh mới chúng ta ký hiệu
đồ thị mới bởi gxf e , ngược lại gxbe trong đó f hoặc b cho biết rằng sự
mở rộng theo hướng trước hoặc sau.
Thuật toán 2.4.(PatternGrowth) minh họa nền tảng tổng quát của thuật
toán khai phá cấu trúc con thường xuyên dựa vào sự phát triển mẫu. Cho mỗi
đồ thị g được phát hiện nó thực hiện việc mở rộng đệ quy cho tới khi tất cả
các đồ thị con thường xuyên nhúng với g được phát hiện. Đệ quy dừng khi
không có đồ thị con thường xuyên được phát sinh nữa.Thuật toán 2.4 đơn
giản nhưng không hiệu quả. Vấn đề là sự kém hiệu quả ở việc mở rộng đồ

19



thị.Cùng một đồ thị có thể được phát hiện nhiều lần. Ví dụ có thể tồn tại n đồ
thị (n-1)- cạnh khác nhau có thể được mở rộng tới cùng đồ thị n – đỉnh. Việc
phát hiện lặp đi lặp lại cùng một đồ thị là không hiệu quả, một đồ thị được
phát hiện lại lần thứ hai được gọi là duplicate graph. Mặc dù dòng 1 của thuật
toán 2.4 giúp loại bỏ những đồ thị trùng lặp, các ứng viên và sự trùng lặp các
đồ thị có thể là nguyên nhân tăng thêm khối lượng công việc. Để giảm bớt các
ứng viên của duplicate graph, mỗi đồ thị thường xuyên nên được mở rộng ít
nhất có thể.
Thuật toán2.4 PatternGrowth(g, D, min_support, S) [10,tr.103]

2.5.

KẾT LUẬN
Phát hiện các cấu trúc con thường xuyên là một trong những nhiệm vụ

cơ bản trong khai phá dữ liệu có cấu trúc từ việc phát hiện các mẫu có thể
được sử dụng cho những đặc trưng của những bộ dữ liệu có cấu trúc, phân
loại và phân nhóm các cấu trúc phức tạp, xây dựng các chỉ số đồ thị và thực
hiện việc tìm kiếm tương tự trong cơ sở dữ liệu đồ thị lớn.
Chương 2 trình bày cơ sở lý thuyết đồ thị và tổng quan về các phương
pháp hiệu quả khai phá các cấu trúc con thường xuyên đồng thời đưa ra hai
cách tiếp cận đó là tiếp cận dựa trên Apriori và tiếp cận dựa trên sự phát triển mẫu.

20


CHƯƠNG 3: CÁC THUẬT TOÁN PHÁT HIỆN ĐỒ THỊ CON THƯỜNG XUYÊN

3.1. CHIẾN LƯỢC TÌM KIẾM THEO CHIỀU RỘNG:

3.1.1. Thuật toán SUBDUE
Subdue được B. Holder đề xuất năm 1988, sử dụng tìm kiếm tia để phát
hiện các đồ thị con thường xuyên. Kết quả báo cáo là các cấu trúc con đã
được nén. Nó là một phiên bản gần đúng của FSM và không dựa trên độ hỗ
trợ support.
* Tìm kiếm tia (Beam Search)
Tìm kiếm tia là phiên bản đầu tiên tốt nhất của tìm kiếm bề rộng đầu
tiên, tại mỗi mức tìm kiếm chỉ k con tốt nhất được mở rộng. k được gọi là
Beam Search
* Đồ thị nén(Graph Compression)
Subdue nén các đồ thị bằng cách thay các đồ thị con với các con trỏ

Hình 3.1. Đồ thị hình A sau khi nén được biểu diễn hình B.
* Chiều dài mô tả nén(Compressed Description Length)
Chiều dài mô tả của một đồ thị G là số nguyên các bit yêu cầu để biểu
diễn đồ thị G trong một số định dạng nhị phân, ký hiệu bằng DL(G).
Chiều dài mô tả nén của một đồ thị G với một số đồ thị con S là số
nguyên các bit yêu cầu để biểu diễn G sau khi nó đã được nén sử dụng S, ký
hiệu bằng DL(G|S).

21


Ví dụ 3.1.chiều dài nén
Vertex: 8 bits
Edge: 8 bits
Pointer: 4 bits
DL(A) = 9*8 + 11*8 + 0*4 = 160 bits.
DL(A|triangle) = 3*8 + 2*8 + 3*4 = 52 bits
DL(triangle) = 3*8 + 3*8 + 0*4 = 48 bits

* Mã giả thuật toán 3.1: [7,tr.4-5]

22


23


3.1.2. Thuật toán FSG
Phương pháp tiếp cận hướng đối tượng để khai phá FSMs. Xây dựng cấu trúc
đồ thị con và xác định FSM
* Định nghĩa 3.1.Một đồ thị gán nhãn được mô tả bởi một bộ gồm bốn thành
phần G = (V,E,L,l) trong đó
V: tập các đỉnh (các node)
E⊆ V×V : tập các cạnh, chúng có thể có hướng hoặc vô hướng.
L: tập các nhãn
l: V ∪ E→L, l là hàm gán nhãn đến các đỉnh và các cạnh.
* Độ hỗ trợ SubGraph:
Hình 3.2 gồm ba đồ thị được biểu diễn, các số 0,1,2 và 3 là những số gán cho
mục tiêu của chương trình, các nhãn A,B,C,D,E,F rất quan trọng trong thuật
toán. nGraph là tổng số đồ thị trong tập dữ liệu và nSubGraph là số lần một
subGrap cụ thể suất hiện trong tập dữ liệu. Độ hỗ trợ “Sup” của một đồ thị
con cụ thể được định nghĩa: Sup =nSubGraph÷nGraph

Hình 3.2–Biểu diễn các đồ thị trong tập dữ liệu.

24


Vấn đề đồ thị đẳng cấu cần được giải quyết trong khi đếm độ hỗ trợ của đồ thị

con trong tập dữ liệu. Hai đồ thị là đẳng cấu nếu đỉnh và nhãn cạnh là như
nhau và cùng hướng. Trong ví dụ đồ thị có hướng được giả định từ số đỉnh
thấp đến số đỉnh cao hơn.
Ví dụ3.2. Nếu đếm số đồ thị con xuất hiện A-E-B trong ba đồ thị, thì kết quả
là 3 nhưng thực sự chỉ có hai đồ thị một bao gồm hai đồ thị con A-E-B phải
được tính một lần vấn đề này được loại bỏ bằng cách tìm sự khác biệt giữa đồ
thị con trên đồ thị.
* Mã giả thuật toán 3.2:[8, tr.11-12]

25


×