oĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
CỞ SỞ DỮ LIỆU NÂNG CAO
ĐỀ TÀI:
SUBGRAPH ISOMORPHISM
IN POLYNOMIAL TIME
Giảng viên hướng dẫn: PGS TS. Đỗ Phúc
Học viên thực hiện: Ngô Hải Linh
MSHV: CH1101019
Lớp cao học khóa 6
TP Hồ Chí Minh, tháng 8/2012
Subgraph Isomorphism in Polynomial Time
MỤC LỤC
Mở đầu 2
1. Giới thiệu 3
2. Các định nghĩa và ký hiệu 5
3. Thuật toán Ullman 6
4. Đẳng cấu đồ thị con bằng cây quyết định 7
5. Trình bày hiệu quả hơn về cây quyết định 12
6. Cây quyết định 15
7. Phân tích độ phức tạp 17
8. Thu gọn cây quyết định cho các ứng dụng thực tế 20
9. Cài đặt thuật toán cây quyết định 24
Kết luận 26
Cơ sở dữ liệu nâng cao Trang 2
Subgraph Isomorphism in Polynomial Time
MỞ ĐẦU
Ngày nay, hầu hết các ứng dụng đều lưu trữ một lượng dữ liệu khổng lồ.Vấn đề lưu
trữ và xử lý dữ liệu trở nên khó khăn và cần được quan tâm hơn, dữ liệu thay đổi rất nhanh,
thậm chí thay cả đổi cấu trúc cơ bản của dữ liệu. Việc xử lý đòi hỏi phải linh hoạt và không
làm gián đoạn ứng dụng.Với hệ thống lưu trữ hiện tại không thể linh động với yêu cầu này.
Từ những yêu cầu trên, dữ liệu đồ thị ra đời để giải quyết những vấn đề đó. Dữ liệu
đồ thị là lưu trữ thông tin ở dạng đồ thị gồm các đỉnh và cạnh. Với cách thức lưu trữ này,
việc quản lý dữ liệu trở nên mềm dẽo và dễ dàng hơn ngay cả trong việc ứng dụng tri thức
vào khối dữ liệu lưu trữ.
Trong bài tiểu luận này, em xin tóm tắt lại bài báo Subgraph Isomorphism in
Polynomial Time – B.T. Messmer và H. Bunke. Bài báo trình bày một thuật toán mới xác
định đẳng cấu đồ thị con trên dữ liệu đồ thị. Đồng thời, em cũng cài đặt thuật toán trên
bằng winform C# .NET.
Thông qua những buổi giảng dạy và hướng dẫn của thầy Đỗ Phúc, giúp em nắm được
kiến thức tổng quát và hiểu hơn về các mô hình cơ sở dữ liệu hiện nay. Do khả năng và
kiến thức có hạn, nên bài viết còn nhiều sai sót. Em xin chân thành cảm ơn thầy đã giảng
dạy và hướng dẫn để hoàn thành bài viết này.
Cơ sở dữ liệu nâng cao Trang 3
Subgraph Isomorphism in Polynomial Time
1. Giới thiệu
Đồ thị và đẳng cấu đồ thị con là những khái niệm đã được sử dụng mạnh mẽ trong
nhiều ứng dụng. Sức mạnh của đồ thị và việc so sánh giữa các đồ thị khác nhau đã dẫn
nhiều nhà nghiên cứu trong hai mươi năm qua đi đến nghiên cứu vấn đề về tính toán cách
hiệu quả đồ thị và đẳng cấu đồ thị con. Cho đến nay, đó vẫn là một câu hỏi mở, liệu vấn đề
đẳng cấu đồ thị nói chung có thể được giải quyết bởi một thuật toán mà chỉ là đa thức trong
thời gian và trong không gian [GJ79]. Tất cả các thuật toán được đề xuất cho đến nay đều
có sự phức tạp về thời gian theo cấp số nhân trong trường hợp tệ nhất. Ngoài ra, vấn đề
phát hiện đẳng cấu đồ thị con được biết đến là NP-complete [GJ79]. Trong phần sau đây,
chúng tôi sẽ cung cấp một tổng quan về các thuật toán đồ thị và đẳng cấu đồ thị con.
Có hai phương pháp cơ bản mà nghiên cứu trước đây đã được thực hiện đối với vấn
đề đẳng cấu đồ thị. Các phương pháp tiếp cận đầu tiên dựa trên khái niệm lý thuyết nhóm
và dựa trên việc nghiên cứu của nhóm hoán vị. Trong [Bab81], chỉ ra rằng có tồn tại một
dạng theo cấp số nhân ràng buộc đối với các vấn đề đẳng cấu đồ thị nói chung. Hơn nữa,
bằng cách áp đặt hạn chế nhất định trên các thuộc tính của đồ thị, nó đã có thể lấy được các
thuật toán có độ phức của đa thức nhất định. Ví dụ, Luks và Hoffman mô tả phương pháp
giới hạn đa thức để phát hiện đẳng cấu đồ thị bằng giới hạn biên [Hof82]. Đối với trường
hợp đặc biệt của đẳng cấu đồ thị vô hướng, trong [Luk82] có độ phức tạp tính toán O(n
6
).
Trong [HW74], phương pháp tính toán các đẳng cấu của đồ thị phẳng chỉ có độ phức tạp
tuyến tính thời gian. Tuy nhiên, nhược điểm lớn của các thuật toán dựa trên những khái
niệm lý thuyết chính là tốn chi phí lớn và hằng số lớn liên với sự phức tạp lý thuyết. Cách
tiếp cận thứ hai với đồ thị và đẳng cấu đồ thị con được định hướng thực tế hơn và nhắm
thẳng vào việc phát triển một cách thức tính toán để phát hiện đẳng cấu. Hầu hết các thuật
toán này được dựa trên việc tìm kiếm không gian trạng thái bằng backtracking. Một trong
những ấn phẩm đầu tiên trong lĩnh vực này là của Corneil và Gotlieb [CG70]. Một cải tiến
lớn của phương pháp backtracking, sau đó đã được thực hiện bởi Ullman, người đã giới
thiệu một phương pháp sàng lọc làm giảm đáng kể việc tìm kiếm không gian của
backtracking [Ull76]. Tổng quan về các ấn phẩm đẳng cấu đồ thị, hãy xem [Gat79, RC77].
Công việc gần đây được mô tả trong [MLL92, FFG90] cho rằng vấn đề đồ thị đẳng cấu
được giảm thành vấn đề phát hiện bằng cách xây dựng một đồ thị liên kết cho tất cả các
Cơ sở dữ liệu nâng cao Trang 4
Subgraph Isomorphism in Polynomial Time
đỉnh có thể ánh xạ. Và gần đây nhất, một cách tiếp cận mạng dựa trên đồ thị kết hợp đã
được đề xuất bởi các tác giả [MB95b].
Cho đến nay, chúng ta chỉ quan tâm đến vấn đề tìm ra được một đồ thị hoặc đồ thị
đẳng cấu giữa hai đồ thị tại một thời điểm. Tuy nhiên, trong các ứng dụng thực tế thường
có một cơ sở dữ liệu của đồ thị, được gọi là đồ thị mô hình, và một đồ thị đơn đầu vào chưa
xác định phải được kiểm tra. Nếu số lượng các đồ thị trong cơ sở dữ liệu lớn thì việc kiểm
tra tuần tự mỗi đồ thị mô hình trở nên rất tốn kém về mặt tính toán. Như một hệ quả, một số
hệ thống đã được đề xuất trước đây mà kết hợp các thuật toán đồ thị hoặc đẳng cấu đồ thị
con bằng phương pháp lập chỉ mục. Ý tưởng cơ bản của lập chỉ mục là sử dụng những tính
năng cụ thể và dễ dàng tính toán của một đồ thị đầu vào để chọn một tập hợp nhỏ những đồ
thị mô hình từ một cơ sở dữ liệu lớn. Trong [HS88], Horaud đề xuất sử dụng đa thức nội tại
thứ hai của ma trận Laplacian của một đồ thị như là một chỉ mục vào các cơ sở dữ liệu của
đồ thị. Tuy nhiên, chỉ mục này chỉ duy nhất cho đồ thị có ít hơn 12 đỉnh và có độ phức tạp
O(n
4
), trong đó n là số đỉnh của đồ thị. Cách tiếp cận khác được thực hiện ở Paris trong
[Par93], đã đề xuất để tính toán một chỉ số cấu trúc được tổ chức trong một mạng lưới phân
loại theo thứ tự tương tự như sự kết hợp đồ thị dựa trên mạng trong [MB95b]. Được quan
tâm nhiều đến bài viết này chính là phương pháp lập chỉ mục được đề xuất trong [Ike87,
GB89, Spi93]. Thay vì sử dụng một cơ chế lập chỉ mục làm tiền xử lý một số thuật toán
đẳng cấu đồ thị con thông thường, các cơ sở dữ liệu của đồ thị được chuyển đổi thành một
cây quyết định. Cây quyết định được sử dụng chỉ mục trực tiếp và đồng thời và so khớp đồ
thị mô hình với các đồ thị đầu vào. Tuy nhiên, tất cả các phương pháp cây quyết định đã
được trình bày cho đến nay đều phải gắn chặt với vật thể 3D nhất định và không đưa ra giải
pháp cho vấn đề đẳng cấu đồ thị nói chung
Trong bài báo này, Messmer & Bunke đề xuất một phương pháp mới phát hiện đồ thị
và đẳng cấu đồ thị con. Nó có hai tính năng quan trọng. Đầu tiên, thời gian chạy của nó chỉ
là bậc hai trong số các đỉnh trong đồ thị đầu vào nếu chúng ta bỏ qua thời gian cần thiết cho
tiền xử lý. Thứ hai, sự phức tạp thời gian thì độc lập với số lượng đồ thị trong cơ sở dữ liệu.
Phương pháp mới này thì dựa trên ý tưởng sau đây. Chúng tôi tạo ra tập hợp của tất cả các
hoán vị của ma trận kề của một đồ thị mô hình và tổ chức tập này trong một cây quyết định.
Đồ thị mô hình khác nhau có thể được kết hợp vào cùng một cây quyết định. Cây quyết
định được xây dựng từ mô hình đồ thị trong bước tiền xử lý off-line. Thời gian chạy, nó
Cơ sở dữ liệu nâng cao Trang 5
Subgraph Isomorphism in Polynomial Time
được sử dụng để xác định cách hiệu quả là có hay không một đẳng cấu đồ thị con từ một đồ
thị đầu vào chưa biết với một trong những đồ thị mô hình. Ưu điểm chính của phương pháp
mới là được bảo đảm chấm dứt trong thời gian bậc hai. Tuy nhiên, đổi lại cho thời gian
chạy hiệu quả là kích thước của cây quyết định. Trong trường hợp xấu nhất, nó chứa một số
theo cấp số nhân các nút. Tuy nhiên, chúng tôi tin rằng phương pháp đề nghị là một đóng
góp mới vào lĩnh vực phát hiện đẳng cấu đồ thị con. Nó là sự quan tâm đặc biệt trong các
ứng dụng đồ thị cơ bản là khá nhỏ, nhưng đáp ứng theo thời gian thực.
2. Các định nghĩa và ký hiệu
Định nghĩa 2.1: Cho đồ thị G = (V, E, µ, ν, L
v
, L
e
).
Trong đó: V là tập các đỉnh
VxVE ⊆
là tập các cạnh
µ : V → L
v
là chức năng gán nhãn cho các đỉnh
ν : E → L
e
là chức năng gán nhãn cho các cạnh
Như thường lệ, chúng tôi giả định rằng L
v
và L
e
là tập hợp hữu hạn của các nhãn Với
đồ thị vô hướng, chúng tôi yêu cầu cho mỗi cạnh (v
1
, v
2
) một cạnh (v
2
, v
1
) theo hướng
ngược lại với cùng một nhãn này.
Định nghĩa 2.2: Cho đồ thị G = (V, E, µ, ν, L
v
, L
e
), và một đồ thị S = (V
s
, E
s
, µ
s
, ν
s
,
L
v
, L
e
) là con của G.
1.
V⊆
s
V
2.
)(
sss
xVVEE ∩=
3. µ
s
(v) = µ(v) nếu
s
Vv ∈
4. ν
s
(e) = ν
(e) nếu
s
Ee ∈
Cho G = (V, E, µ, ν, L
v
, L
e
) là một đồ thị với V = {v
1
, v
2
, , v
n
}. G cũng có thể thay thế bởi
ma trận kề M = (m
ij
); i, j = 1, , n, trong đó m
ii
= µ(ν
i
) và m
ij
= ν((ν
i
, ν
j
)) với i ≠ j. Rõ ràng,
các ma trận kề của một đồ thị không đưa vào vòng lặp tại một đỉnh. Tuy nhiên, đây không
phải là hạn chế thực sự bởi vì vòng lặp có thể được thay thế bởi một tập hợp mở rộng nhãn
đỉnh.
Rõ ràng, ma trận M không phải là duy nhất cho một đồ thị G. Nếu M đại diện cho G,
thì bất kỳ hoán vị của M cũng là một đại diện hợp lệ của G.
Định nghĩa 2.3: Một ma trận n x n P = (p
ij
) được gọi là một ma trận hoán vị nếu:
Cơ sở dữ liệu nâng cao Trang 6
Subgraph Isomorphism in Polynomial Time
1.
}1,0{∈
ij
p
với i,j = 1, , n
2.
∑
=
=
n
i
ij
p
1
1
với j = 1, , n
3.
∑
=
=
n
j
ij
p
1
1
với j = 1, , n
Nếu một đồ thị G được đại diện bởi một ma trận n x n kề M và P là một ma trận hoán
vị n x n, thì ma trận n x n
M’ = P M P
T
(1)
P
T
biểu thị là ma trận chuyển vị của P, cũng là một ma trận kề của G. Nếu p
ij
= 1 thì
đỉnh thứ j trong M trở thành đỉnh thứ i trong M’.
Định nghĩa 2.4: Cho hai đồ thị G
1
và G
2
, và M
1
và M
2
là ma trận kề tương ứng của
chúng. G
1
và G
2
là đẳng cấu nếu có tồn tại một ma trận hoán vị P như sau:
M
2
= P M
1
P
T
(2)
Chú ý rằng ma trận P có thể được hiểu như là một hàm bijective f mà các bản đồ các
đỉnh G
1
tới G
2
và ngược lại. Đó là, f(v
j
) = v
i
nếu m
ij
= 1. Chúng ta sẽ gọi cả P và f là một
đẳng cấu đồ thị giữa G
1
và G
2
. Như vậy, vấn đề của việc tìm kiếm đẳng cấu đồ thị giữa hai
đồ thị G
1
và G
2
là tương đương với việc tìm kiếm ma trận hoán vị P ở công thức (2).
Định nghĩa 2.5: Cho hai đồ thị G
1
và G
2
, có một đẳng cấu đồ thị con từ G
1
tới G
2
nếu
có tồn tại một đồ thị con S
⊂
G
2
như vậy thì G
1
và S là đẳng cấu.
Định nghĩa 2.6: Cho M = (m
ij
) là một ma trận n x n. Khi đó, S
k,m
(M) biểu thị ma trận
k x m thu được từ M bằng cách xóa các dòng k + 1, , n và cột m + 1, , n; trong đó k, m ≤
n. Nghĩa là, S
k,m
(M) = (m
ij
); i = 1, , k và j = 1, , m.
Cho G
1
và G
2
là 2 đồ thị với ma trận kề M
1
và M
2
có kích thước m x m và n x n tương
ứng, trong đó m ≤ n. Có một đẳng cấu đồ thị con từ G
1
tới G
2
nếu có một ma trận hoán vị P
n x n như sau:
M
1
= S
m,m
(P M
2
P
T
) (3)
Như vậy, vấn đề tìm ra một đẳng cấu đồ thị con từ G
1
tới G
2
là tương đương với việc
tìm ra ma trận hoán vị P ở công thức (3).
Chú ý rằng S
m,m
(P M
2
P
T
) = S
m,n
(P) M
2
(S
m,n
(P))
T
.
3. Thuật toán Ullman
Thuật toán Ullman được dựa trên ý tưởng của việc tìm kiếm tất cả các đẳng cấu đồ thị
con bằng việc từng bước thiết lập các dòng ma trận hoán vị P theo dòng (xem hình 1). Từ
Cơ sở dữ liệu nâng cao Trang 7
Subgraph Isomorphism in Polynomial Time
định nghĩa 2.3 ở trước phần, chúng ta biết rằng mỗi dòng k trong P có chứa đúng một giá trị
khác không p
ki
= 1, trong khi tất cả các phần tử khác p
kj
của dòng k có j ≠ i được thiết lập là
0. Quá trình lập lại Backtrack bắt đầu bằng cách thiết lập phần tử p
11
đầu tiên của dòng đầu
tiên của P tới 1 và tất cả các phần tử khác trong dòng đầu tiên của P tới 0. Nếu S
1,n
(P) là
phần kết hợp đại diện cho một đẳng cấu đồ thị con thì quá trình Backtrack được gọi đệ quy
lại một lần nữa và dòng thứ hai của P dự kiến được thiết lập. Quá trình này được tiếp tục
cho đến khi dòng m của P đã được thiết lập thành công và một đẳng cấu đồ thị con được
tìm thấy hoặc là điều kiện trong bước (3.b.ii) không được thỏa mãn. Trong cả hai trường
hợp, thủ tục Backtrack quay lại mức trước đây và thử thiết lập khác của p
ki
.
ULLMAN (G = (V, E, µ, ν, L
v
, L
e
), G
I
= (V
I
, E
I
, µ
I
, ν
I
, L
v
, L
e
))
1. Cho P = (p
ij
) là ma trận hoán vị n x n, n = |V|, m = |V
I
|, và M và M
I
biểu diễn ma trận
kề G và G
I
tương ứng.
2. Gọi hàm Backtrack(M, M
I
, P, 1)
3. procedure Backtrack(ma trận kề M, ma trận kề M
I
, ma trận kề P, biến đếm k)
(a) Nếu k > m thì P là đẳng cấu đồ thị con từ G
I
tới G. Xuất P và kết thúc.
(b) For i =1 to n
i. Đặt p
kj
= 1, với mọi j ≠ I đặt p
kj
= 0
ii. Nếu S
k,k
(M
I
) = S
k,k
(P) M (S
k,n
(P))
T
call Backtrack(M, M
I
, P, k + 1)
Hình 1: Thuật toán Ullman
4. Đẳng cấu đồ thị con bằng cây quyết định
Vấn đề chính của các thuật toán được mô tả trong phần trước ở chỗ là tất cả các ma
trận hoán vị đại diện cho một đẳng cấu đồ thị con được tính toán và tạo ra ở thời gian chạy.
Hơn nữa, các thuật toán có thể chạy vào những đầu cuối và việc quay lui (backtracking) trở
nên cần thiết. Để khắc phục những vấn đề này và để tránh backtracking lúc chạy, chúng tôi
đề xuất một phương pháp tiếp cận dựa trên cây quyết định. Chúng tôi giả định rằng có một
tập hợp các mô hình đồ thị được gọi là một ưu tiên, trong khi đồ thị đầu vào trở nên dễ tiếp
cận chỉ ở lúc chạy. Đối với mỗi đồ thị mô hình, chúng tôi tính toán tất cả các hoán vị có thể
của ma trận kề của nó và chuyển đổi những ma trận kề này thành một cây quyết định. Vào
thời gian chạy, ma trận của đồ thị đầu vào sau đó được sử dụng để tìm những ma trận kề
Cơ sở dữ liệu nâng cao Trang 8
Subgraph Isomorphism in Polynomial Time
Hình 2: Dòng-cột đại diện của ma trận kề
trong quyết định cây giống với nó. Các ma trận hoán vị tương ứng với các ma trận kề này
đại diện cho đồ thị hoặc đẳng cấu đồ thị con mà chúng tôi đang tìm kiếm.
Cho G = (V, E, µ, ν, L
v
, L
e
) là một đồ thị mô hình và M là ma trận kề n x n tương ứng.
Hơn nữa, cho A(G) biểu diễn tập hợp của tất cả các ma trận kề hoán vị của G.
A (G) = {M
P
| M
P
= P M P
T
, trong đó P là một ma trận hoán vị n x n (4)
Tổng số ma trận kề đã được chuyển hoán là |A(G)| = n! , có n! ma trận hoán vị khác nhau
của n phần tử. Chúng tôi đã sẵn sàng xác định lại các vấn đề đẳng cấu đồ thị con xét theo
việc thiết lập được giới thiệu ở trên. Đối với một mô hình đồ thị G có ma trận kề n x n
tương ứng là M và một đồ thị đầu vào G
I
với ma trận kề M
I
m x m và m ≤ n, xác định có tồn
tại một ma trận M
P
∈
A(G) như là M
I
= S
m,m
(M
P
). Nếu một ma trận M
P
tồn tại thì ma trận
hoán vị P tương ứng với M
P
là một đẳng cấu đồ thị con từ G
I
tới G, tức là M
I
= S
m,m
(M
P
) =
S
m,m
(PMP
T
). Nếu G và G
I
có kích thước bằng nhau thì ma trận hoán vị P là cho một đẳng
cấu đồ thị giữa G
I
và G, tức là M
I
= PMP
T
.
Chúng tôi đề nghị tổ chức tập A(G) trong một cây quyết định như vậy mà mỗi ma
trận A(G) được phân loại bởi cây đó. Các đặc tính được sử dụng cho quá trình phân loại là
các phần riêng lẻ trong các ma trận kề. Tuy nhiên, điều quan trọng cần lưu ý là mục đích
của các cây quyết định sẽ được phân loại ma trận kề của đồ thị đầu vào. Trong trường hợp
phát hiện đẳng cấu đồ thị con, các ma trận này sẽ nhỏ hơn so với các ma trận A(G). Vì vậy,
cần thiết để gom nhóm các phần riêng lẻ của ma trận kề A(G) vào các đặc tính như là việc
phân loại vào từng cấp độ cây quyết định thì độc lập với kích thước của ma trận kề được
phân loại. Vì mục đích này, chúng tôi giới thiệu một ký hiệu mới cho một ma trận kề n x n
M = (m
ij
). Chúng ta nói ma trận bao gồm một mảng của các phần tử dòng-cột a
i
, trong đó a
i
là một vector mẫu.
a
i
= (m
1i
, m
2i
, …, m
(i - 1)
, …, m
i1
)
Cơ sở dữ liệu nâng cao Trang 9
Subgraph Isomorphism in Polynomial Time
Ma trận lúc này co thể viết là:
M = (a
1
, a
2
, …, a
n
); i = 1, …, n
Hình 3: Cây quyết định biểu diễn phân loại ma trận kề A…F của g
1
.
Cây quyết định được xây dựng theo các phần từ dòng-cột của mỗi ma trận kề M
P
∈
A(G). Ở đỉnh của cây quyết định có một nút gốc duy nhất. Các nút kế trực tiếp của nút gốc
tạo thành các mức đầu tiên của cây quyết định. Ở mức đầu tiên, việc phân loại các ma trận
ở A(G) được thực hiện theo phần từ dòng-cột đầu tiên a
1
của mỗi ma trận M
P
∈
A(G). Phần
từ a
1
= (m
11
) đại diện cho nhãn đỉnh đầu tiên trong mỗi ma trận A(G), với m
11
∈
L
v
(xem
phần 2). Do đó, mỗi ma trận ở A(G) được phân loại theo nhãn đỉnh đầu tiên của nó. Mỗi
nhánh mà dẫn đến một nút kế trực tiếp của nút gốc thì được liên kết với một giá trị cụ thể
cho phần từ dòng-cột a
1
. Tiếp theo, ở mức thứ hai của cây quyết định, phần tử dòng-cột a
2
của ma trận thì được dùng để phân loại Nói chung, các ma trận được đại diện bởi một số
nút trên mức k thì được chia thành các lớp theo như phần tử a
k
. Với mỗi ma trận M
P
được
đại diện bởi một số nút N ở mức k, ma trận hoán vị tương ứng P cũng được đưa ra. M
P
đã
được phân loại thành đỉnh thứ k, P là một đẳng cấu đồ thị con cho các đồ thị con có ma
trận kề S
k,k
(M
P
) tới G. Vào thời gian chạy, P sẽ là một đẳng cấu đồ thị con cho bất kỳ đồ thị
Cơ sở dữ liệu nâng cao Trang 10
Subgraph Isomorphism in Polynomial Time
đầu vào mà đã được phân loại vào nút N. Cuối cùng, ở dưới cùng của cây quyết định, có
các nút lá. Mỗi nút lá đại diện cho một loại ma trận giống nhau M
P
∈
A(G). Đối với mỗi
ma trận này, ma trận hoán vị tương ứng được lưu trữ trong các nút. Số lượng của những ma
trận hoán vị trong mỗi nút lá thì bằng số tự đẳng cấu của G. (Tự đẳng cấu là một đẳng cấu
của một đồ thị cho chính nó).
Hình 4: Từ điển và chỉ mục cho cây quyết định nút 3 trong hình 3
Trong hình 3 - một đồ thị g
1
, và cây quyết định tương ứng của nó. Các nút của cây
quyết định được thể hiện bởi các vòng tròn được tô đậm. Mỗi chi nhánh trực tiếp từ một nút
này tới nút khác đã liên kết với một phần tử dòng-cột. Ở phía trên của hình 3 tập A(g
1
) của
ma trận kề hoán vị g
1
được liệt kê. Dễ dàng thấy rằng số lượng của tự đẳng cấu của g
1
là
một. Vì vậy, mỗi nút lá trong cây quyết định thể hiện chính xác một ma trận kề.
Một yêu cầu quan trọng cho một cây quyết định là phân loại theo từng cấp phải được
tính toán một cách dễ dàng. Vì vậy, nếu một ma trận M
P
được phân loại theo dòng-cột k
của phần tử a
k
, sự kế thừa thông qua phần tử a
ki
, với a
ki
= a
k
phải dễ dàng tính toán. Với mục
tiểu này, tất cả các phần tử dòng-cột mà liên quan đến các nhánh từ một nút trên mức k đến
một nút trên mức k + 1 đều được chọn trong một từ điển về chuỗi. Từ điển này được tổ
chức như là một cấu trúc chỉ mục 2k - 1 chỉ số. Chính xác có 2k - 1 phần tử m
ij
trong một
dòng-cột phần tử ak và các phần tử này được sử dụng như một chỉ mục. Tìm một phần tử
trong từ điển này có thể được thực hiện trong bước 2k - 1. Vì vậy việc tìm kiếm các nút kế
trong cây quyết định ở mức k có thể được thực hiện trong O(2k - 1) = O(k) bước. Ví dụ,
xem xét nút 3 trong cây quyết định ở hình 3. Có ba nhánh từ nút 3 tới nút 5, 6, và 7, tương
ứng. Các phần tử dòng-cột liên kết với các chi nhánh này được tổ chức trong một từ điển
Cơ sở dữ liệu nâng cao Trang 11
Subgraph Isomorphism in Polynomial Time
được đưa ra trong hình. 4. Trong ví dụ này, một cấu trúc ba cấp chỉ số là cần thiết cho việc
tổ chức các mục từ điển.
Hình 5: Cây quyết địn cho đồ thị g
1
ở hình 3 và đồ thị g
2
.
Đến nay, chúng tôi đã chỉ bàn về cấu trúc của cây quyết định đối với một đồ thị mô
hình đơn. Nếu có một số đồ thị mô hình trong một cơ sở dữ liệu nhỏ giải pháp sẽ được để
xây dựng một cây quyết định riêng biệt cho mỗi đồ thị mô hình. Tuy nhiên, có thể biểu diễn
cho một số đồ thị mô hình bởi cùng một cây quyết định. Trên mỗi mức, việc phân loại các
ma trận kề cho một đồ thị mô hình chỉ được thực hiện trên cơ sở của các phần tử dòng-cột
hiện tại. Việc không kiểm tra trên mọi mức của cây quyết định cũng tận dụng được chính
đồ thị mô hình. Vì vậy, cho một tập mô hình đồ thị G
1
, G
2
, …, G
L
, tập ma trận kề tương
ứng A(G
1
), A(G
2
), …, A(G
L
) có thể được phân loại và được thay bởi cùng một cây quyết
định. Trong hình 5 cây quyết định cho đồ thị g
1
của hình 3 và một đồ thị, g
2
, được hiển thị.
Để phân loại các ma trận kề trong A(g
2
) (ở đỉnh của Hình 5) chỉ có hai nút được thêm vào
cây quyết định tương ứng với đồ thị g
1
. Vì có ba tự đẳng cấu của g
2
, mỗi nút 13 và 15 trong
hình 5 thể hiện chính xác ba ma trận kề.
Cơ sở dữ liệu nâng cao Trang 12
Subgraph Isomorphism in Polynomial Time
Tại thời điểm chạy, cây quyết định được sử dụng trực tiếp để phân loại ma trận kề m
x m M
1
của một đồ thị đầu vào chưa xác định G
I
. Ma trận M
1
được xếp vào mức đầu tiên
theo phần tử dòng-cột a
1I
. Nếu có một nhánh i nào đó từ nút gốc tới nút kế mà phần tử a
1i
khớp với a
1I
, thuật toán vẫn tiếp tục với các nút kế vào mức thứ hai Nếu tại một điểm mà
việc phân loại không thể thực hiện, thì đồ thị đầu vào G
I
không đẳng cấu với bất kỳ đồ thị
con của đồ thị mô hình hoặc bất kỳ mô hình đồ thị trong cơ sở dữ liệu. Nếu mỗi phần tử
dòng-cột của G
I
đã được sử dụng trong quá trình phân loại và một nút N nào đó trong cây
quyết định đã được đạt tới thì mỗi ma trận hoán vị mà được liên kết với N thì thể hiện cho
một đẳng cấu đồ thị con từ đồ thị đầu vào tới một trong các đồ thị mô hình. Nếu nút N là
một nút lá và đồ thị đầu vào và đồ thị mô hình có kích thước bằng nhau thì mỗi ma trận
hoán vị liên kết với N.
COMPILE_TREE (Đồ thị G = (V, E, µ, ν, L
v
, L
e
))
1. Tạo nút gốc Root của cây quyết định nếu nó không tồn tại.
2. For k = 1 to n, với n = |V|
(a) Tạo tất cả các đồ thị con S
k
⊂
G với k đỉnh.
(b) Gọi hàm merge_tree(Root, S
k
)
Hình 6: Thuật toán compile_tree
5. Trình bày hiệu quả hơn về cây quyết định
Cây quyết định được mô tả trong phần cuối thì lớn không cần thiết. Trong phần này
chúng tôi giới thiệu cách trình bày nhỏ gọn hơn. Nó được dựa trên quan sát ở mức k trong
cây quyết định tất cả các đồ thị con bao gồm đỉnh k, với k = 1, …, n. Chú ý rằng mỗi đồ thị
con S được thực hiện k! / α lần, trong đó α là số các tự đẳng cấu khác nhau S. Rõ ràng, tất
cả các thay thế này là tương đương với nhau, và các thông tin mà chúng có chứa phần lớn
là dư thừa. Chúng tôi trình bày cách tránh được sự dư thừa này. Kết quả là, một sự trình
bày nhỏ gọn hơn về cây quyết định thu được.
Cho N
1
và N
2
là các nút của cây quyết định mà cả hai đại diện cho các đồ thị con S
của một đồ thị mô hình G và S được cho bởi ma trận kề M
S
của mình. Hơn nữa, cho M
1
và
M
2
là các ma trận kề đại diện N
1
và N
2
, P
1
và P
2
với ma trận hoán vị tương ứng như
111
MPMP
T
S
=
và
222
MPMP
T
S
=
. Khi đó, tồn tại một ma trận hoán vị R như sau:
M
1
= RM
2
R
T
(5)
R có thể được thu gọn:
Cơ sở dữ liệu nâng cao Trang 13
Subgraph Isomorphism in Polynomial Time
T
PPR
21
=
(6)
bởi vì thay R trong phương trình (5) bằng
T
PP
21
và thay M
2
bằng
T
S
PMP
22
cho ra
111212221
))(( MPMPPPPMPPP
T
S
TTT
S
T
==
. Vì vậy, bất kỳ ma trận kề đại diện trong nút N
2
có thể được chuyển đổi, bằng ma trận R, vào một ma trận được biểu diễn trong N
1
. Kết luận
quan trọng nhất là nút cây quyết định N2 nó không cần thiết phải phân loại các ma trận
được thay thể và tạo ra các nút kế thừa của N
2
. Thay vào đó, nó sẽ hiệu quả để phân loại
các ma trận thay thế trong N
1
và chỉ cần đề cập hoặc chuyển hướng nút N
2
đến N
1
. Vì tiêu
đích này, chúng tôi giới thiệu một nhánh chuyển hướng trong cây quyết định bắt đầu tại N
2
và kết thúc ở N
1
. Liên kết với các chi nhánh chuyển hướng là các ma trận hoán vị R. Nói
chung, cho một đồ thị con S
⊂
G, chúng tôi lựa chọn từ tập các nút cây quyết định thể hiện
S như là nút tùy ý T và chèn các chi nhánh chuyển hướng từ tất cả các nút khác tới T. Do
đó, chỉ có một trong những nút cây quyết định S sẽ được sử dụng cho việc phân loại thêm
các ma trận của đồ thị G.
MERGE_TREE(NODE Root, GRAPH S)
1. S được tạo bởi ma trận kề k x k
Tạo tất cả các ma trận hoán vị P với k chiều, và tập A(S) của ma trận kề hoán vị S.
2. For each M
P
= (a
1
, …, a
k
)
∈
A(S) do
(a) N = Root
(b) For i = 1 to k do
i. Nếu có một nút N
S
của N với a
k
= a
Ns
then
N = N
s
else
Tạo nút mới N
S
và là nút kế của N. Thêm a
k
từ điển và gán vào N. N
S
biểu diễn
phần tử dòng-cột a
k
và đặt N = N
S
.
3. Chọn nút N ở mức k + 1 đã được tạo hoặc đã tìm ở ma trận M
1
trong A(S) và đặt T =
N. Gán
T
MPPM
111
=
.
4. Mỗi nút N ≠ T trên mức k + 1 của S, thêm một nhánh vào nút T. M’
∈
A(S) là một ma
trận kế phân cấp trong N và P’ ma trận kề tương ứng
T
MPPM
'
''=
. Gán ma trận kề
T
PP
'
1
tới nhánh chuyển tiếp từ N tới T (xem phương trình 6).
Hình 7: Thuật toán merge_tree
Cơ sở dữ liệu nâng cao Trang 14
Subgraph Isomorphism in Polynomial Time
Hình 8: Cây quyết định thu gọn phân loại các ma trận kề {A, …, F} và {A’, …, F’} của đồ
thị g
1
và g
2
(xem hình 3 và 5)
Bây giờ chúng tôi mô tả thủ tục để biên dịch một cây quyết định từ một đồ thị mô
hình nhất định. Ý tưởng cơ bản của chương trình biên dịch là tạo ra một cây quyết định cho
tất cả các đồ thị con của mô hình đồ thị. Trong quá trình này, chúng ta dần dần tăng kích
thước của đồ thị con được kết hợp trong cây quyết định. Như được thảo luận ở trên, sẽ đầy
đủ cho mỗi đồ thị con nếu chỉ có một nút trong cây quyết định mà được sử dụng để phân
loại. Trong thủ tục compile_tree ở hình 6, chúng tôi bắt đầu bằng cách tạo ra một nút gốc
cho cây quyết định, với điều kiện cây quyết định còn trống. Tiếp theo, tiếp chúng ta tạo ra
các đồ thị con của G bắt đầu với đồ thị con có kích thước một và kết thúc bằng chính đồ thị
G. Với mỗi đồ thị con S
k
trong đó k biểu thị số lượng đỉnh, thủ tục merge_tree được gọi.
Trong bước đầu tiên của thủ tục merge_tree, ở hình 7, tậpA(S) của tất cả các ma trận
kề tương ứng được tạo ra. Các ma trận này sau đó được phân loại bởi cây quyết định đã tồn
tại càng nhiều càng tốt. Lưu ý rằng các cây quyết định có thể ở thời điểm này đã kết hợp đồ
thị mô hình khác nhau hoặc các đồ thị con của đồ thị mô hình. Việc phân loại ma trận được
thực hiện trong các bước (2.a) và (2.b) bằng cách xem xét các phần tử dòng-cột. Nếu đối
với nút N nào đó ở mức k, không có phân loại ma trận hiện tại, tức là không có nút kế với
một phần tử dòng-cột tương ứng với phần tử dòng-cột a
k
của ma trận hiện tại, lúc đó một
nút mới N
S
được đưa vào cây quyết định. Các N
S
nút mới được tạo từ nút kế trực tiếp của
Cơ sở dữ liệu nâng cao Trang 15
Subgraph Isomorphism in Polynomial Time
N. Hơn nữa, phần tử a
k
được thêm vào từ điển và gán vào N. Khi tất cả các ma trận A(S) đã
được phân loại thành công, các nhánh chuyển hướng được chèn vào. Theo mặc định, các
nút được tạo ra cho ma trận đầu tiên M
1
∈
A(S) được xem là nút thay thế T. Trong bước
(4), tất cả các nút khác đã được tạo ra cho ma trận A(S) thì được chuyển hướng đến T.
Trong hình 8, cây quyết định của các đồ thị g
1
và g
2
cho kết quả từ thuật toán
compile_tree. Có hai nhánh chuyển hướng trong cây quyết định (ký hiệu bởi đường chấm).
Liên kết với cả hai chi nhánh là ma trận hoán vị
)(
1
0
0
1
. Khi áp dụng cho ma trận phụ 2 x 2
S
2,2
(A), S
2,2
(B) và S
2,2
(D) của G
1
, các ma trận S
2,2
(C), S
2,2
(E) và S
2,2
(F). Với đồ thị g
2
, nhánh
chuyển hướng biến đổi ma trận S
2,2
(A’), S
2,2
(D’) và S
2,2
(E’) thành ma trận S
2,2
(C’), S
2,2
(F’)
và S
2,2
(B’). Chú ý rằng bằng cách chuyển các nhánh chuyển hướng vào cây quyết định thì
có thể tiết kiệm ba nút cây quyết định.
Cho đến giờ, chúng ta chỉ bàn việc lập cây quyết định cho các đồ thị mô hình đơn.
Tuy nhiên, cấu trúc chung của một cây quyết định là độc lập với số lượng đồ thị mô hình
được phân loại bởi cây. Vì vậy, nó không cần thiết phải xây dựng một cây quyết định mới
cho tất cả các đồ thị mô hình mới. Thay vào đó, cùng một cây quyết định có thể được mở
rộng và được sử dụng cho bất kỳ số của đồ thị mô hình trong cơ sở dữ liệu. Việc mở rộng
duy nhất đó là gọi thuật toán compile_tree cho mỗi đồ thị mô hình.
6. Cây quyết định
Cấu trúc cây quyết định đã được mô tả trước đây bây giờ có thể được sử dụng để có
thuật toán đồ thị và đẳng cấu đồ thị con hiệu quả. Cho G
1
, …, G
L
là một tập các mô hình đồ
thị biểu diễn bởi một cây quyết định và G
I
một đồ thị đầu vào chưa xác định. Chúng tôi giả
định rằng đồ thị đầu vào được biểu diễn bởi ma trận M
I
= (a
1
, a
2
, …, a
m
) dưới dạng dòng-
cột. Các thuật toán cây quyết định (xem hình 9) tìm kiếm xem có tồn tại ma trận M
∈
A(Gi)
như M
I
= S
m,m
(M) bằng cách phân loại M
I
theo phần tử dòng-cột. Thuật toán bắt đầu tại nút
gốc của cây quyết định và phân loại M
I
theo phần tử a
1
đầu tiên. Nếu bước này thành công,
việc phân loại được tiếp tục vào mức tiếp theo. Nói chung, nếu quá trình này là ở mức k và
N là nút hiện tại của cây quyết định, thì nút kế N đại diện cho a
k
được tìm thấy. Điều này
được thực hiện bằng cách tìm kiếm phần tử a
k
trong từ điển của các phần tử dòng-cột gắn
với N. Nếu có một phần tử a
kN
trong từ điển khớp với a
k
thì quá trình này theo nhánh từ N
tới nút kế N
S
đại diện cho phần tử dòng-cột a
kN
. Nếu không có phần tử nào như vậy được
Cơ sở dữ liệu nâng cao Trang 16
Subgraph Isomorphism in Polynomial Time
tìm thấy trong từ điển thì M
I
có thể không được phân loại theo các cây quyết định và kéo
theo việc G
I
không đẳng cấu với đồ thị con bất kỳ của mô hình đồ thị G
i
.
DECISION_TREE(NODE Root, GRAPH G
I
)
1. Cho G
I
được tạo bởi ma trận kề M
I
= (a
1
, …, a
m
) và m = |V| và N = Root
2. For k = 1 to m do
(a) Tìm trong danh sách các phần tử dòng-cột được gán vào nút N và tìm a
kN
sao cho
a
kN
= a
k
.
(b) Nếu có phần tử nào có trong danh sách, đồ thị G không đẳng cấu với bất kỳ đồ
thị con nào của đồ thị mô hình. Kết thúc.
(c) Nếu phần tử a
kN
= a
k
được tìm thấy trong danh sách thì theo nhánh được đánh
dấu bởi a
kN
tới nút N
S
.
(d) Nếu không có nhánh từ N
S
tới nút N’ thì đặt M
I
= R’M
I
R’
T
, với R’ là ma trận kề
hoán vị mở rộng liên kết với nhánh. Đặt N = N’.
3. Mỗi ma trận M
P
của mô hình G
i
(với ma trận kề n x n) được thay bằng nút N.
(a) Nếu m < n thì ma trận kề hoán vị liên quan là 1 đẳng cấu đồ thị từ G
I
tới G
i
,
M
I
= S
m,m
(M
P
) = S
m,m
(PM
i
P
T
)
(b) Nếu m = n thì ma trận kề hoán vị liên quan là 1 đẳng cấu đồ thị từ G
I
tới G
i,
M
I
= PM
i
P
T
Hình 9: Thuật toán decision_tree
Trong bước (2.d), kiểm tra xem nút N
S
hiện tại có một nhánh chuyển hướng ra ngoài
hay không. Nếu đây là trường hợp thì chúng ta theo nhánh chuyển hướng này. Theo đó, ma
trận của đồ thị đầu vào M
I
phải được hoán vị bằng cách áp dụng ma trận hoán vị R được
gán với các nhánh chuyển hướng. Lưu ý là nếu N ở mức k thì R là ma trận hoán vị k x k vì
nó được tạo ra tại lúc biên dịch cho đồ thị con có kích thước k (xem phần trước). Mặt khác,
M
I
là một ma trận kề m x m của đồ thị đầu vào Gi với m ≥ k. Để áp dụng R vào M
I
, cần mở
rộng R thành một ma trận m x m bằng cách thêm các dòng m - k và cột m - k. Các dòng và
cột được sao chép từ một ma trận m x m. Ma trận mở rộng R được ký hiệu là R’. Khi sử
dụng R’ có thể điều chỉnh M
I
theo các nhánh chuyển bởi công thức M
I
= R’M
I
R’
T
. Quá
trình phân loại sau đó có thể được tiếp tục. Thuật toán dừng ở bước (2.b) khi nó được phát
hiện không có đẳng cấu đồ thị con từ đồ thị đầu vào bất kỳ của đồ thị mô hình, hoặc trong
bước (3) khi các phần tử dòng-cột cuối cùng của M
I
đã được xử lý và một số nút N đã đạt
tới. Trong trường hợp sau, ma trận M
I
là giống nhau cho tất cả các ma trận M
i
của mô hình
Cơ sở dữ liệu nâng cao Trang 17
Subgraph Isomorphism in Polynomial Time
G
i
được biểu diễn trong N. Nếu N không phải là một nút lá thì tập các ma trận hoán vị được
lưu trữ trong N thay cho tất cả các đẳng cấu đồ thị con từ G
I
đến G
i
. Mặt khác, nếu N là một
nút lá và G
I
và G
i
có kích thước bằng nhau thì tập của ma trận hoán vị trong N thay cho tất
cả các đẳng cấu đồ thị giữa G
I
và G
i
.
Rất dễ thấy rằng các thuật toán mới cho duyệt qua đẳng cấu đồ thị quyết định cây mà
không cần thiết phải quay lui và do đó có một phức tạp thời gian mà chỉ là đa thức trong số
các đỉnh của đồ thị đầu vào. Hơn nữa, thuật toán thì rõ ràng độc lập với số đồ thị mô hình
được biểu diễn trong cây quyết định để tránh bất kỳ sự hiểu lầm, điều quan trọng cần lưu ý
rằng các thuật toán mới không thể được sử dụng cho việc phát hiện đẳng cấu đồ thị con từ
các đồ thị mô hình cho tới đồ thị đầu vào. Điều này có thể được kết luận từ thực tế là thuật
toán sử dụng ma trận kề của đồ thị đầu vào ở dạng ban đầu của nó và cố gắng để phân loại
từng phần tử dòng-cột cách tuần tự. Nếu đồ thị đầu vào có chứa một đỉnh không liên quan,
thì việc phân loại ma trận kề có thể thất bại tại bất kỳ giai đoạn nào của cây quyết định.
7. Phân tích độ phức tạp
Phân tích độ phức tạp tính toán được đưa ra trong phần với các ký hiệu sau đây:
N = số của đồ thị mô hình trong cơ sở dữ liệu,
M = số lượng tối đa của các đỉnh trong một đồ thị mô hình,
L = số đỉnh trong đồ thị đầu vào,
l
v
= số lượng nhãn đỉnh,
l
e
= số lượng nhãn cạnh.
7.1 Tính toán phức tạp của thuật toán thông thường
Vì lý do so sánh, đầu tiên chúng tôi phân tích độ phức tạp không gian và thời gian của
việc quay lui (backtracking) dựa trên phương pháp đẳng cấu đồ thị con. Trường hợp tốt
nhất cho các thuật toán này được áp dụng khi các đỉnh của đồ thị mô hình có nhãn duy nhất
như trên từng mức của đệ quy, chỉ có một phép gán của đỉnh đồ thị đầu vào hiện tại vào
một đỉnh đồ thị mô hình. Như vậy, độ phức tạp thời gian trong trường hợp tốt nhất là:
(Trường hợp tốt nhất thời gian phức tạp)
O (N I M) (7)
Độ phức tạp không gian của các thuật toán thông thường là trong trường hợp tốt nhất:
(Trường hợp tốt nhất không gian phức tạp)
O (M
2
I) (8)
Cơ sở dữ liệu nâng cao Trang 18
Subgraph Isomorphism in Polynomial Time
Các trường hợp xấu nhất cho các thuật toán thông thường phát sinh khi các mô hình
đồ thị và đồ thị đấu vào không có nhãn, vô hướng và được kết nối. Trong trường hợp này,
có trên mỗi mức I có thể gán vào tập cho các đỉnh đồ thị mô hình và mỗi phép gán này có
thể tăng. Vì vậy, trường hợp độ phức tạp thời gian xấu nhất của các thuật toán là:
(Trường hợp xấu nhất thời gian phức tạp)
O (I
M
M
2
N) (9)
Mặt khác, yêu cầu không gian trong trường hợp xấu nhất không vượt quá các yêu cầu
trong trường hợp tốt nhất, bởi vì mỗi đồ thị mô hình được xử lý riêng lẻ và không gian
được phân bổ cho từng mức trong cây tìm kiếm có thể được tái sử dụng khi quay lui xảy ra.
(Trường hợp xấu nhất không gian phức tạp)
O (M
2
I) (10)
7.2. Tính độ phức tạp của thuật toán mới
Không như các thuật toán trước đây, các bước tiền xử lý thì không cần thiết, thuật
toán mới liên quan đến việc tiền xử lý chuyên sâu, cụ thể là tạo ra cây quyết định theo mô
hình đồ thị. Sau đây, chúng tôi xem xét độ phức tạp tính toán của các bước tiền xử lý và sau
đó chúng tôi phân tích độ phức tạp thời gian chạy của thuật toán mới.
Liên quan đến ứng dụng thực tế, điều quan trọng là cần lưu ý rằng các cây quyết định
được xây dựng trong bước tiền xử lý phải có mặt trong bộ nhớ chính vào lúc chạy. Vì vậy,
kích thước của cây quyết định là rất quan trọng cho bất kỳ ứng dụng nào kết hợp các thuật
toán mới. Một biện pháp hữu ích cho các kích thước của cây quyết định là số lượng các nút.
Theo thuật toán được mô tả trong phần 5 của cây quyết định cho một đồ thị mô hình được
xây dựng bởi từng mức. Các nút trên mức k + 1 được tạo ra bằng cách cô lập tất cả các đồ
thị con kích thước k của đồ thị mô hình và phân loại mỗi đồ thị trong cây quyết định. Tuy
nhiên, bất kể số lượng các hoán vị, chỉ có một nút cho mỗi đồ thị con với kích thước k, cuối
cùng được sử dụng như là một nút tổ tiên đến các nút khác trong cây quyết định. Vì vậy, số
lượng các nút trên từng mức với các nút kế được giới hạn bởi
)(
M
k
O
. Mỗi nút này có thể là
nút cha của rất nhiều nút kế thay cho phần tử dòng-cột khác. Bất kỳ phần tử dòng-cột a
k +1
mà liên quan đến một nhánh bắt nguồn từ một nút trên mức k + 1 bao gồm 2k nhãn cạnh và
một nhãn đỉnh. Do đó, có ít nhất
)(
2
v
k
e
llO
các phần tử dòng-cột khác nhau, mỗi phần tử
được thay bởi một nút riêng trong cây quyết định. Tổng số của các nút trên mức k + 2 tiếp
Cơ sở dữ liệu nâng cao Trang 19
Subgraph Isomorphism in Polynomial Time
theo mức k + 1 do đó có
))((
2
v
k
e
M
k
llO
. Tổng của các nút trên tất cả các mức (không tính nút
gốc) là:
))1(())((
2
1
0
2 M
ev
M
k
k
ev
llOl
k
M
lO +=
∑
−
=
(11)
Nếu có một số đồ thị mô hình trong cơ sở dữ liệu, các cây quyết định trở thành tuyến
tính phụ thuộc vào N, kích thước của cơ sở dữ liệu:
(Không gian phức tạp của cây quyết định)
))1((
2 M
ev
lNlO +
(12)
Đây là trường hợp xấu nhất cận trên đối với các đồ thị có nhãn và có hướng. Trường
hợp đặc biệt, tuy nhiên, là đồ thị vô hướng, không có nhãn. Đối với các đồ thị này, đáng
chú ý là trường hợp có thể xấu nhất cho các thuật toán trước đây, kích thước của cây quyết
định được giới hạn bởi biểu thức sau:
O(N 3
M
) (13)
Thời gian thực thi lý thuyết của thuật toán mới có thể được ước tính bằng việc phân
tích các thuật toán cây quyết định tại Mục 6. Ma trận kề của đồ thị đầu vào được phân loại
theo từng bước bởi các cây quyết định. Đối với một đồ thị với các đỉnh M, các ma trận kề
chứa M phần tử dòng-cột a
1
, a
2
, , a
m
. Việc phân loại một ma trận cấp k + 1 theo phần tử
dòng-cột a
k+1
đòi hỏi rằng phần tử dòng-cột a
N
trong bất kỳ các nút kế của nút hiện tại, mà
khớp với a
k+1
được tìm thấy. Các phần tử a
k+1
là một mảng bao gồm nhãn cạnh 2k và một
nhãn đỉnh. Tại thời điểm xây dựng, các phần tử dòng-cột đại diện trong các nút kế của nút
hiện tại đã được xếp trong danh sách. Danh sách được lập chỉ mục như a
k+1
có thể được
phân loại bằng cách thực hiện chính xác các phép so sánh 2kl
e
+ l
v
. Việc tính toán này phải
được thực hiện trên mỗi mức của các cây quyết định. Ngoài ra, nó có thể xảy ra trên từng
mức của cây quyết định một nhánh chuyển hướng đang gặp phải. Do đó, trên từng mức các
đỉnh của đồ thị đầu vào phải được sắp xếp lại theo ma trận hoán vị được gắn với các chi
nhánh chuyển hướng. Vị trí sắp xếp lại các đỉnh M trên mức M cần đến M
2
bước tính toán.
Vì vậy, độ phức tạp lý thuyết của thuật toán đẳng cấu đồ thị con mới:
(Tốt nhất và trường hợp xấu nhất thời gian phức tạp của quyết định cây)
)())2((
22
veve
MllMOMlMlMO +=++
(14)
Chú ý rằng phân tích độ phức tạp của thuật toán mới đối với việc phát hiện đẳng cấu
đồ thị con ở trên cũng được áp dụng để phát hiện đẳng cấu đồ thị.
Cơ sở dữ liệu nâng cao Trang 20
Subgraph Isomorphism in Polynomial Time
Một lần nữa, trường hợp đặc biệt có thể được thấy đồ thị không có nhãn, vô hướng,
thì hiệu suất thời gian thực thi là:
O(M
2
) (15)
Điều quan trọng là cần lưu ý rằng cả hai trường hợp nói chung và đặc biệt của đồ thị
không có nhãn thì độ phức tạp của thuật toán mới được giới hạn bởi đa thức. Hơn nữa, hiệu
suất lý thuyết hoàn toàn độc lập với các liên kết của đồ thị và số lượng của đồ thị mô hình
được thay thế bằng các cây quyết định. Không giống như các thuật toán trước đây, thuật
toán backtracking (và bất kỳ đồ thị con khác, đẳng cấu thuật toán được đề xuất đến thời
điểm này) các thuật toán mới đảm bảo tìm tất cả các đồ thị và đẳng cấu đồ thị con trong
thời gian bậc hai. Đương nhiên, đối với các đồ thị đầy đủ thường, danh sách tất cả các đẳng
cấu đồ thị con có thể tốn thời gian theo cấp số nhân, như số lượng của chúng theo cấp số
nhân. Các thuật toán mới cung cấp trong thời gian bậc hai của số đẳng cấu đồ thị con và
một con trỏ đến các thiết lập của tất cả các ma trận hoán vị thay thể cho đẳng cấu đồ thị
con. Vấn đề chính của cách tiếp cận mới, tuy nhiên, là kích thước của cây quyết định phát
triển theo cấp số nhân với kích thước của mô hình đồ thị. Vì vậy, để làm cho thuật toán mới
áp dụng vào thực tế, cần thiết để tìm cách làm cho cây quyết định nhỏ gọn hơn.
8. Thu gọn cây quyết định cho các ứng dụng thực tế
Tại phân 5, tạo một cây quyết định đầy đủ và chức năng để phân loại của ma trận kề
đã được trình bày. Sau đây, chúng tôi sẽ giới thiệu cây quyết định mà được xây dựng theo
quá trình tạo cây quyết định đầy đủ. Ưu điểm chính của cây quyết định đầy đủ là đẳng cấu
đồ thị có thể được phát hiện trong thời gian bậc hai và đẳng cấu đồ thị con phổ từ đồ thị đầu
vào là đồ thị con của đồ thị mô hình cũng có thể được tìm thấy trong thời gian bậc hai. Tuy
nhiên, bất lợi của một cây quyết định hoàn chỉnh có kích thước theo cấp số nhân của nó.
Chúng tôi sẽ đề xuất hai kỹ thuật khác nhau để giảm kích thước của cây quyết định.
Phương pháp đầu tiên dựa trên ý tưởng thu gọn bề rộng của cây quyết định đầy đủ. Các đặc
tính của thuật toán mới dựa trên một bề rộng, thu gọn cây quyết định tương tự như các
thuật toán dựa trên cây quyết định đầy đủ. Tuy nhiên, độ phức tạp thời gian để phát hiện
đẳng cấu đồ thị dựa vào chiều rộng thu gọn cây quyết định tăng từ O(M
2
) lên O(M
3
). Ngoài
ra, thu gọn bề rộng cây quyết định không còn hỗ trợ phát hiện đẳng cấu đồ thị con. Phương
pháp thứ hai nhằm mục đích thu gọn chiều sâu của cây quyết định. Thu gọn chiều sâu cây
Cơ sở dữ liệu nâng cao Trang 21
Subgraph Isomorphism in Polynomial Time
quyết định sẽ không còn đảm bảo phát hiện đẳng cấu đồ thị trong thời gian đa thức. Tuy
nhiên, chúng rất thích hợp cho các ứng dụng số của đồ thị mô hình lớn.
Hình 10: Cây quyết định ở hình 8 sau khi thu gọn
8.1. Thu gọn chiều rộng của cây quyết định
Việc tạo một cây quyết định cho một mô hình đồ thị G bao gồm việc tạo ra tất cả
hoán vị của ma trận kề của G và kết hợp phân loại mỗi ma trận vào cây quyết định. Do đó,
tại thời gian chạy ma trận kề của ma trận đầu vào được thực hiện dưới hình thức ban đầu
của nó và phân loại trực tiếp bằng cây quyết định. Tuy nhiên, bằng cách cho phép các hoạt
động bổ sung về ma trận đầu vào tại thời gian chạy, số lượng các nút trong cây quyết định
có thể được giảm đáng kể. Trong phần sau đây, chúng tôi phác thảo hai bộ chuyển đổi của
loại hình này.
Tập đầu tiên của việc biến đổi đơn giản chỉ yêu cầu các đỉnh của đồ thị đầu vào được
sắp xếp theo thứ tự như vậy mỗi đỉnh được kết nối với ít nhất một đỉnh xuất hiện sớm trong
trật tự. Đối với ma trận kề của đồ thị đầu vào được đưa ra như là một vector của phần tử
dòng-cột (a
1
, …, a
m
), điều này có nghĩa là mỗi phần tử dòng-cột chứa ít nhất là hai mục
khác 0. Đơn giản để thấy rằng ma trận kề của bất kỳ đồ thị kết nối có thể được chuyển đổi
như các điều kiện nêu trên. Vấn đề này thì tương đương với việc tìm kiếm một cây bao
trùm của đồ thị và do đó nó có thể được giải quyết thời gian bậc hai [Eve79]. Chúng ta sau
đó có thể giảm số lượng của các ma trận kề hoán vị A(G) được phân loại vào cây quyết
Cơ sở dữ liệu nâng cao Trang 22
Subgraph Isomorphism in Polynomial Time
định. Cụ thể, tất cả các hoán vị của mô hình ma trận mà điều kiện trên không nắm giữ, có
thể được loại bỏ tại thời điểm thực thi. Với đồ thị có kết nối thấp, số lượng các nút cây
quyết định mà được thu gọn bởi kỹ thuật này có thể rất cao. Do vậy, chuyển đổi đồ thị đầu
vào có độ phức tạp về thời gian bậc hai, thuật toán đồ thị đẳng cấu dựa trên cây quyết định
thu gọn có độ phức tạp như trước đây. Ngoài ra, việc phát hiện cả hai đẳng cấu đồ thị và
đẳng cấu đồ thị con vẫn còn được hỗ trợ bởi một cây quyết định mà tùy thuộc vào việc thu
gọn chiều rộng cây.
Kỹ thuật thứ hai để thu gọn chiều rộng của cây quyết định như sau. Cho M
I
= (a
1
, …,
a
m
) là ma trận kề của một đồ thị đầu vào G
I
. Giả sử rằng M
I
được phân loại theo một cây
quyết định đã được xây dựng cho một mô hình đồ thị G. Hơn nữa, giả sử rằng M
I
đã được
phân loại mức k + 1 và nút N là nút hiện tại trong cây quyết định. Trong bước tiếp theo,
thuật toán sẽ cố gắng tìm kiếm một nút kế của N theo phần tử thứ k + 1 của M
I
, a
k+1
. Tuy
nhiên, tại điểm này, thuật toán cây quyết định có thể được viết lại như sau. Lưu ý rằng có
đúng (n - k)! ma trận hoán vị khác nhau của G
I
để phần tử dòng-cột k đầu tiên (a
1
, …, a
k
)
giống nhau. Do đó, khi M
I
được phân loại thành phần tử a
k
thì có các nút kế khác n - k, thay
cho một hoán vị của M
I
mà các phần tử a
k +1
là khác nhau nhưng các phần tử dòng-cột a
1
,
…, a
k
là giống nhau. Vì vậy, một bản sửa đổi các đẳng cấu đồ thị thuật toán có thể chuyển
cột cuối n
k
và các dòng của ma trận đầu vào M
I
và cố gắng a
k+1
phần tử dòng-cột n - k để
phân loại các ma trận. Đương nhiên, trong một cây quyết định đầy đủ, mỗi phần tử dòng-
cột sẽ cho phép việc phân loại thành công. Tuy nhiên, với bản sửa đổi của thuật toán đẳng
cấu đồ thị thì không còn cần thiết để kết hợp tất cả các nút kế n - k, nhưng nó đủ để xây
dựng một kế nút. Các thuật toán sửa đổi vẫn sẽ có thể phân loại các ma trận đầu vào bằng
cách thử tất cả các phép quay n - k cho các dòng và cột của ma trận đầu vào. Nếu việc thu
gọn này được áp dụng trên mỗi mức của cây quyết định, thì số lượng các nút trong cây sẽ
được giảm bởi một phần tử của n, trong đó n là tổng số của các đỉnh trong đồ thị mô hình
thay thế. Do đó, trong trường hợp của một đồ thị vô hướng, không có nhãn, kích thước cây
quyết định là O(3
n
/ n) (xem phương trình 13). Độ phức tạp của thuật toán đồ thị đẳng cấu
mặt khác là để tăng phần tử n do các hoán vị của ma trận đầu vào phải được thực hiện trên
từng mức của cây quyết định. Như vậy, thời gian chạy của thuật toán mới cho đồ thị vô
hướng, không có nhãn trên cơ sở của một cây quyết định thu là O(n
3
) (xem phương trình
15). Việc xây dựng một cây quyết định thu gọn theo kỹ thuật này được dựa trên một quy
Cơ sở dữ liệu nâng cao Trang 23
Subgraph Isomorphism in Polynomial Time
trình hai bước. Đầu tiên, cây quyết định đầy đủ được xây dựng, và sau đó số lượng tối đa
của các nút được thu gọn theo kỹ thuật được mô tả ở trên. (Do đó, tính khả thu của cây
quyết định thu gọn theo chiều rộng được giới hạn theo kích thước cấp số nhân của cây
quyết định đầy đủ tương ứng). Hạn chế chính của kỹ thuật thu gọn theo chiều rộng này, tuy
nhiên, là cây quyết định kết quả chỉ có thể được sử dụng cho việc phát hiện đẳng cấu đồ thị
nhưng không còn phát hiện được đẳng cấu đồ thị con. Chỉ cho phép một nút kế có thể cho
thay thế mỗi ma trận bởi một nút cây quyết định, một số đồ thị con của đồ thị mô thay thế
sẽ không còn có mặt trong cây quyết định. Do đó, tại thời gian chạy, chúng sẽ không được
phát hiện theo thuật toán sửa đổi.
Trong hình 10, các cây quyết định của các đồ thị g
1
và g
2
của hình 8 hình thành sau
khi cả hai kỹ thuật thu gọn chiều rộng được áp dụng. Kỹ thuật đầu tiên không có hiệu lực
bởi vì các đồ thị g
1
và g
2
được liên kết đủ. Kỹ thuật thứ hai, làm giảm kích thước của cây
quyết định đáng kể. Lưu ý rằng các nhánh bên trái bắt đầu từ nút gốc thì không còn cần
thiết vì tất cả các ma trận kề có thể được phân loại theo đúng các nhánh lúc sắp xếp lại các
đỉnh. Do đó, cây quyết định của các đồ thị g
1
và g
2
của hình 5 giờ chỉ có 6 nút thay vì 11.
8.2. Thu gọn chiều sâu của cây quyết định
Trong các phần trước, chúng tôi đã chỉ ra rằng các thuật toán mới dựa trên phương
pháp cây quyết định có tính chất rất hay. Tuy nhiên, bất lợi chính của nó là tăng trưởng
theo cấp số nhân của bộ nhớ, do đó, hạn chế đồ thị có kích thước vừa phải. Trong phần này,
chúng tôi giới thiệu một kỹ thuật thu gọn chuyên sâu, làm cho các thuật toán mới cũng
thích hợp cho các ứng dụng với đồ thị lớn hơn.
Phổ biến trong các ứng dụng đồ thị thực tế là nhân tố phân nhánh của cây tìm kiếm
đẳng cấu đồ thị, chẳng hạn như nó được sử dụng trong thuật toán của Ullman, thì lớn ở phía
trên của cây và dần dần trở nên nhỏ hơn cho các mức dưới của cây tìm kiếm. Điều này đặc
biệt đúng đối với đồ thị có nhãn, trong đó chỉ tại đầu của cây tìm kiếm nhiều sự kết hợp có
thể, trong khi ở phần dưới của cây tìm kiếm backtracking không cần thiết nữa. Trong mô
hình nhận dạng đối tượng 3D, ví dụ, đồ thị thay thế cho các đối tượng 3D và đẳng cấu đồ
thị được sử dụng để nhận ra các đối tượng và thiết lập vị trí của nó, tìm kiếm một đẳng cấu
đồ thị thường được chấm dứt sau ba hoặc bốn đỉnh của một đối tượng đã được lần xuất
hiện, bởi vì các đỉnh này thì đủ để xác định vị trí của đối tượng. Dựa trên sự quan sát này,
chúng tôi đề xuất thu gọn chiều sâu của cây quyết định theo cách sau đây.
Cơ sở dữ liệu nâng cao Trang 24
Subgraph Isomorphism in Polynomial Time
Thay vì tạo ra một cây quyết định đầy đủ cho một mô hình đồ thị G có kích thước n,
chúng tôi chỉ tạo một cây quyết định cho tất cả các đồ thị con S
k
của G kích thước k, với k
< n. Chiều sâu của cây quyết định được giới hạn bởi k. Vào thời gian chạy, đồ thị đầu vào
chưa xác định G
I
được phân loại bằng thuật toán mới được mô tả trong Phần 6. Khi một nút
lá trên mức k của các cây quyết định đạt được, một đồ thị con kích thước k của đồ thị đầu
vào xuất hiện trên một hoặc một số đồ thị con của đồ thị mô hình. Để có được một đẳng
cấu đồ thị con đầy đủ, quá trình tìm kiếm sau đó phải tiếp tục với thuật toán trước đây. Tuy
nhiên, không gian tìm kiếm các thuật toán trước đây đã được giảm đáng kể như kết hợp
một phần được tìm thấy bởi các cây quyết định có thể được sử dụng như là một khởi đầu
cho các thuật toán tìm kiếm trước đây.
Các khía cạnh quan trọng nhất của phương pháp cây quyết định thu gọn theo chiều
sâu, là khả năng lập chỉ mục một đồ thị mô hình của một tập hợp các mô hình. Rõ ràng,
một quyết định tỉa cây có thể kết hợp các đồ thị mô hình khác nhau. Vào thời gian chạy,
một đồ thị đầu vào được phân loại với thuật toán cây quyết định trên cơ sở của cây quyết
định thu gọn theo chiều sâu sẽ gọi một nút lá của cây quyết định. Ví dụ, chỉ có mô hình đồ
thị được thay thế bởi lá này nút sẽ được tiếp tục được kiểm tra, bởi một thuật toán trước
đây. Như vậy, cây quyết định thu gọn theo chiều sâu như là một phương pháp lập chỉ mục
rất hiệu quả cho các cơ sở dữ liệu lớn của đồ thị.
9. Cài đặt thuật toán cây quyết định
Ứng dụng demo được xây dựng bằng ngôn ngữ C# trên nền .Net Framework 4.0.
1. Màn hình giao diện chính
Cơ sở dữ liệu nâng cao Trang 25