1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tiểu luận môn cơ sở dữ liệu nâng cao KHÓA LUẬN TÌM ĐỒ THỊ CON ĐẲNG CẤU

13 277 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 13
Dung lượng 488,69 KB

Nội dung

Bài toán này thiết thực hơn bao giờ hết trong thời điểm hiện nay có nhiều mạng xã hội ra đời, việc lưu trữ thông tin trên mạng xã hội không tránh khỏi phải biểu diển theo đồ thị, và dò t

Trang 1

1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

CHUYÊN ĐỀ

CƠ SỞ DỮ LIỆU NÂNG CAO

KHÓA LUẬN TÌM ĐỒ THỊ CON ĐẲNG CẤU

GIẢNG VIÊN HƯỚNG DẪN

PGS.TS ĐỖ PHÚC

2012

Trang 2

2

GIỚI THIỆU

Đồ thị và đồ thị con đẳng cấu là những khái niệm được sử dụng rộng rãi trong nhiều ứng dụng Hơn 30 năm qua rất nhiều nhà nghiên cứu bài toán tính toán hiệu quả đồ thị và đẳng cấu đồ thị con Bài toán này thiết thực hơn bao giờ hết trong thời điểm hiện nay có nhiều mạng xã hội ra đời, việc lưu trữ thông tin trên mạng xã hội không tránh khỏi phải biểu diển theo đồ thị, và dò tìm đồ thị con đẳng cấu trên đồ thị lớn là công việc không thể tránh khỏi Ngày nay, bài toán này đã thực hiện tương đối hiệu quả nhờ thuật toán do Messmer và Bunke đưa ra Trong khoá luận này tôi trình bày ưu điểm của thuật toán so với thuật toán mà Ulman đã đưa ra trước đó Khoá luận được trình bày theo 4 chương Chương 1 giới thiệu đồ thị đẳng cấu, chương 2 là phương pháp tìm đồ thị con đẳng cấu của Ulman, phương pháp làm của Messmer và Bunke được trình bày trong chương 3 Thực nghiệm được mô tả trong chương 4

Trang 3

3

I Đồ thị đẳng cấu

1 Định nghĩa

Các đồ thị G1 = (V1,E1) và G2 = (V2,E2) được gọi là đẳng cấu với nhau nếu có một song ánh f: V1  V2 sao cho nếu a và b là liền kề trong V1 thì f(a) và f(b) liền kề trong

V2;  a, b  V1 Khi đó song ánh f được gọi là một đẳng cấu

Nói cách khác, nếu 2 đồ thị là đẳng cấu thì sẽ tồn tại một song ánh giữa các đỉnh của 2 đồ thị bảo toàn quan hệ liền kề

 Chú ý: Nếu 2 đồ thị G1 và G2 là đẳng cấu thì chúng có:

+ Số đỉnh bằng nhau

+ Số cạnh bằng nhau

+ Hai đỉnh tương ứng có cùng bậc

Đây là các điều kiện cần để hai đồ thị là đẳng cấu

 Để chứng minh hai đồ thị đẳng cấu ta cần:

+ Chứng minh điều kiện cần thỏa

+ Xây dựng một song ánh bảo toàn quan hệ liền kề giữa hai đồ thị (điều kiện đủ để hai đồ thị đẳng cấu)

Ví dụ 1: Chứng minh rằng hai đồ thị sau là đẳng cấu với nhau:

 Xét điều kiện cần:

+ Hai đồ thị G và H đều có 4 đỉnh, + Hai đồ thị G và H đều có 4 cạnh,

+ Các đỉnh của hai đồ thị đều có bậc 2

Vậy điều kiện cần thỏa

 Xét điều kiện đủ:

Xét hàm f: V  W

H = (W,F)

G = (V,E)

v4

v3

u3

u4

v2

v1

u2

u1

Trang 4

4

u1  v1

u2  v4

u3  v2

u4  v3

 f là song ánh và bảo toàn quan hệ liền kề, điều kiện đủ thỏa Vậy hai đồ thị G

và H đẳng cấu với nhau

Ví dụ 2: không đẳng cấu vì số cạnh và đỉnh khác nhau Điều kiện cần không thỏa

 G và G’ không đẳng cấu

Ví dụ 3:

G và H có cùng số cạnh, số đỉnh nhưng H có đỉnh e' bậc 1, trong khi đó G không

có đỉnh nào bậc 1 Điều kiện cần không thỏa  G và H không đẳng cấu

2 Đồ thị tự bù

Định nghĩa: Đồ thị G được gọi là tự bù (Self-complementary) nếu G đẳng cấu với

G

Trang 5

5

Định lý 1.4: Nếu hai đồ thị G và H có ma trận liền kề (được liệt kê theo một thứ tự

nào đó của các đỉnh) bằng nhau thì G và H là hai đồ thị đẳng cấu với nhau

Trang 6

6

II Tìm đồ thị con đẳng cấu

Đồ thị G = (V1, E1), và đồ thị H = (V2, E2)

Kiểm tra H là 1 đồ thị con đẳng cấu của G? Theo giải thuật của J.R.ULLMANN:

Ta có :

| V1 | = n;

| V2 | = m;

n ≥ m;

đồ thị G được biểu diễn bởi ma trận A(n x n)

đồ thị H được biểu diễn bởi ma trận B(m x m)

Ta tạo một ma trận M’(n x m) với các phần tử là 0 và 1, để mà mỗi dòng có duy nhất một số1 và không có cột nào có nhiều hơn một số 1 Ma trận M’ được dùng để hoán vị các dòng vàcác cột của ma trận B để tạo thành ma trận C Với C được định nghĩa như sau:

C = M’(M’B)T

trong đó T có nghĩa là sự chuyển vị Nếu điều đó đúng thì:

i,j (1 ≤ i,j ≤ n) : (A[i][j] = 1) → (C[i][j] = 1) ( 1 )

Và M’ là 1 đẳng cấu giữa H và 1 đồ thị con của G Trong trường hợp này , nếu M’[i][j] =

1

Thì điểm thứ j của đồ thị G là tương ứng với điểm thứ i của đồ thị H trong sự đẳng cấu này.Bắt đầu giải thuật liệt kê, chúng ta tạo một ma trận M0

(n x m) Thỏa: M0

[i][j] = 1 nếu bậc của đỉnh thứ j của H lớn hơn hoặc bằng với bậc của đỉnh thứ icủa G Ngược lại M0[i][j] = 0

Giải thuật liệt kê làm việc bằng cách tạo ra các ma trận M’ để mà trong mỗi ma trận M’

ta có:

M’[i][j] : M’[i][j] = 1 → M0

[i][j] = 1 Với mỗi M’, giải thuật sẽ kiểm tra tính đẳng cấu dựavào điều kiện (1) Trong cây tìm kiếm, những node cha có bậc d = n và chúng tương ứng với một ma trận M’ nhất định, những node con có bậc d < n và tương ứng với 1 ma trận M nhất định khác với ma trận M0 Giải thuật sử dụng mảng F có m phàn tử để đánh dấu các cột được chọn để lưu trạng thái tức thời của các đỉnh (Fi = 0 hoặc Fi = 1), mảng

E có n phần tử để đánh dấu các cột được chọn ở 1 bậc nào đó

Bước 1:

M = M0; d = 1; E[1] = 0;

Duyệt tất cả các đỉnh của đồ thị G, gán F[i] = 0 ( i = 1 n)

Trang 7

7

Bước 2: Kiểm tra xem có giá trị nào của j (j=1 m) sao cho M[d][j] = 1 và F[j] = 0 thì

Nếu d = 1 thì k:= E[1]

Ngược lại k:= 0;

Bước 3: k:= k+1

Nếu M[d][k] = 0 hoặc F[k] = 1 thì quay lại bước 3

Ngược lại FOR j = 1 n (j ≠ k) và gán M[d][j]= 0

Bước 4: Nếu d < n thì đến bước 6

Ngược lại : sử dụng điều kiện (1) và xuất kết quả nếu có 1 đồ thị con được tìm thấy Bước 5: Kiếm tra nếu không có giá trị của j thoả M[d][j] = 1 và F[j] = 0 thì đến bước 7

Ngược lại gán: M = M[d]

Rồi quay lại bước 3

Bước 6:

Gán : H[d] = k, F[k] = 1, d = d+1;

Rồi quay lại bước 2

Bước 7: Kiểm tra nếu d = 1 thì kết thúc thuật toán

Ngược lại gán: F[k] = 0, d = d -1, M = M[d] , k = E[d]

Thuật toán của Ullman thực hiện theo kiểu đệ qui quay lui Thuật toán này có rất nhiều hạn chế khi số đỉnh của đồ thị lớn Bài toán này thuộc lớp bài toán NP-Complete nên rất khó xử lý với số đỉnh lớn Tuy nhiên, thuật toán của Ullman được xem là tốt nhất trong

số các thuật toán dò tìm đẳng cấu đồ thị con trong đồ thị cha

Thuật toán dựa trên ý tưởng tìm tất cả các đẳng cấu đồ thị con bằng cách giảm dần hoán

vị ma trận P theo từng hàng Dể thấy thuật toán xuất ra tất cả ma trận hoán vị P tuy nhiên, đệ qui quay lui chỉ có thể áp dụng được cho 2 đồ thị tại cùng thời điểm Nếu có thêm đồ thị nào khác, thì thuật toán phải được gọi lại 1 lần Vì vậy, độ phức tạp thuật toán phụ thuộc tuyến tính vào số lượng đồ thị

Trang 8

8

III Thuật toán cải tiến với thời gian đa thức

Cách tổ chưc đồ thị trên một cây quyết định sao cho mỗi ma trận của đồ thị con được phân lớp theo cây Các đặc trưng được sử dụng trong quá trình phân lớp là các thành phần cá nhân trong các ma trận kề Điều quan trọng là mục tiêu của cây quyết định là phân lớp các ma trận kề Trong trường hợp dò tìm đẳng cấu đồ thị con, các ma trận này

sẽ nhỏ hơn các ma trận ban đầu Vì vậy, cần nhóm các thành phần cá nhân của ma trận kề thành các đặc trưng sao cho việc phân lớp của mỗi cấp trên cây quyết định độc lập kích thước ma trận kề được phân lớp Hình 1 minh hoạ việc này

Hình 1: biểu diển dòng-cột của ma trận kề Sau đó ta tạo một cây quyết định biểu diển tất cả hoán vị, mỗi hoán vị ứng với mật đẳng cấu, của một đồ thị Hình 2 mô tả cách xây dựng cây quyết định dùng để phân lớp các ma trận kề của đồ thị

Cây quyết định này có ưu điểm có thể biểu diển một lúc nhiều đồ thị Hình 3 minh hoạ 2

đồ thị g và g’ được biểu diển trên một cây

Tuy nhiên, cây quyết định trên vẫn còn có thể nén được với những phần tương đương với nhau, những thông tin trùng như vậy thực sự quá dư thừa Để tránh dư thừa thông tin thì

ta có cách biểu diển khác của cây quyết định Công việc này Messmer và Bunke gọi là trộn cây quyết định, hàm trộn cây quyết định được mô tả trong bài báo của tác giả Hình

4 minh hoạ cây quyết định đã được nén

Trang 9

9 Hình 2: cây quyết định dùng để phân lớp

Trang 10

10 Hình 3: Biểu diển cả 2 đồ thị g và g’

Hình 4: Cây được nén

Trang 11

11

Với cấu trúc cây như vậy, ta thấy chỉ cần tốn chi phí 1 lần cho việc xây dựng cây rồi sau

đó dùng để phân lớp (tìm kiếm) một đồ thị con đẳng cấu nào đó có tồn tại trên đồ thị hay không với thời gian rất nhanh Điều này rất cần thiết trong thời điểm hiện nay khi công việc lưu trữ của máy tính không còn là vấn đề khó khăn nửa, và giúp ta có thể thực hiện được trên những đồ thị lớn như là đồ thị lưu trữ mạng xã hội

Việc phân tích độ phức tạp xữ lý và đánh giá không gian lưu trữ được mô tả trong bài báo của tác giả cho thấy thời gian thực hiện đa thức

Trang 12

12

IV Chương trình minh hoạ

Hình 5: Chương trình minh hoạ Tìm đồ thị con đẳng cấu theo cây quyết định

Mô tả chương trình:

Chương trình được thực hiện bằng ngôn ngữ C# 2008 Thuật toán tìm đồ thị con đẳng cấu của Messmer và Bunke đề nghị

Chương trình trong hình 5 chỉ có một form, trong textfield thứ nhất cho phép nhập đồ thị lớn, textfield thứ 2 cho phép nhập đồ thị con Button thực hiện công việc xác định đồ thị con đẳng cấu có tồn tại trên đồ thị chính hay không Hai textfield còn lại là thông tin kết quả

Trang 13

13

Chương trình được thử trên nhiều đồ thị nhỏ 3x3, 4x4, 5x5, 6x6, với kết quả đã được kiểm chứng bằng tay, thì tính đúng đắn đã đạt được Chưa so sánh tốc độ xử lý với thuật toán của Ulman, đây là công việc có thể phát triển sau

Mã chương trình:

Tài liệu tham khảo:

[1] Bài giảng CSDL nâng cao – PGS TS Đỗ Phúc

[2] Subgraph Isomorphism in Polynomial Time – B.T Messmer, H.Bunke

public bool Validate( AdjMatrix graph, AdjMatrix subgraph, out String tree) {

//Xây dựng cây quyết định

AdjMatrix [] permutations = GetAllPermutation(graph);

Node root = new Node ( null );

foreach ( AdjMatrix p in permutations)

AppendGraphToDecisionTree(root, p);

tree = root.ToString( "" );

//Kiểm tra xem subgraph có thuộc cây quyết định

Node node = root;

for ( int i = 0; i < subgraph.GetSize(); i++)

{

//lấy dòng kết tiếp của đồ thị con

byte [] line = subgraph.GetLine(i);

//kiểm tra xem nó có thuộc nhánh con đang xét

//nếu thuộc thì cứ thế đi tiếp

Node nextNode = null ;

foreach ( Node child in node.Children)

if (child.HasValue(line))

{

nextNode = child;

break ;

}

//không thuộc return false

if (nextNode == null )

return false ;

node = nextNode;

}

return true ;

}

Ngày đăng: 10/04/2015, 14:35

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w