Nội dung của tiểu luận này gồm: Chương 1: Giới thiệu tổng quan về lý thuyết đồ thị Chương 2: Bài toán Maximal Clique và giải pháp Chương 3: Giới thiệu một thuật toán Polynominal – time á
Trang 1Giảng viên hướng dẫn: PGS TS ĐỖ VĂN NHƠN
Học viên thực hiện: NGUYỄN VĂN KIỆT
Khóa: CAO HỌC KHÓA 08
Mã số học viên: CH1301095
TP Hồ Chí Minh, tháng 10 năm 2014
Trang 2LỜI MỞ ĐẦU……… 1
DANH MỤC HÌNH……… 2
Chương 1: TỔNG QUAN VỀ ĐỒ THỊ……….3
1.1 Nhắc lại một số định nghĩa 3
1.2 Giới thiệu về CLIQUE của đồ thị 5
1.3 Ứng dụng của bài toán Clique cực đại 8
Chương 2: BÀI TOÁN MAXIMAL CLIQUE VÀ GIẢI PHÁP……… 9
2.1 Bài toán Maximal Clique 11
2.2 Xây dựng mô hình của bài toán 13
2.3 Xây dựng giải pháp cho bài toán 13
2.4 Chứng minh tính đúng đắn của thuật toán 14
2.5 Đánh giá độ phức tạp của thuật toán 16
2.6 Đánh giá thực nghiệm 16
Chương 3: GIỚI THIỆU MỘT THUẬT TOÁN POLYNOMIAL – TIME ÁP DỤNG CHO BÀI TOÁN TÌM CLIQUE CỰC ĐẠI……….17
3.1 Mở rộng bài toán Maximal Clique phù hợp với thực tế 17
3.2 Giới thiệu hướng tiếp cận thuật giải 18
3.3 Các thủ tục sử dụng trong polynomial-time algorithm 18
3.4 Chứng minh tính đúng đắn của thuật toán 20
3.5 Phân tích độ phức tạp 23
3.6 Cài đặt thuật toán và thực hiện một số demo chương trình 24
Trang 3LỜI MỞ ĐẦU
Tôi xin chân thành gửi lời cám ơn chân thành đến PGS TS Đỗ Văn Nhơn,
người thầy nghiên cứu khoa học nghiêm túc và nhiệt tâm Thầy là người đã truyền
đạt cho tôi những kiến thức quý báu trong môn học “Thuật toán và phương pháp giải quyết vấn đề” Nhờ có những kiến thức của thầy mà tôi có thể có đủ kiến thức
cùng những công cụ cần thiết để thực hiện được bài tiểu luận của môn học này
Sau một thời gian học tập môn Thuật toán và phương pháp giải quyết vấn đề
và cùng với sự tìm hiểu từ các tài liệu từ các bài báo khoa học và các luận văn trên
Internet Tôi xin chọn vấn đề nghiên cứu về Giải pháp cho bài toán Clique cực đại
để làm tiểu luận cho môn học này
Nội dung của tiểu luận này gồm:
Chương 1: Giới thiệu tổng quan về lý thuyết đồ thị
Chương 2: Bài toán Maximal Clique và giải pháp
Chương 3: Giới thiệu một thuật toán Polynominal – time áp dụng cho bàitoán tìm Maximal Clique
Do thời gian nghiên cứu có hạn và bản thân tôi cũng có một số hạn chế nênkhông tránh khỏi những thiếu sót trong báo cáo này Kính mong nhận được sự thôngcảm và góp ý của PGS TS Đỗ Văn Nhơn để hướng nghiên cứu của tôi sắp tới sẽhoàn thiện và đạt hiệu quả hơn Tôi xin chân thành cảm ơn!
Trang 4DANH MỤC HÌNH
Hình 1.1: Đồ thị đầy đủ K7 6
Hình 1.2: Đồ thị G, phần bù đồ thị G, đồ thị đầy đủ và Clique 7
Hình 2.1: Các loại thức ăn và thực phẩm 9
Hình 2.2: Sự lựa chọn (cà chua, lạp xưởng, tỏi và tương ớt) 10
Hình 2.3: Sự lựa chọn (cà chua, tỏi, tương ớt và gà) 10
Hình 2.4: Đồ thị Octahedron với clique cực đại ( n=6, k=3) 12
Hình 2.5: Đồ thị 6 đỉnh 15
Hình 3.1: Đồ thị 12 đỉnh và Clique cực đại với k = 5 17
Hình 3.2: Phần bù của đồ thị Frutch 20
Hình 3.3: Clique cực đại 22
Hình 3.4: Đồ thị Tetrahedron với một clique cực đại (n=4, k=4) 25
Hình 3.5: Đồ thị Octahedron với clique cực đại ( n= 6, k = 3) 26
Hình 3.6: Đồ thị Turán T3,8 với clique cực đại (n=8, k=3) 28
Hình 3.7: Phần bù của đồ thị Herschel với Clique cực đại (n=11, k=6) 30
Trang 5Hình 3.10: Phần bù của đồ thị Dodecahedron với một clique cực đại (n=20, k=8) .36
Chương 1 TỔNG QUAN VỀ ĐỒ THỊ
Lý thuyết đồ thị (Graph Theory) là một ngành khoa học được phát triển từ lâunhưng lại có nhiều ứng dụng hiện đại Những ý tưởng cơ bản của nó được đưa ra từthế kỷ 18 bởi nhà toán học Thụy Sĩ tên là Leonhard Euler Ông đã dùng đồ thị đểgiải quyết bài toán 7 chiếc cầu Konigsberg nổi tiếng
Đồ thị cũng được dùng để giải các bài toán trong nhiều lĩnh vực khác nhau Thí
dụ, dùng đồ thị để xác định xem có thực hiện một mạch điện trên một bảng điệnphẳng được không Chúng ta cũng có thể phân biệt hai hợp chất hóa học có cùngcông thức phân tử nhưng có cấu trúc khác nhau nhờ đồ thị Chúng ta cũng có thể xácđịnh xem hai máy tính có được nối với nhau bằng một đường truyền thông haykhông nếu dùng mô hình đồ thị mạng máy tính Đồ thị với các trọng số được gáncho các cạnh của nó có thể dùng để giải các bài toán như bài toán tìm đường đi ngắnnhất giữa hai thành phố trong một mạng giao thông Chúng ta cũng có thể dùng đồthị để lập lịch thi và phân chia kênh cho các đài truyền hình
1.1 Nhắc lại một số định nghĩa
1.1.1 Đồ thị
Đồ thị (Graph) là một cấu trúc dữ liệu rời rạc bao gồm các đỉnh và các cạnh
nối các cặp đỉnh này Chúng ta phân biệt đồ thị thông qua kiểu và số lượng cạnh nốigiữa các cặp đỉnh của đồ thị
Trang 6Định nghĩa 1: Một đơn đồ thị G = (V, E) gồm một tập khác rỗng V mà các
phần tử của nó gọi là các đỉnh và một tập E mà các phần tử của nó gọi là các cạnh,
đó là các cặp không có thứ tự của các đỉnh phân biệt
Định nghĩa 2: Một đồ thị có hướng G = (V, E) gồm một tập khác rỗng V mà
các phần tử của nó gọi là các đỉnh và một tập E mà các phần tử của nó gọi là cáccung, đó là các cặp có thứ tự của các phần tử thuộc V
1.1.2 Bậc của đỉnh
Định nghĩa 3: Hai đỉnh u và v trong đồ thị (vô hướng) G=(V,E) được gọi là
liền kề nếu (u,v) ∈ E Nếu e = (u,v) thì e gọi là cạnh liên thuộc với các đỉnh u và v.Cạnh e cũng được gọi là cạnh nối các đỉnh u và v Các đỉnh u và v gọi là các điểmđầu mút của cạnh e
Định nghĩa 4: Bậc của đỉnh v trong đồ thị G=(V,E), ký hiệu deg(v), là số các
cạnh liên thuộc với nó, riêng khuyên tại một đỉnh được tính hai lần cho bậc của nó.Đỉnh v gọi là đỉnh treo nếu deg(v)=1 và gọi là đỉnh cô lập nếu deg(v)=0
1.1.3 Biểu diễn đồ thị bằng ma trận
Định nghĩa 5: Cho đồ thị G=(V,E) (vô hướng hoặc có hướng), với
V={v1,v2, , vn} Ma trận liền kề của G ứng với thứ tự các đỉnh v1,v2, , vn là ma trận
Trang 7Định nghĩa 6: Cho đồ thị vô hướng G=(V,E), v1, v2, , vn là các đỉnh và e1,
e2, , em là các cạnh của G Ma trận liên thuộc của G theo thứ tự trên của V và E là
ma trận
ij 1 1
Định nghĩa 7: Đường đi độ dài n từ đỉnh u đến đỉnh v, với n là một số
nguyên dương, trong đồ thị G=(V,E) là một dãy các cạnh (hoặc cung) e1, e2, , encủa đồ thị sao cho e1 = (x0, x1), e2 = (x1,x2), , en = (xn-1,xn), với x0=u và xn=v Khi đồthị không có cạnh (hoặc cung) bội, ta ký hiệu đường đi này bằng dãy các đỉnh x0,
x1, , xn Đường đi được gọi là chu trình nếu nó bắt đầu và kết thúc tại cùng mộtđỉnh Đường đi hoặc chu trình gọi là đơn nếu nó không chứa cùng một cạnh (hoặccung) quá một lần Một đường đi hoặc chu trình không đi qua đỉnh nào quá một lần(trừ đỉnh đầu và đỉnh cuối của chu trình là trùng nhau) được gọi là đường đi hoặcchu trình sơ cấp Rõ ràng rằng một đường đi sơ cấp là đường đi đơn
Định nghĩa 8: Một đồ thị (vô hướng) được gọi là liên thông nếu có đường đi
giữa mọi cặp đỉnh phân biệt của đồ thị
Một đồ thị không liên thông là hợp của hai hay nhiều đồ thị con liên thông,mỗi cặp các đồ thị con này không có đỉnh chung Các đồ thị con liên thông rời nhaunhư vậy được gọi là các thành phần liên thông của đồ thị đang xét Như vậy, một đồthị là liên thông khi và chỉ khi nó chỉ có một thành phần liên thông
Trang 81.2 Giới thiệu về CLIQUE của đồ thị
Trong lý thuyết đồ thị, một Clique trong đồ thị vô hướng G là tập các đỉnh V(V là tập con của tập các đỉnh của G) thỏa mãn điều kiện: với mỗi cặp đỉnh thuộc Vluôn tồn tại một cạnh của G nối chúng Do vậy một đồ thị con được tạo ra từ V sẽ làmột đồ thị đầy đủ Kích thước của một clique là số đỉnh của nó
Định nghĩa 9: Đồ thị đầy đủ n đỉnh, kí hiệu là Kn, là là đồ thị đơn vô hướng
mà giữa hai đỉnh bất kỳ nó luôn có cạnh nối
Đồ thị Kn có tất cả n(n-1)/2 cạnh Nó là đồ thị đơn có nhiều cạnh nhất, đồngthời là đồ thị chính quy bậc n-1
Ví dụ 2.1: Một đồ thị đầy đủ K7 (7 đỉnh) Nếu đây là một đồ thị con thì tậpđỉnh của nó sẽ tạo nên một clique kích thước 7
Trang 9Định nghĩa 10: Clique cực đại (maximal clique) của G là clique không
thuộc bất cứ một clique nào khác rộng hơn nó, nói cách khác là không thể thêm bất
cứ đỉnh nào vào một clique cực đại để tạo ra clique có số đỉnh lớn hơn
Định nghĩa 11: Clique lớn nhất (maximum clique) của G là clique có số đỉnh
lớn nhất của G Một clique lớn nhất đồng thời là một clique cực đại, nhưng điềungược lại chưa chắc đã đúng
Định nghĩa 12: Chỉ số clique (clique number) của đồ thị G là số đỉnh của
clique lớn nhất trong G Chỉ số clique của đồ thị G được ký hiệu là ω(G)
Định nghĩa 13: Phần bù của đồ thị G (kí hiệu là G) có tập đỉnh giống với tập´
đỉnh của G và tập cạnh không nằm trong tập cạnh của G
Định nghĩa 14: Đồ thị đầy đủ (Complete Graph): với mỗi cặp đỉnh được nối
với nhau bằng một cạnh
Trang 10Hình 1.2: Đồ thị G, phần bù đồ thị G´, đồ thị đầy đủ và Clique
1.3 Ứng dụng của bài toán Clique cực đại
Thuật toán tìm kiếm Clique lớn nhất có nhiều ứng dụng trong khoa học máytính như mô tả và giải quyết bài toán lập lịch, lý thuyết mã, thị giác máy tính vànhận dạng mẫu, …
Trang 13Hình 2.2: Sự lựa chọn (cà chua, lạp xưởng, tỏi và tương ớt)
Hoặc lựa chọn:
Hình 2.3: Sự lựa chọn (cà chua, tỏi, tương ớt và gà)
Trang 14Chúng ta xem mỗi thực phẩm là một đỉnh của đồ thị, và hai thực phẩm khácnhau kết hợp được với nhau được xem là một cạnh Để giải quyết bài toán trên,chúng ta quy về về bài toán tìm Clique cực đại Và bây giờ, chúng ta tìm hiểu quabài toán tìm kiếm Clique cực đại trên đồ thị.
2.1 Bài toán Maximal Clique
2.1.1 Phát biểu bài toán
Cho đồ thị G = (V, E) và số kN* thỏa mãn |k|≤|V| Tồn tại hay không mộttập con V’ của V sao cho |V’|≥k mà mọi cặp đỉnh trong V’ đều được nối bởi mộtcạnh trong E
Ví dụ 2.1: Cho đồ thị Octahedron với n = 6 đỉnh Tìm Clique cực đại với
kích thước k = 3
Trang 15Hình 2.4: Đồ thị Octahedron với clique cực đại ( n=6, k=3)
2.1.2 Khảo sát, phân tích và giới hạn vấn đề
Khảo sát và thu thập dữ liệu, thông tin và tri thức (DIK)
- Tập đỉnh của đồ thị và hữu hạn;
- Tập cạnh của đồ thị là hựu hạn;
- Đồ thị có hướng hay vô hướng?
- Đồ thị liên thông hay không?
- Đơn đồ thị hay đa đồ thị?
- Đơn đồ thị vô hướng;
- Đồ thị phải liên thông;
- Không quan tâm đến trọng số
Xác định phạm vi gây giới hạn của vấn đề: Tính liên thông của đồ thị và số
đỉnh nhỏ hơn 2, số cạnh bằng 0;
Thu thập mẫu vấn đề và phân lớp (bỏ qua)
- Số đỉnh, số cạnh của đồ thị;
- Xác định bậc của mỗi đỉnh trong đồ thị;
- Đồ thị được biểu diễn dưới dạng ma trận kề;
Mô tả giả thiết của vấn đề
- Đầu vào: Đồ thị G là đơn đồ thị vô hướng, liên thông được biểu diễn dướidạng ma trận kề M;
- Đầu ra: Clique cực đại của đồ thị G;
Trang 16 Mục tiêu của vấn đề: Tìm ra Clique cực đại của đồ thị;
Các điều kiện hay ràng buộc liên quan:
- Phải là đơn đồ thị vô hướng, liên thông;
- Số đỉnh (>=2) và số cạnh (>=1) của đồ thị là hữu hạn;
2.2 Xây dựng mô hình của bài toán
2.2.1 Mô hình cho DIK
Được mô hình hóa bằng đơn đồ thị vô hướng Trong đó:
- Số đỉnh là số nguyên dương (>=2) và mỗi đỉnh được gán nhãn;
- Cạnh là một đường nối giữa đỉnh này với đỉnh khác trong đồ thị;
- Bậc của đỉnh x: là tổng số cạnh liên thuộc với đỉnh x, ký hiệu deg(x)
G = (V, E)
V = {x1, x2, …, xn}
E = {e1, e2, …, em}; e E liên kết giữa xi và xj
2.2.2 Mô hình cho giả thiết
- Đầu vào: Đồ thị G được biểu diễn dưới dạng ma trận kề;
- Đầu ra: Clique cực đại của G;
2.2.3 Mô hình cho mục tiêu: Clique cực đại của G
2.3 Xây dựng giải pháp cho bài toán
Trang 17- Hai thuật toán hiệu quả với việc thực hiện các bài toán NP-Complete: quaylui và nhánh – cận.
Ở đây, tôi sẽ trình bày giải thuật Bron Kerbosch cho bài toán tìm Clique lớnnhất Thuật toán này được thiết kế và công bố vào năm 1973 bởi 2 nhà khoahoc người Hà Lan là Joep Kerbosch và Coenradd Bron Nó được biết như làmột thuật toán hiệu quả nhất cho việc sử dụng đệ qui quay lui để tìm cácClique Thuật toán như sau:
Không có Pivoting Strategy
Có Pivoting Strategy
2.4 Chứng minh tính đúng đắn của thuật toán
Cho đồ thị như Hình 2.4, tìm các Clique cực đại của đồ thị?
Trang 18 Tìm các giá trị Rnew, Pnew và Xnew
Pnew = P N(v); Rnew = R v; Xnew = X N(v)
Rnew = 4; Pnew = (1,2,3,4,5,6); Xnew =
Trang 19Thông báo (4,6) là Maximal Clique.
2.5 Đánh giá độ phức tạp của thuật toán
Bất kì đồ thị nào có n đỉnh thì có nhiều nhất 3n/3các Clique cực đại và thờigian chạy trong trường hợp xấu nhất của thuật toán Bron–Kerbosch là O(3n/3)
2.6 Đánh giá thực nghiệm
Với thuật toán trên, nếu cho đồ thị cỡ nhỏ thì thuật toán mang lại hiệu quảcao hơn Tuy nhiên, trong thực tế, vấn đề tìm Clique cực đại không chỉ dừng lại ởcác đồ thị có kích thước nhỏ, … Vì vậy, cần tối ưu hơn trong việc giải quyết vấn đềnày
Qua sự tìm hiểu và sưu tầm các tài liệu, em xin giới thiệu một thuật toán cóthể áp dụng hiệu quả hơn để giải quyết vấn đề tìm Clique cực đại phù hợp với thựctiễn Nội dung giải pháp và thuật toán kèm theo được trình bày chi tiết ở Chương 3
Trang 20Chương 3
GIỚI THIỆU MỘT THUẬT TOÁN POLYNOMIAL – TIME
ÁP DỤNG CHO BÀI TOÁN TÌM CLIQUE CỰC ĐẠI
3.1 Mở rộng bài toán Maximal Clique phù hợp với thực tế
Trong thực tế, các ứng dụng Clique của đồ thị thường với số đỉnh lớn và phứctạp Trong nghiên cứu này, bài toán xử lý trên các đơn đồ thị vô hướng Hình ảnh về
đồ thị cỡ lớn như Hình 3.1
Trang 213.2 Giới thiệu hướng tiếp cận thuật giải
Năm 1972, Karp [9], đã giới thiệu danh sách 21 bài toán NP-complete, mộttrong số đó là bài toán tìm clique cực đại trên đồ thị Như đã giới thiệu trong chương
2, thuật toán Bron Kerbosch giải quyết bài toán tìm Clique cực đại với độ phức tạpO(3n/3) Thực tế, các bài toán ứng dụng Clique thường với số đỉnh rất lớn, khi đó bàitoán sẽ có thời gian chạy rất lớn Để giải quyết vấn đề này, chúng ta phải xây dựngmột giải thuật mới tìm clique cực đại với thời gian đa thức
Một thuật toán là một phương pháp giải quyết vấn đề phù hợp để thực thiđược trên máy tính Việc thiết kế thuật toán thường phải đối mặt với một số phươngpháp khác nhau Tuy nhiên, có nhiều vấn đề mà các thuật toán chỉ giải quyết đượcphải mất nhiều thời gian để tính toán các giải pháp, nhưng thực tế thì không chophép điều này Một thuật toán có thời gian đa thức là một thuật toán có số lượngbước tính toán luôn được xác định bởi một hàm đa thức theo kích thước đầu vào Do
đó, một thuật toán có thời gian đa thức là một trong những thuật toán hữu ích trongthực tế Các lớp bài toán có thời gian đa thức được kí hiệu là P Ý tưởng là chúng tatìm cách đưa các bài toán NP-complete về các bài toán P Thuật toán được thiết kế
và trình bày chi tiết trong mục 3.3
3.3 Các thủ tục sử dụng trong polynomial-time algorithm
3.3.1 Các thủ tục
Procedure 1: Cho một đơn đồ thị G với n đỉnh và một clique Q của G
- Nếu Q không có các đỉnh có khả năng kề với đỉnh khác thì xuất ra Q
- Ngược lại, với mỗi đỉnh có khả năng kề v của Q,
Trang 22 Procedure 2: Cho một đồ thị G với n đỉnh và một clique cực đại Q của G
- Nếu không có đỉnh v nằm ngoài Q và có chính xác một đỉnh w nằm trong Q
và w không là hàng xóm của v thì xuất ra Q
- Ngược lại, tìm một đỉnh v nằm ngoài Q sao cho có chính xác một đỉnh w nằmtrong Q không là hàng xóm của v
- Định nghĩa Qv,w: Đưa đỉnh v vào Q và xóa w từ Q
- Thực hiện Procedure 1 trên Qv,w
- Xuất ta kết quả clique
3.3.2 Thuật toán
Cho đầu vào là một đồ thị đơn G với n đỉnh được gán nhãn 1,2, …, n, tìmkiếm một clique có kích cỡ nhỏ nhất là k Tại mỗi giai đoạn, nếu một clique thuđược có kích thước nhỏ nhất là k thì dừng lại
Part I: For i=1,2, …,n
Khởi tạo clique Qi = {i};
Thực hiện procedure 3.1 trên Qi;
For r = 1,2, …, k
Thực hiện Procedure 2
Kết quả là một clique cực đại Qi;
Part II: For mỗi cặp clique cực đại Qi, Qj được tìm trong Part I
Khởi tạo clique Q, = Q Q