BỘ GIÁO DỤC VIỆN HÀN LÂM KHOA HỌC VÀ ĐÀO TẠO 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 VIỆN HÀN LÂM KHOA HỌC VÀ ĐÀO TẠO 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 . . .

50 KẾT LUẬN CHUNG

51 TÀI LIỆU THAM KHẢO

DANH MỤC CÁC HÌNH VẼ VÀ ĐỒ THỊ

Số hiệu hình vẽ Tên hình vẽ Trang

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

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

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

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

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

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

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

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

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

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

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

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

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

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ị 34

3.2 Mô tả thuật toán 1 liệt kê clique cực đại 36

trong đồ thị ở ví dụ 3.1.1

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 37,38

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

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),

• 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

trong đó:

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.

3

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.

4

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

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

có các cạnh bội.

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

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

• 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.

vô hướng G = (V, E).

Đị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

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

dương n, đồ thị đầy đủ n đỉnh được kí hiệu là Kn.

5

Định nghĩa 1.1.4. Một đồ thị G(cid:48) = (V (cid:48), E(cid:48)) là đồ thị con của G = (V, E) nếu V (cid:48) ⊆ V và E(cid:48) ⊆ E. Hơn nữa, nếu V = V (cid:48) thì đồ thị con là đồ thị con bao trùm của G. Kí hiệu: G(cid:48) ⊆ 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

G(C) = (C, E(C)) được gọi là đồ thị con cảm sinh bởi tập đỉnh C, nghĩa là

giữa các đỉnh trong C là E (C) = {uv ∈ E |u ∈ C, v ∈ C }. Khi đó, đồ thị

đồ 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

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

đỉnh C.

Đị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}.

d(u)

(cid:80) u∈V

Đị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)|.

n

d(u) = 2. |E| .

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

Định lý 1.1.1. Cho đồ thị đơn vô hướng G = (V, E), khi đó (cid:80) 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

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à uivi ∈ E.

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

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.

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

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

Đị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 đồ

i Ci = X và Ci ∩ Cj = ∅ với mọi i (cid:54)= j.

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: (cid:83)

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

• 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

trong đó:

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.

(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

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

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

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

và đường đi có hướng từ v tới u.

9

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

Định nghĩa 1.4.1. Mật độ của một đồ thị G = (V, E) được kí hiệu δ(G), là tỉ

δ(G) =

≤ 1.

2m n(n − 1)

lệ giữa số cạnh và số cạnh lớn nhất có thể của đồ thị. Ta có:

V ⊗ V là một liên kết giữa u và v trong E.

Nhận xét 1.4.1. Mật độ của một đồ thị là xác suất để một phần tử uv thuộc

δ(G) = 0 thì đồ thị không có sự kết nối giữa các đỉnh. Quy ước, một đồ thị có

1 hoặc 0 đỉnh thì mật độ của đồ thị đó bằng 0. Mật độ của một đồ thị cho chúng

Chú ý rằng, nếu đồ thị G có δ(G) = 1 thì G là một đồ thị đầy đủ, nếu có

ta biết sự dày hay thưa các kết nối của đồ thị đó.

3.(3−1) = 1 là đồ thị có tối đa số cạnh.

Ví dụ 1.4.1. Trên Hình 1.6, đồ thị G1 = ({a, b, c} , {ab, ac, bc}) có mật độ δ (G1) = 2.3

5.(5−1) = 0.5.

Đồ thị G2 = ({m, n, p, q, o} , {mq, mn, np, po, on}) có mật độ δ (G2) = 2.5

Trên thực tế, khi một người cùng chơi với hai người thì có khả năng cao hai

người đó kết thân làm bạn với nhau. Những mối quan hệ này tạo ra mối quan hệ

tam giác trong xã hội. Hệ số phân cụm và tỷ lệ bắc cầu là hai số liệu thống kê

đo số lượng tam giác có trong một mạng lưới quan hệ.

Định nghĩa 1.4.2. Trong đồ thị G = (V, E), hệ số phân cụm của một đỉnh u

cc (u). Khi đó:

cc (u) = δ (G(N (u))) .

thuộc V là mật độ của đồ thị tạo nên bởi các hàng xóm của đỉnh đó. Kí hiệu:

Nói cách khác, hệ số phân cụm của một đỉnh u là xác suất để hai đỉnh hàng

xóm của đỉnh u có liên kết với nhau.

Nếu d(u) < 2 thì cc(u) = 0.

10

Định nghĩa 1.4.3. Hệ số phân cụm của đồ thị G = (V, E) là hệ số phân cụm

trung bình của tất cả các đỉnh có trong G.

cc (G) =

cc (u).

1 n

u∈V

(cid:88)

Hệ số phân cụm của đồ thị là xác suất để một đỉnh u thuộc tập đỉnh có hơn

một hàng xóm và hai hàng xóm được chọn ngẫu nhiên của đỉnh này liên kết với

nhau.

Định nghĩa 1.4.4. Trong đồ thị G, bộ ba (u, v, w) thuộc V × V × V có các

đỉnh đôi một phân biệt là bộ ba liên thông nếu có liên kết uv và vw thuộc E.

Tập tất cả bộ ba liên thông của đồ thị G được kí hiệu là ∨.

Nếu bộ ba liên thông có liên kết giữa u và w thì được gọi là tam giác. Tập

tất cả các tam giác có trong đồ thị G được kí hiệu là (cid:79).

Định nghĩa 1.4.5. Tỷ lệ bắc cầu của đồ thị G là xác suất để một bộ ba liên

tr (G) =

.

|(cid:79)| |∨|

thông là một tam giác. Kí hiệu:

Mặc dù hệ số phân cụm và tỷ lệ bắc cầu đều là thước đo mức độ các đỉnh

liên kết với nhau thành một nhóm, nhưng kết quả thu được của hai số liệu này

lại khác nhau. Vì hệ số phân cụm của đồ thị là trung bình hệ số phân cụm của

tất cả các đỉnh, khi đó các đỉnh đều đóng vai trò như nhau trong khi các đỉnh có

mức độ gắn kết của các hàng xóm khác nhau. Còn tỷ lệ bắc cầu chỉ tính những

mối quan hệ có khả năng kết nối thành quan hệ tam giác. Vậy nên tỷ lệ bắc cầu

cho chúng ta số liệu chính xác hơn hệ số phân cụm. Ví dụ sau cho chúng ta thấy

được điều này.

0 + 0 + 2.1

=

(cid:16)

10 = 0.6.

Ví dụ 1.4.2. Trong đồ thị G2 tại ví dụ 1.4.1 có hệ số phân cụm là: cc (G2) = (cid:17) 5. (cc (q) + cc (m) + cc (n) + cc (p) + cc (o)) = 1 1 3(3−1) + 1 + 1 5. 0.467. Và tỷ lệ bắc cầu: tr (G2) = 6

11

Chúng ta nhận thấy rằng việc tính hệ số phân cụm dễ hơn việc tính tỷ lệ bắc

cầu. Mặc dù độ chính xác của hệ số phân cụm thấp hơn tỷ lệ bắc cầu nhưng

người ta thường tính hệ số phân cụm hơn.

Kết luận: Ở chương 2, chúng tôi sẽ trình bày một mô hình mới là mở rộng

của đồ thị khi xét thêm yếu tố thời gian. Khi trình bày một mô hình mới - đồ thị

luồng, chúng ta cần làm rõ những khái niệm cơ bản để thể hiện được hết ý nghĩa

của nó. Vì vậy trong chương 1, chúng tôi chú trọng trình bày các định nghĩa và

các ví dụ minh họa về các khái niệm cơ bản của đồ thị như: đỉnh, cạnh, bậc của

đỉnh, đường đi, mật độ và sự liên thông.

CHƯƠNG 2

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

THỊ LUỒNG VÀ MỐI QUAN HỆ VỚI

ĐỒ THỊ

Từ trước tới nay, chúng ta biết mô hình đồ thị được sử dụng để biểu diễn các

mối quan hệ trong khoa học cũng như trong cuộc sống, ví dụ như: sự liên kết

giữa các công ty với nhau, sự kết nối giao thông, mối quan hệ bạn bè, kết nối

mạng máy tính,v.v.. Các liên kết này thường là cố định và không phụ thuộc vào

thời gian, vì thế trong một khoảng thời gian dài, chúng ta có thể sử dụng cùng

một đồ thị. Nếu các liên kết đó thay đổi liên tục theo thời gian thì cấu trúc đồ

thị không còn phù hợp nữa, ví dụ như: kết nối gọi điện và nhắn tin trên mạng

xã hội, bản đồ lưu lượng xe tại các địa điểm trong một thành phố,v.v.. Để biểu

diễn được qua đồ thị chúng ta phải xét các đồ thị khác nhau cho mỗi một thời

điểm khác nhau. Vậy nên, nhiều nhà khoa học đã cố gắng xây dựng các mô hình

thể hiện quan hệ tương tác phụ thuộc thời gian, điều quan trọng là nó phải là

một mở rộng của đồ thị (khi xét trường hợp riêng, nếu các đỉnh và các liên kết

không thay đổi theo thời gian thì mô hình trở thành đồ thị và các tính chất của

mô hình cũng đúng cho đồ thị).

12

Trong luận văn này, chúng tôi sẽ trình bày mô hình do nhóm tác giả Matthieu

13

Latapy, Tiphaine Viard, Clémence Magnien đã xây dựng, mô hình gồm hai loại

là đồ thị luồng và luồng liên kết. Dựa vào mô hình đồ thị G gồm tập đỉnh là V

và tập cạnh là E, nhóm tác giả đã gắn thêm thời gian vào tập đỉnh, tập cạnh của

đồ thị để xây dựng một mô hình thỏa mãn hai yếu tố đó là thời gian và liên kết.

Với mô hình đồ thị luồng, nhóm tác giả hệ thống các khái niệm cơ bản mở rộng

của đồ thị như cạnh, liên kết, số bậc, đường đi, sự liên thông,v.v.., việc mở rộng

các khái niệm cần phải đúng khi chúng ta giới hạn lên đồ thị. Sự đóng góp của

yếu tố thời gian đã làm thay đổi các khái niệm, đặc biệt số cạnh và số liên kết

không còn là số nguyên. Các liên kết thay đổi theo thời gian nên liên thông phân

biệt thành hai khái niệm là liên thông yếu và liên thông mạnh. Ngoài ra, một số

tính chất trên đồ thị có thể mở rộng được nhưng một số tính chất lại không mở

rộng được.

Trong chương này chúng tôi cố gắng trình bày các khái niệm cơ bản, tự xây

dựng các ví dụ và giải thích chi tiết cho từng khái niệm một cách rõ ràng. Chúng

tôi phân tích sự giống nhau và khác nhau của đồ thị và đồ thị luồng qua các hình

vẽ cụ thể, từ đó chúng ta thấy được mối quan hệ giữa hai khái niệm đồ thị và đồ

thị luồng.

2.1 Định nghĩa đồ thị luồng và luồng liên kết

Trước hết, chúng tôi viết tường minh định nghĩa kèm theo các ví dụ, hình vẽ

chi tiết về đồ thị luồng và luồng liên kết. Sau đó chúng tôi chỉ rõ mối quan hệ

giữa ba khái niệm: đồ thị luồng, luồng liên kết và đồ thị.

• T là khoảng thời gian.

• V là tập hữu hạn các đỉnh.

Định nghĩa 2.1.1. [2] Đồ thị luồng là bộ S = (T, V, W, E), trong đó:

14

• W ⊆ T × V là tập các phần tử (t, u), mỗi phần tử bao gồm thời điểm t

• E ⊆ T × V ⊗ V là tập các phần tử (t, uv), mỗi phần tử bao gồm thời

và đỉnh u xuất hiện (online) tại thời điểm t.

điểm t và liên kết uv sao cho u, v xuất hiện và kết nối với nhau tại thời

điểm t.

Ta kí hiệu: Liên kết l = ([b, e] , uv) ⊆ E thỏa mãn e ≥ b, ([b, e] , u) ⊆ W

và ([b, e] , v) ∈ W , nghĩa là hai đỉnh u, v liên lạc với nhau từ thời gian b đến

thời gian e khi hai đỉnh xuất hiện trong thời gian này. Ta gọi e − b là lượng thời

• Tu là tập các khoảng thời gian mà u hiện diện. Khi đó

Tu = (cid:83)

([b,e],u)⊆W [b, e].

• Tuv là tập các khoảng thời gian mà u và v kết nối với nhau. Khi đó

Tuv = (cid:83)

([b,e],uv)⊆E [b, e].

• fbuv: thời gian nhỏ nhất t ≥ b sao cho ([t, t], uv) ∈ E, là thời điểm xuất

gian mà u và v kết nối với nhau.

• lbuv: thời gian lớn nhất t ≤ e sao cho ([t, t], uv) ∈ E, là thời điểm xuất

hiện đầu tiên của liên kết uv sau thời gian b.

hiện cuối cùng của liên kết uv trước thời gian e.

Liên kết l vô hướng nếu không có sự khác nhau giữa ([b, e] , uv) và ([b, e] , vu). Đồ thị luồng đơn nếu với mọi liên kết l = ([b, e] , uv) và l(cid:48) = ([b(cid:48), e(cid:48)] , uv) trong E thỏa mãn [b, e] ∩ [b(cid:48), e(cid:48)] = ∅. Trong luận văn này, chúng tôi chỉ xét đồ

thị luồng đơn vô hướng và luồng liên kết đơn vô hướng.

Trong lý thuyết đồ thị G = (V, E), chúng ta có hình vẽ mô tả để có cái nhìn

bao quát hơn. Cụ thể: đỉnh của đồ thị biểu diễn bằng dấu chấm và cạnh được

biểu diễn bằng một đoạn thẳng liên kết hai đỉnh ở hai đầu mút. Đối với đồ thị

luồng S = (T, V, W, E) cũng cần hình vẽ mô tả được thời gian và sự liên kết,

ta biểu diễn đồ thị luồng và luồng liên kết như sau:

15

• Các đỉnh được biểu diễn trên trục tung.

• Thời gian được biểu diễn bởi trục hoành.

• Khi các đỉnh xuất hiện hay online thì biểu hiện bằng các chấm nhỏ trước

Biểu diễn trên góc phần tư thứ nhất của mặt phẳng Oxy với:

• Khi hai đỉnh bắt đầu liên kết với nhau bằng một đường thẳng dọc nối hai

đỉnh đó trên hình.

chấm tại thời điểm liên kết và một đường thẳng song song với trục hoành

Hình 2.1: Đồ thị luồng S = (T, V, W, E).

để cho biết liên kết với nhau trong thời gian bao lâu.

W = {([1, 8] , a) ∪ ([0, 8] , b) ∪ ([0, 10] , c) ∪ ([0, 4] ∪ [5, 10] , d)} ,

E = {([2, 6] , ab) ∪ ([1, 5] , ac) ∪ ([3, 7] , bc) ∪ ([6, 8] , bd) ∪ ([5.5, 10] , cd)} ,

Ta = [1, 8] , Tb = [0, 8] , Tc = [0, 10] , Td = [0, 4] ∪ [5, 10] , Tab = [2, 6] , Tac = [1, 5] , Tbc = [3, 7] , Tcd = [5.5, 10] , Tbd = [6, 8] , Tad = ∅. Ta = [1, 8]: Nhân vật a hiện diện từ giây thứ 1 đến giây thứ 8, Ta,b = [2, 8]: Giây thứ 2, a kết nối với nhân vật b đến giây thứ 6 thì kết thúc.

Ví dụ 2.1.1. Đồ thị luồng S trên Hình 2.1 với T = [0, 10], V = {a, b, c, d},

16

Nếu tất cả các đỉnh đều xuất hiện trên toàn bộ thời gian, nghĩa là Tu = T với mọi u thì khái niệm đồ thị luồng không còn tập W nữa và trở thành khái niệm

luồng liên kết. Luồng liên kết là trường hợp đặc biệt của đồ thị luồng.

• T là tập các khoảng thời gian.

• V là tập hữu hạn các đỉnh.

• E ⊆ T × V ⊗ V là tập các phần tử (t, uv), mỗi phần tử bao gồm thời

Định nghĩa 2.1.2. Luồng liên kết là bộ L = (T, V, E), trong đó:

điểm t và liên kết uv sao cho u, v xuất hiện và kết nối với nhau tại thời

Hình 2.2: Luồng liên kết L = (T, V, E).

điểm t.

Ví dụ 2.1.2. Luồng liên kết L trên Hình 2.2 với T = [0, 10], V = {a, b, c, d}

E = {([2, 6] , ab) ∪ ([1, 5] , ac) ∪ ([3, 7] , bc) ∪ ([6, 8] , bd) ∪ ([5.5, 10] , cd)} .

Tab = [2, 6] , Tac = [1, 5] , Tbc = [3, 7] , Tcd = [5.5, 10] , Tbd = [6, 8] , Tad = ∅.

Nhận xét 2.1.1. Trên luồng liên kết L = (T, V, E), với mọi đỉnh u, v ∈ V ,

Tuv ∈ {∅, T } thì luồng liên kết trở thành đồ thị trong thời gian T . Chúng ta

nếu tất cả các liên kết có trong L đều xuất hiện trên toàn bộ thời gian T ,

17

thấy rằng đồ thị chính là một trường hợp đặc biệt của đồ thị luồng, qua hình vẽ

Hình 2.3: Luồng liên kết (T, V, E) là đồ thị G = (V, E) nếu Tuv ∈ {∅, T }.

2.1 chúng ta có thể thấy rõ được điều đó.

Việc mở rộng đồ thị thành đồ thị luồng cần phải giữ được các định nghĩa và

tính chất cơ bản của đồ thị như số đỉnh, số cạnh, mật độ, đường đi và sự liên

thông.

2.2 Mở rộng khái niệm đỉnh và cạnh

Trong đồ thị luồng, các đỉnh và liên kết có thể xuất hiện tại các thời điểm

khác nhau. Vì thế số đỉnh và liên kết của S như là lượng thời gian mà đỉnh và

liên kết đó góp mặt. Ta định nghĩa:

Định nghĩa 2.2.1. [2] Cho đồ thị luồng S = (T, V, W, E)

18

• Đóng góp của đỉnh u trong S : nu = |Tu| |T | . nu = |W | |T | .

• Đóng góp của liên kết uv trong S : muv = |Tuv| |T | .

Số đỉnh của S là: n = (cid:80) u∈V ⊗V

muv = |E| |T | .

uv∈V ⊗V

Số liên kết của S là: m = (cid:80)

n =

+

+

+

=

= 3.4.

|Ta| |T |

|Tb| |T |

|Tc| |T |

|Td| |T |

7 + 8 + 10 + 4 + 5 10

Ví dụ 2.2.1. Ở hình 2.1: Số đỉnh của đồ thị luồng là

m =

+

+

+

+

=

= 1.85.

|Tab| |T |

|Tac| |T |

|Tbc| |T |

|Tcd| |T |

|Tbd| |T |

4 + 4 + 4 + 4.5 + 2 10

Số liên kết trên đồ thị luồng là:

Nhận xét 2.2.1. Khi đồ thị luồng là luồng liên kết (các đỉnh online trên toàn

thời gian), Tu = T (∀u ∈ V ), thì nu = 1 và số đỉnh sẽ bằng số phần tử của V trong đồ thị G, n = |V |.

Khi luồng liên kết là đồ thị (các liên kết hoặc kết nối toàn thời gian hoặc

không kết nối), Tuv = {∅, T }, thì muv = {0, 1} và số liên kết sẽ bằng số phần tử của E trong đồ thị G, m = |E|.

Nhận thấy rõ yếu tố thời gian ảnh hưởng đến số cạnh và số đỉnh rất lớn, số

cạnh và số đỉnh không còn là số nguyên nữa. Số đỉnh phụ thuộc vào lượng thời

gian đỉnh đó xuất hiện. Nên khi chúng ta tính số đỉnh chính là tính số lần thời

gian mà đỉnh đó chiếm trong tổng số thời gian. Tương tự như vậy đối với số

cạnh. Khi đồ thị luồng có các đỉnh và các liên kết không thay đổi theo thời gian

thì số đỉnh và số liên kết vẫn được giữ nguyên như trong đồ thị. Đối với khái

niệm luồng con, bậc, đường hay thành phần liên thông có giữ được tính chất

của đồ thị hay không sẽ được thể hiện qua các mục dưới đây.

19

2.3 Đồ thị luồng con

Khái niệm luồng con của đồ thị luồng S = (T, V, W, E) được định nghĩa

như sau:

Định nghĩa 2.3.1. [2]Cho hai đồ thị luồng S = (T, V, W, E) và S(cid:48) = (T (cid:48), V (cid:48), W (cid:48), E(cid:48)). Ta nói S(cid:48) là đồ thị luồng con của S nếu V (cid:48) ⊆ V , T (cid:48) ⊆ T , W (cid:48) ⊆ W và E(cid:48) ⊆ E. Kí hiệu: S(cid:48) ⊆ S.

Định nghĩa 2.3.2. [2] Một cluster C của S là một tập con của W . Tập các liên

E (C) = {([b, e], uv) ⊆ E |([b, e], u) ⊆ C, ([b, e], v) ⊆ C } .

kết giữa các đỉnh trong C là

S cảm sinh bởi C.

Khi đó, đồ thị luồng S(C) = (T, V, C, E(C)) được gọi là đồ thị luồng con của

• T C

uv là tập thời gian của liên kết uv trong

u là tập thời gian của đỉnh u, T C C.

Kí hiệu:

• V C t

Hình 2.4: Đồ thị

luồng con của đồ thị

luồng S (hình 1.6) sinh bởi cluster

C = {([2, 5] , a) ∪ ([6, 8] , b) ∪ ([3, 4] , c) ∪ ([6, 10] , d)}.

là tập các liên kết uv có trong C tại thời gian t. là tập các đỉnh u, EC t

20

Định nghĩa 2.3.3. Cho đồ thị luồng S = (T, V, W, E) và thời gian t ∈ T , đồ

thị Gt = (Vt, Et) là đồ thị sinh bởi S tại thời gian t. Đồ thị Gt bao gồm tất cả các đỉnh và liên kết xuất hiện tại thời điểm t.

Ví dụ 2.3.1. Trên đồ thị luồng Hình 2.1, tại giây thứ 3 có các đỉnh a, b, c online

và các kết nối ab, bc, ac. Như vậy đồ thị G3 = ({a, b, c} , {ab, ac, bc}).

2.4 Hàng xóm và bậc

Định nghĩa 2.4.1. [2] Trong đồ thị luồng S = (T, V, W, E), hàng xóm N (u)

N (u) = {([b, e], v) ⊆ W, ∃([b, e], uv) ⊆ E} .

của đỉnh u là tập thời gian và đỉnh liên kết với u.

Số bậc của một đỉnh phụ thuộc vào số liên kết mà đỉnh đó tham gia. Với sự

góp mặt về thời gian, chúng ta nhận thấy có sự thay đổi về số đỉnh, số cạnh trong

đồ thị luồng nên số bậc cũng thay đổi. Theo định nghĩa về số đỉnh của đồ thị

luồng S, các đỉnh v kết nối với đỉnh u mất một lượng thời gian, từ đó bậc của

đỉnh u là sự đóng góp về mặt thời gian của mỗi liên kết với mỗi đỉnh v trong S.

Định nghĩa 2.4.2. Bậc d(u)(dS(u)) của đỉnh u trong đồ thị luồng S là số thời gian và đỉnh liên kết với u

d (u) =

=

=

muv.

|N (u)| |T |

|Tuv| |T |

v∈V

v∈V

(cid:88) (cid:88)

N (b) = {([2, 6] , a) , ([3, 7] , c) , ([6, 8] , d)} .

Ví dụ 2.4.1. Trên đồ thị luồng Hình 2.1, hàng xóm của đỉnh b là:

d (b) =

=

= 1.

|Tba| + |Tbc| + |Tbd| |T |

4 + 4 + 2 10

Vậy bậc của đỉnh b là:

21

Cũng như trong đồ thị, đồ thị luồng đơn vô hướng S = (T, V, W, E) có tổng

số bậc của tất cả các đỉnh bằng hai lần số liên kết:

d (u) =

= 2.m.

u∈V

v∈V

u∈V

|Tuv| |T |

(cid:88) (cid:88) (cid:88)

Khác với đồ thị G = (V, E), mỗi đỉnh của đồ thị luồng gắn với thời gian

xuất hiện nên trong việc tính trung bình bậc ta cần tính thêm sự đóng góp về

nu.d (u).

mặt thời gian của mỗi đỉnh đó trong S.

Định nghĩa 2.4.3. Trung bình bậc của đồ thị luồng S là: d (S) = 1 n (cid:80) u∈V

d (u) = 2.m

Nhận xét 2.4.1. Trong luồng liên kết L = (T, V, E), các đỉnh xuất hiện trên

n. (cid:80)

u∈V

toàn thời gian nên nv = 1 với mọi v, khi đó trung bình bậc của luồng liên kết là: d (L) = 1 n . Khi các cạnh liên kết trên toàn thời gian hoặc

không xuất hiện thì trung bình bậc của luồng liên kết sẽ bằng trung bình bậc

của đồ thị G. Vậy giá trị bậc của đỉnh và tính chất tổng bậc đỉnh bằng hai lần

số cạnh vẫn được bảo toàn trong lý thuyết đồ thị.

2.5 Đường, chu trình trong đồ thị luồng

Trong thực tế, chúng ta xét các vấn đề: tại thời điểm α, một người muốn

truyền thông tin đến người khác sao cho đúng thời điểm ω là người đó nhận

được, hay một người nắm giữ thông tin, làm sao mọi người đều biết được trong

một khoảng thời gian ngắn. Để giải quyết vấn đề này, người ta đã đưa ra định

nghĩa đường trong đồ thị luồng để có thể bao quát và xử lí dễ dàng hơn.

(α, u) đến (ω, v) trong S là một dãy (t0, u0, v0) , (t1, u1, v1) , . . . , (tk−1, uk−1, vk−1) , (tk, uk, vk) thuộc T × V × V sao cho u0 = u, vk = v, t0 ≥ α, tk ≤ ω, với mọi i, ui = vi−1, ti ≤ ti+1 và (ti, uivi) ∈ E, ([α, t0] , u) ⊆ W, ([tk, ω] , v) ⊆ W và với mọi i, ([ti, ti+1] , vi) ⊆ W .

Định nghĩa 2.5.1. [2] Cho một đồ thị luồng S = (T, V, W, E), một đường từ

22

Khi đó đường P gồm (t0, u), (tk, v) và (t, vi) với mọi i ∈ [0, k − 1] và t ∈ [ti, ti+1] bắt đầu tại t0, kết thúc tại tk, có độ dài bằng k + 1 và khoảng thời gian là tk − t0.

Nếu tồn tại một đường P từ (α, u) đến (ω, v) trong S thì ta có thể nói (ω, v) có thể với tới (α, u), kí hiệu: (α, u) (cid:57)(cid:57)(cid:75) (ω, v). Và đường P trong S không có tính đối xứng: (α, u) (cid:57)(cid:57)(cid:75) (ω, v) không có nghĩa là (ω, v) (cid:57)(cid:57)(cid:75) (α, u) trong

trường hợp α (cid:54)= ω.

Nếu tồn tại α và ω sao cho có đường (α, u) (cid:57)(cid:57)(cid:75) (ω, v) thì ta có thể nói v có

Hình 2.5: Đường (1, a) (cid:57)(cid:57)(cid:75) (10, c) là P1: (3, a, b), (9, b, c) (màu xanh) hoặc P2: (4, a, b), (5, b, d), (8, d, c) (màu cam) hoặc P3 = (2, a, b), (6, b, d), (9, d, c).

thể với tới được từ u, kí hiệu: u (cid:57)(cid:57)(cid:75) v, trừ trường hợp α (cid:54)= β.

Định nghĩa 2.5.2. [2] Một đường con Q của P là một dãy con (ti, ui, vi) , (ti+1, ui+1, vi+1) , . . . , (tj, uj, vj) của dãy định nghĩa đường P với j ≥ i. Khi đó Q là một đường từ (ti, ui) đến (tj, uj) trong S.

Một đường P là một chu trình nếu k > 0, u = v và ([α, ω] , v) ⊆ W . Nói

ω sao cho v hiện diện trên toàn thời gian từ α đến ω.

cách khác, đây là một đường từ đỉnh v tại thời gian α đến chính nó tại thời gian

Trong thực tế, chu trình trong S là một người a có thông tin và báo cho người

23

b biết, sau đó người b lại báo cho người khác, và cứ thế cuối cùng thông tin đến

cho người a. Chu trình có độ dài và khoảng thời gian bằng 0.

Ví dụ 2.5.1. Trên Hình 2.5, đường con của P2 = (2, a, b), (6, b, d).

Định nghĩa 2.5.3. Đườ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 là chu trình.

Đồ thị luồng S là acyclic nếu nó không có chu trình con nào.

Đường trong đồ thị luồng khác với đường trong đồ thị. Thứ nhất, không có

sự đối xứng: tồn tại đường đi từ u tới v nhưng chưa chắc có đường đi từ v tới u.

Thứ hai, ở đồ thị luồng có thêm thời gian nên đường đi từ u đến v ngoài việc

tính độ dài thì ta sẽ tính thêm giá trị thời gian đường đi này trong bao lâu.

Định nghĩa 2.5.4. [2] Đường đi ngắn nhất từ (α, u) đến (ω, v) trong S nếu đó

là đường đi có độ dài nhỏ nhất. Khi đó gọi độ dài này là khoảng cách từ (α, u)

đến (ω, v), kí hiệu: ∂ ((α, u), (ω, v)). Nếu trong S không có đường đi từ (α, u)

tới (ω, v) thì khoảng cách đó là vô cùng.

Đường đi ngắn nhất từ u tới v là đường có độ dài bằng ∂ ((α, u), (ω, v)) với

mọi α và ω, kí hiệu khoảng cách giữa u và v là: ∂(u, v). Đường đi nhanh nhất

từ (α, u) đến (ω, v) trong S nếu đó là đường đi mất ít thời gian nhất. Khi đó gọi

lượng thời gian này là độ trễ từ (α, u) đến (ω, v), kí hiệu: (cid:96) ((α, u) , (ω, v)).

Đường đi nhanh nhất từ u tới v là đường có thời gian bằng (cid:96) ((α, u), (ω, v))

với mọi α và ω, kí hiệu thời gian giữa u và v là: (cid:96)(u, v).

(8, d, c)(màu cam) với (cid:96) (a, c) = 8 − 4 = 4, và đường đi ngắn nhất từ a tới c là

(3, a, b), (9, b, c)(màu xanh) với ∂ (a, c) = 2.

Ví dụ 2.5.2. Trên Hình 2.5: đường đi nhanh nhất từ a tới c là (4, a, b), (5, b, d),

24

Trong đồ thị luồng, chúng ta có thể thấy việc tìm đường đi nhanh nhất và

đường đi ngắn nhất giúp con người hay máy móc có thể tiết kiệm được rất nhiều

thời gian và chi phí. Để giải quyết vấn đề này, chúng tôi sẽ trình bày cụ thể trong

chương 3.

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

Đường đi trong đồ thị luồng đều phụ thuộc vào sự tăng dần theo thời gian.

Vì thế sự liên thông trong đồ thị luồng có liên thông yếu và liên thông mạnh

cũng gần giống như sự liên thông trong đồ thị có hướng G = (V, E).

Định nghĩa 2.6.1. [2] Cho đồ thị luồng S = (T, V, W, E), một (ω, v) có thể

đến được yếu từ (α, u) nếu có một dãy (t0, u0, v0) , (t1, u1, v1) , . . . , (tk, uk, vk), các phần tử thuộc T × V × V sao cho u0 = u, vk = v, với mọi i, ui = vi−1, (ti, uivi) ∈ E, [α, t0] × {u} ⊆ W, [tk, ω] × {v} ⊆ W và với mọi i, [ti, ti+1] × {vi} ⊆ W. Kí hiệu: (α, u)---(ω, v).

Dãy được định nghĩa trên cũng tương tự như dãy được định nghĩa ở trong

t0 ≥ α, tk ≤ ω và với mọi i, tk ≤ tk+1 nên sự đến được yếu có đối xứng: nếu (α, u)---(ω, v) thì (ω, v)---(α, u).

đường đi của đồ thị luồng, nhưng bỏ đi các điều kiện ràng buộc về thời gian là

Định nghĩa 2.6.2. Đồ thị luồng S = (T, V, W, E) được gọi là liên thông yếu

nếu với mọi (α, u), (ω, v), (α, u)---(ω, v).

Định nghĩa 2.6.3. Một cluster C ⊆ W được gọi là liên thông yếu nếu đồ thị

luồng S(C) = (T, V, C, E(C)) liên thông yếu. Cluster C là một cluster liên

thông yếu cực đại nếu C không nằm trong cluster liên thông yếu khác. Mỗi

S.

cluster liên thông yếu cực đại là một thành phần liên thông yếu của đồ thị luồng

25

Hình 2.6: Đồ thị luồng không liên thông yếu.

Ví dụ 2.6.1. Đồ thị luồng ở Hình 2.6 không liên thông yếu vì tồn tại (8, d) không

W2 = {([8, 10] , a) ∪ ([7, 10] , b)} .

có liên kết yếu đến (9, a). Nhưng có hai thành phần liên thông yếu W1, W2 đó là: W1 = {([0, 6] , a) ∪ ([0, 3] , b) ∪ ([4, 9] , c) ∪ ([0, 10] , d)},

Trong cluster liên thông cực đại W1, mọi đỉnh đều có đường kết nối yếu với

nhau, như từ (4, a) đến (7, c) có kết nối yếu: (3, a, b), (1, b, d), (6, d, c).

Đối với một cluster liên thông yếu, nếu một người biết thông tin thì đồng

nghĩa với việc tất cả mọi người ở trong cluster đó đều biết, kể cả với người đã

kết nối trước thời gian mà thông tin đã nhận.

Định nghĩa 2.6.4. Đồ thị luồng S = (T, V, W, E) được gọi là liên thông mạnh nếu với mọi (α, u), (ω, v) với α (cid:54) ω đều tồn tại một đường từ (α, u) đến (ω, v).

Định nghĩa 2.6.5. Một cluster C ⊆ W được gọi là liên thông mạnh nếu đồ thị

luồng S(C) = (T, V, C, E(C)) liên thông mạnh. Cluster C là một cluster liên

thông mạnh cực đại nếu C không nằm trong cluster liên thông mạnh khác.

Đối với một cluster liên thông mạnh, nếu một người biết thông tin nằm trong

một cluster liên thông mạnh tại một thời điểm thì ngay sau thời điểm đấy tất cả

mọi người trong cluster đều nhận được thông tin.

Các cluster liên thông yếu cực đại trong đồ thị luồng là các thành phần liên

26

thông yếu rời nhau, nhưng đối với các cluster liên thông mạnh cực đại lại đan

xen nhau và không chia thành các thành phần liên thông, ví dụ sau sẽ cho chúng

ta thấy điều này.

Ví dụ 2.6.2. Đồ thị luồng hình dưới đây không liên thông mạnh vì không tồn

Hình 2.7: Luồng liên kết không liên thông mạnh.

tại đường đi từ (3, b) đến (4, d).

W3 = {([0, 3] , a) ∪ ([2, 3] , b) ∪ ([1, 2] , d)}(màu xám),

W4 = {([1, 2] , a) ∪ ([2, 2] , b) ∪ ([6, 9] , c) ∪ ([0, 10] , d)}(màu xanh).

Nhưng có hai cluster liên thông mạnh cực đại chồng chéo nhau đó là

Một cluster liên thông mạnh cực đại không là một thành phần liên thông

mạnh trong đồ thị luồng S. Có thể thấy rõ trong cluster W3, tại giây thứ 1 có ba đỉnh a, b, d xuất hiện và có liên kết ad nên đồ thị G1 không liên thông. Vậy nếu như đồ thị Gt liên thông với mọi t thì đồ thị luồng S liên thông mạnh hay

không.

Mệnh đề 2.6.1. Cho đồ thị luồng S = (T, V, W, E), Tu = T với mọi u. Đồ thị Gt = (Vt, Et) liên thông với mọi t trong S khi và chỉ khi đồ thị luồng S liên

thông mạnh.

27

u đến v với mọi u, v tại các thời điểm t, dẫn đến đồ thị Gt liên thông với mọi t.

Chứng minh. + Nếu đồ thị luồng S liên thông mạnh thì luôn tồn tại đường đi từ

+ Ta chứng minh điều ngược lại bằng phản chứng: Giả sử đồ thị S không liên

thông mạnh, khi đó tồn tại (α, u), (ω, v) với α ≤ ω sao cho không có đường đi

từ (α, u) đến (ω, v). Vì Tu = T , các đỉnh xuất hiện toàn thời gian nên (α, u) đi tới được (ω, u). Vậy nên không có đường đi từ (ω, u) đến (ω, v), mâu thuẫn

với đồ thị Gt liên thông với mọi t.

Với cluster của S, nếu thêm điều kiện các đỉnh trong cluster phải xuất hiện

cùng một khoảng thời gian thì cluster liên thông mạnh cực đại vẫn chưa là thành

phần liên thông của S. Ví dụ dưới đây chỉ ra hai cluster liên thông mạnh cực

đại trong đồ thị luồng đan xen nhau.

Ví dụ 2.6.3. Trong Hình 2.8, hai cluster liên thông cực đại C1 = {([0, 4] , a) ∪ ([0, 4] , b) ∪ ([0, 4] , c) ∪ ([0, 4] , d)} và C2 = {([0, 8] , a) ∪ ([0, 8] , b)} đan xen

Hình 2.8: Cluster liên thông mạnh cực đại vẫn chưa là thành phần liên thông.

nhau.

Ngoài ra, VC2 = {a, b} không là cluster liên thông cực đại trong đồ thị G4 vì nằm trong cluster liên thông {a, b, c, d}. Từ đây, chúng ta đi đến định nghĩa

thành phần liên thông mạnh.

28

Định nghĩa 2.6.6. Một thành phần liên thông mạnh C của S là một cluster C

liên thông mạnh cực đại thỏa mãn các đỉnh trong C phải xuất hiện cùng một

Hình 2.9:

khoảng thời gian (C = TC × VC) trong đó VC là thành phần liên thông của đồ thị Gt với mọi t.

C1 = {([0, 4] , a) ∪ ([0, 4] , b) ∪ ([0, 4] , c) ∪ ([0, 4] , d)}(màu xanh), C2 = {([4, 6] , b)}(màu lam), C3 = {([6, 8] , b) ∪ ([6, 8] , d)}(màu cam).

Ví dụ 2.6.4. Đồ thị luồng ở Hình 2.9 có các thành phần liên thông mạnh là:

Nhận xét 2.6.1. Thành phần liên thông mạnh trong đồ thị luồng có các đỉnh và

cạnh không thay đổi trong cùng một khoảng thời gian, khi đó thành phần liên

thông mạnh của đồ thị luồng cũng là thành phần liên thông trong đồ thị bình

thường.

Nhận xét 2.6.2. Trong đồ thị luồng, tất cả các định nghĩa cơ bản về đỉnh, cạnh,

bậc, đường và sự liên thông đều được bảo toàn với đồ thị. Ta thấy được đồ thị

là một trường hợp đặc biệt của đồ thị luồng. Sự mở rộng khái niệm này giúp

chúng ta có thể nhìn nhận các kết nối theo thời gian một cách rõ ràng, và vận

dụng nó để xử lí các bài toán đang rất được quan tâm như: tìm đường đi nhanh

nhất trong ứng dụng bản đồ.

29

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

Trên thực tế, hai người chơi thân với nhau thì sẽ thường xuyên nói chuyện

khi cùng xuất hiện trong một khoảng thời gian. Các liên kết xuất hiện nhiều hay

ít tùy vào mức độ thân thiết giữa hai người. Để đo được mức độ thân thiết giữa

các mối quan hệ đó, chúng ta đi đến định nghĩa mật độ trong đồ thị luồng.

δ(S), là tỷ lệ giữa tổng số thời gian các liên kết và tổng số thời gian các cặp

Định nghĩa 2.7.1. [2] Mật độ của đồ thị luồng S = (T, V, W, E) được kí hiệu

|Tuv|

.

δ(S) =

|Tu ∩ Tv|

đỉnh cùng xuất hiện. Ta có:

(cid:80) uv∈V ⊗V (cid:80) uv∈V ⊗V

Nhận xét 2.7.1. Mật độ của đồ thị luồng là xác suất khi chọn ngẫu nhiên một

E. Nói cách khác, mật độ là xác suất chọn ngẫu nhiên một thời điểm và hai đỉnh

phần tử (t, uv) thuộc T × V ⊗ V sao cho (t, u), (t, v) thuộc W để (t, uv) thuộc

để liên kết giữa hai đỉnh xuất hiện tại thời điểm này.

|Tu ∩ Tv| = 0 thì mật độ của đồ thị

uv∈V ⊗V

Quy ước, một đồ thị luồng có (cid:80)

luồng đó bằng 0.

|Tuv|

|Tuv|

δ (L) =

=

=

.

|T |

2 (cid:80) uv∈V ⊗V n (n − 1) |T |

2m n (n − 1)

Định nghĩa 2.7.2. Luồng liên kết L = (T, V, E), Tu = Tv = T với mọi u, v và n = |V | có mật độ là:

(cid:80) uv∈V ⊗V (cid:80) uv∈V ⊗V

Nhận xét 2.7.2. Nếu tất cả các liên kết trong luồng liên kết không thay đổi theo

thời gian với mọi u, v thuộc V thì mật độ trong luồng liên kết chính là mật độ

trong đồ thị.

δ (S) =

|Tab| + |Tad| + |Tcd| |Ta ∩ Tb| + |Ta ∩ Tc| + |Ta ∩ Td| + |Tb ∩ Tc| + |Tb ∩ Td| + |Tc ∩ Td|

Ví dụ 2.7.1. Mật độ của đồ thị luồng S trong Hình 2.6 là

30

3+1+3

=

3+2+8+2+6+5 = 0.269.

Định nghĩa 2.7.3. Mật độ của một phần tử uv trong V ⊗ V là xác suất chọn

δ (uv) =

.

|Tuv| |Tu ∩ Tv|

hai đỉnh u, v xuất hiện cùng một thời điểm t để hai đỉnh đó là một liên kết tại t.

Mật độ của phần tử uv cho chúng ta thấy được mức độ thân thiết giữa hai

đỉnh u và v.

Định nghĩa 2.7.4. Mật độ của một đỉnh u là xác suất chọn ngẫu nhiên một đỉnh

khác u cùng xuất hiện với u tại thời điểm t để đỉnh u và đỉnh đó liên kết với

|Tuv|

.

δ (u) =

|Tv ∩ Tu|

nhau tại t.

(cid:80) v∈V,v(cid:54)=u (cid:80) v∈V,v(cid:54)=u

Mật độ của một đỉnh u cho chúng ta thấy được sự hòa đồng của đỉnh u trong

u với người khác sẽ tăng khi họ gặp nhau cùng một thời điểm.

xã hội. Nghĩa là, nếu đỉnh u thân thiết với nhiều người thì mức độ tương tác của

Định nghĩa 2.7.5. Mật độ tại một thời điểm t thuộc T là xác suất chọn ngẫu

nhiên hai đỉnh xuất hiện tại thời điểm t để hai đỉnh này liên kết với nhau. Đây

.

δ (Gt) =

|Et| |Vt ⊗ Vt|

cũng chính là mật độ của đồ thị Gt.

|T | = muv và δ (t) = |Et|

t. Dẫn đến δ (uv) = |Tuv| δ(t).

Trong luồng liên kết L = (T, V, E), Tv = T với mọi v và Vt = V với mọi |V ⊗V |. Từ đấy cho thấy δ(L) bằng

Nhận xét 2.7.3. Nếu luồng liên kết có Tuv ∈ {∅, T } thì δ(uv) bằng 0 hoặc bằng 1, nghĩa là liên kết uv không thay đổi theo thời gian, hoặc xuất hiện hoặc

31

không trên toàn bộ thời gian. Khi đó mật độ của luồng liên kết chính là mật độ

của đồ thị.

Định nghĩa 2.7.6. [2] Trong đồ thị luồng S = (T, V, W, E), hệ số phân cụm

của một đỉnh u thuộc V là mật độ của đồ thị luồng tạo nên bởi các hàng xóm

|Tuv ∩ Tuw ∩ Tvw|

cc (u) = δ (N (u)) =

.

|Tuv ∩ Tuw|

của đỉnh đó. Khi đó:

(cid:80) vw∈V ⊗V (cid:80) vw∈V ⊗V

Nói cách khác, cc(u) là xác suất để hai hàng xóm v và w của u xuất hiện tại

thời điểm t có liên kết với nhau tại t.

Trong trường hợp cc(u) = 0 nghĩa là các hàng xóm của đỉnh u không liên

kết với nhau.

u mất một lượng thời gian, từ đó mật độ của đỉnh u là sự đóng góp về mặt thời

Theo định nghĩa về số đỉnh của đồ thị luồng S, các đỉnh v kết nối với đỉnh

gian của mỗi liên kết với mỗi đỉnh v. Vì vậy, hệ số phân cụm của đồ thị luồng

phải có sự đóng góp về mặt thời gian của mỗi đỉnh u trong S.

Định nghĩa 2.7.7. Hệ số phân cụm đỉnh của đồ thị luồng S là hệ số phân cụm

trung bình của tất cả các đỉnh có trong S.

cc (V ) =

.cc (u) .

nu.cc (u) =

1 n

|Tu| |W |

v∈V

u∈V

(cid:88) (cid:88)

Hệ số phân cụm của đồ thị luồng là xác suất để một đỉnh u tại thời điểm t có

hơn một hàng xóm và hai hàng xóm của đỉnh này liên kết với nhau tại thời gian

đó.

Trong luồng liên kết L = (T, V, E), nv = 1 với mọi v, khi đó hệ số phân

cụm đỉnh của L chính bằng hệ số phân cụm của đồ thị G = (V, E).

cc (u).

cc (V ) =

1 n

u∈V

(cid:88)

32

V × V ))) với có các đỉnh đôi một phân biệt là bộ ba liên thông nếu tại thời

Định nghĩa 2.7.8. Trong đồ thị luồng S, ta nói (t, (u, v, w)) trong (T × (V ×

∨.

điểm t có liên kết uv và vw. Tập tất cả bộ ba liên thông của S được kí hiệu là

Nếu bộ ba liên thông có liên kết giữa u và w tại thời điểm t thì được gọi là

tam giác. Tập tất cả các tam giác của S được kí hiệu là (cid:79).

Định nghĩa 2.7.9. [2] Tỷ lệ bắc cầu của đồ thị luồng S là xác suất để một bộ

.

tr (S) =

|(cid:79)| |∨|

ba liên thông là một tam giác. Kí hiệu:

Cũng như trong đồ thị, hệ số phân cụm và tỷ lệ bắc cầu của đồ thị luồng

là thước đo mức độ các đỉnh liên kết với nhau nhưng xét giới hạn trong một

khoảng thời gian.

Kết luận: Chúng ta nhận thấy rằng khi các cạnh và các liên kết trong đồ thị

luồng không thay đổi theo thời gian thì đồ thị luồng trở thành đồ thị. Các khái

niệm cơ bản và tính chất trong đồ thị luồng như số cạnh, số đỉnh, bậc, mật độ,

đường đi vẫn đúng khi chúng ta giới hạn lên đồ thị. Tuy nhiên có một số khái

niệm đã thay đổi do ảnh hưởng bởi yếu tố thời gian như sự liên thông trong đồ

thị luồng, xuất hiện khái niệm liên thông mạnh và liên thông yếu. Trong toàn

bộ chương 2, chúng tôi chỉ trình bày chi tiết những khái niệm cơ bản để làm rõ

hơn mô hình đồ thị luồng và luồng liên kết.

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 một số thuật toán trong đồ thị là

thuật toán liệt kê các clique cực đại và thuật toán duyệt theo chiều rộng. Các

thuật toán này được chúng tôi áp dụng để giải quyết những bài toán trong đồ

thị luồng và luồng liên kết. Ở mục 3.1, chúng tôi trình bày lại thuật toán liệt kê

các ∆-clique cực đại trên luồng liên kết và đề xuất một tính toán nhỏ để cải tiến

thuật toán. Ở mục 3.2, chúng tôi đề xuất thuật toán tìm đường đi ngắn nhất và

đường đi nhanh nhất trên đồ thị luồng.

3.1 Tìm các clique cực đại trong luồng liên kết

Trong đồ thị, người ta sử dụng khái niệm clique để thể hiện một nhóm đỉnh

liên kết chặt chẽ với nhau. Một clique là một tập các đỉnh đề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

33

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

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.

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

Do vậy đồ thị con G[C] là một đồ thị đầy đủ.

Đị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 ← ∅.

V (G). Khi đó các đỉnh trong S và M là các clique tầm thường.

2: For v ∈ V : Thêm các v vào tập S và tập M đến khi M = V (G), S =

3: While S (cid:54)= ∅ do

C := C ∪ X

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

5:

For v ∈ V \X do 6:

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

36

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

8:

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

Hình 3.2:

sau:

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

[τ, max(τ + ∆, e)].

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

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

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

khoảng con có thời gian ∆.

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

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}) ,

38

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

∆-clique lớn hơn và khác nó.

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

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.

(V, E).

Ý tưởng thuật toán: Tương tự như thuật toán tìm clique trong đồ thị G =

M là tập các ∆-clique đã tìm được (có thể cực đại hoặc không, giúp ghi nhớ

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

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.

fbuv −∆ leuv + ∆ sao cho

- 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(cid:48) < b sao cho ([b(cid:48), e] , X) với b(cid:48) = max u,v∈X là ∆-clique, và cũng như tìm giá trị e(cid:48) > b với e(cid:48) = min u,v∈X ([b, e(cid:48)] , 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.

∆-clique cực đại trong luồng liên kết

THUẬT TOÁN 2 [4]

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 (cid:54)= ∅ do

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

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

5:

For v ∈ V \X do 6:

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

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

8:

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

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

10:

fbuv;

f := max u,v∈X

11:

b(cid:48) := f − ∆;

12:

If b (cid:54)= b(cid:48) then 13:

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

14:

40

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

If ([b(cid:48), e] , X) /∈ M then 15:

16:

leuv;

l := min u,v∈X e(cid:48) := l + ∆;

17:

18:

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

If e (cid:54)= e(cid:48) then 19:

20:

If ([b, e(cid:48)] , X) /∈ M then 21:

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

22:

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

24: Return R.

L = ([0, 10] , {a, b, c} , {(2, ab) , (3, ac) , (4, bc) , (5, ab)})

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

Chạy thuật toán tìm 4-clique được mô phỏng trong Hình 3.5.

([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

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

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

b∗ = max (t − ∆, b)

e∗ = min (t + ∆, e)

thời gian lớn hơn như sau:

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,

M .

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

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ó

∆-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 lớn hơn các ∆-clique tầm thường, khoảng thời gian [t, t] trong

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.

42

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

Nhận xét 3.1.3. Khi dữ liệu của chúng ta rất lớn thì thuật toán 2 có thể gây

ra sự quá tải bộ nhớ để nhớ các ∆-clique nhỏ lẻ với các khoảng thời gian xen

kẽ nhau. Với cách cải tiến thuật toán 2 thành thuật toán 3, chúng ta đã rút gọn

được đáng kể lượng thời gian chạy thuật toán tìm các ∆-clique cực đại trong

luồng liên kết.

3.2 Tìm đường đi ngắn nhất và đường đi nhanh nhất trong

đồ thị luồng

Trong đồ thị, chúng ta đã biết đến rất nhiều thuật toán tìm đường đi ngắn

nhất như thuật toán duyệt theo chiều rộng (BFS), thuật toán Dijkstra, thuật toán

duyệt theo chiều sâu (DFS). Ở đây chúng tôi áp dụng thuật toán duyệt theo chiều

rộng để tìm đường đi ngắn nhất và đường đi nhanh nhất giữa hai đỉnh trong đồ

thị luồng S = (T, V, W, E).

3.2.1 Thuật toán tìm đường đi ngắn nhất

*[7] Thuật toán duyệt theo chiều rộng trong đồ thị.

43

BÀI TOÁN 4: Cho đồ thị G = (V, E). Tìm đường đi ngắn nhất giữa hai

đỉnh a, b trong G.

Ý tưởng của thuật toán 4:

- Xây dựng Q là dãy các đỉnh u thuộc V chờ để xét duyệt ưu tiên theo chiều

rộng, p[u] với u thuộc V là đỉnh kề với u đã được xét duyệt để truy vết đường

đi.

- Bước đầu thuật toán đưa đỉnh gốc a vào Q và thăm tất cả các đỉnh kề với a

rồi lần lượt đưa các đỉnh kề vào cuối dãy Q. Xóa a ra khỏi Q.

- Lần lượt kiểm tra các đỉnh trong dãy Q theo thứ tự. Đỉnh nào được kiểm

tra sẽ thăm các đỉnh kề rồi đưa vào cuối dãy Q, đánh dấu vết đỉnh đó và xóa

khỏi Q. Quá trình này lặp đi lặp lại cho đến khi tìm được đỉnh cuối b và chúng

ta truy vết đường đi ngắn nhất.

THUẬT TOÁN 4

Tìm đường đi ngắn nhất giữa hai đỉnh a và b trong đồ thị.

Input: Một đồ thị G = (V, E), hai đỉnh a và b thuộc V .

Output: Tìm đường đi ngắn nhất giữa hai đỉnh a và b.

Q là dãy các đỉnh u thuộc V chờ để xét duyệt, p[u] với u thuộc V là đỉnh

Bước 1: Q := {a}; p[u] := ∅ với mọi u ∈ V .

ngay trước đỉnh u trên đường đi từ a tới b.

Bước 2: Nếu Q (cid:54)= ∅ thì lặp lại các bước sau:

- Lấy một đỉnh u đầu tiên trong dãy Q và quan sát:

+ Nếu đỉnh u = b thì dừng quá trình tìm kiếm, sau đó truy vết đường đi từ a

tới b và trả về kết quả.

+ Nếu đỉnh u (cid:54)= b thì lần lượt quan sát các đỉnh v kề với u. Sau đó đưa các

đỉnh v xếp thứ tự vào cuối dãy Q chờ để được xét duyệt. Truy vết p[v] := u và

44

xóa u ra khỏi Q.

Nếu Q = ∅ mà chưa thấy đỉnh b thì dừng việc tìm kiếm và trả lời "không có

đường đi".

Áp dụng thuật toán duyệt theo chiều rộng (BFS) tìm đường đi ngắn nhất

(V, T, W, E). Mặc dù đồ thị luồng S có thêm yếu tố thời gian nhưng chúng ta

trong đồ thị G = (V, E) để tìm đường đi ngắn nhất trong đồ thị luồng S =

vẫn có thể áp dụng được thuật toán BFS. Chúng ta vận dụng BFS bằng cách lần

lượt xét các đỉnh kề tại các thời điểm lớn hơn cho đến khi đến được đỉnh đích

cần tìm.

* Thuật toán duyệt theo chiều rộng trong đồ thị luồng S = (T, V, W, E).

BÀI TOÁN 5: Cho đồ thị luồng S = (T, V, W, E). Tìm đường đi ngắn nhất

giữa hai đỉnh a, b trong S.

Ý tưởng của thuật toán 5:

- Xây dựng Q là dãy các dãy phần tử (t, a) thuộc W chờ để xét duyệt ưu tiên

theo chiều rộng, p[u] với u thuộc V là đỉnh kề với u đã được xét duyệt để truy

vết đường đi. P là dãy các phần tử (t, p[u], u) để xuất đường đi.

- Bước đầu thuật toán đưa các phần tử (t, a) vào Q trong đó a có kết nối với

đỉnh u ∈ V tại thời điểm t, các phần tử (t, a) được sắp xếp theo thứ tự tăng dần

theo thời gian t trong Q. Lấy phần tử (t, a) đầu tiên ra khỏi dãy Q và thăm tất

cả các phần tử có đỉnh kề với a tại thời điểm lớn hơn t rồi lần lượt đưa phần tử

chứa các đỉnh kề vào cuối dãy Q.

- Lần lượt kiểm tra các phần tử trong dãy Q theo thứ tự. Phần tử nào được

kiểm tra sẽ đánh dấu vết đỉnh của phần tử đó và xóa khỏi Q.

- Quá trình đó lặp đi lặp lại cho đến khi tìm được phần tử chứa đỉnh b và

chúng ta truy vết đường đi ngắn nhất.

45

THUẬT TOÁN 5

Tìm đường đi ngắn nhất giữa hai đỉnh a và b trong đồ thị luồng.

Input: Một đồ thị luồng S = (T, V, W, E), hai đỉnh a và b thuộc V .

Output: Tìm đường đi ngắn nhất giữa hai đỉnh a và b.

Q là dãy các phần tử (t, u) thuộc W chờ để xét duyệt, p[u] với u thuộc V là

Bước 1: Q := {(t, a)}; p[u] := ∅ với mọi u ∈ V , P := ∅.

đỉnh ngay trước đỉnh u trên đường đi từ a tới b

Bước 2: Nếu Q (cid:54)= ∅ thì lặp lại các bước sau:

- Lấy phần tử (t, u) đầu tiên trong dãy Q và quan sát:

+ Nếu phần tử (t, u) có u = b thì dừng quá trình tìm kiếm, sau đó truy vết

đường đi từ a tới b và trả về kết quả.

+ Nếu phần tử (t, u) có u (cid:54)= b thì lần lượt quan sát các phần tử kề (t(cid:48), v) trong đó v kề với u và t(cid:48) ≥ t. Sau đó đưa các phần tử (t(cid:48), v) xếp thứ tự vào cuối dãy Q chờ để được xét duyệt. Truy vết p[v] := u và P := P ∪ {(t(cid:48), p[v], v)}.

Xóa (t, u) ra khỏi Q.

Nếu Q = ∅ mà chưa thấy phần tử nào có chứa đỉnh b thì dừng việc tìm kiếm

và trả lời "không có đường đi".

Ví dụ 3.2.1. Cho đồ thị luồng Hình 2.5, sử dụng thuật toán 6 để tìm đường đi

ngắn nhất từ a đến c. Thuật toán được mô phỏng qua hình vẽ 3.7 và trả về kết

quả là: (2, a, b), (9, b, c).

Dãy Q trong thuật toán này dùng để liên tục cập nhật các phần tử có đỉnh kề

tại các thời điểm sau đó cho đến khi tìm được đỉnh cuối của đường đi. Chúng

ta nhận thấy rằng thuật toán tìm đường đi ngắn nhất trong đồ thị được mở rộng

cho đồ thị luồng bằng cách thêm yếu tố thời gian.

46

Hình 3.7: Mô phỏng thuật toán 5 tìm đường đi ngắn nhất từ a đến c.

Trong đồ thị luồng, thuật toán 5 sẽ xét lần lượt các phần tử (t, u) có trong W ,

mỗi một phần tử này được đưa vào và đưa ra Q nhiều nhất là một lần. Chúng

ta xem mỗi (t, u) như là một đỉnh. Vì thế thuật toán 5 phải xét tổng cộng số

đỉnh tối đa với thời gian là O(|T | . |V |). Sau khi kiểm tra một phần tử (t, u),

chúng ta lại thăm dò các phần tử chứa đỉnh kề với u và duyệt các phần tử này

nhiều nhất là một lần. Vì thế thuật toán 5 phải xét tổng cộng số liên kết tối đa

O(|T | . (|V | + |E|)), trong đó T là khoảng thời gian phải xét. Chúng ta xét các

với thời gian là O(|T | . |E|). Vậy, độ phức tạp tính toán của thuật toán 5 là:

mốc thời gian trong khoảng thời gian T , ví dụ T = [0, 10] thì ta xét các mốc

thời điểm 1, 2, . . . , 9, 10 , khi đó |T | = 10.

Nhận xét 3.2.1. Đồ thị luồng có các đỉnh và liên kết không thay đổi trong toàn

|T | = 1, khi đó độ phức tạp tính toán cũng đúng cho thuật toán tìm đường đi

bộ thời gian T thì độ phức tạp của thuật toán 5 là O(|T | . (|V | + |E|)) với

ngắn nhất trong đồ thị.

3.2.2 Thuật toán tìm đường đi nhanh nhất

BÀI TOÁN 6: Cho đồ thị luồng S = (T, V, W, E). Tìm đường đi nhanh

nhất giữa hai đỉnh a, b trong S.

Tương tự như thuật toán tìm đường đi ngắn nhất trong đồ thị luồng, chúng

47

ta xét lần lượt các phần tử có đỉnh kề với đỉnh gốc ban đầu. Nhưng thuật toán

tìm đường đi nhanh nhất là thuật toán tìm đường đi mất ít thời gian nhất, vậy

nên yếu tố thời gian rất quan trọng trong việc tìm kiếm. Chúng ta cần phải xét

lần lượt các đỉnh kề theo thứ tự tăng dần theo thời gian và sau mỗi lần xét duyệt

ta tính lượng thời gian mất đi để việc tìm kiếm đường đi nhanh nhất trở nên dễ

dàng hơn.

Ý tưởng thuật toán 6:

- Xây dựng các tập Q, p[u], P trong đó Q là dãy các phần tử (t, u, d(u))

trong đó: t thuộc T , u thuộc V và d(u) là lượng thời gian mất đi nhỏ nhất khi

đi từ đỉnh a đến đỉnh u; p(u) với u thuộc V là đỉnh kề với đỉnh u đã xét duyệt

dùng để truy vết đường đi; tập P là dãy các phần tử (t, p[u], u) để xuất đường

đi.

Bước 1: Q := {(t, a, d(a))} trong đó đỉnh a có kết nối với u ∈ V tại thời

điểm t ∈ T , d(a) := 0; p[u] := ∅ với mọi u ∈ V ; P := ∅.

Bước 2: Quan sát các phần tử (t, u, d(u)) chứa u kề với a tại thời điểm t, khi

đó d(u) := 0 (Vì a liên kết với u tại thời điểm t nên thời gian mất đi là 0 khi

đi từ a đến u). Chúng ta đưa các phần tử (t, u, d(u)) vào Q sắp xếp theo thứ tự

tăng dần theo thời gian t. Xóa các phần tử (t, a, d(a)) ra khỏi Q.

Bước 3: Nếu Q (cid:54)= ∅ thì lặp lại các bước sau:

- Lấy một phần tử (t, u, d(u)) đầu tiên trong dãy Q và quan sát:

+ Nếu phần tử (t, u, d(u)) có u = b thì dừng quá trình tìm kiếm, sau đó truy

vết đường đi p[u] và trả về kết quả P := P ∪ {(t, p[u], u)}.

(t(cid:48), v, d(v)) có v kề với u tại thời điểm t(cid:48) ≥ t và d(v) được tính như sau:

+ Nếu phần tử (t, u, d(u)) có u (cid:54)= b thì lần lượt quan sát các phần tử

Nếu t(cid:48) ≤ eau thì d(v) := d(u).

Nếu t(cid:48) > eau thì d(v) := (t(cid:48) − eau).

48

Chúng ta đưa các phần tử (t(cid:48), v, d(v)) vào dãy Q theo sắp xếp thứ tự giá

trị d(v) tăng dần. Sau đó truy vết đường đi p[u], p[v] và xuất đường đi có hai trường hợp P := P ∪ {(euv, p[u], u) , (t(cid:48), p[v], v)} nếu euv < eau hoặc P := P ∪ {(eau, p[u], u) , (t(cid:48), p[v], v)} nếu euv ≥ eau. Xóa (t, u, d(u)) ra khỏi Q.

Nếu Q = ∅ mà chưa thấy phần tử chứa đỉnh đích b thì dừng việc tìm kiếm

và trả lời "không có đường đi".

Ví dụ 3.2.2. Cho đồ thị luồng Hình 2.5, sử dụng thuật toán 7 để tìm đường đi

nhanh nhất từ a đến c. Thuật toán được mô phỏng qua hình vẽ 3.8 và trả về kết

Hình 3.8: Mô phỏng thuật toán 6 tìm đường đi nhanh nhất từ a đến c.

quả là: (4, a, b), (5, b, d), (8, d, c).

Thuật toán 6 sẽ cho ta đường đi nhanh nhất vì sau mỗi bước duyệt thêm được

một đỉnh u, chúng ta tính số lượng thời gian mất đi nhỏ nhất khi đi từ đỉnh a

Q, chúng ta lại chọn phần tử có giá trị d(u) nhỏ nhất để quan sát. Sau khi lặp

đến u là d(u). Trong số những phần tử (t, u, d(u)) chờ để xét duyệt trong dãy

lại các bước xét duyệt các phần tử cho đến khi tìm được phần tử có chứa đỉnh

cuối của đường đi cần tìm thì thuật toán 6 sẽ cho chúng ta đường đi giữa hai

đỉnh đầu và đỉnh cuối với lượng thời gian mất đi là ít nhất.

O(|T | . (|V | + |E|)). Thuật toán 6 cũng xét tất cả các phần tử (t, u, d(u)) và

Tương tự như thuật toán 5, độ phức tạp tính toán của thuật toán 6 là

các phần tử có chứa các đỉnh có liên kết với u trong đồ thị luồng S.

49

∆-clique cực đại trong luồng liên kết, tìm đường đi ngắn nhất và đường đi nhanh

Kết luận: Ở chương 3, chúng tôi trình bày chi tiết ba thuật toán: Liệt kê các

nhất trong đồ thị luồng. Những khái niệm cơ bản của đồ thị luồng và luồng liên

kết được mở rộng bằng cách gắn thêm yếu tố thời gian vào tập đỉnh và tập cạnh,

dựa vào đó chúng ta cũng có thể mở rộng những thuật toán cơ bản trong đồ thị

để sử dụng cho đồ thị luồng và luồng liên kết.

50

KẾT LUẬN CHUNG

Trong luận văn này, chúng tôi đã trình bày một số vấn đề như sau:

- Giới thiệu đồ thị luồng và luồng liên kết, hệ thống lại các khái niệm cơ bản

một cách tường minh, rõ ràng trong từng ví dụ cụ thể.

- Trình bày lại thuật toán liệt kê các clique cực đại trong luồng liên kết, đồng

thời đề xuất cải tiến thuật toán.

- Đề xuất hai thuật toán mới đó là: tìm đường đi nhanh nhất và đường đi

ngắn nhất trong đồ thị luồng.

Về mặt tìm hiểu và giải thích các khái niệm, luận văn chủ yếu dựa trên hai

bài báo "Stream Graphs and Link Streams for the Modeling of Interactions over

Time" và "Computing maximal cliques in link streams", các bài báo này được

viết khá vắn tắt và cô đọng. Vậy nên, chúng tôi giải thích tường minh từng định

nghĩa cơ bản, tự xây dựng ví dụ và vẽ được các mối quan hệ mô hình cũ và mô

hình mới. Về mặt thuật toán, chúng tôi đưa ra một cải thiện nhỏ cho thuật toán

liệt kê clique cực đại giúp thuật toán chạy nhanh hơn và xét ít trường hợp hơn,

sau đó chúng tôi đề xuất hai thuật toán là tìm đường đi ngắn nhất và đường đi

nhanh nhất trong đồ thị luồng.

Luận văn này có thể xem như là một tài liệu rõ ràng giúp tìm hiểu về đồ thị

luồng và luồng liên kết.

Tài liệu tham khảo

Tài liệu Tiếng Việt

[1] Ngô Đắc Tân, Lý thuyết Tổ hợp và Đồ thị, Nhà xuất bản Đại học Quốc gia

Hà Nội, Hà Nội, 2003.

Tài liệu Tiếng Anh

[2] Matthieu Latapy, Tiphaine Viard, Clémence Magnien, Stream Graphs and

Link Streams for the Modeling of Interactions over Time, Social Network

Analysis and Mining, 8(1):61, 2018.

[3] Douglas B. West, Introduction to Graph Theory, University of Illinois -

Urbana.

[4] Matthieu Latapy, Tiphaine Viard, Clémence Magnien, Computing maximal

cliques in link streams, Theoretical Computer Science, 609, 245-252.

[5] Tiphaine Viard, Link streams for the modelling of interactions over time

and application to the analysis of IP traffic, Computer Science, Université

Pierre et Marie Curie, 2016.

[6] Matthieu Latapy, Tiphaine Viard, Clémence Magnien, Enumerating maxi-

mal cliques in link streams with durations, Information Processing Letters,

51

vol. 133, pp. 44-48, (Elsevier), 2018.

52

[7] Cormen, Thomas H. Leiserson, Charles E. Rivest, Ronald L. Stein, Clifford,

Introduction to Algorithms (2nd ed.), MIT Press and McGraw-Hill, 2001.

[8] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein,

Introduction to Algorithms, The MIT Press, 2001.

[9] Huanhuan Wu, James Cheng, Silu Huang, Yiping Ke, Yi Lu, Yanyan Xu,

Path Problems in Temporal Graphs, PVLDB 7(9): 721-732, 2014.