Tải bản đầy đủ (.doc) (48 trang)

Tiểu luận môn cơ sở dữ liệu nâng cao Đẳng cấu đồ thị con với thời gian đa thức

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 (799.57 KB, 48 trang )

MỤC LỤC

MỤC LỤC_____________________________________________________________1
LỜI NÓI ĐẦU__________________________________________________________2
TỔNG QUAN__________________________________________________________3
Đẳng cấu đồ thị con với thời gian đa thức._____________________________________4
TỔNG KẾT VÀ HƯỚNG DẪN SỬ DỤNG CHƯƠNG TRÌNH__________________46
Tác giả bài báo trên đã chỉ ra cho chúng ta thấy một hướng tiếp cận rất hay về vấn đề
đẳng cấu đồ thị, đặc biệt là làm giảm thời gian tính toán bằng cách tính trước cây quyết
định ở bước tiền xử lý. Trong quá trình tính toán, tác giả nêu lên những phương pháp để
có thể giảm thiểu độ phức tạp của chương trình một cách cần thiết. Vì thế nếu đi sâu tìm
hiểu ta có thể áp dụng cách tiếp cận này cho một số bài toán thực tế. Bên cạnh đó, tác
giả cũng chỉ cho chúng ta thấy một số hạn chế nhất định của phương pháp này.______46
Do hạn chế về thời gian và ngôn ngữ nên bài dịch này sẽ không tránh khỏi sai sót, em
mong được sự góp ý của thầy. Ngoài bài dịch này ra, em có minh họa cho bài báo này
bằng một chương trình đơn giản để nhận dạng đồ thị. Chương trình được viết bằng ngôn
ngữ C++ (Visual Studio 2010). Thực hiện chương trình bằng cách nhập vào 2 tập tin
văn bản (theo dạng ma trận).______________________________________________46
TÀI LIỆU THAM KHẢO (CỦA BÀI BÁO)__________________________________47
Trang 1
LỜI NÓI ĐẦU
Môn Cơ sở dữ liệu (Nâng cao) là một môn rất hay, khó và cần thiết cho
sinh viên ngành tin học. Và càng hay hơn nữa khi em được thầy Đỗ Phúc phụ
trách môn học này. Khi học với thầy em nhận thấy rằng: thầy có kiến thức rất sâu
rộng ở nhiều lĩnh vực nên luôn tạo cho bài giảng của mình một cách rất sinh
động, tự nhiên. Thầy dẫn dắt chúng em đi sâu vào bài học bằng những kiến thức,
những mẩu chuyện, những ví dụ rất quen thuộc và cách thầy đan xen chúng vào
nhau thật là khéo léo.
Qua môn học này ở chương trình cao học, em nhận ra rằng trên cơ sở dữ
liệu truyền thống ta có rất nhiều cách thức để tạo, biến đổi, . . . nó có hiệu quả
hơn với nhu cầu thực tế sử dụng mà trước đây em chưa biết được.


Bên cạnh đó em cũng đúc kết được thêm một số kinh nghiệm, kỹ năng rất
quan trọng, cần thiết và nhất là phần kiến thức vô cùng bổ ích mà thầy đã truyền
đạt và định hướng cho chúng em.
Em xin gởi lời cám ơn đến thầy Đỗ Phúc, thầy đã rất tận tâm, truyền đạt
rất nhiều kiến thức, ý tưởng mà em rất tâm đắc. Em chúc thầy cùng luôn khỏe
mạnh và đạt nhiều thành quả trong công việc của mình.
Trang 2
TỔNG QUAN
Vấn đề đẳng cấu đồ thị chúng ta đã nghe và ứng dụng của nó trong thực tế cũng
rất nhiều. Nhưng điều quan trọng là cho đến thời điểm hiện tại, chúng ta vẫn
chưa tìm ra một phương pháp tối ưu nhất để giải quyết vấn đề này. Một số
phương pháp nghiên cứu trong quá khứ và hiện tại giải quyết cho vấn đề này
cũng còn tồn tại một số hạn chế nhất định. Do đó, hiện tại vẫn còn nhiều công
trình khoa học nghiên cứu về vấn đề này để tìm ra cách tối ưu nhất cho trường
hợp tổng quát. Trong quá trình học môn Cơ sở dữ liệu nâng cao do thầy Đỗ Phúc
phụ trách, thầy có giới thiệu một hướng tiếp cận cho vấn đề này với độ phức tạp
thời gian là đa thức. Em thấy đây là một hướng tiếp cận mới có những ưu điểm
mà ta có thể ứng dụng cho một số vấn đề trong thực tế. Bên cạnh đó, do tính chất
của môn học, nên em mạn phép được dịch bài báo và cài đặt thí nghiệm chương
trình minh họa cho bài báo này mà thầy đã giới thiệu. Thông tin về tiêu đề và tác
giả của bài báo như sau:
Subgraph Isomorphism in Polynomial Time
B.T. Messmer and H. Bunke
Institut fur Informatik und angewandte Mathematik,
University of Bern, Neubruckstr. 10, Bern, Switzerland
Ni dung bài báo xin    c dch và trình bày nh sau:
Trang 3
Đẳng cấu đồ thị con với thời gian đa thức.
B.T. Messmer vàd H. Bunke
Trong bài báo này, chúng tôi đề xuất một cách tiếp cận mới cho vấn đề tìm đồ

thị con đẳng cấu. Phương pháp mới được thiết kế dựa trên 2 đồ thị. Một đồ thị
mẫu sẵn có (model graphs) và một đồ thị đầu vào (input graphs). Ta sẽ tìm một
đồ thị con trong đồ thị ban đầu mà đẳng cấu với đồ thị đưa vào. Ý tưởng của
phương pháp này là trước tiên ta sẽ tạo ra một cây quyết định (decision tree) trên
đồ thị mẫu. Khi thực thi, đồ thị đầu vào sẽ được phân loại bởi cây quyết định và
cho biết có tồn tại một đồ thị con đẳng cấu với đồ thị đầu vào hay không.
Nếu chúng ta bỏ qua thời gian cần thiết cho quá trình tiền xử lý (tạo ra cây
quyết định ban đầu), thì bài toán sẽ có độ phức tạp là bậc 2 của số đỉnh đồ thị
đầu vào. Hơn nữa, thuật toán cũng độc lập với đồ thị mẫu và số cạnh của nó.
Tuy nhiên, cây quyết định được xây dựng trong bước tiền xử lý có thể phát
triển theo cấp số nhân với số đỉnh của đồ thị mẫu. Vì vậy, chúng tôi xin trình
bày một thuật toán nhằm mục đích giảm độ phức tạp của cây quyết định. Việc
ứng dụng thuật toán trong việc nhận dạng đồ thị được trình bày tóm tắt như sau:
Trang 4
1. Giới thiệu
Đẳng cấu đồ thị và đồ thị con là những khái niệm đã được dùng trong nhiều
ứng dụng khác nhau. Giải pháp so sánh sự khác nhau giữa các đồ thị là động lực
thúc đẩy nhiều nhà nghiên cứu trong suốt hai mươi năm qua. Một số thuật
toán trước đây đề xuất độ phức tạp xấu nhất theo cấp số nhân và được biết
dưới dạng các bài toán NP-complete. Trong phần sau đây, chúng tôi sẽ cung
cấp một cách tổng quan thuật toán về đẳng cấu đồ thị và đồ thị con. Trong
quá khứ có hai cách tiếp cận cơ bản về vấn đề đẳng cấu đồ thị. Cách thứ nhất
được dựa trên khái niệm về lý thuyết nhóm và nghiên cứu của nhóm hoán vị.
Cách này đã được chỉ ra rằng tồn tại một giới hạn vừa phải của một cấp số
nhân đố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ị, ta có thể thấy được các
thuật toán có độ phức tạp đa thức.
Ví dụ: Luks và Hoffman mô tả một phương pháp giới hạn đa thức cho
việc tìm đẳng cấu đồ thị bằng các liên kết hóa trị. Đối với trường hợp đặc
biệt, đẳng cấu đồ thị hóa trị ba, thuật toán có độ phức tạp là O(n

6
) theo tài liệu
[Luk82]. Trong tài liệu [HW74], một phương pháp đề xuất tính toán đẳng cấu
của đồ thị phẳng có độ phức tạp tuyến tính về thời gian Tuy nhiên, nhược
điểm lớn của các thuật toán dựa trên khái niệm lý thuyết nhóm thường là chi
phí và độ phức tạp lý thuyết cao. Cách tiếp cận thứ hai của việc đẳng cấu đồ
thị và đồ thị con nghiêng về hướng thực hành nhiều hơn bằng cách xây dựng
một thuật 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 không gian tìm kiếm và quay lui. Một trong những lý thuyết đầu tiên
trong lĩnh vực này được nêu ra bởi Corneil và Gotlieb trong tài liệu [CG70].
Cải tiến chính của phương pháp quay lui được Ullman trình bày, ông giới
thiệu phương pháp cải tiến làm giảm không gian tìm kiếm của thủ tục quay
lui một cách đáng kể được trình bày trong tài liệu [Ull76]. Gần đây, trong tài
liệu [MLL92, FFG90], vấn đề đẳng cấu đồ thị được đơn giản hơn bằng cách
xây dựng một đồ thị liên kết cho tất cả các đỉnh có thể ánh xạ. Và gần đây
Trang 5
nhất, cách tiếp cận mạng để so khớp đồ thị đã được đề xuất trong tài liệu
[MB95b].
Cho đến nay, chúng ta chỉ xét vấn đề tìm đồ thị hay đồ thị con đẳng cấu
cùng một thời điểm. Tuy nhiên, trong các ứng dụng thực tế thường là một cơ
sở dữ liệu đồ thị mẫu, và một đồ thị đầu vào cần kiểm tra đẳng cấu với các
đồ thị trong cơ sở dữ liệu mẫu đó. Nếu số lượng các đồ thị trong cơ sở dữ
liệu lớn, ta kiểm tra tuần tự mỗi đồ thị thì thuật toán trở nên rất tốn kém. Tất
nhiên một số hệ thống đã được đề xuất trong quá khứ mà kết hợp các thuật
toán đẳng cấu đồ thị hoặc đồ thị con với 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 riêng lẽ và dễ dàng tính toán các đặc tính
của đồ thị đầu vào trong trường hợp chọn một tập nhỏ đồ thị của cơ sở dữ liệu
đồ thị mẫu ban đầu. Trong [HS88], Horaud đề xuất sử dụng các đa thức nội
tại thứ hai của ma trận Laplacian của đồ thị như là một chỉ mục đối với cơ sở
dữ liệu đồ thị. Tuy nhiên, chỉ số này chỉ duy nhất cho đồ thị có ít hơn 12 đỉnh

và độ phức tạp tính toán của nó là O(n
4
), với n là số đỉnh của đồ thị. Một cách
tiếp cận khác được trình bày trong [Par93], bằng cách tính toán cấu trúc chỉ
mục mà nó được tổ chức như một một mạng phân cấp tương tự như việc so
khớp đồ thị mạng căn bản được mô tả trong [MB95b]. Vấn đề được quan tâm
nhất hiện này 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 như là một bước tiền xử lý
để phát hiện ra đẳng cấu đồ thị hoặc đồ thị con, 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 sau đó được sử dụng
trực tiếp dùng để chỉ mục và so khớp đồ thị mẫu với đồ thị đầu vào. Tuy nhiên,
tất cả các phương pháp tiếp cận bằng cây quyết định đã được trình bày cho
đến nay được ứng dụng mạnh trong việc nhận dạng các đối tượng 3D chứ chưa
được sử dụng trong vấn đề đẳng cấu đồ thị nói chung.
Trong bài báo này, chúng tôi đề xuất một phương pháp mới phát hiện
đẳng cấu đồ thị và đồ thị con. Nó có hai tính năng quan trọng. Đầu tiên, thời
gian thực thi của phương pháp này chỉ là bậc hai số đỉnh của đồ thị mẫu nếu
chúng ta bỏ qua thời gian cần thiết cho bước tiền xử lý. Thứ hai, thời gian là độc
Trang 6
lập với số lượng đồ thị trong cơ sở dữ liệu. Phương pháp mới dựa trên ý tưởng
sau đây. Chúng tôi tạo ra một tập của tất cả các hoán vị của ma trận kề của đồ thị
mẫu và tổ chức này tập hợp trong cây quyết định. Các đồ thị mẫu có thể kết hợp
với nhau trong cùng một cây quyết định. Cây quyết định được xây dựng trước từ
đồ thị mẫu. Khi thực thi, nó được sử dụng để xác định nếu có một đẳng cấu đồ
thị con từ một đồ thị đầu vào với một trong những đồ thị mẫu. Ưu điểm chính
của phương pháp này là nó đảm bảo độ phức tạp chỉ ở bậc hai thời gian. Tuy
nhiên, thời gian cho bước tiền xử lý là tạo ra cây quyết định, trong trường hợp
xấu nhất, sẽ là một cấp số nhân của các đỉnh. Tuy nhiên, chúng tôi tin rằng
phương pháp này là một đóng góp mới trong lĩnh vực phát hiện đẳng cấu đồ thị
con. Đây là một lĩnh vực ứng dụng được quan tâm đặc biệt với các đồ thị mẫu là

tương đối nhỏ.
Phần còn lại của bài báo này được tổ chức như sau.
Phần 2: Những định nghĩa cơ bản và ký hiệu.
Phần 3: Một trong các thuật toán cơ bản trong việc đẳng cấu đồ thị con
được mô tả ngắn gọn để so sánh.
Phần 4: Ý tưởng cơ bản và tổng quan của thuật toán mới.
Phần 5 – 6: Mô tả chi tiết hơn về các thủ tục và cấu trúc dữ liệu của thuật
toán mới.
Phần 7: Kết quả của một tính toán phân tích phức tạp.
Phần 8: Các kỹ thuật rút gọn cây quyết định.
Phần 9: Một số thí nghiệm.
Phần 10 Ứng dụng thuật toán vào việc phân tích hình ảnh.
Phần 11: Tóm tắt kết quả và hướng nghiên cứu trong tương lai.
Trang 7
2. Định nghĩa và ký hiệu
Một số định nghĩa và ký hiệu cơ bản:
Định nghĩa 2.1: Một đồ thị G có nhãn gồm 6 phần G = (V, E, µ,
ν
, L
ν
, L
e
) với:
• V là tập các đỉnh,
• E ⊆ V × V là tập các cạnh,
• µ : V → L
ν

là một hàm gán nhãn các đỉnh,
• ν : E → L

e
là một hàm gán nhãn các cạnh,
Thông thường, ta giả định rằng L
ν
và L
e
là tập giới hạn của nhãn tượng trưng.
Lưu ý rằng những định nghĩa trên tương ứng với trường hợp của đồ thị có hướng.
Đồ thị vô hướng sẽ có cùng một nhãn cho cạnh có hướng từ (v1, v2) và ngược
lại.
Định nghĩa: 2.2: Cho một đồ thị G = (V, E, µ,
ν
, L
ν
, L
e
), một đồ thị con của G là
có dạng: S = (V
s
, E
s
, µ
s
,
ν
s
, L
ν
, L
e

) như vậy:
1. Vs ⊆ V
2. E
s
= E ∩ (Vs × Vs)
3. µ
s
(v)=



µ(v) nếu v ∈ V
s
Không xác định cho các trường hợp còn lại
4. ν
s
(e)=



ν(e) nếu e ∈ E
s
Không xác định cho các trường hợp còn lại
Cho đồ thị G = (V, E, µ,
ν
, L
v
, L
e
) có V = {v

1
, v
2
, . . . , v
n
}. G cũng có thể đại diện
bởi ma trận kề M= (m
ij
), i, j = 1, . . ., n với m
ij
= µ(v
i
) và m
ij
=
ν
((v
i
,v
j
)) với i ≠ j.
Rõ ràng, các ma trận kề đại diện cho đồ thị không bị đếm lặp tại đỉnh. Tuy nhiên,
đây không phải là hạn chế thực sự khi lặp ta có thể được biểu diễn bằng cách mở
rộng tập nhãn đỉnh.
Rõ ràng, ma trận M không phải là duy nhất cho đồ thị G. Nếu M đại diện cho G,
sau đó 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 cấp n × n P = (p
ij
) được gọi là một ma trận hoán vị
nếu:

Trang 8
1. p
ij



{ }
1,0
với i, j = 1, . . ., n
2.
1
1
=

=
n
i
ij
p
với j = 1, . . ., n
3.
1
1
=

=
n
j
ij
p

với i = 1, . . ., n
Nếu đồ thị G được biểu diễn bởi ma trận kề (cấp n×n) M và P là một ma trận
hoán vị (cấp n×n), khi đó ma trận M’ (cấp n×n):
M’ = PMP
T
(1)
Với P
T
là hoán vị của P, và cũng là ma trận kề của G. Nếu p
ij
= 1 khi đỉnh thứ j
trong M trở thành đình thứ i trong M’.
Định nghĩa 2.4: Cho G
1
, G
2
là hai đồ thị và M
1
, M
2
là hai ma trận kề tương ứng.
G1 và G2 là đẳng cấu nếu tồn tại một ma trận hoán vị P sao cho
M
2
= PM
1
P
T
(2)
Chú ý rằng ma trận P có thể được hiểu như là một hàm song ánh f mà nó ánh xạ

các đỉnh từ G1 vào G2 và ngược lại. Như vậy, 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ị con giữa G1 và G2.
Như vậy, vấn đề tìm đẳng cấu đồ thị giữa hai đồ thị G1 và G2 là tương đương
nhau bằng cách tìm ma trận hoán vị P với công thức (2) đúng.
Định nghĩa 2.5: Cho hai đồ thị G1 và G2, có một đồ thị con đẳng cấu của G1 với
G2 nếu có tồn tại một đồ thị con S ⊂ G2 như vậy G1 và S là đẳng cấu.
Định nghĩa 2.6: Cho M = (m
ij
) là một ma trận vuông cấp n và S
k,m
(M) là ma trận
(m×k) thu được từ M bằng cách xóa các hàng k + 1, …, n và cột m + 1, …., n,
với k, m < n.
Như vậy S
k,m
(M) = (m
ij
); i = 1, …, k và j = 1, …, m.
Sử dụng các ký hiệu được giới thiệu trong những định nghĩa sau, không chỉ là
khái niệm của đẳng cấu đồ thị mà còn đẳng cấu đồ thị con có thể được mô tả
dưới dạng ma trận kề. Cho đồ thị G1 và G2 với ma trận kề M1 (m×m) và M2
(n×n) với m ≤ n. Có một đẳng cấu đồ thị con từ G1 vào G2 nếu tồn tại một ma
trận hoán vị P (n×n) thỏa:
M

1
= S
m,m
(PM
2
P
T
) (3)
Trang 9
Như vậy, vấn đề tìm một đồ thị con G2 đẳng cấu với G1 là tương đương với việc
tìm ma trận hoán vị P thỏa biểu thức (3). Lưu ý rằng S
m,m
(PM
2
P
T
) =
S
m,n
(P)M
2
(S
m,n
(P))
T
.
3. Tóm tắt thuật toán Ullman.
Để so sánh, chúng ta xem phương pháp của Ullman trong [Ull76]. Phương
pháp này có thể được áp dụng cho cả hai: tìm đẳng cấu đồ thị và đồ thị con.
Phương pháp này được dựa trên kỹ thuật quay lui và một số thủ tục cải tiến.

Trong số tất cả các phương pháp đã được đề cập, phương pháp của Ullman
được xem là một trong các thuật toán nhanh nhất cho vấn đề tìm đồ thị đẳng
cấu.
Đầu vào của thuật toán gồm một đồ thị mẫu G = (V, E, µ,
ν
, L
v
, L
e
) và
một đồ thị đầu vào G1 = (V
1
, E
1
, µ
1
,
ν
1
, L
v
, L
e
). Cho M (n×n) là ma trận kề của
G và M
1
(m×m) là ma trận kề của G
1
. Chúng ta tìm tất cả các ma trận hoán vị
P mà có M

1
= S
m,m
(PM
1
P
T
). Lưu ý rằng S
i,n
(P) là một ma trận hoán vị (i×n) đại
diện cho một mảnh dò tìm từ đỉnh đầu tiên thứ i của G vào một số đỉnh trên
G
1
. Nếu S
i,i
(M
I
) = S
i,n
(P)M(S
i,n
(P))
T
thì rõ ràng S
i,n
(P) đại diện cho một đẳng cấu
đồ thị từ đồ thị con G
1
với một số đồ thị trong G gồm n đỉnh.
Thuật toán của Ullman được dựa trên ý tưởng tìm tất cả các đồ thị con

đẳng cấu bằng cách thiết lập ma trận hoán vị P từng dòng một (Hình 1).
Theo định nghĩa 2.3, chúng ta biết rằng mỗi hàng k trong P có chứa chính
xác một phần tử p
ki
= 1, trong khi tất cả các phần tử p
kj
= 0 với j ≠ i. Thủ tục đệ
quy Backtrack được thiết lập bằng cách gán phần tử p
11
= 1 và tất cả các phần
tử còn lại của hàng đầu tiên là 0. Nếu S
1,n
(P) là một mảnh dò tìm được đại diện
cho một đẳng cấu đồ thị con, khi đó thủ tục Backtrack được gọi lại và dòng
thứ hai của P được thiết lập. Quá trình này được tiếp tục cho đến khi m dòng
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
điều kiện trong bước (3.b.ii) không thỏa mãn. Trong cả hai trường hợp, tiến
trình sẽ quay lui với bước trước đó và gán P
ki
một giá trị khác.
Trang 10
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à một ma trận hoán vị (n×n), n = |V|, m = |V
I
| và M, M
I

các ma trận kề của G và G
I
.
2. Gọi Backtrack (M, M
I
,P,1)
3. Procedure Backtrack (M ma trận kề, ma trận kề M
I
, ma trận hoán vị P,

biến đếm k)
(a) nếu k > m thì P là một đẳng cấu đồ thị con từ G
I
với G. Xuất P và quay
trở lại.
(b) Lặp i = 1 tới n
i. Gán P
ki
= 1 và gán p
kj
= 0 (với j ≠ i)
ii. NếuS
k,k
(M
I
) = S
k,n
(P) M (S
k,n
(P))
T
thì
gọi Backtrack(M, M
I
; P; k + 1)
Hình 1: Thuật toán Ullman.
Dễ dàng để thấy rằng, thuật toán này tìm tất cả các đồ thị con đẳng cấu của
G với G
I
và xuất ra tất cả các ma trận hoán vị P thỏa M

I
= S
m,n
(P)M(S
m,n
(P))
T
(hoặc M
I
= S
m,m
(PMP
T
)). Hơn nữa, nếu G
I
và G có kích thước bằng nhau,
nghĩa là m = n,
thuật toán tìm tất cả đồ thị đẳng cấu giữa G
I
và G thì kết của các ma trận hoán
vị P thỏa M
I
= PMP
T
. Trong các thí nghiệm thực tế trình bày ở phần 8, chúng
ta thực hiện các tiến trình quay lui cùng với các bước cải tiến lại được trình
bày trong [Ull76]. Thủ tục cải tiến được dựa trên ý tưởng là kiểm tra trước
các giá trị P
ki
= 1 ở bước (3.bi) là phù hợp cục bộ với ít nhất một p

lj
= 1 cho
mỗi hàng với m ≥ l > k các bước tìm kiếm tiếp theo. Nếu cải tiến lại thủ tục
bằng cách gán P
ki
= 1, tức là ánh xạ đỉnh i của G
I
lên đỉnh k của G, sẽ không
dẫn đến một đẳng cấu đồ thị, việc tìm kiếm có thể tiếp tục với các cột tiếp
theo i + 1 và gán p
k(i+1)
= 1. Như thế, nó có thể để tránh các cuộc gọi đệ quy
không cần thiết. Điều quan trọng cần lưu ý là các thủ tục quay lui chỉ có thể
được áp dụng cho hai đồ thị tại một thời điểm. Nếu đồ thị mẫu nhiều hơn
một, thì nó gọi chúng riêng biệt. Vì vậy, độ phức tạp của thuật toán phát hiện
Trang 11
đẳng cấu đồ thị con dựa trên kỹ thuật quay lui là tuyến tính phụ thuộc vào số
lượng đồ thị mẫu.
I. 4. Đ ẳng cấu đồ thị con bằng thuật toán cây q uyết định .
Vấn đề chính của thuật toán là dựa vào 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 khi thực thi. Hơn nữa, các thuật
toán có thể bị bế tắc thì quay lui trở nên cần thiết. Để khắc phục những vấn đề
này và để tránh quay lui, 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 đồ thị mẫu biết trước,
và đồ thị đầu vào sẽ được nhập vào khi thực thi. Đối với mỗi đồ thị mẫu, chúng
tôi tính toán tất cả các hoán vị có thể có của ma trận kề và biểu diễn bằng một
cây quyết định. Khi chương trình thực hiện, ma trận của đồ thị đầu vào được sử
dụng để so sánh với những ma trận kề trên cây quyết định.
Cho G = (V, E, µ,
ν

, L
v
, L
e
) là một đồ thị mẫu và ma trận kề tương ứng M
(n×n). Gọi A(G) là tập của tất cả các hoán vị ma trận kề của G,
A(G) = |M
P
| M
P
= PMP
T
trong đó P là ma trận hoán vị (n×n) (4)
Tổng số hoán vị của ma trận kề là |A(G)| = n! như vậy sẽ có n! ma trận hoán vị
cấp n. Một đồ thị mẫu G với ma trận kề M (n×n) và đồ thị đầu vào G
I
có ma trận
kề M
I
(m×m) với m ≤ n, kiểm tra xem có tồn tại một ma trận M
P
∈ A(G) như vậy
M
I
= S
m,m
(M
P
). Nếu ma trận M
P

tồn tại, có ma trận hoán vị P thì M
P
mô tả một
đẳng cấu đồ thị con từ G
I
vào G, tức là M
I
= S
m,m
(MP) = S
m,m
(PMP
T
). Nếu G và
G
I
có kích thước bằng nhau, ma trận hoán vị P đại diện cho một đẳng cấu đồ thị
Trang 12
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 cây
quyết định, như thế mỗi ma trận A(G) được phân loại bởi cây. Việc phân loại dựa
trên các giá trị riêng của từng ma trận kề. Tuy nhiên, mục đích của cây quyết
định là 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
gom nhóm các ma trận kề A(G) có những đặc tính chung, như vậy việc phân loại

trên mỗi mức của cây quyết định là độc lập với kích thước của ma trận kề được
bố trí trên cây quyết định. Với mục đích này, ta chọn ký hiệu mới cho một ma
trận kề (n×n). M = (m
ij
). Chúng ta nói rằng ma trận gồm một mảng các phần tử a
i
,
mỗi a
i
là một vector có dạng:
a
i
= (m
1i
, m
2i
, , m
ii
, m
i(i-1)
, …, m
i1
).
Ma trận M có thể được biểu diễn như sau:
M = (a
1
, a
2
, …, a
n

); i = 1, …, n
Cây quyết định được xây dựng dựa trên giá trị theo hàng và cột của mỗi ma trận
kề M
P
∈ A(G). Ở phía trên của cây quyết định có một nút gốc duy nhất. Các nút
Trang 13
kế tạo thành mức thứ nhất của cây quyết định. Ở mức thứ nhất, việc phân loại
các ma trận trong A(G) được thực hiện dựa trên giá trị của a1 (phần tử của dòng
và cột đầu tiên) của ma trận M
P
∈ A(G). Phần tử a1 = (m11) đại diện cho nhãn
của đỉnh đầu tiên trong mỗi ma trận A(G), với m
11
∈ Lv (xem Phần 2). Do đó,
mỗi ma trận A(G) được phân loại dựa theo nhãn đỉnh đầu tiên của nó. Mỗi nhánh
tiếp theo dẫn đến một nút kế thừa trực tiếp từ nút gốc thông qua phần tử a
1
.
Nhánh tiếp theo ở mức thứ hai của cây quyết định, ta sử dụng phần tử a
2
(các
phần tử của dòng và cột thứ 2) và cứ như thế cho các mức tiếp theo của cây quyết
định.
Như vậy, các ma trận được xác định bởi một số nút ở mức k được phân loại dựa
trên giá trị của a
k
. Với mỗi ma trận M
P
được biểu thị bởi một số nút N ở mức k, ta
cũng đưa ra được ma trận hoán vị P tương ứng. Khi M

P
đã được phân loại đến
đỉnh thứ k, P mô tả một đẳng cấu đồ thị con cho các đồ thị con với ma trận kề
S
k,k
(M
P
) vào G. Khi thực thi, P sẽ mô tả một đẳng cấu đồ thị con cho bất kỳ đồ thị
đầu vào được phân loại tới nút thứ N. Cuối cùng, ở mức 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 ma trận M
P
∈ A(G). Số lượng của
những ma trận hoán vị trong mỗi nút lá là bằng số tự đẳng cấu của G. (tự đẳng
Trang 14
cấu là một đẳng cấu của một đồ thị cho chính nó). Trong Hình 3 là đồ thị g1 và
cây quyết định của g1. Các nút của cây quyết định được biểu thị bằng các vòng
tròn tô mờ. Mỗi nhánh liên kết giữa các nút thông qua giá trị của hàng và cột
tương ứng. Ở phía trên của hình 3, liệt kê các hoán vị ma trận kề (A(g
1
)) của g
1
.
Dễ dàng để thấy rằng số lượng các 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 đại diện chính xác cho một ma trận kề. Một yêu cầu quan
trọng cho cây quyết định là các phân loại trên từng cấp độ phải được tính toán
một cách dễ dàng. Do đó, nếu một ma trận M
P
được phân loại dựa theo dòng và

cột thứ k (phần tử a
k
), sự kế thừa mà đạt được thông qua phần tử a
ki
với a
ki
= a
k
phải là dễ dàng tính toán. Với mục đích này, một đường đi từ nút k đến nút k + 1
được ghi lại thành một từ điển. Từ điển này được tổ chức như là một cấu trúc chỉ
mục với 2k - 1 phần tử m
ij
. Có chính xác 2k - 1 phần tử m
ij
và được sử dụng như
là một chỉ mục. Việc tìm một phần tử trong từ điển này có thể được thực hiện
trong 2k - 1 bước. Vì vậy, việc tìm nút tại mức k có thể được thực hiện trong
O(2k - 1) = O(k) bước. Một ví dụ là ta xem cây quyết định ở Hình 3. Từ nút 3, ta
có ba nhánh cấp dẫn đến các nút 5, 6, và 7. Ở Hình 4 chỉ ra một thứ tự từ điển
đến các nút này. Trong ví dụ này, một chỉ mục ba cấp là cần thiết cho việc tổ
chức các mục từ điển.
Vì vậy, chúng ta chỉ thảo luận về cấu trúc của cây quyết định đối với một
đồ thị mẫu duy nhất. Nếu có nhiều đồ thị mẫu trong một cơ sở dữ liệu khi đó giải
pháp đơn giản nhất là xây dựng cây quyết định riêng cho từng đồ thị mẫu đó.
Tuy nhiên, có thể đại diện cho một số đồ thị mẫu cùng một cây quyết định. Mỗi
cấp, việc phân loại của các ma trận kề của đồ thị mẫu chỉ được thực hiện trên cơ
sở của các phần tử của hàng và cột hiện tại. Vì vậy, cho một tập hợp của mô hình
đồ thị G
1
, G

2
, …, GL, với ma trận kề tương ứng là A(G
1
), A(G
2
), …, A(G
L
) có
thể được phân loại và biểu thị bởi cùng một quyết định cây. Trong Hình 5 cây
quyết định biểu diễn cho đồ thị g
1
ở hình 3 và đồ thị g
2
. Để phân loại các ma trận
kề A(g2) (được đưa ra ở trên cùng của Hình 5) chỉ có hai nút được thêm vào cây
quyết định của đồ thị g
1
. G
2
có ba phần cùng đẳng cấu tại nút 13 và nút 15 được
biểu thị trong Hình 5.
Trang 15
Khi thực thi, cây quyết định sử dụng trực tiếp các ma trận kề M
I
(đã được phân
loại) của một đồ thị đầu vào G
I
. Ma trận M
I
được phân loại ở cấp thứ 1 dựa vào

phần tử a
1
. Nếu có một số nhánh i từ nút gốc đến nút kế có liên kết đến a
1
, thuật
toán vẫn tiếp tục với các nút kế đó và cứ tiếp tục với các nút con của nó. Nếu tại
một số điểm không thể phân lớp, khi đó đồ thị vào G
I
không phải là đẳng cấu với
bất kỳ đồ thị con nào của đồ thị mẫu. Nếu như các phần tử của G
I
đã được sử
dụng để phân loại, và đến được nút lá N trong cây quyết định, N là đại diện cho
một đẳng cấu đồ thị giữa đồ thị mẫu và đồ thị đầu vào.
COMPILE_TREE (GRAPH 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ó chưa có.
2. Với k = 1 đến n, với n = |V|
Trang 16
(a) Tạo ra tất cả các đồ thị con Sk ⊂ G với k đỉnh.
(b) Gọi merge_tree(Root, S
k
).
Hình 6: Thuật toán Compile-tree.
5. Một biểu diễn hiệu quả hơn của cây quyết định:

Cây quyết định được mô tả vừa rồi không cần thiết phải lớn. Sau đây chúng tôi
giới thiệu một cách làm cho nó nhỏ gọn hơn bằng cách quan sát rằng ở mức k
trong cây quyết định biểu diễn tất cả các đồ thị con có k đỉnh, k = 1, …, n. Chú ý
rằng mỗi đồ thị con S được biểu diễn bởi k!/α lần, với α là số không tự đẳng cấu
của S. Rõ ràng, tất cả các đại diện tương đương với nhau, và thông tin mà ta chứa
phần lớn là dư thừa. Bây giờ chúng ta biết được cách làm thế nào để loại bỏ sự
dư thừa này. Kết quả là ta xây dựng một cây nhỏ gọn hơn cây quyết định ban
đầu.
Cho N
1
và N
2
là các nút của cây quyết định và cả hai biểu diễn cho đồ thị
con S giống với đồ thị mẫu G, và S có ma trận kề M
S
. Cho M
1
và M
2
là các ma
trận kề biểu diễn bởi N
1
và N
2
, và P
1
, P
2
là ma trận hoán vị tương ứng, như vậy
P

1
M
S
P
1
T
= M
1
và P
2
M
S
P
2
T
= M
2
. Khi đó tồn tại một ma trận hoán vị R sao cho:
M
1
= RM
2
R
T
(5)
Mà ta có:
R = P
1
P
2

T
(6)
Thế R = P
1
P
2
T
vào phương trình (5) và cũng thay thế M
2
bằng P
2
M
S
P
2
T
kết quả là
M
1
= P
1
P
2
T
(P
2
M
S
P
2

T
)(P
1
P
2
T
)
T
= P
1
M
S
P
1
T
.

Vì vậy, bất kỳ ma trận kề đại diện cho nút
N
2
có thể được chuyển đổi nhờ ma trận R thành một ma trận được biểu diễn
trong N
1
. Kết luận quan trọng nhất từ sự quan sát này là không cần thiết để phân
loại các ma trận dựa vào nút N
2
. Thay vào đó, nó có khả năng để phân loại các
ma trận đại diện trong N
1
và chỉ cần tham khảo hoặc chuyển hướng nút N

2
đến
N
1
. Với mục đích này, chúng tôi giới thiệu nhánh kết hợp (redirecting branch)
trong cây quyết định từ nhánh nút N
2
qua N
1
. Liên kết với nhánh kết hợp là các
ma trận hoán vị R. Nói chung, với một đồ thị con S ⊂ G, chúng ta chọn tập từ nút
Trang 17
của cây quyết định mà nó đại diện cho S là một nút T tùy ý và được chèn các
nhánh kết hợp từ tất cả các nút khác đến T.
MERGE_TREE(NODE Root, Graph S)
1. Cho S được biểu diễn bởi ma trận kề M(k×k) của nó.
Tạo ra tất cả các ma trận hoán vị P có kích thước là k và tập A(S) là tập mà
trận kề hoán vị của S.
2. Với mỗi M
P
= (a
1
, …,a
k
) ∈ A(S) thì:
(a) N = Root.
(b) Với i = 1 đến k thì:
i. Nếu có một nút Ns kế nút N mà a
k
= a

Ns
thì:
Gán N = N
s

Ngược lại: tạo ra một nút N
s
kề với nút N. Chèn a
k
vào từ điển
thuộc N. Cho N
s
biểu thị cho phần tử hàng và cột (a
k
), và gán N
= N
s
.
3. Chọn nút N ở mức k + 1 được tạo hoặc tìm thấy cho ma trận đầu tiên M
1
trong A(S) và tập T = N. Cho M
1
= P
1
MP
1
T
.
4. Với mỗi nút N ≠ T ở mức độ k + 1 đại diện S, chèn một nhánh kết hợp vào
nút T. Cho M’ ∈ A(S) là một ma trận kề đã được phân lớp trong N và ma trận

hoán vị tương ứng P’, như thế:
M’ = P’MP’
T
. Khi đó, kết hợp các ma trận hoán vị P
1
P’
T
đến các nhánh kết
hợp từ N đến T (xem phương trình 6).
Hình 7: Thuật toán Merge_tree.
Do đó, chỉ có một trong những nút của S sẽ được dùng cho các ma trận đã
được phân loại của đồ thị G. Bây giờ chúng ta mô tả một thủ tục để biên dịch
một cây quyết định từ một đồ thị mẫu. Ý 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 gồm tất cả các đồ thị con của đồ thị mẫu.
Trong thủ tục, chúng ta dần dần tăng kích thước của đồ thị con mà được
tích hợp trong cây quyết định. Như được thảo luận ở trên, với mỗi đồ thị con
chỉ cần có một nút trong cây quyết định được sử dụng để phân loại. Khi biên
dịch thủ tục compile_tree, chúng ta bắt đầu tạo ra một nút gốc cho cây quyết
Trang 18
định, với điều kiện là cây quyết định đang rỗng. Tiếp theo, ta tạo đồ thị con
của G bắt đầu với đồ thị con có kích thước là một và kết thúc là chính nó.
Với mỗi đồ thị con S
k
với k biểu thị số đỉnh, thủ tục merge_tree được gọi thực
hiện.
Trong bước đầu tiên thủ tục merge_tree, tập A(S) của tất cả các hoán vị ma
trận kề được tạo ra. Các ma trận này sau đó được phân loại theo cây quyết
định đã có càng nhiều càng tốt. Lưu ý rằng cây quyết định có thể vào thời
điểm này đã kết hợp các đồ thị mẫu hoặc các đồ thị con của đồ thị mẫu khác
nhau.

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
dựa trên giá trị của dòng và cột tương ứng. Nếu cho một số nút N ở mức k,
không có phân loại của ma trận hiện tại, tức là không có nút kế cho ma trận hiện
tại, khi đó một nút N
s
mới được chèn vào cây quyết định. Nút N
s
mới này phải
được gắn với một nút kế thừa trực tiếp của N. Hơn nữa, phần tử a
k
phải được đưa
vào từ điển được gắn với N. Khi tất cả các ma trận trong A(S) đã được phân loại
Trang 19
thành công, nhánh kết hợp được chèn vào. Mặc định, các nút được tạo ra cho các
ma trận đầu tiên M
1
∈ (S) được đại diện bởi nút T. Trong bước (4), tất cả các nút
khác mà đã được tạo ra cho ma trận trong A(S) sau đó được chuyển hướng đến
T.
Trong hình 8 thể hiện kết quả của thuật toán compile-tree từ cây quyết định cho
các đồ thị g1 và g2. Có hai nhánh kết hợp trong cây quyết định (ký hiệu bởi
đường đứt khúc). Liên kết với cả hai nhánh là ma trận hoán vị









01
10
.
Khi áp dụng cho ma trận con 2×2 S
2,2
(A), S
2,2
(B) và S
2,2
(D) của g
1
, các ma trận
kết quả là S
2,2
(C), S
2,2
(E) và S
2,2
(F). Đối với đồ thị g
2
, nhánh kết hợp biến đổi ma
trận S
2,2
(A’), S
2,2
(D’) và S
2,2
(E’) thành các ma trận S
2,2
(C’), S

2,2
(F’) và S
2,2
(B’).
Chú ý rằng bằng cách giới thiệu các nhánh kết hợp vào cây quyết định là có thể
tiết kiệm được ba nút trên cây quyết định.
Cho đến giờ, chúng ta chỉ thảo luận việc lập cây quyết định cho các đơn đồ thị
mẫu. 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ẫu. Vì vậy, không cần thiết để xây dựng một cây quyết định mới cho tất
cả các đồ thị mẫu 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 nhiều đồ thị mẫu trong cơ sở dữ liệu. Khi cần mở rộng
chỉ đơn giản gọi thuật toán compile-tree cho mỗi đồ thị mới.
6. Cây quyết định theo chiều rộng.
Cấu trúc cây quyết định đã được mô tả trước đây có thể được sử dụng rất hiệu
quả cho thuật toán đẳng cấu đồ thị. Cho G
1
, …, G
L
là một tập đồ thị mẫu thể hiện
bởi một cây quyết định và G
I
là một đồ thị đầu vào. Chúng tôi giả định rằng đồ
thị đầu vào được đại diện bởi ma trận kề của nó M
I
= (a1, a2, …, am) được cho
bằng cách định dạng cột và hàng. Thuật toán decision-tree (xem Hình 9) cố gắng
tìm ra một ma trận M ∈ A(Gi), như vậy M
I
= S
m,m

(M) bằng cách phân loại M
I
theo phần tử của dòng và cột. Thuật toán bắt đầu tại nút gốc của cây quyết định
và trước tiên phân loại M
I
theo phần tử đầu tiên của nó (a
1
). Nếu bước này thành
Trang 20
công, phân loại được tiếp tục vào cấp độ tiếp theo. Nói chung, nếu tiến trình
đang ở mức độ k và N là nút hiện tại của cây quyết định, khi đó a
k
sẽ đại diện cho
N. Ta làm được điều này bằng cách tìm phần tử a
k
trong từ điển. Nếu có một
phần tử a
kN
trong từ điển hoàn toàn phù hợp với a
k
, tiến trình sẽ thông qua nhánh
N này để đến nhánh kề sau với nó và có nút là Ns, nút này được thể biện bởi
phần tử a
kN
. Nếu không có phần tử nào như vậy được tìm thấy trong từ điển thì
M
I
không có thể được phân loại bởi cây quyết định, như vậy thì G
I
không là đẳng

cấu với đồ thị mẫu ban đầu. Trong bước (2.d) của thuật toán nó kiểm tra nút N
s
có thể kết hợp nhánh được không. Nếu đây là vấn đề của việc kết hợp nhánh.
Theo đó, M
I
là ma trận của đồ thị đầu vào phải được hoán vị bằng cách đưa ma
trận hoán vị R vào nhánh kết. Tuy nhiên, nếu N ở mức k thì R là 1 ma trận vuông
hoán vị cấp k bởi vì nó được tạo ra tại thời gian biên dịch cho một đồ thị con có
kích thước là k (xem phần trước). Mặt khác, M
I
là một ma trận kề cấp m của đồ
thị đầu vào G
I
với m ≥ k. Để áp dụng ma trận R vào ma trận M
I
, điều này cần thiết
để mở rộng R thành một ma trận cấp m bằng cách thêm m - k hàng và m - k cột.
Các hàng và cột được sao chép từ một ma trận nhận dạng cấp m. Ma trận R được
mở rộng ký hiệu là R’. Sử dụng R’ nó có thể điều chỉnh M
I
vào nhánh kết hợp
theo đẳng thức sau: M
I
= R’M
I
R’
T
. Tiến trình phân loại sau đó có thể được tiếp
tục.
Thuật toán kết thúc khi bước (2.b) phát hiện rằng:

- Không có đẳng cấu đồ thị con từ đồ thị đầu vào với bất kỳ đồ
thị mẫu nào.
Hoặc
- Trong bước (3) khi phần tử cuối cùng của M
I
đã được xử lý và
một số nút N đã được duyệt.
Trong trường hợp sau, ma trận M
I
chính là tất cả các ma trận M
i
của G
i
biểu diễn
tại nút 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ữ tại N đại diện cho tất cả các đẳng cấu đồ thị con từ G
I
vào G
i
. Mặt khác, N là
một nút lá, G
I
và G
i
có kích thước bằng nhau, và tập các ma trận hoán vị tại nút N
biểu thị cho tất cả các đồ thị đẳng cấu giữa G
I
và G
i
.

Trang 21
Dễ dàng để thấy rằng thuật toán mới cho phép đẳng cấu đồ thị đi qua cây quyết
định mà không có sự cần thiết phải quay lui và do đó độ phức tạp thời gian chỉ là
đa thức ứng với số đỉnh của đồ thị đầu vào. Hơn nữa, thuật toán rõ ràng là độc
lập với số lượng đồ thị mẫu được biểu diễn trong cây quyết định. Để tránh hiểu
lầm, chúng ta cần lưu ý rằng thuật toán mới không thể dùng để phát hiện đẳng
cấu đồ thị con từ đồ thị mẫu. Ta chỉ có thể kết luận 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 các phần tử
một cách tuần tự. Nếu đồ thị đầu vào có chứa một đỉnh không liên quan, khi đó
sự phân loại của ma trận kề có thể thất bại ở bất cứ mức nào của cây quyết
định.
DECISION_TREE(NODE Root, GRAPH G
I
)
1. Cho G
I
và ma trận kề M
I
= (a
1
, …, a
m
) và cho m = |V| và N = root.
2. Với k = 1 tới m:
(a) Tra cứu từ điển mà có liên quan đến nút N và tìm a
kN
sao cho a
kN
=
a

k
.
(b) Nếu không có phần tử nào được tìm thấy trong từ điển, đồ thị G
không đẳng cấu với bất kỳ đồ thị con nào của đồ thị mẫu. Thoát
bởi tìm không thấy đẳng cấu đồ thị.
(c) Nếu một phần tử a
kN
= a
k
được tìm thấy trong từ điển, khi đó ta
theo nhánh được đại diện bởi phần tử a
kN
để đến được nút N
s
.
(d) Nếu có một nhánh kết hợp của N
s
một số nút N’ khi gán M
I
=
R’M
I
R’
T
, với R’ là ma trận hoán vị cấp m được mở rộng. Đặt N =
N’.
Ngược lại N = Ns.
3. Đối với mỗi ma trận M
P
của G

i
(tương ứng với ma trận kề cấp n Mi)
được biểu thị bởi nút N.
(a) Nếu m < n thì liên kết ma trận hoán vị P mô tả một đẳng cấu đồ thị
con từ G
I
vào G
i
, tức là M
I
= S
m,m
(M
P
) = S
m,m
(PM
i
P
T
).
(b) Nếu m = n sau đó ma trận liên kết hoán vị P mô tả một đẳng cấu
Trang 22
đồ thị từ G
I
vào G
i
, tức là M
I
= PM

i
P
T
.
Hình 9: Thuật toán decision_tree.
7. Phân tích độ phức tạp.
Phân tích độ phức tạp tính toán được dựa vào các yếu tố sau:
N = số đồ thị mẫu trong cơ sở dữ liệu,
M = số lượng tối đa của các đỉnh trong một đồ thị mẫu,
I = Số đỉnh của đồ 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
Để so sánh, đầu tiên chúng ta phân tích độ phức tạp không gian và thời gian
theo cách cũ, phương pháp đẳng cấu đồ thị con trên cơ sở quay lui. Trường
hợp tốt nhất của thuật toán này:
(Độ phức tạp về thời gian trong trường hợp tốt nhất)
O(NIM) (7)
(Độ phức tạp về không gian trong trường hợp tốt nhất)
O(M
2
I) (8)
Trường hợp xấu nhất nhất của thuật toán này:
(Độ phức tạp về thời gian trong trường hợp tốt nhất)
O(I
M

M
2
N) (9)
(Độ phức tạp về không gian trong trường hợp tốt nhất)
O(M
2
I) (10)
7.2 Tính toán độ phức tạp của thuật toán mới.
Không giống như các thuật toán thông thường mà không cần các bước tiền
xử lý, các thuật toán mới liên quan đến việc tiền xử lý chuyên sâu, cụ thể là
việc tạo cây quyết định cho các đồ thị mẫu. Trong phần sau đây, chúng ta
xem xét sự phức tạp tính toán của các bước tiền xử lý và sau đó chúng ta
Trang 23
phân tích sự phức tạp thời gian chạy của nó. Với liên quan đến ứng dụng
thực tế, điều quan trọng là cần lưu ý rằng cây quyết định được xây dựng
trong bước tiền xử lý phải được lưu trữ trong bộ nhớ chính lúc thực thi. 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 độ đo hữu ích cho kích thước của cây
quyết định chính là số lượng các nút. Theo trình tự biên dịch thuật toán được
mô tả trong Mục 5, cây quyết định cho một đồ thị mẫu được xây dựng từng
cấp một. Các nút ở mức k + 1 được tạo ra bằng cách cách ly tất cả các đồ thị
con có kích thước k của đồ thị mẫu và phân loại các đồ thị con 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 có kích thước k được sử dụng như là một nút cha cho các nút khác
trong cây quyết định. Vì vậy, số lượng các nút trên mỗi mức được giới hạn
bởi

















k
M
O
. Mỗi nút này có thể là nút cha của rất nhiều nút kế thừa. Bất kỳ
phần tử a
k +1
mà là liên quan đến một chi nhánh bắt nguồn từ một nút ở mức
k + 1 bao gồm các mục nhãn 2k cạnh và một trong những mục nhãn đỉnh.
Do đó, có ít nhất O(l
e
2k
l
v
) phần tử khác nhau, mỗi phần tử được đại diện bởi
một nút khác nhau trong cây quyết định. Tổng số nút ở mức k + 2 (sau mức k
+ 1) là

















v
k
e
ll
k
M
O
2
. Tổng hợp của các nút trên tất cả các mức (không có nút
gốc) sau đó được giới hạn bởi:
( )
( )
M
ev
k
e

M
k
v
llOl
k
M
lO
22
1
0
1)( +=


















=

(11)
Nếu có một số đồ thị mẫu trong cơ sở dữ liệu, cây quyết định trở thành phụ
thuộc tuyến tính vào N, kích thước của cơ sở dữ liệu là:
(độ phức tạp không gian của cây quyết định)
( )
( )
M
ev
lNlO
2
1+
(12)
Trang 24
Đây là trường hợp xấu nhất của đồ thị có hướng và có nhãn. Trường hợp đặc
biệt, đồ thị không nhãn, vô hướng. Đối với những đồ thị này, trường hợp xấu
nhất đối với các thuật toán thông thường, kích thước của cây quyết định
được giới hạn bởi biểu thức sau đây:
O(N3
M
) (13)
Thời gian chạy theo lý thuyết hiệu suất của thuật toán mới có thể được ước
tính bằng cách phân tích thuật toán decision-tree tại Mục 6. Ma trận kề của
đồ thị đầu vào từng bước được phân loại bởi cây quyết định. Đối với một đồ
thị có M đỉnh, ma trận kề có M phần tử (theo hàng và cột) a1,a2, …, a
M
. Việc
phân loại một ma trận cấp k + 1 phụ thuộc vào phần tử a
k +1
đòi hỏi rằng phần
tử a

N
là một trong các nút kế thừa của nút hiện tại, phải phù hợp hoàn toàn
với a
k+1
.
Vì vậy, theo lý thuyết sự phức tạp thuật toán đẳng cấu đồ thị con mới được
giới hạn bởi:
(Độ phức tạp thời gian trong trường hợp tốt nhất và xấu nhất của cây quyết
định theo chiều rộng)
O(M(2Ml
e
+ l
v
) + M
2
) = O (M
2
l
e
+ Ml
v
) (14)
Chú ý rằng độ phức tạp của thuật toán mới đối với phát hiện đẳng cấu đồ thị
con cũng áp dụng để phát hiện đẳng cấu đồ thị. Một lần nữa, trường hợp đặc
biệt cho đồ thị không nhãn, vô hướng, thời gian chạy được giới hạn bởi:
O(M
2
) (15)
Điều quan trọng là cần lưu ý rằng cả hai trường hợp đặc biệt và tổng quát
của đồ thị không có nhãn, độ phức tạp tính toán của các thuật toán mới

được giới hạn bởi đa thức. Hơn nữa, theo lý thuyết là hoàn toàn độc lập các
kết nối của đồ thị và số lượng của đồ thị mẫu được biểu diễn bởi cây quyết
định. Không giống như các thuật toán quay lui, (và bất kỳ thuật toán đẳng
cấu đồ thị con khác đã được đề xuất trong các tài liệu đến thời điểm này) các
thuật toán mới đảm bảo việc tìm ra tất cả các đồ thị và đồ thị con đẳng cấu
trong thời gian bậc hai. Đương nhiên, việc liệt kê danh sách của tất cả các
đẳng cấu đồ thị con có thể mất thời gian theo cấp số nhân. Các thuật toán
Trang 25

×