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

Tìm hiểu bài toán clique

16 12 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 16
Dung lượng 675,89 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 V luô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ó.

Trang 2

CHƯƠNG 1: TỔNG QUAN VỀ CLIQUE 3

CHƯƠNG 3: GIỚI THIỆU MỘT THUẬT TOÁN POLYNOMIAL – TIME ÁP DỤNG

Trang 3

CHƯƠNG 1: TỔNG QUAN VỀ CLIQUE

1.1 Lịch sử và ứng dụng của bài toán clique

Nghiên cứu về đồ thị con đầy đủ trong toán học có trước thuật ngữ “clique” Ví dụ, các đồ thị con đầy đủ xuất hiện sớm trong các tài liệu toán học trong lý thuyết đồ thị của lý thuyết Ramsey bởi Erdoc & Szekeres (1935) Nhưng thuật ngữ "clique" và vấn đề về danh sách các thuật toán clique đều đến từ khoa học xã hội, nơi các đồ thị con đầy đủ được sử dụng để mô hình các nhóm xã hội, những nhóm người biết nhau Luce và Perry (1949) đã sử dụng các đồ thị để mô hình hóa các mạng xã hội và điều chỉnh thuật ngữ khoa học xã hội theo lý thuyết đồ thị Họ là những người đầu tiên gọi các đồ thị con đầy đủ "cliques" Thuật toán đầu tiên để giải quyết vấn đề clique là của Harary và Ross (1957) ,được thúc đẩy bởi ứng dụng xã hội học Các nhà nghiên cứu khoa học xã hội cũng đã xác định các loại khác nhau của cliques và cliques tối đa trong mạng xã hội Có thể tìm thấy nhiều khái niệm tổng quát của các cliques bằng cách xây dựng một đồ thị vô hướng có các cạnh đại diện cho các cặp đối tượng có liên quan từ mạng xã hội và sau đó áp dụng thuật toán cho bài toán clique vào đồ thị này.

Kể từ khi công trình của Harary và Ross, nhiều người khác đã nghĩ ra các thuật toán cho các phiên bản khác nhau của vấn đề clique Vào những năm 1970, các nhà nghiên cứu bắt đầu nghiên cứu các thuật toán này từ quan điểm phân tích trường hợp xấu nhất Ví

dụ, Tarjan & Trojanowski (1977) , một công trình ban đầu về độ phức tạp trong thời gian xấu nhất của vấn đề clique tối đa Cũng trong thập niên 1970, bắt đầu với công việc của Cook (1971) và Karp (1972) , các nhà nghiên cứu bắt đầu sử dụng lý huyết NP-completeness và các kết quả liên quan để cung cấp một giải thích toán học cho vấn đề clique Trong những năm 1990, một loạt các bài báo mang tính đột phá bắt đầu với Feige et al (1991) và được

xuất bản trên tờ New York Times đã chỉ ra rằng (giả sử P ≠ NP ) nó thậm chí không thể đưa ra

vấn đề chính xác và hiệu quả.

1.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 V luô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 1: Đồ 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, đồng thời là đồ thị chính quy bậc n-1.

Ví dụ 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 7002E

Trang 4

Hình 1.1: Đồ thị đầy đủ K7

Bài toán xác định có tồn tại hay không một clique với một kích thước cho trước trong một đồ thị (Bài toán clique) là một bài toán NP-Complete.

Đối với một clique là một tập độc lập, với nghĩa rằng mỗi clique tương ứng với một tập độc lập của đồ thị nghịch đảo.

Thuật ngữ này xuất phát từ ý tưởng rằng giả sử mỗi đỉnh biểu diễn một người và mỗi cạnh biểu diễn mối quan hệ quen biết, thì hai người bất kì đều quen lẫn nhau, do vậy tạo nên một clique.

Định nghĩa 2: 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 3: 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ều ngược lại chưa chắc

đã đúng.

Định nghĩa 4: 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 5: Phần bù của đồ thị G (kí hiệu là ) 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 6: Đồ thị đầy đủ (Complete Graph): với mỗi cặp đỉnh được nối với nhau

bằng một cạnh.

Trang 5

Hình 1.2: Đồ thị G, phần bù đồ thị , đồ thị đầy đủ, Clique 𝐺

Trang 6

CHƯƠNG 2: BÀI TOÁN MAXIMAL CLIQUE

2.1 Phát biểu bài toán

Cho đồ thị G = (V, E) và số k∈N* thỏa mãn |k|≤|V| Tồn tại hay không một tậ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ột cạ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.

Hình 2.1: Đồ thị Octahedron với clique cực đại ( n=6, k=3) 2.2 Phân tích vấn đề

❖ Mô tả giả thiết của vấn đề

- Đầu vào: Đồ thị G là đơn đồ thị vô hướng, liên thông

- Đầu ra: Clique cực đại của đồ thị G;

❖ 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.3 Xây dựng giải pháp cho bài toán

Bài toán này có một số giải pháp như:

- Sử dụng các thuật toán Non polynomial-time algorithm.

- Sử dụng các thuật toán polynomial-time algorithm.

- Hai thuật toán hiệu quả với việc thực hiện các bài toán NP-Complete: quay lui và nhánh – cận.

Ở đây, em sẽ trình bày giải thuật Bron Kerbosch cho bài toán tìm Clique cực đại Thuật toán này được thiết kế và công bố vào năm 1973 bởi hai nhà khoa hoc 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ác Clique Thuật toán như sau:

● Không có Pivoting Strategy

Trang 7

➢ Dạng cơ bản của thuật toán Bron – Kerbosch là một thuật toán đệ quy lùi để tìm

kiếm tất cả các clique tối đa trong một đồ thị G Nói chung, với ba bộ R , P và X , nó tìm thấy các clique tối đa bao gồm tất cả các đỉnh trong R , một số đỉnh trong P , và không có đỉnh nào trong X Trong mỗi lời gọi đến thuật toán, P và X là các tập hợp rời nhau mà hợp của nó bao gồm các đỉnh tạo thành các clique khi thêm vào R Nói cách khác, P ∪ X là tập các đỉnh được nối với mọi phần tử của R Khi P và X đều trống rỗng, không có thêm phần tử nào có thể được thêm vào R , vì vậy R là một clique tối đa và kết quả của thuật toán là R.

Phép đệ quy được khởi tạo bằng cách thiết lập R và X là tập rỗng và P là tập đỉnh của đồ thị Trong mỗi lời gọi đệ quy, thuật toán xem xét lần lượt các đỉnh trong P; nếu không có đỉnh nào thì nó báo cáo R là một clique tối đa (nếu X trống) hoặc ngược lại Đối với mỗi đỉnh v được chọn từ P , nó thực hiện một lời gọi đệ quy trong đó v được thêm vào R và trong đó P và X bị giới hạn đối với tập lân cận N (v) của v , tìm và xuất ra tất cả các phần mở rộng clique của R chứa v Sau đó, nó di chuyển v từ P sang X để loại trừ nó khỏi việc xem xét trong các cliques trong tương lai và tiếp tục với đỉnh tiếp theo trong P.

Trong mã giả, thuật toán thực hiện các bước sau:

BronKerbosch1(R, P, X):

if P and X are both empty:

report R as a maximal clique

for each vertex v in P:

BronKerbosch1(R ⋃ {v}, P ⋂N(v), X ⋂ N(v))

P := P \ {v}

X := X ⋃ {v}

● Có Pivoting Strategy:

Dạng cơ bản của thuật toán, được mô tả ở trên, không hiệu quả trong trường hợp các

đồ thị có nhiều clique không cực đại: nó tạo ra một lời gọi đệ quy cho mọi clique, cực đại hay không Để tiết kiệm thời gian và cho phép thuật toán quay lại nhanh hơn trong các nhánh tìm kiếm không chứa các clique cực đại, Bron và Kerbosch đã giới thiệu một biến thể của thuật

toán liên quan đến "pivot vertex" u , được chọn từ P (hoặc đơn giản hơn, như các nhà nghiên cứu sau này nhận ra, từ P ⋃ X ) Bất kỳ clique cực đại phải bao gồm một trong hai: hoặc u

hoặc một trong những đỉnh không phải lân cận của nó, nếu không thì clique có thể được tăng

cường bằng cách thêm u vào nó Do đó, chỉ có u và những đỉnh không phải lân cận của nó cần phải được kiểm tra như là sự lựa chọn cho v đỉnh được thêm vào R trong mỗi lần gọi đệ

quy đến thuật toán

Trong mã giả thuật toán thực hiện như sau:

BronKerbosch2(R,P,X):

if P and X are both empty:

report R as a maximal clique choose a pivot vertex u in P ⋃ X for each vertex v in P \ N(u):

BronKerbosch2(R ⋃ {v}, P ⋂N(v), X ⋂ N(v))

Trang 8

P := P \ {v}

X := X ⋃ {v}

2.4 Chứng minh tính đúng đắn của thuật toán

Cho đồ thị như hình 2.2, hãy tìm các maximal clique của đồ thị?

Hình 2.2 Đồ thị 7 đỉnh

Trường hợp 1: Không có Pivoting Strategy

Thuật toán thực hiện như sau (có pivot):

● R = X = ∅, P = (1,2,3,4,5,6)

● Mỗi v trong P = (1,2,3,4,5,6,7)

● Tìm các giá trị Rnew, Pnewvà Xnew

● Pnew= P ∩ N(v); Rnew= R ∪ v; Xnew= X ∩ N(v)

● Rnew= 1; Pnew= (2,3,4); Xnew= ∅

Tiếp tục thực hiện gọi đệ qui nhiều lần, cụ thể như sau:

BronKerbosch(∅,(1,2,3,4,5,6,7),∅)

BronKerbosch((1),(2,3,4),∅)

BronKerbosch((1,2),(3,4),∅)

BronKerbosch((1,2,3),(4),∅)

BronKerbosch((1,2,3,4), ∅ ,∅) Maximal Clique: 1 2 3 4 BronKerbosch((1,2,4), ∅ ,(3))

BronKerbosch((1,3),(4),(2))

BronKerbosch((1,3,4),∅,(2)) BronKerbosch((1,4),(4),(2,3)

BronKerbosch((2),(3,4,5),(1))

Trang 9

BronKerbosch((2,3,4),∅,(1)) BronKerbosch((2,4),(5),(1,3))

BronKerbosch((2,4,5), ∅ , ∅ ) Maximal Clique: 2 4 5 BronKerbosch((2,5), ∅ ,(4))

BronKerbosch((3),(4),(1,2))

BronKerbosch((3,4),∅,(1,2))

BronKerbosch((4),(5,6),(1,2,3))

BronKerbosch((4,5),∅,(2))

BronKerbosch((4,6),∅, ∅ ) Maximal Clique: 4 6

BronKerbosch((5),(7),(2,4))

BronKerbosch((5,7), ∅, ∅ ) Maximal Clique: 5 7

BronKerbosch((6),∅,(4))

BronKerbosch((7),∅,(7))

Trường hợp 2: Có Pivoting Strategy:

Trong đồ thị trên hình 2.2, thuật toán ban đầu được gọi là R = Ø, P = {1,2,3,4,5,6,7} và X =

Ø Đỉnh u được chọn là một đỉnh bậc cao nhất (bậc 5), để giảm các lời gọi đệ quy; giả sử rằng u được chọn là đỉnh 4 Sau đó, có hai đỉnh còn lại trong P \ N ( u ): đỉnh 4 và 7.

Thuật toán thực hiện như sau (có pivot):

● R = X = ∅, P = (1,2,3,4,5,6,7)

● Chọn phần tử pivot u là 4.

● Mọi v trong P\N(u) = (1,2,3,4,5,6,7)\(1,2,3,5,6) = (4,7)

● Tìm các giá trị Rnew, Pnewvà Xnew

● Pnew= P ∩ N(v); Rnew= R ∪ v; Xnew= X ∩ N(v)

● Rnew= 4; Pnew= (1,2,3,5,6); Xnew= ∅

Tiếp tục thực hiện gọi đệ qui nhiều lần, cụ thể như sau:

BronKerbosch(∅,(1,2,3,4,5,6,7), ∅):

BronKerbosch((4),(1,2,3,5,6), ∅)

BronKerbosch((4,2),(1,3,5), ∅)

BronKerbosch((4,2,1),(3), ∅)

BronKerbosh((4,2,1,3), ∅,∅) → Clique: (4,2,1,3) BronKerbosch((4,2,3), ∅,(1))

BronKerbosch((4,2,5), ∅,∅) → Clique (4,2,5)

BronKerbosch((7),(5), ∅):

Trang 10

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ời gian chạy trong trường hợp xấu nhất (với một chiến lược pivot giảm thiểu số lượng các lần gọi đệ quy được thực hiện ở mỗi bước) 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ực tiễ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 11

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 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ức tạ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.

Hình 3.1: Đồ thị 12 đỉnh và Clique cực đại với k = 5 3.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ột trong 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ạp O(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ài toá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ựng một giải thuật mới tìm clique cực đại với thời gian đa thức.d

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ương pháp khác nhau.Tuy nhiên, có nhiều vấn đề mà các thuật toán chỉ giải quyết được phả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 cho phé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ượng bướ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 trong thự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 ta tì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.

Trang 12

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,

+ Tìm số đỉnh có thể kề là ρ(Q∪{v}) của clique Q∪{v}.

+ vmaxkí hiệu đỉnh có thể kề sao cho ρ(Q∪{vmax}) là lớn nhất và thu một clique Q∪{vmax} + Lặp lại cho đến khi clique không còn đỉnh nào có khả năng kề.

❖ 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ằm trong 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ìm kiế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 Qi,j= Qi∩Qj

● Thực hiện Procedure 1 trên Qi,j

● For r = 1, 2, …, k

Thực hiện Procesure 2;

● Kết quả là clique cực đại Qi,j

3.3.3.Chứng minh tính đúng đắn của thuật toán

Chúng tôi minh họa các bước của thuật toán với một ví dụ nhỏ Đầu vào là một phần

bù của đồ thị Frutch [10] với n = 12 cạnh như sau:

Trang 13

V = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}

Hình 3.2: Phần bù của đồ thị Frutch Bài toán yêu cầu: Tìm một clique có kích thước ít nhất k = 5.

Part I cho i = 1 và i = 2 sinh ra clique Q1và Q2kích thước 4, chúng tôi sẽ thực hiện chi tiết bắt đầu I = 3 Chúng tôi khởi tạo một clique như:

Q3= {i} = {3}

Bây giờ, chúng tôi thực hiện procedure 3.1 Đây là kết quả trình bày hình thức bảng:

❖ Clique Q3= {3} và Size(Q3) = 1.

Đỉnh có khả năng

kề v của Q3

Các đỉnh có khả năng

kề của Q3{v}

p(Q3{v})

⇨ Maximum p(Q3∪ {v}) = 6 cho v = 11 Thêm đỉnh 11 vào Q3.

❖ Clique Q3= {3, 11} và Size(Q3) = 2.

Đỉnh có khả năng

kề v của Q3

Các đỉnh có khả năng kề của Q3{v}

p(Q3{v})

Trang 14

8 5, 9 2

⇨ Maximum ρ(Q3∪{v}) = 3 for v = 5 Adjoin vertex 5 to Q3.

❖ Clique Q3 = {3, 5, 11} và Size(Q3) = 3.

Đỉnh có khả năng

kề v của Q3

Các đỉnh có khả năng kề của Q3∪{v}

p(Q3∪{v})

⇨ Maximum ρ(Q3∪ {v}) = 1 for v = 7 Adjoin vertex 7 to Q3

❖ Clique Q3 = {3, 5, 7, 11} Size: 4.

Đỉnh có khả năng

kề v của Q3

Các đỉnh có khả năng kề của Q3{v}

p(Q3{v})

Maximum ρ(Q3∪{v}) = 0 for v = 12 Adjoin vertex 12 to Q3.

Chúng tôi thu được clique cực đại

Q3 = {3, 5, 7, 11, 12}

Theo kích thước yêu cầu là k = 5 và thuật toán kết thúc.

Hình 3.3: Clique cực đại 3.4 Phân tích độ phức tạp

Tôi sẽ trình bày độ phức tạp của thuật toán thời gian đa thức, bằng cách xác định một

đa thức theo n số đỉnh của đồ thị đầu vào, đó là một giới hạn trên tổng số bước tính toán được thực hiện bởi các thuật toán Lưu ý chúng ta xem xét: Kiểm tra xem một cặp đỉnh cho

Ngày đăng: 27/02/2022, 16:55

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w