Tải bản đầy đủ (.pdf) (60 trang)

luận văn thạc sĩ đồ thị luồng các khái niệm và tính chất

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1003.02 KB, 60 trang )

BỘ GIÁO DỤC
VÀ ĐÀO TẠO

VIỆN HÀN LÂM KHOA HỌC
VÀ CÔNG NGHỆ VIỆT NAM

HỌC VIỆN KHOA HỌC VÀ CÔNG NGHỆ
-----------------------------

Nguyễn Thị Thu Hằng

ĐỒ THỊ LUỒNG: CÁC KHÁI NIỆM VÀ TÍNH CHẤT

LUẬN VĂN THẠC SĨ TOÁN HỌC

Hà Nội - 2019


BỘ GIÁO DỤC
VÀ ĐÀO TẠO

VIỆN HÀN LÂM KHOA HỌC
VÀ CÔNG NGHỆ VIỆT NAM

HỌC VIỆN KHOA HỌC VÀ CÔNG NGHỆ
-----------------------------

Nguyễn Thị Thu Hằng

ĐỒ THỊ LUỒNG: CÁC KHÁI NIỆM VÀ TÍNH CHẤT


Chuyên ngành: Toán ứng dụng
Mã số: 8 46 01 12

LUẬN VĂN THẠC SĨ TOÁN HỌC

NGƯỜI HƯỚNG DẪN: PGS.TSKH. Phan Thị Hà Dương

Hà Nội - 2019


LỜI CAM ĐOAN
Tôi xin cam đoan những gì viết trong luận văn là do sự tìm tòi, học hỏi
của bản thân và sự hướng dẫn tận tình của cô Phan Thị Hà Dương. Mọi kết quả
nghiên cứu cũng như ý tưởng của tác giả khác, nếu có đều được trích dẫn cụ thể.
Đề tài luận văn này cho đến nay chưa được bảo vệ tại bất kì một hội đồng bảo
vệ luận văn thạc sĩ nào và cũng chưa hề được công bố trên bất kì một phương
tiện nào. Tôi xin chịu trách nhiệm về những lời cam đoan.
Hà Nội, tháng 10 năm 2019
Học viên

Nguyễn Thị Thu Hằng


LỜI CẢM ƠN
Đầu tiên, tôi xin được tỏ lòng biết ơn sâu sắc nhất của mình tới PGS.TSKH
Phan Thị Hà Dương, người trực tiếp hướng dẫn tôi tìm ra hướng nghiên cứu.
Luận văn này được hoàn thành dưới sự hướng dẫn tận tình của cô trong một thời
gian dài. Cô đã luôn quan tâm, giúp đỡ, động viên tôi trong suốt quá trình học
tập và nghiên cứu.
Tôi xin chân thành cảm ơn các thầy cô và các anh chị thuộc phòng Cơ sở

Toán - Tin, Viện Toán học vì sự giúp đỡ và tạo điều kiện để tôi hoàn thành luận
văn. Ngoài ra, trong quá trình học tập, nghiên cứu và thực hiện luận văn tôi còn
nhận được nhiều sự quan tâm, góp ý, hỗ trợ quý báu của quý thầy cô, anh chị và
bạn bè trong Viện Toán học Việt Nam.
Tôi cũng xin trân trọng cảm ơn sự giúp đỡ và tạo điều kiện thuận lợi của cơ
sở đào tạo là Học viện Khoa học và Công nghệ, Viện Hàn lâm Khoa học và
Công nghệ Việt Nam trong quá trình thực hiện luận văn.
Đặc biệt, tôi xin cảm ơn gia đình, người thân và bạn bè đã luôn sát cánh,
động viên và khích lệ tôi trong suốt quá trình học tập và nghiên cứu.

Hà Nội, tháng 10 năm 2019
Học viên

Nguyễn Thị Thu Hằng


Mục lục
Lời cam đoan
Lời cảm ơn
Mục lục
Danh mục các hình vẽ và đồ thị
MỞ ĐẦU

1

1 CÁC ĐỊNH NGHĨA CƠ BẢN VỀ ĐỒ THỊ

3

1.1 Đồ thị, đồ thị con, bậc của đỉnh . . . . . . . . . . . . . . . . . .


3

1.2 Đường, chu trình . . . . . . . . . . . . . . . . . . . . . . . . .

6

1.3 Liên thông và thành phần liên thông . . . . . . . . . . . . . . .

7

1.4 Mật độ, hệ số phân cụm và tỷ lệ bắc cầu . . . . . . . . . . . . .

9

2 CÁC ĐỊNH NGHĨA CƠ BẢN VỀ ĐỒ THỊ LUỒNG VÀ MỐI
QUAN HỆ VỚI ĐỒ THỊ

12

2.1 Định nghĩa đồ thị luồng và luồng liên kết . . . . . . . . . . . . . 13
2.2 Mở rộng khái niệm đỉnh và cạnh . . . . . . . . . . . . . . . . . 17
2.3 Đồ thị luồng con

. . . . . . . . . . . . . . . . . . . . . . . . . 19

2.4 Hàng xóm và bậc . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.5 Đường, chu trình trong đồ thị luồng . . . . . . . . . . . . . . . . 21
2.6 Liên thông và thành phần liên thông . . . . . . . . . . . . . . . 24
2.7 Mật độ, hệ số phân cụm và tỷ lệ bắc cầu . . . . . . . . . . . . . 29



3 MỘT SỐ TÍNH TOÁN TRÊN ĐỒ THỊ LUỒNG VÀ LUỒNG
LIÊN KẾT

33

3.1 Tìm các clique cực đại trong luồng liên kết . . . . . . . . . . . . 33
3.1.1 Clique và thuật toán tìm clique cực đại trên đồ thị . . . . . 34
3.1.2 Clique và thuật toán tìm ∆-clique cực đại trên luồng liên kết 36
3.2 Tìm đường đi ngắn nhất và đường đi nhanh nhất trong đồ thị luồng 42
3.2.1 Thuật toán tìm đường đi ngắn nhất . . . . . . . . . . . . . 42
3.2.2 Thuật toán tìm đường đi nhanh nhất . . . . . . . . . . . . 46
KẾT LUẬN CHUNG

50

TÀI LIỆU THAM KHẢO

51


DANH MỤC CÁC HÌNH VẼ VÀ ĐỒ THỊ
Số hiệu hình vẽ

Tên hình vẽ

Trang

1.1


Ví dụ về đơn đồ thị vô hướng

4

1.2

Ví dụ về đầy đủ K4

4

1.3

Ví dụ về đồ thị con cảm sinh

5

1.4

Ví dụ về hàng xóm và bậc của đỉnh

6

1.5

Ví dụ về đường đi và chu trình

7

1.6


Ví dụ về thành phần liên thông K4

8

1.7

Ví dụ liên thông trong đồ thị có hướng

8

2.1

Ví dụ về đồ thị luồng

15

2.2

Ví dụ về luồng liên kết

16

2.3

Mối quan hệ giữa đồ thị và luồng liên kết 17

2.4

Ví dụ về đồ thị luồng con cảm sinh


21

2.5

Ví dụ về đường trong đồ thị luồng

22

2.6

Ví dụ đồ thị luồng không liên thông yếu

25

2.7

Ví dụ đồ thị luồng không liên thông 26
mạnh

2.8

Ví dụ về cluster liên thông mạnh cực đại 27

2.9

Ví dụ thành phần liên thông trong đồ thị 28
luồng

3.1


Ví dụ một clique trong đồ thị

3.2

Mô tả thuật toán 1 liệt kê clique cực đại 36
trong đồ thị ở ví dụ 3.1.1

34


3.3

Ví dụ các clique cực đại trong đồ thị 37
luồng

3.4

Ví dụ các ∆-clique trong luồng liên kết

3.5

Mô phỏng thuật toán 2 liệt kê 4-clique 41

37,38

trong luồng liên kết ở ví dụ 3.1.5
3.6

Mô phỏng thuật toán 3 liệt kê 4-clique 42

trong luồng liên kết ở ví dụ 3.1.5

3.7

Mô phỏng thuật toán 5 tìm đường đi ngắn 46
nhất trong đồ thị luồng ở hình 2.5

3.8

Mô phỏng thuật toán 6 tìm đường đi ngắn 48
nhất trong đồ thị luồng ở hình 2.5


1

MỞ ĐẦU
Ngày nay, cùng với sự phát triển mạnh mẽ của khoa học công nghệ, lý thuyết
đồ thị đang được áp dụng rộng rãi để giải quyết nhiều bài toán thực tế. Việc sử
dụng đồ thị, nhất là các đồ thị cực lớn lại càng được phát triển sâu rộng, đặc
biệt trong việc biểu diễn các mạng xã hội, các mạng liên kết. Tiếp theo các
nghiên cứu đó, việc nghiên cứu các mạng liên kết có thay đổi theo thời gian đặt
ra những thách thức mới. Cấu trúc đồ thị không còn hoàn toàn phù hợp nữa, vì
chưa biểu hiện được yếu tố thời gian. Nhiều nhà khoa học đã cố gắng tìm ra mô
hình đồ thị phù hợp để thỏa mãn hai yếu tố đó. Luận văn này tìm hiểu về mô
hình đồ thị luồng thỏa mãn hai yếu tố đó là liên kết và thời gian, được đề xuất
bởi nhóm nghiên cứu Matthieu Latapy, Tiphaine Viard, Clémence Magnien [2]
của đại học Paris 6.
Trong luận văn này, chúng tôi sẽ tập trung trình bày chi tiết về mô hình đồ
thị luồng, luồng liên kết và chỉ rõ mối quan hệ với đồ thị. Sau đó, chúng tôi tìm
hiểu về thuật toán liệt kê clique cực đại trong luồng liên kết và đề xuất thuật

toán tìm đường đi ngắn nhất, đường đi nhanh nhất trong đồ thị luồng. Luận văn
được chia làm ba chương như sau:
Chương 1: Các định nghĩa cơ bản về đồ thị. Trong chương này, chúng tôi
trình bày lại một số khái niệm cơ bản trong đồ thị.
Chương 2: Các định nghĩa cơ bản về đồ thị luồng và mối quan hệ với đồ thị.
Ở phần này, chúng tôi trình bày chi tiết mô hình đồ thị luồng và luồng liên kết,
tự xây dựng các ví dụ và giải thích cụ thể cho từng khái niệm, chỉ ra mối quan
hệ giữa ba khái niệm: đồ thị luồng, luồng liên kết và đồ thị.
Chương 3: Một số tính toán trên đồ thị luồng và luồng liên kết. Trong chương
này, chúng tôi trình bày lại thuật toán tìm clique cực đại trong luồng liên kết,
sau đó đề xuất một cải tiến nhỏ cho thuật toán. Cuối cùng chúng tôi đề xuất
thuật toán tìm đường đi nhanh nhất và đường đi ngắn nhất trong đồ thị luồng.


2

Trong quá trình nghiên cứu luận văn, mặc dù bản thân đã cố gắng hết sức
tuy nhiên khó tránh khỏi những thiếu sót, hạn chế. Rất mong nhận được sự góp
ý của quý thầy cô và bạn đọc để luận văn được hoàn thiện hơn.


CHƯƠNG 1
CÁC ĐỊNH NGHĨA CƠ BẢN VỀ ĐỒ
THỊ
Trong chương này, chúng tôi trình bày một số kiến thức cơ bản của đồ thị.
Các khái niệm này được trích dẫn từ các tài liệu [1], [3].

1.1

Đồ thị, đồ thị con, bậc của đỉnh


Định nghĩa 1.1.1. Đồ thị vô hướng G là một cặp không có thứ tự G := (V, E),
trong đó:

• V là tập hữu hạn các nút (đỉnh).
• E ⊆ V ⊗ V , là tập các cặp không có thứ tự chứa các đỉnh phân biệt được
nối với nhau, được gọi là cạnh.
Hai đỉnh thuộc một cạnh được gọi là đỉnh đầu và đỉnh cuối của cạnh đó:
cạnh e = uv có đỉnh đầu là u và đỉnh cuối là v . Khi đó hai đỉnh u và v kề nhau
và là hàng xóm của nhau. Ta nói "u kề với v ".
Một cạnh của đồ thị có đỉnh đầu và đỉnh cuối trùng nhau được gọi là khuyên.
Các cạnh trùng nhau điểm đầu và điểm cuối được gọi là các cạnh bội.
3


4

Định nghĩa 1.1.2. Đồ thị đơn vô hướng là một đồ thị không có khuyên và không
có các cạnh bội.

Hình 1.1: Đồ thị đơn vô hướng.

Trong luận văn này, chúng tôi dùng một số kí hiệu sau đây:

• "G = (V, E)" hoặc đồ thị G (nếu không nói gì thêm) nghĩa là đồ thị đơn
vô hướng G = (V, E).

• V (G) hay V là tập đỉnh của đồ thị G.
• E(G) hay E là tập cạnh của đồ thị G.
• n = |V | là số đỉnh của G, m = |E| là số cạnh của G.

Định nghĩa 1.1.3. Đồ thị G = (V, E) được gọi là đồ thị đầy đủ nếu mọi cặp
đỉnh phân biệt trong V đều được nối với nhau bởi một cạnh. Với số nguyên
dương n, đồ thị đầy đủ n đỉnh được kí hiệu là Kn .

Hình 1.2: Đồ thị đầy đủ K4 .


5

Định nghĩa 1.1.4. Một đồ thị G = (V , E ) là đồ thị con của G = (V, E) nếu

V ⊆ V và E ⊆ E . Hơn nữa, nếu V = V thì đồ thị con là đồ thị con bao
trùm của G. Kí hiệu: G ⊆ G.
Định nghĩa 1.1.5. Một cluster C của G là một tập con của V . Tập các liên kết
giữa các đỉnh trong C là E (C) = {uv ∈ E |u ∈ C, v ∈ C }. Khi đó, đồ thị

G(C) = (C, E(C)) được gọi là đồ thị con cảm sinh bởi tập đỉnh C , nghĩa là
đồ thị G(C) chứa tập đỉnh C và tất cả các các cạnh của E mà có hai đầu mút
là những đỉnh thuộc C , có thể gọi G(C) là đồ thị con cảm sinh bởi G trên tập
đỉnh C .

Hình 1.3: Đồ thị con G(C) cảm sinh bởi tập đỉnh {a, b, d, f }.

Định nghĩa 1.1.6. Trong đồ thị G = (V, E), hàng xóm N (u) của đỉnh u ∈ V
là tập các đỉnh liên kết với u. N (u) = {v ∈ V, ∃(u, v) ∈ E}.
Định nghĩa 1.1.7. Bậc d(u)(dG (u)) của đỉnh u trong đồ thị G là số các hàng
xóm của u. d (u) = |N (u)|.
d(u)

Trung bình bậc của G là d (G) =


u∈V

n

.

d(u) = 2. |E| .

Định lý 1.1.1. Cho đồ thị đơn vô hướng G = (V, E), khi đó
u∈V


6

Hình 1.4: N (a) = {b, f, d}. Bậc của a: d(a) = 3.

1.2

Đường, chu trình

Định nghĩa 1.2.1. Cho một đồ thị G = (V, E), một đường đi từ u ∈ V đến

v ∈ V trong G là một dãy (u0 , v0 ) , (u1 , v1 ) , . . . , (uk−1 , vk−1 ) , (uk , vk ) thuộc
V × V sao cho u0 = u, vk = v , và với mọi i, ui = vi−1 và ui vi ∈ E .
Khi đó u0 được gọi là đỉnh đầu, vk được gọi là đỉnh cuối.
Độ dài của đường là số cạnh của đường và chính bằng k .
Nếu tồn tại một đường P từ u đến v trong G thì ta có thể nói v có thể với tới

u, kí hiệu: u − v . Và đường P có tính đối xứng: u − v cũng như là v − u.

Định nghĩa 1.2.2. Một đường con Q của P là một dãy con (ui , vi ) , (ui+1 , vi+1 ) ,

. . . , (uj , vj ) của dãy định nghĩa đường P với j ≥ i. Khi đó Q là một đường từ
ui đến uj .
Một đường đi P là một chu trình nếu k > 0 và u = v , nghĩa là đỉnh đầu và
đỉnh cuối trùng nhau.
Đường P là đường đơn nếu đường P không có đường con nào là chu trình.
Đường P là chu trình đơn nếu đường P là một chu trình không có đường
con nào là chu trình.
Đồ thị G là acyclic nếu nó không có chu trình con nào.


7

Hình 1.5: Đường P đi từ d đến f là:(d, a) , (a, b) , (b, e) , (e, f ).
Có hai chu trình: (a, b) , (b, f ) , (f, a) và (b, e), (e, f ), (f, b).

Định nghĩa 1.2.3. Khoảng cách giữa u và v trong G là độ dài đường đi ngắn
nhất từ u đến v , kí hiệu: ∂ (u, v). Nếu không có đường đi từ u đến v thì khoảng
cách đó là vô cùng.

1.3

Liên thông và thành phần liên thông

Định nghĩa 1.3.1. Một đồ thị G = (V, E) được gọi là liên thông nếu với mọi
cặp đỉnh u, v thuộc V đều tồn tại một đường đi từ u đến v .
Định nghĩa 1.3.2. Một cluster C được gọi là liên thông nếu đồ thị G(C) liên
thông. Cluster C là một cluster liên thông cực đại nếu C không nằm trong
cluster liên thông khác. Mỗi cluster liên thông cực đại là một thành phần liên

thông của đồ thị G.
Nhận xét 1.3.1. Trong đồ thị G = (V, E), một thành phần liên thông là một đồ
thị con liên thông. Khi đó tập đỉnh V chia thành k cluster liên thông cực đại

(C1 , C2 , ..., Ck ) sao cho:

i Ci

= X và Ci ∩ Cj = ∅ với mọi i = j .

Định nghĩa 1.3.3. Đồ thị có hướng hoặc đồ thị G là một cặp có thứ tự (V, E),
trong đó:

• V là tập hữu hạn các nút (đỉnh).
• E ⊆ V × V , là tập các cặp có thứ tự chứa các đỉnh phân biệt được nối
với nhau, được gọi là cạnh có hướng.


8

Hình 1.6: Đồ thị trên có 4 thành phần liên thông.

Trong đồ thị có hướng, cạnh (u, v) là cạnh có hướng đi từ u tới v , khác với cạnh

(v, u) là cạnh có hướng đi từ v tới u. Vì thế khác với đồ thị vô hướng, sự liên
thông trong đồ thị có hướng được phân chia thành hai khái niệm là liên thông
yếu và liên thông mạnh.
Định nghĩa 1.3.4. Đồ thị có hướng G = (V, E) gọi là liên thông yếu nếu với
hai đỉnh u và v khác nhau bất kì luôn tồn tại một đường đi vô hướng từ u tới v
trong G.

Định nghĩa 1.3.5. Đồ thị có hướng G = (V, E) gọi là liên thông mạnh nếu với
hai đỉnh u và v khác nhau bất kì luôn tồn tại cả đường đi có hướng từ u tới v
và đường đi có hướng từ v tới u.

Hình 1.7: Ví dụ liên thông trong đồ thị có hướng.


9

1.4

Mật độều liên kết với nhau
bởi một cạnh. Việc tìm kiếm các clique cực đại có trong đồ thị là vấn đề đang
được nhiều người quan tâm. Dựa vào thuật toán liệt kê các clique cực đại trong
đồ thị, nhóm tác giả Matthieu Latapy, Tiphaine Viard, Clémence Magnien đã
xây dựng một thuật toán liệt kê các ∆-clique cực đại trong luồng liên kết. Yếu
tố thời gian trong luồng liên kết đã làm cho việc tìm kiếm ∆-clique trở nên phức
33


34

tạp hơn, nhưng nhóm tác giả đã đưa ra được thuật toán hợp lí. Trong mục này,
chúng tôi trình bày lại thuật toán tìm ∆- clique cực đại. Nhận thấy rằng thuật
toán của nhóm tác giả phải xét rất nhiều các ∆-clique nhỏ lẻ trong các khoảng
thời gian xen kẽ nhau và gây tốn nhiều thời gian. Bằng một cải tiến nhỏ cho
bước đầu của thuật toán, chúng tôi đã làm cho việc chạy thuật toán trở nên dễ
dàng hơn.

3.1.1 Clique và thuật toán tìm clique cực đại trên đồ thị

Định nghĩa 3.1.1. Trong đồ thị G = (V, E), một clique C ⊆ V là một tập các
đỉnh mà tất cả các đỉnh đó đều được nối với nhau bởi các cạnh thuộc E .
Do vậy đồ thị con G[C] là một đồ thị đầy đủ.

Hình 3.1: Tập các đỉnh màu đỏ là một clique.

Định nghĩa 3.1.2. Một clique cực đại là clique không được chứa trong một
clique nào lớn hơn khác nó. Hay nói cách khác là không có một đỉnh nào ngoài
clique liên kết với tất cả các đỉnh trong clique để tạo clique mới.
Định nghĩa 3.1.3. Một clique lớn nhất là clique có số đỉnh lớn nhất của G.
Trong đồ thị G = (V, E), clique lớn nhất là clique cực đại, nhưng clique cực
đại chưa chắc là clique lớn nhất.
Việc liệt kê các clique cực đại là một trong những vấn đề quan trọng trong
khoa học máy tính và có rất nhiều ứng dụng. Người ta đã xây dựng thuật toán
để giải quyết vấn đề này.


35

BÀI TOÁN 1: Cho đồ thị G = (V, E). Liệt kê tất cả các clique cực đại có
trong đồ thị.
Ý tưởng của thuật toán:
- Khởi tạo các tập S , C , M trong đó: S là tập các clique được đề cử lên, M
là tập các clique đã tìm được (có thể cực đại hoặc không, giúp ghi nhớ và đảm
bảo việc kiểm tra một clique không bị lặp lại) và C là tập các clique cực đại.
- Bước đầu đưa các clique tầm thường vào S , mỗi clique là một đỉnh . Với
mỗi clique thuộc S , loại ra khỏi S và tìm các đỉnh ngoài clique liên kết với tất
cả các đỉnh trong clique. Nếu tạo ra clique mới lớn hơn clique ban đầu và không
thuộc M thì thêm clique mới vào M và S . Nếu không thì đó chính là clique cực
đại, đưa vào C .

- Xét lần lượt các clique trong S cho đến khi S là tập rỗng thì thuật toán
dừng và trả về tất cả các clique cực đại đã tìm được.
THUẬT TOÁN 1
Clique cực đại trong đồ thị
Input: Một đồ thị G = (V, E).
Output: Tập tất cả các clique cực đại trong đồ thị.
1: Khởi tạo: S ← ∅, C ← ∅, M ← ∅.
2: For v ∈ V : Thêm các v vào tập S và tập M đến khi M = V (G), S =

V (G). Khi đó các đỉnh trong S và M là các clique tầm thường.
3: While S = ∅ do
4:

Chọn một clique X ∈ S và xóa khỏi S .

5:

C := C ∪ X

6:

For v ∈ V \X do

7:

If "X ∪ {v} là clique and X ∪ {v} ∈
/ M " then


36


8:

S := S ∪ (X ∪ {v}); M := M ∪ (X ∪ {v}), C := C\X .

9: Return C .
Ví dụ 3.1.1. Đồ thị G = ({1, 2, 3, 4} , {12, 13, 23, 24}) có các clique cực đại
là: {1, 2, 3} và {2, 4}. Thuật toán tìm clique cực đại được mô tả bằng hình 3.2
sau:

Hình 3.2:

3.1.2 Clique và thuật toán tìm ∆-clique cực đại trên luồng liên kết
Định nghĩa 3.1.4. Clique trong luồng liên kết là tập các đỉnh thuộc V và
khoảng thời gian thuộc T sao cho: tất cả các đỉnh cùng liên kết với nhau trong
suốt khoảng thời gian ấy.
Ví dụ 3.1.2. Đồ thị luồng Hình 3.3 có hai clique chứa ba đỉnh là ([3, 5] , {a, b, c})
và ([6, 7] , {b, c, d}).
Định nghĩa 3.1.5. [4] Cho một khoảng thời gian bằng ∆, một ∆-clique C
của luồng liên kết L là một cặp ([b, e] , X) với [b, e] ⊆ T , X ⊆ V và với


37

mọi u, v ∈ X , τ ∈ [b, max(e − ∆, b)] có một liên kết (t, uv) ∈ E với t ∈

[τ, max(τ + ∆, e)].
Nói cách khác ∆-clique C là tập các đỉnh thuộc V và khoảng thời gian
thuộc T sao cho: Tất cả các nút đều liên kết với nhau ít nhất một lần trong mỗi
khoảng con có thời gian ∆.


Hình 3.3: Tập được tô là clique ([3, 5] , {a, b, c}) và ([6, 7] , {b, c, d}) .

Ví dụ 3.1.3. Luồng liên kết Hình 3.4 dưới đây có các 4-clique:([0, 9] , {a, b}) ,

([0, 7] , {a, c}) ,([0, 8] , {b, c}) và ([0, 7] , {a, b, c}).


38

Hình 3.4: 4-clique:([0, 9] , {a, b}) .

Định nghĩa 3.1.6. Một ∆-clique cực đại là ∆-clique không chứa trong một

∆-clique lớn hơn và khác nó.
Ví dụ 3.1.4. Ở hình 2.4: 4-clique ([0, 9] , {a, b}) cũng là 4-clique cực đại.
BÀI TOÁN 2: Cho luồng liên kết L = (T, V, E). Liệt kê tất cả các ∆-clique
cực đại có trong luồng liên kết.
Ý tưởng thuật toán: Tương tự như thuật toán tìm clique trong đồ thị G =

(V, E).
- Khởi tạo các tập S , R, M trong đó: S là tập các ∆-clique được đề cử lên,

M là tập các ∆-clique đã tìm được (có thể cực đại hoặc không, giúp ghi nhớ
và đảm bảo việc kiểm tra một clique không bị lặp lại) và R là tập các ∆-clique
cực đại.
- Bước đầu đưa các ∆-clique tầm thường vào S , đó chính là các ([t, t] , {u, v})
trong E .
- Với mỗi ∆-clique thuộc S , kiểm tra các đỉnh ngoài tập X trong ∆-clique có
liên kết với các đỉnh trong X và tạo ra ∆-clique là ([b, e] , X ∪ {v}) hay không,

cùng lúc đó ta cũng tìm giá trị b < b sao cho ([b , e] , X) với b = max fbuv −∆
u,v∈X

là ∆-clique, và cũng như tìm giá trị e > b với e = min leuv + ∆ sao cho
u,v∈X

([b, e ] , X) là ∆-clique.


39

- Nếu tạo ra ∆-clique mới lớn hơn ∆-clique ban đầu mà không thuộc M thì
thêm ∆-clique mới vào M và S . Nếu không thì đó chính là ∆− clique cực đại,
đưa vào R.
- Xét lần lượt các ∆-clique trong S cho đến khi S là tập rỗng thì thuật toán
dừng và trả về tất cả các ∆-clique cực đại đã tìm được.
THUẬT TOÁN 2 [4]

∆-clique cực đại trong luồng liên kết
Input: Một luồng liên kết L = (T, V, E) và thời gian ∆.
Output: Tập tất cả các ∆-clique cực đại trong luồng liên kết.
1: Khởi tạo: S ← ∅, R ← ∅, M ← ∅;
2: For (t, uv) ∈ E : Đưa tất cả các ([t, t] , {u, v}) vào tập S và tập M ;
3: While S = ∅ do
4:

Chọn một ∆-clique ([b, e] , X) ∈ S và xóa khỏi S ;

5:


([b, e] , X) là M ax ;

6:

For v ∈ V \X do

7:

If ([b, e] , X ∪ {v}) là ∆-clique then

8:

([b, e] , X) là N otM ax;

9:

If ([b, e] , X ∪ {v}) ∈
/ M then

10:

S := S ∪ ([b, e] , X ∪ {v}); M := M ∪ ([b, e] , X ∪ {v});

11:

f := max fbuv ;

12:

b := f − ∆;


13:

If b = b then

14:

u,v∈X

([b, e] , X) là N otM ax;


40

15:

If ([b , e] , X) ∈
/ M then

S := S ∪ ([b , e] , X); M := M ∪ ([b , e] , X);

16:
17:

l := min leuv ;

18:

e := l + ∆;


19:

If e = e then

u,v∈X

20:

([b, e] , X) là N otM ax;;

21:

If ([b, e ] , X) ∈
/ M then

S := S ∪ ([b, e ] , X); M := M ∪ ([b, e ] , X);

22:
23:

Đưa các phần tử là M ax vào tập R

24: Return R.
Ví dụ 3.1.5. Cho luồng liên kết

L = ([0, 10] , {a, b, c} , {(2, ab) , (3, ac) , (4, bc) , (5, ab)})
Chạy thuật toán tìm 4-clique được mô phỏng trong Hình 3.5.
Nhận xét 3.1.1. Qua mô phỏng thuật toán trên, việc xét duyệt các ∆-clique

([b, e] , X) bị lặp lại nhiều lần mặc dù trong khoảng thời gian ngắn và các liên

kết đều xuất hiện. Cho nên, nếu xét các ∆-clique tầm thường ([t, t] , {u, v})
như lúc ban đầu thì thuật toán chạy gây mất rất nhiều thời gian nếu dữ liệu của
luồng liên kết lớn.
Để giải quyết được vấn đề này, ta cần thay đổi việc xét ∆-clique tầm thường

([t, t] , {u, v}) bằng cách xây dựng lại các ∆-clique ([b∗ , e∗ ] , {u, v}) có khoảng
thời gian lớn hơn như sau:

b∗ = max (t − ∆, b)
e∗ = min (t + ∆, e)


41

Hình 3.5: Mô phỏng thuật toán 2 tìm 4-clique trên luồng liên kết.

Và hiển nhiên ta thấy được ([b∗ , e∗ ] , {u, v}) là một ∆-clique vì liên kết uv xuất
hiện một lần tại thời điểm t hay trong khoảng [t − ∆, t] và [t, t + ∆].
Như vậy với bước đầu là ∆-clique mới thì thuật toán 2 sẽ trở thành thuật toán
3 như sau: Tất cả các bước ở thuật toán 2 sẽ được giữ nguyên cho thuật toán 3,
trừ dòng thứ 2 của thuật toán 2. Chúng tôi thay việc đưa tất cả các ([t, t] , {u, v})
bằng cách đưa ([b∗ , e∗ ] , {u, v}) đã được chúng tôi xây dựng vào tập S và tập

M.
Khi đó thuật toán 3 sẽ được mô phỏng bằng Hình 3.6.
Nhận xét 3.1.2. Trong thuật toán 3, chúng tôi thay việc xét các ∆-clique tầm
thường ở dòng 2 bằng xét các ∆-clique ([b∗ , e∗ ] , {u, v}). Các ∆-clique này có
khoảng thời gian lớn hơn các ∆-clique tầm thường, khoảng thời gian [t, t] trong

∆-clique tầm thường được mở rộng thành khoảng thời gian [t − ∆, t + ∆]. Với

khoảng thời gian được mở rộng, các bước thực hiện của thuật toán 3 sau dòng
thứ 2 sẽ xét hết tất cả những ∆-clique có trong luồng liên kết mà không bỏ sót
một ∆-clique nào.


×