hướng dẫn đọc toàn văn báo cáo KQNC
!
!
Bạn muốn đọc nhanh
những thông tin cần thiết ?
Hy đọc qua Mục lục bên tay trái bạn trước khi
đọc báo cáo ( với Acrobat 4.0 trở lên, cho trỏ chuột vào
mỗi đề mục để đọc toàn bộ dòng bị che khuất )
! Chọn đề mục muốn đọc và nháy chuột vào đó
!
!
Bạn muốn phóng to hay thu nhỏ
trang báo cáo trên màn hình ?
Chọn, nháy chuột vào 1 trong 3 kích th
thưước
có sẵn trên thanh Menu
, hoặc
! Mở View trên thanh Menu, Chọn Zoom to
! Chọn tỷ lệ có sẵn trong hộp kích th
thưước
muốn,, Nhấn OK
hoặc tự điền tỷ lệ theo ý muốn
Chúc bạn hài lòng
với những thông tin đđưược cung cấp
ĐẠI HỌC THÁI NGUYÊN
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
NGUYỄN NGỌC ANH
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
LuËn v¨n th¹c SÜ KHOA HỌC MÁY TÍNH
Th¸i Nguyªn - 2014
Số hóa bởi Trung tâm Học liệu
/>
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
Số hóa bởi Trung tâm Học liệu
/>
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.
Số hóa bởi Trung tâm Học liệu
/>
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.
Số hóa bởi Trung tâm Học liệu
/>
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.
Số hóa bởi Trung tâm Học liệu
/>
* 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:
Số hóa bởi Trung tâm Học liệu
/>
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
Số hóa bởi Trung tâm Học liệu
/>
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.
Số hóa bởi Trung tâm Học liệu
/>
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
u, v
E cho mỗi cạnh
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
Số hóa bởi Trung tâm Học liệu
LE
, bởi vậy mỗi node và mỗi
/>
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.
Số hóa bởi Trung tâm Học liệu
/>
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)
Số hóa bởi Trung tâm Học liệu
/>
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.
Số hóa bởi Trung tâm Học liệu
/>
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
B
B
C
D
B
E
B
D
C
A
A
C
E
E
B
(b)
Số hóa bởi Trung tâm Học liệu
B
(c)
B
C
D
C
B
E
(d)
/>
C
A
B
A
D
C
B
B
E
C
B
(e)
A
D
C
B
B
B
C
C
B
B
C
D
E
E
(f)
A
(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.
Số hóa bởi Trung tâm Học liệu
/>
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à đủ.
Số hóa bởi Trung tâm Học liệu
/>
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ác đỉnh của cây. Trên tập
’=
đƣợc sử dụng để gắn nhãn cho
{$, #} 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 $;
Số hóa bởi Trung tâm Học liệu
/>
}
Đổ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) “$”;
}
Số hóa bởi Trung tâm Học liệu
/>
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
Số hóa bởi Trung tâm Học liệu
/>
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
Số hóa bởi Trung tâm Học liệu
/>
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 gxe. 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 gxf e , ngƣợc lại gxbe 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 đồ
Số hóa bởi Trung tâm Học liệu
/>
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.
Số hóa bởi Trung tâm Học liệu
/>
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).
Số hóa bởi Trung tâm Học liệu
/>
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]
Số hóa bởi Trung tâm Học liệu
/>
Số hóa bởi Trung tâm Học liệu
/>