Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 13 trang
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
Nguyễn Thị Ngọc Thanh – CH1101132 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 NGUYỄN THỊ NGỌC THANH CH1101132 GIẢNG VIÊN HƢỚNG DẪN PGS.TS. ĐỖ PHÚC 2012 Nguyễn Thị Ngọc Thanh – CH1101132 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. Nguyễn Thị Ngọc Thanh – CH1101132 3 I. Đồ thị đẳng cấu 1. Định nghĩa Các đồ thị G 1 = (V 1 ,E 1 ) và G 2 = (V 2 ,E 2 ) được gọi là đẳng cấu với nhau nếu có một song ánh f: V 1 V 2 sao cho nếu a và b là liền kề trong V 1 thì f(a) và f(b) liền kề trong V 2 ; a, b V 1 . 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ị G 1 và G 2 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) v 4 v 3 u 3 u 4 v 2 v 1 u 2 u 1 Nguyễn Thị Ngọc Thanh – CH1101132 4 u 1 v 1 u 2 v 4 u 3 v 2 u 4 v 3 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 Nguyễn Thị Ngọc Thanh – CH1101132 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. Nguyễn Thị Ngọc Thanh – CH1101132 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 M 0 (n x m) Thỏa: M 0 [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 M 0 [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 → M 0 [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 M 0 . 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 = M 0 ; 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) Nguyễn Thị Ngọc Thanh – CH1101132 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 bước 7. Ngược lại: M[d] := M 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ị. Nguyễn Thị Ngọc Thanh – CH1101132 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. Nguyễn Thị Ngọc Thanh – CH1101132 9 Hình 2: cây quyết định dùng để phân lớp Nguyễn Thị Ngọc Thanh – CH1101132 10 Hình 3: Biểu diển cả 2 đồ thị g và g’ Hình 4: Cây được nén [...]... 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ả 12 Nguyễn Thị Ngọc Thanh – CH1101132 Chương trình được thử trên nhiều đồ thị nhỏ 3x3,... 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 11 Nguyễn Thị Ngọc Thanh – CH1101132 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. .. Thị Ngọc Thanh – CH1101132 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ị. .. 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; } Tài liệu tham khảo: [1] Bài giảng CSDL nâng cao – PGS TS . H là hai đồ thị đẳng cấu với nhau. Nguyễn Thị Ngọc Thanh – CH1101132 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. Thị Ngọc Thanh – CH1101132 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. 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ị G 1 và G 2 là đẳng cấu thì