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

Giải bài toán đồ thị đẳng cấu dùng thuật toán VF

20 674 2

Đ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 20
Dung lượng 767,7 KB

Nội dung

Liên quan đến các bài toán trong đồ thị, bài toán tìm đồ thị con đẳng cấu cho đến nay vẫn chưa có lời giải hoàn chỉnh do độ phức tạp của bài toán là rất lớn khi đồ thị có số đỉnh lớn và

Trang 1

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

KHOA KHOA HỌC MÁY TÍNH

TIẾU LUẬN

Ở Ệ N NG O:

G Ả TO N

ĐỒ T Đ NG Ấ

NG T ẬT TO N

Giảng viên hướng dẫn: PGS TS H C Học viên thực hiện: NGUYỄN HƯƠNG ANH Lớp: Cao học Khóa 6 MSHV: CH1101159

Trang 2

Em xin bày tỏ lòng biết ơn sâu sắc đến PGS TS h c, trường ại học Công Nghệ Thông Tin, HQG T HCM đã tận tình hướng dẫn, cung cấp kiến thức, truyền đạt những kinh nghiệm quí báu giúp em hoàn thành tốt bài tiểu luận này

Xin cám ơn cha, mẹ, các anh, chị em trong gia đình đã h trợ, lo lắng và động viên ồng thời, xin cám ơn tất cả các bạn đã ủng hộ, gi p đỡ chúng tôi trong quá trình thực hiện bài tiểu luận này

Dù đã có nhiều cố gắng nhưng chắc chắn sẽ không tránh khỏi những thiếu sót, em rất mong nhận được sự đóng góp ý kiến của các Thầy giáo, Cô giáo và các bạn để đề tài này được hoàn thiện hơn

Em xin chân thành cảm ơn!

Tp Hồ Chí Minh, tháng 05 năm 2012

Học viên

Trang 3

(Của giảng viên hướng dẫn)

Trang 4

N I DUNG T M T T 1

Chương 1: Lý thuyết đồ thị 2

1.1 ồ thị 2

1.2 Các định nghĩa liên quan 3

1.2.1 Cạnh liên thuộc, đỉnh kề, bậc 3

1.2.2 ường đi và chu trình 4

1.3 Biểu diễn đồ thị 4

1.3.1 Ma trận kề 4

1.3.2 Danh sách cạnh 5

1.3.3 Danh sách kề 6

1.3.4 Danh sách liên thuộc 7

Chương 2: Bài toán tìm đồ thị đẳng cấu 8

2.1 Giới thiệu bài toán 8

2.2 Thuật toán VF 9

2.3 Biểu diễn thuật toán VF 10

2.4 Các luật xét tính khả thi của trạng thái 11

2.5 ộ phức tạp của thuật toán VF 12

Chương 3: Kết luận 13

H L C 14

TÀI LIỆU THAM KHẢO 16

Trang 5

NỘ NG TÓM TẮT

ồ thị là một cấu trúc dữ liệu được sử dụng rộng rãi trong việc biểu diễn thông tin

và được ứng dụng rất đa dạng trong quản lý và khai phá dữ liệu Liên quan đến các bài toán trong đồ thị, bài toán tìm đồ thị con đẳng cấu cho đến nay vẫn chưa có lời giải hoàn chỉnh do độ phức tạp của bài toán là rất lớn khi đồ thị có số đỉnh lớn và mật độ các cạnh dày Cho đến nay đã có khoảng 5 thuật toán đã được đưa ra nhằm giải quyết bài toán đồ thị đẳng cấu bao gồm Ullman, SD, Nauty, VF và VF2 Trong số đó hiệu

quả nhất là VF và VF2 với VF2 là thuật toán cải tiến dựa trên VF

Báo cáo sẽ trình bày về cơ sở lý thuyết đồ thị, qua đó đưa ra khái niệm về bài toán đẳng cấu đồ thị, ý tưởng của thuật toán VF và cách cài đặt, đồng thời tính toán độ phức tạp của thuật toán này nhằm làm rõ tính hiệu quả của thuật toán VF

Trang 6

hương 1: ý thuyết đồ thị

1.1 Đồ thị

ồ thị là mô hình biểu diễn một tập các đối tượng và mối quan hệ hai ngôi giữa các đối tượng:

Graph = Object + Connections

G = (V,E)

Có thể định nghĩa đồ thị G là một cặp (V, E): G = (V, E) Trong đó V là tập các đỉnh (vertices) biểu diễn các đối tượng và E gọi là tập các cạnh (edges) biểu diễn mối quan hệ giữa các đối tượng Chúng ta quan tâm tới mối quan hệ hai ngôi (pairwise relations) giữa các đối tượng nên có thể coi E là tập các cặp (u, v) với u và v là hai đỉnh của V biểu diễn hai đối tượng có quan hệ với nhau

Hình 1: Các ứng dụng của đồ thị

Có thể phân loại đồ thị G = (V, E) theo đặc tính và số lượng của tập các cạnh E:

 G được gọi là đơn đồ thị (hay gọi tắt là đồ thị) nếu giữa 2 đỉnh u, v ϵ V có nhiều nhất là 1 cạnh trong E nối từ u đến v

 G được gọi là đa đồ thị (multigraph) nếu giữa 2 đỉnh u, v ϵ V có thể có nhiều hơn 1 cạnh trong E nối u và v Nếu có nhiều cạnh nối giữa hai đỉnh u, v ϵ V thì những cạnh đó được gọi là cạnh song song (parallel edges)

 G được gọi là đồ thị vô hướng (undirected graph) nếu các cạnh trong E là không định hướng, tức là cạnh nối hai đỉnh u, v ϵ V bất kì cũng là cạnh nối 2 đỉnh v, u Hay nói cách khác, tập E gồm các cặp (u, v) không tính thứ tự: (u, v) = (v, u)

 G được gọi là đồ thị có hướng (directed graph) nếu các cạnh trong E là có định hướng, tức là có thể có cạnh nối từ đỉnh u đến đỉnh v nhưng chưa chắc

Trang 7

có cạnh nối từ đỉnh v đến đỉnh u Hay nói cách khác, tập E gồm các cặp (u, v) có tính thứ tự: (u, v) ≠ (v, u) Trong đồ thị có hướng, các cạnh còn được gọi là các cung (arcs)

Hình 2: Phân loại đồ thị

1.2 ác định nghĩa liên quan

Như trên định nghĩa đồ thị G = (V, E) là một cấu trúc rời rạc, tức là các tập V và E

là tập không quá đếm được, vì vậy ta có thể đánh số thứ tự 1, 2, 3… cho các phần tử của tập V và E và đồng nhất các phần tử thuộc tập V và E với số thứ tự của chúng Hơn nữa, đứng trên phương diện người lập trình cho máy tính thì ta chỉ quan tâm đến các đồ thị hữu hạn (V và E là tập hữu hạn), chính vì vậy từ đây về sau, nếu không chú thích gì thêm thì khi nói tới đồ thị, ta hiểu rằng đó là đồ thị hữu hạn

1.2.1 Cạnh liên thuộc, đỉnh kề, bậc

ối với đồ thị vô hướng G = (V, E) Xét một cạnh e ϵ E, nếu e = (u,v) thì ta nói hai đỉnh u và v là kề nhau (adjacent) và cạnh e này liên thuộc (incident) với đỉnh u và đỉnh

v

Với một đỉnh v trong đồ thị vô hướng, ta định nghĩa bậc (degree) của v, kí hiệu deg(v) là số cạnh liên thuộc với v Trên đơn đồ thị thì số cạnh liên thuộc với v cũng là

số đỉnh kề với v

ối với đồ thị có hướng G = (V, E) Xét trong một cung e ϵ E, nếu e = (u,v) thì ta nói u nối tới v và v nối từ u, cung e là đi ra khỏi đỉnh u và đi vào đỉnh v ỉnh u khi đó được gọi là đỉnh đầu, đỉnh v được gọi là đỉnh cuối của cung e

Trang 8

Với m i đỉnh v trong đồ thị có hướng, ta định nghĩa: Bán bậc ra (out-degree) của v

kí hiệu deg+(v) là số cung đi ra khỏi nó; bán bậc vào (in-degree) kí hiệu deg-(v) là số cung đi vào đỉnh đó

1.2.2 Đường đi và chu trình

Một dãy các đỉnh:

P = <p0 , p1 … pk>

Sao cho (pi-1, pi) ϵ E,với mọi i: 1≤ i ≤ k được gọi là một đường đi (path), đường đi này gồm k+1 đỉnh p0 , p1 … pk và k cạnh (p0, p1), (p1, p2), …, (pk-1, pk) Nếu có một đường đi như trên thì ta nói pk, , kí hiệu p0 ~> pk ỉnh p0 được gọi là đỉnh đầu và đỉnh

pk gọi là đỉnh cuối của đường đi Các đỉnh p1 , p2 ,…, pk-1 được gọi là đỉnh trong của đường đi

Một đường đi gọi là đơn giản (simple) hay đường đi đơn nếu tất cả các đỉnh trên đường đi là hoàn toàn phân biệt ường đi = <p0 , p1 … pk> trở thành chu trình (circuit) nếu p0 = pk Trên đồ thị có hướng, chu trình được gọi là chu trình đơn nếu k

≥ 3 và các đỉnh p1, p2, …, pk hoàn toàn phân biệt

1.3 iểu diễn đồ thị

Khi lập trình giải các bài toán được mô hình hóa bằng đồ thị, việc đầu tiên ta cần làm tìm cấu trúc dữ liệu để biểu diễn đồ thị sao cho việc giải quyết bài toán được thuận tiện nhất

Có rất nhiều phương pháp biểu diễn đồ thị, trong bài này chúng ta sẽ khảo sát một

số phương pháp phổ biến nhất Tính hiệu quả của từng phương pháp biểu diễn sẽ được chỉ rõ hơn trong từng thuật toán cụ thể

1.3.1 Ma trận kề

Với G = (V, E) là một đơn đồ thị có hướng trong đó |V| = n, ta có thể đánh số các đỉnh từ 1 đến n và đồng nhất m i đỉnh với số thứ tự của nó Bằng cách đánh số như vậy, đồ thị G có thể biểu diễn bằng ma trận vuông A = {aij}n*n Trong đó:

aij = 1 nếu (i,j) ϵ E

0 nếu (i,j) không ϵ E

Trang 9

Với mọi i, giá trị của các phần tử trên đường chéo chính ma trận A: {aij}có thể đặt tùy theo mục đích cụ thể, chẳng hạn đặt bằng 0 Ma trận A xây dựng như vậy được gọi

là ma trận kề (adjacent matrix) của đồ thị G Việc biểu diễn đồ thị vô hướng được qui

về việc biểu diễn phiên bản có hướng tương ứng: thay m i cạnh (i,j) bởi hai cung ngược hướng nhau: (i,j) và (j,i)

ối với đa đồ thị thì việc biểu diễn cũng tương tự như trên, chỉ có điều nếu như (i,j)

là cung thì aij là số cạnh nối giữa đỉnh i và đỉnh j

Hình 3: Ma trận kề biểu diễn đồ thị

Ưu điểm của ma trận kề:

 ơn giản, trực quan, dễ cài đặt trên máy tính

 Kiểm tra 2 đỉnh liên kết rất đơn giản thông qua phép so sánh giá trị aij ≠ 0 Nhược điểm của ma trận kề:

 Luôn đòi hỏi n2 ô nhớ để lưu trữ dữ liệu gây lãng phí bộ nhớ

 Khi bài toán yêu cầu duyệt qua tất cả các đỉnh j kề với đỉnh i, ta luôn phải duyệt qua n đỉnh để kiểm tra giá trị aij

1.3.2 Danh sách cạnh

Hình 4: Danh sách cạnh biểu diễn đồ thị

Trang 10

Với đồ thị G = (V, E) có n đỉnh, m cạnh, ta có thể liệt kê tất cả các cạnh của đồ thị trong một danh sách, m i phần tử của danh sách là một cặp (x, y) tương ứng với một cặp của E Trong trường hợp đồ thị có hướng thì (x, y) là một cung đi từ x đến y Cách biểu diễn này gọi là danh sách cạnh

Ưu điểm của danh sách cạnh:

 Trong trường hợp đồ thị thưa sẽ tiết kiệm được không gian lưu trữ vì chỉ sử dụng m ô nhớ

 Trong các trường hợp phải xét tất cả các cạnh thì việc duyệt qua các cạnh sẽ

dễ dàng hơn và ít phức tạp hơn

Nhược điểm của danh sách cạnh:

 Khi cần duyệt các đỉnh j kề với đỉnh i nào đó của đồ thị ta phải duyệt hết m cạnh

 Khi kiểm tra 2 đỉnh i, j có kề nhau hay không cũng phải duyệt qua m cạnh

 Khi gặp đồ thị dày thì độ phức tạp thuật toán sẽ lên cao do 2 nhược điểm trên

1.3.3 Danh sách kề

ể khắc phục nhược điểm của 2 cách biểu diễn đồ thị trên, người ta đưa ra phương pháp biểu diễn đồ thị bằng danh sách kề (adjacency list) Trong cách biểu diễn này, với

m i đỉnh v của đồ thị ta cho tương ứng với nó một danh sách các đỉnh kề với u

Với đồ thị có hướng G = (V, E) V gồm n đỉnh và E gồm m cung Có hai cách cài đặt danh sách kề phổ biến:

 Forward Star: với m i đỉnh u lưu trữ một danh sách adj[u] chứa các đỉnh nối

từ u: adj[u] = { v: (u, v) ϵ E }

 Reserve Star: với m i đỉnh v lưu trữ một danh sách adj[v] chứa các đỉnh nối đến v: adj[v] = { u: (u, v) ϵ E }

Ưu điểm của danh sách kề

 ối với danh sách kề , việc duyệt các đỉnh kề với đỉnh v cho trước là hết sức

dễ dàng

 Việc duyệt các cạnh đơn giản vì một cạnh thực ra là nối một đỉnh với một đỉnh khác kề nó

Nhược điểm của danh sách kề

Trang 11

 Danh sách kề yếu hơn mà trận kề ở việc kiểm tra (u, v) có phải là cạnh hay không vì phải duyệt qua tất cả danh sách kề của u hoặc của v

1.3.4 Danh sách liên thuộc

Danh sách liên thuộc (incidence lists) là một mở rộng của danh sách kề Nếu như trong biểu diễn của danh sách kề, m i đỉnh được cho tương ứng với một danh sách các đỉnh kề thì trong biểu diễn danh sách liên thuộc, m i đỉnh được cho tương ứng với một danh sách cạnh liên thuộc

ặc biệt trong trường hợp đồ thị có hướng, ta có thể xây dựng danh sách liên thuộc

từ danh sách cạnh tương đối dễ dàng bằng cách bổ sung các con trỏ liên kết

Trang 12

hương 2: ài toán tìm đồ thị đẳng cấu

2.1 Giới thiệu bài toán

hép đẳng cấu đồ thị (graph isomorphism) là một song ánh giữa các tập đỉnh của hai đồ thị G1 và G2:

f: M(G1) → M(G2)

với tính chất rằng cặp đỉnh ni và nj bất kỳ của G1 kề nhau khi và chỉ khi hai đỉnh f(ni) và f(nj) kề nhau trong đồ thị G2

Nếu có thể xây dựng một phép đẳng cấu giữa hai đồ thị, ta nói rằng hai đồ thị này đẳng cấu với nhau

Bài toán đồ thị đẳng cấu xác định xem hai đồ thị có đẳng cấu với nhau hay không

Ví dụ: xét 2 đồ thị:

Tuy trông rất khác nhau, ch ng là hai đồ thị đồng cấu

Dưới đây là một phép đẳng cấu giữa ch ng:

Quá trình tìm đẳng cấu giữa 2 đồ thị G1 = (N1, B1) và G2 = (N2, B2) là quá trình tìm

ra ánh xạ M từ đồ thị G1 sang G2 Có nhiều luật khác nhau được áp dụng cho M và tương ứng với các luật thì sẽ có nhiều loại đẳng cấu khác nhau: đơn đẳng cấu, đẳng cấu hoàn toàn, đẳng cấu giữa đồ thị và đồ thị con trong đó đẳng cấu giữa đồ thị và đồ thị con thường được sử dụng nhiều nhất

Ta có thể định nghĩa M là một tập có thứ tự các cặp (n, m) với n ϵ G1 và m ϵ G2 thể hiện ánh xạ từ n đến m:

M = { (n, m) ϵ N1 x N2 | n ánh xạ đến m }

Trang 13

Theo lý thuyết, việc giải quyết bài toán này có thể được thực hiện bằng cách duyệt qua tất cả các trạng thái ánh xạ có thể có và chọn ra một lời giải phù hợp với loại đẳng cấu cần tìm (sử dụng thuật toán Brute Force)

2.2 Thuật toán VF

Thuật toán VF dựa trên khái niệm không gian mô tả trạng thái (viết tắt tiếng anh là SSR) mô tả quá trình tìm đẳng cấu của đồ thị với m i trạng thái s thể hiện một phần của lời giải Khi đó M(s) là tập con của M và chứa các thành phần thuộc M

ể giảm bớt độ phức tạp của bài toán, cụ thể hơn là giảm bớt các trường hợp cần phải duyệt, với m i trạng thái trong đoạn từ trạng thái s0 đến trạng thái lời giải, chúng

ta đưa vào các luật để xét tính khả thi của trạng thái tương ứng

Tại bài toán này, từ m i trạng thái si đến trạng thái sj, thao tác chúng ta cần làm là thêm vào s một cặp ánh xạ (n, m) nào đó sao cho tính đẳng cấu không thay đổi Nếu việc đưa cặp ánh xạ mới vào làm thay đổi tính đẳng cấu thì việc duyệt tiếp các trạng thái sau khi thêm cặp ánh xạ này là không cần thiết

Ví dụ: ch ng ta xét 2 đồ thị G1 và G2 sau:

Lời giải của bài toán: M = { (n1, m4), (n2, m1), (n3, m2), (n4, m3) }

Giả sử ta đang ở trạng thái M(si) = { (n1, m4), (n2, m1) } L c đó trạng thái của 2 đồ thị đẳng cấu ta xây dựng được như sau:

Trang 14

Sau đó ch ng ta lại tiếp tục tìm một cặp ánh xạ (n, m) sao cho vẫn đảm bảo tính đẳng cấu của đồ thị tức là tìm trạng thái sj mới dựa trên si nhƣ sau:

L c đó trạng thái M(sj) = { (n1, m4), (n2, m1), (n3, m2) } L c đó trạng thái của 2 đồ thị đẳng cấu ta xây dựng đƣợc nhƣ sau:

Việc lặp đi lặp lại các thao tác tính toán theo từng trạng thái nhƣ trên sẽ đƣa ch ng

ta dần đi đến kết quả cuối cùng của bài toán

2.3 iểu diễn thuật toán

Thuật toán VF đƣợc biểu diễn nhƣ một thuật toán tìm kiếm theo chiều sâu nhƣ sau: PROCEDURE Match(s)

INPUT: trạng thái hiện tại s với dữ liệu khởi tạo s0 có M(s0) = Ø

OUTPUT: ánh xạ giữa 2 đồ thị đẳng cấu

IF M(s) chứa tất cả các đỉnh THEN

OUTPUT M(s) ELSE

Tính tập P(s) là tập các cặp ánh xạ ứng viên có thể thêm vào M(s)

Trang 15

FOREACH p ϵ P(s)

IF việc thêm p vào M(s) là khả thi THEN

Tính trạng thái s’ đạt được khi thêm p vào M(s) CALL Match(s’)

END IF END FOREACH END IF

END PROCEDURE

2.4 ác luật xét tính khả thi của trạng thái

ối với m i đỉnh n’ là cha của n trong tập ánh xạ thu được, đỉnh m’ tương ứng là cha của đỉnh m tương ứng

ối với m i đỉnh n’ là con của n trong tập ánh xạ thu được, đỉnh m’ tương ứng là con của đỉnh m tương ứng

ối với m i đỉnh n thuộc tập ánh xạ thu được, số đỉnh là cha (con) của đỉnh n nằm trong tập các đỉnh vào Tin1(s) ở trạng thái s bằng với số đỉnh là cha (con) của đỉnh m tương ứng nằm trong tập các đỉnh vào Tin

2(s) ở trạng thái s

ối với m i đỉnh n thuộc tập ánh xạ thu được, số đỉnh là cha (con) của đỉnh n nằm trong tập các đỉnh ra Tout1(s) ở trạng thái s bằng với số đỉnh là cha (con) của đỉnh m tương ứng nằm trong tập các đỉnh ra Tout

2(s) ở trạng thái s

ối với m i đỉnh n thuộc tập ánh xạ thu được, số đỉnh là cha (con) của đỉnh n không nằm trong cả tập các đỉnh ra Tout1(s) lẫn tập M1(s) ở trạng thái s bằng với số đỉnh là cha (con) của đỉnh m tương ứng nằm không trong tập các đỉnh ra Tout (s) lẫn

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

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w