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

Tài liệu luận văn Mô Hình Đồ Thị Và Ứng Dụng Đối Với Bài Toán Cộng Đồng

59 9 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 59
Dung lượng 1,54 MB

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

Nội dung

LỜI CAM ĐOAN Tôi xin cam đoan mô hình đồ thị và ứng dụng đối với bài toán cộng đồng trên mạng xã hội được trình bày trong luận văn là do tôi thực hiện dưới sự hướng dẫn của thầy Vũ Vinh

Trang 1

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

LUẬN VĂN THẠC SĨ

ĐỀ TÀI

Mô hình đồ thị và ứng dụng đối với bài toán cộng đồng

trên mạng xã hội

Giáo viên hướng dẫn : TS Vũ Vinh Quang

Học viên : Hoàng Văn Dũng Lớp : Cao học K17

Thái Nguyên, tháng 9 năm 2020

Trang 2

LỜI CẢM ƠN

Đầu tiên, em xin gửi lời cảm ơn chân thành và sâu sắc nhất tới thầy Vũ Vinh Quang, người đã trực tiếp hướng dẫn tận tình và đóng góp những ý kiến quý báu trong suốt quá trình em làm luận văn tốt nghiệp này

Tiếp theo em xin gửi lời cảm ơn đến đến các thầy cô giáo trường Đại học Công nghệ Thông tin và Truyền thông - Đại học Thái Nguyên, đã tận tâm truyền đạt những kiến thức quý báu làm nền tảng để em hoàn thành luận văn này

Học Viên

Hoàng Văn Dũng

Trang 3

LỜI CAM ĐOAN

Tôi xin cam đoan mô hình đồ thị và ứng dụng đối với bài toán cộng đồng trên mạng xã hội được trình bày trong luận văn là do tôi thực hiện dưới sự hướng dẫn của thầy Vũ Vinh Quang

Tất cả những tham khảo từ các nghiên cứu liên quan đều được nêu nguồn gốc một cách rõ ràng từ danh mục tài liệu tham khảo trong luận văn Trong luận văn không có việc sao chép tài liệu, công trình nghiên cứu của người khác mà không chỉ rõ về tài liệu tham khảo

Thái Nguyên, ngày tháng năm 2020

Học viên

Hoàng Văn Dũng

Trang 4

MỤC LỤC

LỜI MỞ ĐẦU……… …….……1

Chương 1: MỘT SỐ KIẾN THỨC CƠ BẢN VỀ MÔ HÌNH ĐỒ THỊ………3

Một số khái niệm cơ bản ………… ……… ……… 3

Định nghĩa về đồ thị……… ……… 3

Các thuật ngữ cơ bản……… ………4

Đường đi, chu trình Đồ thị liên thông……… ………… ….……….…5

Một số phương pháp mô tả đồ thị……… ……… ….… 5

Cấu trúc ma trận kề ……….……… ….… 5

Cấu trúc danh sách kề……….………7

Một số thuật toán trên đồ thị……… ……….…………8

Các thuật toán duyệt đồ thị……….……….…………8

Bài toán cây khung nhỏ nhất………… ……….……….…… …… 9

Bài toán xác định đường đi ngắn nhất……….… ….…….12

Kết luận chương 1……….……… …… 15

Chương 2: MÔ HÌNH MẠNG XÃ HỘI VÀ BÀI TOÁN CỘNG ĐỒNG………… ……17

Khái niệm về bài toán cộng đồng……….……….…………17

Một số độ đo trên đồ thị…… ………18

Độ đo trung tâm của đỉnh……… ……….….…… 18

Độ đo trung gian của đỉnh………19

Độ đo gần nhau theo khoảng cách trắc địa……….………… ………21

Độ đo trung tâm của đồ thị……… …….………… ………22

Độ đo trung gian của cạnh……… ……….……22

Độ trung tâm véc tơ đặc trưng……… ……….….25

Thuật toán phát hiện cộng đồng………… ……….… … 26

Giới thiệu về họ thuật toán Girvan và Newman……….……….… …27

Giới thiệu về thuật toán CONGA……….……… ………28

Kết luận chương 2……….……… … …… 33

Chương 3: MỘT SỐ KẾT QUẢ THIẾT KẾ VÀ THỰC NGHIỆM CÁC THUẬT TOÁN Xác định độ đo trung tâm của đỉnh……….……….34

Xác định độ đo trung gian của đỉnh……….……… ….….35

Trang 5

Xác định độ đo trung gian của cạnh……… ……… ….36

Kết luận chương 3……….……… … …… 41

TÀI LIỆU THAM KHẢO……… 42

Trang 6

DANH SÁCH CÁC HÌNH VẼ

Hình 1.1:

(a) Một đồ thị vô hướng; ……… ………6

(b) Biểu diễn ma trận kề;……….………6

(c) Biểu diễn danh sách kề……….….………6

Hình 1.2: (a) Một đồ thị có hướng; ……….….……… …………7

(b) Ma trận kề: ……….….……… …………7

(c) Biểu diễn danh sách kề ……….….……… …………7

Hình 1.3: (a) Đồ thị trọng số; ……….….………….……… …………7

(b) Ma trận kề: ……….….……… …………7

(c) Danh sách kề.……….….……….………… …………7

Hình 1.4: Duyệt cây theo chiều rộng BFS……….………….9

Hình 2.1: Hai đỉnh v2, v5 cùng hạng 1 và các đỉnh còn lại cùng hạng 2……… 19

Hình 2.2: Ví dụ trường hợp không phân tách đỉnh v trong đồ thị……… ……….30

Hình 2.3: Ví dụ về phép phân chia một đỉnh trong đồ thị……… … …… ……… 31

Hình 2.4: Tìm phép phân chia tối ưu……….……… ……32

Hình 3.1: Độ đo trung tâm của các đỉnh trong đồ thị ………… ……… ….35

Hình 3.2:Đồ thị G vô hướng ……… ……….36

Hình 3.3……….40

Trang 7

MỞ ĐẦU

Mô hình đồ thị là một mô hình cấu trúc dữ liệu kinh điển trong tin học, đối với

mô hình này, chúng ta thường quan tâm đến việc mô tả cấu trúc trong máy tính điện tử

và các thuật toán tìm kiếm, tối ưu trên mô hình này Có thể nói việc nghiên cứu ứng dụng của mô hình đồ thị trong thực tế là một lĩnh vực vô cùng rộng lớn và có ý nghĩa thực tế rất cao Đa số các nguồn dữ liệu hiện nay đều có thể biểu diễn được dưới dạng cấu trúc dữ liệu đồ thị, thí dụ như dữ liệu mạng internet, mạng xã hội, cấu trúc protein, các hợp chất hóa học, quy trình của một chương trình…Cấu trúc đồ thị được đánh giá

là cấu trúc có tính bao quát mô tả các đối tượng so với các cấu trúc tuần tự, cây, mạng ngữ nghĩa…và dựa trên cấu trúc này có thể thiết kế được nhiều thuật toán giải quyết được nhiều bài toán có độ tính toán phức tạp cao Mỗi dữ liệu lớn trên các hệ thống mạng đều có thể biểu diễn dưới dạng các đồ thị và mối quan hệ của chúng theo các liên kết và kết nối vật lý; kết nối giữa các mạng trong lớp mạng; mối quan hệ trong mạng xã hội; siêu liên kết giữa các trang web và các tương tác phức tạp giữa các thực thể Các đồ thị chứa đựng những thông tin giá trị cho việc ứng dụng vào hệ thống mạng như những phát hiện từ cộng đồng, những điểm chung; phân lớp; tìm kiếm trên mạng; những hệ thống được đưa ra theo thứ tự nào đó; độ tin cậy và uy tín; tìm kiếm

và lấy dữ liệu từ điểm đến điểm Để đưa các dữ liệu đang xét vào dưới dạng đồ thị, chúng ta cần phải định nghĩa các ma trận mô tả cấu trúc tổng thể của đồ thị; định nghĩa các ma trận mô tả các mẫu đặc trưng của các giao tiếp bên trong đồ thị phải tìm ra các cấu trúc có tính đặc trưng cộng đồng của mạng; hiểu rõ mô hình của việc lấy ra từ các

đồ thị; phát triển và ứng dụng những thuật toán hiểu quả nhất để khai thác dữ liệu trong hệ thống mạng Nhiều dữ liệu có cấu trúc đều có thể được biểu diễn bằng mạng, bằng tập hợp các đỉnh được nối với nhau theo cặp bằng các liên kết, như mạng sinh học, sự hợp tác của các nhà nghiên cứu,… Đặc điểm quan trọng gắn kết các mạng lại với nhau đó là cấu trúc cộng đồng, trong đó có các nhóm có mật độ kết nối mạnh của các đỉnh trong nhóm và các kết nối yếu giữa các nhóm Do đó, việc xác định cộng đồng có thể được xem như là việc tìm kiếm các cụm đỉnh phân nhóm Một cộng đồng

là một nhóm của các thực thể dùng chia sẻ những tài sản tương tự nhau hoặc kết nối với nhau thông qua mối quan hệ được lựa chọn Việc xác định các kết nối và định vị các thực thể trong cộng đồng khác nhau được coi là mục tiêu chính của nghiên cứu phát hiện cộng đồng Bằng trực quan có thể dễ dàng tìm ra những nhóm cộng đồng có

Trang 8

độ tập trung cao, nhưng không phải cộng đồng nào cũng được hình thành bằng các mối liên hệ chặt chẽ và dễ thấy vì một số cộng đồng được hình thành dưới dạng ẩn Điều quan trọng là phải tìm được sự phân phối của các cạnh giữa các đỉnh, từ đó phát hiện và đưa ra các cộng đồng tồn tại bên trong mạng xã hội

Như vậy, khai phá dữ liệu đồ thị và phát hiện cấu trúc cộng đồng trên mạng xã hội là một lĩnh vực nghiên cứu khá hấp dẫn và được các nhà khoa học quan tâm nghiên cứu Xuất phát từ một đồ thị mạng xã hội, người ta tìm ra các cụm, các nhóm cộng đồng có mối liên hệ chặt chẽ với nhau, từ đó phát hiện và tìm ra đặc tính của cấu trúc mạng

Mục tiêu chính của luận văn đặt ra là nghiên cứu các đặc trưng cơ bản về mô hình đồ thị, một số các thuật toán tìm kiếm tối ưu trên mô hình đồ thị Khái niệm về bài toán cộng đồng và một số thuật toán xác định cộng đồng trên mạng xã hội Dự kiến nội dung báo cáo của luận văn gồm: Phần mở đầu, 3 chương chính, phần kết luận, tài liệu tham khảo, phụ lục Bố cục được trình bày như sau:

Phần mở đầu: Nêu lý do chọn đề tài và hướng nghiên cứu chính của luận văn

Chương 1: Trình bày tổng quan về mô hình đồ thị bao gồm: Các khái niệm cơ bản,

các phương pháp mô tả đồ thị, các thuật toán duyệt đồ thị và trọng tâm là các thuật toán xác định đường đi ngắn nhất trên đồ thị [1, 2, 3, 4, 6, 7]

Chương 2 Trình bày các khái niệm cơ bản về mô hình mạng xã hội và bài toán cộng

đồng bao gồm: Tổng quan về mạng xã hội, khái niệm về độ đo đỉnh và độ đo cạnh, các thuật toán tương ứng Khái niệm về cộng đồng và một số thuật toán xác định cộng đồng, Họ thuật toán Girvan_Newman, thuật toán CONGA[5, 8, 9]

Chương 3 Đưa ra một số kết quả cài đặt các thuật toán: thuật toán xác định độ đo

đỉnh, thuật toán xác định độ đo cạnh, thuật toán xác định cộng đồng

Các kết quả cài đặt các thuật toán được thực hiện trên môi trường Matlab version 7.0

Trang 9

Chương 1 MỘT SỐ KIẾN THỨC CƠ BẢN

VỀ MÔ HÌNH ĐỒ THỊ

Nội dung chương 1 đưa ra các khái niệm cơ bản về lý thuyết đồ thị, các thuật toán

cơ bản trên mô hình đồ thị Các kiến thức được tham khảo trong các tài liệu [1] [2]

1.1 Một số khái niệm cơ bản [1]

1.1.1 Định nghĩa về đồ thị

Đồ thị là một cấu trúc rời rạc bao gồm các đỉnh và các cạnh nối các đỉnh này, các loại đồ thị khác nhau được phân biệt bởi kiểu và số lượng cạnh nối hai đỉnh nào đó của

đồ thị Giả sử V là tập hữu hạn, không rỗng các phần tử nào đó Bộ G = (V,E) được gọi

là đồ thị hữu hạn Mỗi phần tử của V gọi là một đỉnh và mỗi phần tử u = (x,y) của E được gọi là một cạnh của đồ thị G = (V,E)

Xét một cạnh u của E khi đó tồn tại hai đỉnh x, y của V sao cho u = (x,y), ta nói rằng x nối với y hoặc x và y phụ thuộc u

Nếu cạnh u = (x,y) mà x và y là hai đỉnh phân biệt thì ta nói x, y là hai đỉnh kề

nhau

Nếu u = (x,x) thì u là cạnh có hai đỉnh trùng nhau ta gọi đó là một khuyên

Nếu u = (x,y) mà x, y là cặp đỉnh có phân biệt thứ tự hay có hướng từ x đến y thì u là một cung, khi đó x là gốc còn y là ngọn hoặc x là đỉnh vào, y là đỉnh ra

Khi giữa cặp đỉnh (x,y) có nhiều hơn một cạnh thì ta nói rằng những cạnh cùng

cặp đỉnh là những cạnh song song hay là cạnh bội

Trong thực tế ta có thể gặp nhiều vấn đề mà có thể dùng mô hình đồ thị để biểu diễn, như sơ đồ mạng máy tính, sơ đồ mạng lưới giao thông, sơ đồ thi công một công trình

Định nghĩa 1 Đơn đồ thị vô hướng G = (V,E) bao gồm V là các tập đỉnh và E là

các tập các cặp không có thứ tự gồm hai phần tử khác nhau của V gọi là các cạnh

Định nghĩa 2 Đa đồ thị vô hướng G = (V,E) bao gồm V là tập các đỉnh, và E là

họ các cặp không có thứ tự gồm hai phần tử khác nhau của V gọi là các cạnh Hai cạnh e 1 và e 2 được gọi là cạnh lặp nếu chúng cùng tương ứng với một cặp đỉnh

Rõ ràng mỗi đơn đồ thị là đa đồ thị, nhưng không phải đa đồ thị nào cũng là đơn

đồ thị, vì trong đa đồ thị có thể có hai (hoặc có nhiều hơn) cạnh nối một cặp đỉnh nào

đó

Trang 10

Định nghĩa 3 Giả đồ thị vô hướng G = (V,E) bao gồm V là các tập đỉnh, và E là

họ các cặp không có thứ tự (không nhất thiết phải khác nhau) của V gọi là các cạnh Cạnh e được gọi là khuyên nếu nó có dạng e = (u,u)

Định nghĩa 4 Đơn đồ thị có hướng G = (V,E) bao gồm V là các tập đỉnh và E là

các cặp có thứ tự gồm hai phần tử khác nhau của V gọi là các cung

Nếu trong mạng có thể có đa kênh thoại một chiều, ta sẽ phải sử dụng đến khái

niệm đa đồ thị có hướng:

Định nghĩa 5 Đa đồ thị có hướng G = (V,E) bao gồm V là các tập đỉnh và E là họ

các cặp có thứ tự gồm hai phần tử khác nhau của V gọi là các cung Hai cung e 1 , e 2 tương ứng cùng với một cặp đỉnh được gọi là cung lặp

Trong các phần tử tiếp theo chủ yếu chúng ta sẽ làm việc với đơn đồ thị vô hướng

và đơn đồ thị có hướng Vì vậy, để ngắn gọn, ta bỏ qua tính từ đơn khi nhắc đến chúng

1.1.2 Các thuật ngữ cơ bản

Định nghĩa 6 Hai đỉnh u và v của đồ thị vô hướng G được gọi là kề nhau nếu

(u,v) là cạnh của đồ thị G Nếu e = (u,v) là cạnh của đồ thị thì ta nói cạnh này là liên thuộc với hai đỉnh u và v, hoặc cũng nói là cạnh e là nối đỉnh u và đỉnh v, đồng thời các đỉnh u và v sẽ được gọi là các đỉnh đầu của cạnh (u,v)

Định nghĩa 7 Ta gọi bậc của đỉnh v trong đồ thị vô hướng là số cạnh liên thuộc

với nó và sẽ ký hiệu là deg(v)

Định nghĩa 8 Nếu e = (u,v) là cung của đồ thị có hướng G thì ta nói hai đỉnh u và

v là kề nhau, và nói cung (u,v) nối đỉnh u với đỉnh v hoặc cũng nói cung này là đi ra khỏi đỉnh u và đi vào đỉnh v Đỉnh u(v) sẽ được gọi là đỉnh đầu(cuối) của cung (u,v)

Định nghĩa 9 Ta gọi bán bậc ra (bán bậc vào) của đỉnh v trong đồ thị có hướng

là số cung của đồ thị đi ra khỏi nó (đi vào nó) và ký hiệu là deg + (v)(deg - (v))

1.1.3 Đường đi, chu trình Đồ thị liên thông

Định nghĩa 10 Đường đi độ dài n từ đỉnh u đến đỉnh v, trong đó n là số nguyên

dương, trên đồ thị vô hướng G = (V,E) là dãy x 0 , x 1 ,…, x n-1 , x n trong đó u = x 0 , v = x n , (x i , x i+1 ) E, i = 0,1,2,…, n-1 Đường đi nói trên còn có thể biểu diễn dưới dạng dãy các cạnh: (x 0 ,x 1 ), (x 1 ,x 2 ),…, (x n-1 ,x n )

Đỉnh u gọi là đỉnh đầu, còn đỉnh v gọi là đỉnh cuối của đường đi Đường đi có đỉnh đầu trùng với đỉnh cuối (tức là u = v) được gọi là chu trình Đường đi hay chu trình

Trang 11

được gọi là đơn nếu như không có cạnh nào bị lặp lại Khái niệm đường đi và chu trình trên đồ thị có hướng được định nghĩa hoàn toàn tương tự như trường hợp đồ thị vô hướng, chỉ khác là ta có chú ý đến hướng trên các cung

Định nghĩa 11 Đồ thị vô hướng G = (V,E) được gọi là liên thông nếu luôn tìm

được đường đi giữa hai đỉnh bất kỳ của nó

Như vậy hai máy tính bất kỳ trong mạng có thể trao đổi thông tin được với nhau khi và chỉ khi đồ thị tương ứng với mạng này là đồ thị liên thông

1.2 Một số phương pháp mô tả đồ thị [1][2]

Với một biểu đồ nhất định có một số biểu diễn khác nhau Việc dễ dàng cài đặt các thuật toán trên đồ thị cũng như hiệu quả của thuật toán phụ thuộc vào sự lựa chọn cách biểu diễn đồ thị đúng đắn Hai cấu trúc được sử dụng phổ biến nhất để biểu diễn một

đồ thị (có hướng hay vô hướng) là ma trận kề và danh sách kề

1.2.1 Cấu trúc ma trận kề

Giả sử G = (V, E) là đơn đồ thị có số đỉnh (ký hiệu |V| là n), không mất tính tổng

quát có thể coi các đỉnh được đánh số 1, 2, ., n Khi đó, ta có thể biểu diễn đồ thị bằng một ma trận vuông A cấp n trong đó A(i,j)=1 nếu cạnh (i,j) là tồn tại và A(i,j)=0 nếu cạnh (i,j) không tồn tại Trong trường hợp khi đồ thị có trọng số thì chúng ta có cấu trúc ma trận trọng số là một ma trận vuông A cấp n trong đó A(i,j)=trọng số của cạnh nếu cạnh (i,j) là tồn tại và A(i,j)= nếu cạnh (i,j) không tồn tại (A(i,i)=0 nếu không tồn tại khuyên

 Các tính chất của ma trận liền kề:

+ Với đồ thị vô hướng G, ma trận liền kề tương ứng là ma trận đối xứng

+ Nếu G là đồ thị vô hướng và A là ma trận liền kề tương ứng thì ta có

Tổng các số trên hàng i = tổng các số trên cột i = Bậc của đỉnh i = deg(i)

Ưu điểm của ma trận liền kề: Đơn giản, trực quan, dễ cài đặt

Trang 12

Nhược điểm của ma trận liền kề: Số cạnh của đồ thị là nhiều hay ít, ma trận liền

kề luôn đòi hỏi n2 ô để lưu các phần tử ma trận gây lãng phí bộ nhớ dẫn tới không thể biểu diễn được đồ thị với số đỉnh lớn

Hình 1.1: (a) Một đồ thị vô hướng; (b) Biểu diễn ma trận kề; (c) Biểu diễn danh sách kề

Hình 1.2: (a) Một đồ thị có hướng; (b) Ma trận kề: (c) Biểu diễn danh sách kề

Trang 13

+ Thường sử dụng cấu trúc con trỏ để mô tả

1.3 Một số thuật toán trên đồ thị [1][2]

1.3.1 Các thuật toán duyệt đồ thị

Thuật toán duyệt theo chiều sâu DFS

Tư tưởng của thuật toán: theo tư tưởng đệ quy tức là mọi đỉnh x kề với S sẽ đến được từ S, với mỗi đỉnh x thì những đỉnh y kề với x cũng đến được từ S Điều đó gợi ý cho ta viết một thủ tục đệ quy DFS(u) mô tả việc duyệt từ đỉnh u bằng cách thông báo thăm đỉnh u và tiếp tục quá trình duyệt DFS(v) với v là một đỉnh chưa thăm kề với u

Để cài đặt đệ quy ta cần chú ý: Để không một đỉnh nào bị liệt kê tới hai lần, ta sử dụng

kỹ thuật đánh dấu, mỗi lần thăm một đỉnh, ta đánh dấu đỉnh đó lại để các bước duyệt

đệ quy kế tiếp không duyệt lại đỉnh đó nữa Để lưu lại đường đi từ đỉnh xuất phát S, trong thủ tục DFS(u), trước khi gọi đệ quy DFS(v) với v là một đỉnh kề với u mà chưa đánh dấu, ta lưu lại vết đường đi từ u tới v bằng cách đạt TRACE[v] := u, tức là TRACE[v] lưu lại đỉnh liền trước v trong đường đi từ S tới v Thủ tục DFE được mô tả như sau

Trang 14

Procedure DFS(u)

Input: G, u

Output: Danh sách các đỉnh

BEGIN

1: Đánh dấu u là được thăm (có thể tới được từ S);

2: Xét mọi đỉnh v kề với u mà chưa thăm, với mỗi đỉnh v đó;

+ Trace[v] := u; //Lưu vết đường đi

+ DFS(v); // Gọi đệ quy

END;

Thuật toán duyệt theo chiều rộng BFS

Tư tưởng: Việc thăm một đỉnh sẽ lên lịch duyệt các đỉnh kề với nó nhất Như vậy, thứ tự duyệt là ưu tiên chiều rộng Ví dụ: Trong Hình 1.3, bắt đầu thăm đỉnh S Việc thăm đỉnh S sẽ phát sinh thứ tự duyệt những đỉnh kề với S Chọn 1 đỉnh x để

thăm Khi thăm đỉnh x sẽ phát sinh yêu cầu duyệt những đỉnh kề với x…

Thuật toán duyệt theo chiều rộng được mô tả bằng thủ tục sau đây:

Procedure BFS(u)

Input: G, u

Output: Danh sách các đỉnh

1: Khởi tạo:

+ Các đỉnh ở trạng thái chưa đánh dấu, trừ đỉnh xuất phát S

+ Hàng đợi Q=S //Chứa các đỉnh sẽ được duyệt theo thứ tự

2: Đẩy S vào ngăn xếp;

Hình 1.4: Duyệt cây theo chiều rộng BFS

Trang 15

3: repeat

4: Lấy u khỏi hàng đợi;

5: Thông báo thăm u; //Bắt đầu việc duyệt đỉnh u

6: if <đỉnh v kề với u chưa được đánh dấu> then

7: Ghi nhận vết đường đi từ u tới v;

8: Đẩy v vào hàng đợi; //v sẽ chờ được duyệt tại những bước sau

9: end if

10: until (Hàng đợi rỗng:);

11: Truy vết tìm đường đi;

End

1.3.2 Bài toán cây khung nhỏ nhất

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

Bài toán tìm cây khung nhỏ nhất của đồ thị là một trong số những bài toán tối

ưu trên đồ thị tìm được ứng dụng trong nhiều lĩnh vực khác nhau của đời sống Trong phần này ta sẽ có hai thuật toán cơ bản để giải bài toán này Trước hết, nội dung của bài toán được phát biểu như sau

Cho G = (V, E) là một đồ thị vô hướng liên thông Với V= {1,2, , n } và tập cạnh

E gồm m cạnh Với mỗi cạnh e của đồ thị được gán với một số không âm c(e) gọi là

độ dài của nó Giả sử H=(V, T) là cây khung của đồ thị G (T tập cạnh nhỏ nhất của cây khung) Ta gọi độ dài C(H) của cây khung H là tổng độ dài của các cạnh của nó:

C(H) = 

T e

e

c )(

Bài toán đặt ra là trong số tất cả các cây khung của đồ thị G hãy tìm cây khung với độ dài C(H) nhỏ nhất Cây khung như vậy gọi là cây khung nhỏ nhất của đồ thị và bài toán đặt ra được gọi là bài toán cây khung nhỏ nhất Do tính chất của cây, nên nếu đồ thị G có n đỉnh thì cây khung có đúng n-1 cạnh

Để minh hoạ cho những ứng dụng của bài toán cây khung nhỏ nhất, dưới đây là hai

mô hình thực tế tiêu biểu cho nó

* Bài toán xây dựng hệ thống đường sắt: Giả sử ta muốn xây dựng một hệ thống

đường sắt nối n thành phố sao cho hành khách có thể đi từ bất cứ một thành phố nào đến bất kỳ một trong số các thành phố còn lại Mặt khác, trên quan điểm kinh tế đòi

Trang 16

hỏi là chi phí về xây dựng hệ thống đường phải là nhỏ nhất Rõ ràng là đồ thị mà đỉnh

là các thành phố còn các cạnh là các tuyến đường sắt nối các thành phố tương ứng, với phương án xây dựng tối ưu phải là cây Vì vậy, bài toán đặt ra dẫn về bài toán tìm cây khung nhỏ nhất trên đồ thị đầy đủ n đỉnh, mỗi đỉnh tương ứng với một thành phố với

độ dài trên các cạnh chính là chi phí xây dựng hệ thống đường sắt nối hai thành phố

* Bài toán nối mạng máy tính: Cần nối mạng một hệ thống gồm n máy tính đánh số

từ 1 đến n Biết chi phí nối máy i với máy j là m(i,j) (thông thường chi phí này phụ thuộc vào độ dài cáp nối cần sử dụng) Hãy tìm cách nối mạng sao cho tổng chi phí là nhỏ nhất Bài toán này cũng dẫn về bài toán tìm cây khung nhỏ nhất

Bài toán tìm cây khung nhỏ nhất đã có những thuật toán rất hiệu quả để giải chúng

Sau đây chúng ta sẽ nghiên cứu 2 thuật toán cây khung nhỏ nhất kinh điển

Thuật toán Kruskal

Tư tưởng của thuật toán là duyệt trong danh sách cạnh đã sắp xếp từ nhỏ đến lớn theo trọng số, kết nạp lần lượt các cạnh vào tập T sao cho không tạo thành chu trình

trong tập này Thuật toán sẽ dừng khi T chứa đúng n-1 cạnh Thuật toán được mô tả

Trang 17

- Bài toán tìm cây khung lớn nhất có thể đưa về bài toán tìm cây khung nhỏ nhất bằng cách đổi dấu tất cả các trọng số của Ci,j, hoặc có thể cài đặt một cách độc lập bằng cách kết nạp dần vào cây từ cạnh lớn đến cạnh nhỏ nhất

- Trong thuật toán việc khó nhất là kiểm tra xem có tạo thành chu trình hay không?

- Khối lượng tính toán nhiều nhất của thuật toán là ở bước sắp xếp các cạnh, vì

vậy độ phức tạp tính toán của thuật toán phụ thuộc vào cách chọn thuật toán sắp xếp

Thuật toán Prim

Thuật toán Kruskal làm việc kém hiệu quả đối với những đồ thị dày (đồ thị có số cạnh là n(n-1)/2) Trong trường hợp đó người ta xây dựng một thuật toán hiệu quả hơn

đó là thuật toán prim Thuật toán prim còn được gọi là phương pháp lân cận gần

nhất Trong phương pháp này, bắt đầu từ một đỉnh tuỳ ý của đồ thị s, bắt đầu ta nối s với đỉnh lân cận gần nó nhất, chẳng hạn là t, nghĩa là trong số các cạnh kề của s thì cạnh (s,t) có độ dài ngắn nhất Tiếp theo trong số những cạnh kề với hai đỉnh s, t ta lại tìm cạnh có độ dài nhỏ nhất Cạnh này dẫn đến một đỉnh thứ 3 là z, và ta thu được bộ phận gồm 3 đỉnh và 2 cạnh Quá trình này sẽ tiếp tục cho đến khi ta thu được bộ cây gồm n đỉnh và n-1 cạnh sẽ chính là cây khung nhỏ nhất cần tìm

Giả sử đồ thị cho bởi ma trận Ci,j (i,j=1 n) Trong quá trình thực hiện thuật toán,

ở mỗi bước để có thể nhanh chóng chọn đỉnh và cạnh cần bổ sung vào cây khung thì các đỉnh của đồ thị sẽ được gán cho các nhãn Nhãn của đỉnh v sẽ gồm hai phần: [d[v],near[v]], trong đó d[v] dùng để ghi nhận độ dài của các cạnh có độ dài nhỏ nhất trong số các cạnh nối đỉnh v với các đỉnh của cây khung đang xây dựng Còn near[v]

ghi nhận của cây khung gần v nhất Thuật toán Prim được mô tả bằng thủ tục sau:

Procedure Prim G: Đơn đồ thị liên thông n đỉnh c trọng số ;

Input: Đồ thị liên thông n đỉnh có trọng số dương

Output: Cây khung nhỏ nhất T của đồ thị

BEGIN

V T := {u};E T := ; D u := 0; near u := u; gán nh n cho đỉnh đầu tiên u 0,u

D u : Trọng số nhỏ nhất của các cạnh tới u ;near u : Đỉnh gần u nhất

For v V – V T do

Begin

D[v]:= C[u,v];Near[v]:= u:

End;

Trang 18

T:=(V T , E T ) là khung cây nhỏ nhất Stop:= True;

End

Else For v V – V T do

If D[v] > C[s,v] Then Begin

Ví dụ: Tìm cây khung nhỏ nhất bằng thuật toán Prim của đồ thị gồm các đỉnh A, B, C,

D, E, F, H, I được cho bởi ma trận trọng số sau

Trang 19

Lập bảng tính toán, ta có

V.lặp A B C D E F H I V T E T

K.tạo  [A,15] [A,16] [A,19] [A,23] [A,20] [A,32] [A,18] A 

1   [A,16] [B,13] [A,23] [B,19] [B,20] [B,12] A, B (A,B)

2   [A,16] [I,11] [I,21] [I,18] [I,14]  A, B, I (A,B), (B,I)

H, F

(A,B), (B,I), (I,D), (D,C), (I,H), (H,F)

H, F, E

(A,B), (B,I), (I,D), (D,C), (I,H), (H,F), (I,E)

Vậy độ dài cây khung nhỏ nhất là:

15 + 12 + 11 + 13 + 14 + 17 + 21 = 103

Trang 20

1.3.3 Bài toán xác định đường đi ngắn nhất

Cho đơn đồ thị G = (V, E) liên thông, có trọng số dương,

Sau đây chúng ta sẽ nghiên cứu 2 thuật toán quan trọng về đường đi ngắn nhất

Bài toán 1: Tìm đường đi ngắn nhất từ một đỉnh nguồn tới một đỉnh đich

Thuật toánDijkstra:

Tư tưởng

- Xây dựng một tập S các đỉnh mà độ dài đường đi từ gốc tới nó là ngắn nhất Lúc đầu S chỉ chứa đỉnh gốc giả sử là a, ở mỗi bước ta thêm vào S một trong số các đỉnh còn lại của v mà độ dài từ a đến v là ngắn nhất

- Dùng mảng D[2 n], trong đó D[u] để ghi độ dài đường đi ngắn nhất hiện thời từ

hơn D[u] thì ta lấy D[u] là độ dài đường đi đó

Khi S = V thì D[u] lưu độ dài ngắn nhất từ 1 đến u

- Sử dụng mảng P[2 n] trong đó P[u] = v nếu v là đỉnh kề trước của u

Thuật toán

Input: Ma trận trọng số C (dương) của đồ thị với đỉnh gốc là a

Output: Khoảng cách từ gốc a tới các đỉnh của đồ thị

Procedure Dijkstra;

Begin

S:= {a} ; D[a]:=0;

Trang 21

P u : à ma trận lưu vết đường đi End ;

While V S\  do

Begin

Chọn đỉnh v trong V\S mà D v nhỏ nhất;

S:= S  {v} ; {thêm v vào S}

For mỗi đỉnh u trong V\S do

If D[v] + C[v,u] < D[u] then Begin

D[u]:= D[v] + C[v,u]; P[u]:= v ; End;

End ;

End ;

Dễ thấy rằng độ phức tạp của thuật toán là O n( )2

Bài toán 2: Tìm đường đi ngắn nhất giữa mọi cặp đỉnh

Để tìm đường đi ngắn nhất giữa mọi cặp đỉnh ta có thể sử dụng thuật toán Dijkstra với các đỉnh được chọn làm nguồn lần lượt là 1, 2, …, n Ngoài ra còn có cách trực tiếp giải quyết vấn đề trên, đó là thuật toán Floyd

Thuật toán Floyd

Tư tưởng

- Nếu đỉnh k nằm trên đường đi ngắn nhất từ đỉnh i tới j thì đoạn đường từ i tới k

và từ k tới j phải là đường đi ngắn nhất từ i tới k và từ k tới j tương ứng

- Sử dụng ma trận A để lưu độ dài đường đi ngắn nhất giữa mọi cặp đỉnh, Ban đầu

ta đặt A[i,j] = C[i,j], tức là ban đầu A chứa độ dài đường đi trực tiếp (không đi qua các đỉnh nào cả) Sau đó thực hiện n lần lặp, sau lần lặp thứ k ma trận A sẽ chứa độ dài

Trang 22

đường đi ngắn nhất giữa mọi cặp đỉnh chỉ qua các đỉnh thuộc tập {1, 2, …,k} Như vậy, sau n lần lặp ta nhận được ma trận A chứa độ dài các đường đi ngắn nhất giữa mọi cặp đỉnh của G

- Ký hiệu Ak là ma trận A sau lần lặp thứ k, tức là Ak[i,j] là độ dài đường đi ngắn nhất từ i đến j chỉ qua các đỉnh thuộc {1, 2, …, k} Ak[i,j] được tính theo công thức:

Ak[i,j] = Min{Ak-1[i,j], Ak-1[i,k] + Ak-1[k,j]}

- Trong quá trình lặp ta phải lưu lại vết đường đi tức là các đường đi ngắn nhất đi qua các đỉnh nào Khi đó ta sẽ sử dụng mảng phụ P n n[  ], trong đó P[i,j] lưu đỉnh k nếu đường đi ngắn nhất từ i tới j qua đỉnh k Ban đầu p[i,j] = 0 với mọi j, j, vì lúc đó đường đi ngắn nhất là đường đi trực tiếp, không qua các đỉnh nào cả

Với các phần tử như trên ta thấy ở bước lặp thứ k thì giá trị của ma trận A ở dòng thứ k và cột thứ k là không thay đổi

Dễ thấy rằng độ phức tạp của thuật toán là O n( )3

1.3.4 Bài toán tô màu đồ thị

Bài toán được đặt ra xuất phát từ bài toán tô màu bản đồ như sau:

Trang 23

Ta coi mỗi bản đồ là một đồ thị phẳng Trong một bản đồ ta coi hai miền có chung

nhau một đường biên là hai miền kề nhau ( Hai miền chỉ có chung nhau một điểm biên là hai miền không kề nhau ) Một bản đồ thường được tô màu sao cho hai miền kề

nhau được tô hai màu khác nhau Và bài toán đặt ra là : “ xác định số màu tối thiểu cần

có để tô màu một bản đồ sao cho 2 miền kề nhau có màu khác nhau”

Thuật toán Welch-Powell về tô màu đồ thị

Để tô màu một đồ thị G, ta có thể sử dụng thuật toán Welch-Powell như sau

Chú ý: Thuật toán Welch-Powell chưa cho ta sắc số của một đồ thị G, nó chỉ giúp

ta một cách tiếp cận tìm sắc số của một đồ thị Để tìm sắc số của một đồ thị thì sau khi

tô màu xong ta phải sử dụng các định lý, các tính chất đã học của lý thuyết đồ thị để khẳng định màu được dùng là ít nhất và từ đó suy ra sắc số của đồ thị Bài toán tìm sắc

Trang 24

số của một đồ thị là một bài toán khó và không phải đồ thị nào cũng tìm được sắc số một cách dễ dàng

Bài toán tô màu có nhiều ứng dụng trong thực tế Chẳng hạn: việc xếp lịch thi cho sinh viên, phân chia tần số phát sóng của các đài phát thanh, truyền hình, bố trí các con vật trong sở thú

Ví dụ: Hãy lập lịch cho các sinh viên trong một trường đại học sao cho không

có sinh viên nào phải thi 02 môn trong cùng một buổi thi Chẳng hạn, có 7 môn cần xếp lịch thi được đánh số lần lượt từ 1 đến 7 và các cặp môn sau có chung sinh viên dự thị:

Giải: Xây dựng đồ thị G = (V,E) mô tả bài toán sau:

Mỗi đỉnh vi  V (i = 1 7) đại diện cho môn thi thứ i

Mỗi cạnh e  E nối hai đỉnh vi và vj nếu có sinh viên phải thi lại cả hai môn được biểu diễn bằng 2 đỉnh này

Ta có đồ thị G = (V,E) như sau:

Trang 25

 Để lập lịch thi ta sẽ tiến hành tô màu cho G theo thuật toán Welch-Powell như sau:

 Tóm lại, ta có lịch thi như sau

Kết luận: Nội dung chính của chương 1 đã trình bày một số kiến thức cơ bản

trên mô hình đồ thị cùng với một số thuật toán trên mô hình này Các kiến thức này sẽ

sử dụng để nghiên cứu mô hình bài toán cộng đồng trên mạng xã hội sẽ được đưa ra trong chương 2 của luận văn

Trang 26

Cấu trúc đồ thị được đánh giá là cấu trúc có tính bao quát mô tả các đối tượng

so với các cấu trúc tuần tự, cây, mạng ngữ nghĩa…và dựa trên cấu trúc này có thể thiết

kế được nhiều thuật toán giải quyết được nhiều bài toán có độ tính toán phức tạp cao Mỗi dữ liệu lớn trên các hệ thống mạng đều có thể biểu diễn dưới dạng các đồ thị và mối quan hệ của chúng theo các liên kết và kết nối vật lý; kết nối giữa các mạng trong lớp mạng; mối quan hệ trong mạng xã hội; siêu liên kết giữa các trang web và các tương tác phức tạp giữa các thực thể

Nhiều dữ liệu có cấu trúc đều có thể được biểu diễn bằng mạng, bằng tập hợp các đỉnh được nối với nhau theo cặp bằng các liên kết, như mạng sinh học, sự hợp tác của các nhà nghiên cứu,… Đặc điểm quan trọng gắn kết các mạng lại với nhau đó là cấu trúc cộng đồng, trong đó có các nhóm có mật độ kết nối mạnh của các đỉnh trong nhóm và các kết nối yếu giữa các nhóm Do đó, việc xác định cộng đồng có thể được xem như là việc tìm kiếm các cụm đỉnh phân nhóm Một cộng đồng là một nhóm của các thực thể dùng chia sẻ những tài sản tương tự nhau hoặc kết nối với nhau thông qua mối quan hệ được lựa chọn Việc xác định các kết nối và định vị các thực thể trong cộng đồng khác nhau được coi là mục tiêu chính của nghiên cứu phát hiện cộng đồng Bằng trực quan có thể dễ dàng tìm ra những nhóm cộng đồng có độ tập trung cao, nhưng không phải cộng đồng nào cũng được hình thành bằng các mối liên hệ chặt chẽ

và dễ thấy vì một số cộng đồng được hình thành dưới dạng ẩn Điều quan trọng là phải tìm được sự phân phối của các cạnh giữa các đỉnh, từ đó phát hiện và đưa ra các cộng đồng tồn tại bên trong mạng xã hội.

Một trong những hướng nghiên cứu đang được quan tâm hiện nay là khai phá dữ liệu trong môi trường mạng xã hội Mạng xã hội (social network) là dịch vụ nối kết

Trang 27

các thành viên cùng sở thích trên Internet lại với nhau theo nhiều mục đích khác nhau không phân biệt không gian và thời gian Trong biểu diễn đồ thị của mạng xã hội, một

số nhóm các đỉnh có liên kết chặt chẽ với nhau thành các cụm và giữa các cụm đó được nối với nhau chỉ bằng một vài cạnh khác Tính chất này được gọi là tính cộng đồng, tính cộng đồng được coi là tính chất quan trọng nhất của mạng xã hội Như vậy khai phá cộng đồng đã và đang dành được sự chú ý của nhiều nhà khoa học trong nhiều lĩnh vực Chúng ta có thể thấy một số bức tranh trong thực tế

Phương thức kết nối mọi người trong xã hội

Hàng năm, công ty Alexa Internet (Amazon Inc) công bố số liệu thống kê và xếp hạng các trang web có ảnh hưởng lớn đến môi trường liên kết trong mạng xã hội Thường đứng đầu là google.com, facebook.com, yahoo.com, youtube.com Ngoài ra còn có twitter.com, blogger.com, wordpress.com…

Mối quan hệ trong một câu lạc bộ b ng đá gồm 34 thành viên

Mối quan hệ của sinh viên trong một trường Đại học

Trang 28

Kết nối các máy tính và điện thoại hiện đại

Các khái niệm ban đầu của mạng xã hội đã được chú ý và nghiên cứu từ hơn 80 năm trước, xuất phát là các phương tiện đơn giản kết nối con người trong một cộng đồng như báo chí, điện ảnh, thư tín, telephone, các chương trình liên kết khán giả trên thông tin đại chúng (Radio, TV)…Sau đó internet và mạng xã hội ra đời lại càng làm cho các vấn đề về lý thuyết và thực nghiệm trở nên phong phú, đa dạng và hấp dẫn hơn Không chỉ giới hạn trong các cộng đồng xã hội loài người, nhiều nhà động vật học và sinh vật học cũng bắt đầu nghiên cứu các hành vi cộng đồng của các loài động vật, đặc biệt là sinh vật biển

Trang 29

Như vậy, khai phá dữ liệu đồ thị và phát hiện cấu trúc cộng đồng trên mạng xã hội là một lĩnh vực nghiên cứu khá hấp dẫn và được các nhà khoa học quan tâm nghiên cứu Xuất phát từ một đồ thị mạng xã hội, người ta tìm ra các cụm, các nhóm cộng đồng có mối liên hệ chặt chẽ với nhau, từ đó phát hiện và tìm ra đặc tính của cấu trúc mạng.

Nội dung chương 2 của luận văn sẽ đưa ra các khái niệm cơ bản về mạng xã hội và bài toán cộng đồng, các định nghĩa cơ bản về bậc và độ đo trung gian cùng một số thuật toán xác định cộng đồng Các kiến thức cơ bản được tham khảo trong các tài liệu [3] [4] [5] [6] [7] [8] [9]

2.1 Khái niệm về bài toán cộng đồng [3][7]

Cho đồ thị mạng xã hội G = (V, E), trong đó V là tập các nút (đỉnh) {v1, v2,

…vn} và E là tập các cạnh Cấu trúc cộng đồng (gọi tắt là cộng đồng) C là tập con các đỉnh của V, sao cho với mỗi đỉnh v  C, có nhiều cạnh kết nối v với những cạnh khác trong C và ít cạnh kết nối v với những đỉnh w khác thuộc V\C Bài toán phát hiện cộng đồng là bài toán đưa ra danh sách những nút mạng thuộc từng cộng đồng đó Bài toán được mô tả tổng quát như sau:

Mô hình bài toán

Input: Đồ thị mạng xã hội G = (V, E), gồm tập V các nút (đỉnh) {v1, v2, …vn}

Có rất nhiều thuật toán để có thể tìm kiếm các cộng đồng trên mạng, trong đó phổ biến nhất phải kể đến Thuật toán Girvan-Newman, thuật toán này sử dụng phương pháp loại trừ khi không có cạnh nào vượt qua ngưỡng của độ trung gian cao nhất và sử dụng nhiều phép phân vùng Thuật toán mang lại kết quả tương đối tốt, tuy nhiên số lượng cộng đồng hoàn toàn không thể kiểm soát được và khó có thể xác định phép phân vùng được dùng nào là hiệu quả nhất Thuật toán tiếp theo do Gregory đề xuất năm 2007 mang tên CONGA, trong thuật toán này các đỉnh sẽ được chia nhỏ thành

Ngày đăng: 10/06/2021, 09:43

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

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

w