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 2LỜ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 3LỜ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 4MỤ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 5Xá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 6DANH 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 7MỞ ĐẦ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 9Chươ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 12Nhượ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 14Procedure 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 153: 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 16hỏ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 18T:=(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 19Lậ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 201.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 21P 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 23Ta 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 24số 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 26Cấ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 27cá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 29Như 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