Chỉ với giả thiết tồn tại một vòng ảo kết nối logic tất cả các nút trong mạng, mỗi nút trên vòng ảo biết nút kế tiếp nó trên vòng, mà không cần phải biết tất cả các nút cũng như tổng số
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
LÊ TRỌNG HÙNG
TRUYỀN BÁ THÔNG TIN PHÂN TÁN
GIỮA CÁC TÁC TỬ DI ĐỘNG
Ngành: Công nghệ Thông tin
Chuyên ngành: Truyền dữ liệu và Mạng máy tính
Trang 3MỤC LỤC
LỜI CAM ĐOAN Error! Bookmark not defined LỜI CẢM ƠN Error! Bookmark not defined
MỤC LỤC 1
BẢNG THUẬT NGỮ VÀ CÁC TỪ VIẾT TẮT 3
DANH MỤC HÌNH VẼ, GIẢI THUẬT 5
MỞ ĐẦU 7
CHƯƠNG 1 HỆ PHÂN TÁN 10
1.1 Khái niệm hệ phân tán 10
1.2 Vai trò hệ phân tán 10
1.3 Đặc trưng hệ phân tán 11
1.4 Mô hình truyền thông báo 11
1.5 Công nghệ tác tử di động 14
1.5.1 Sự tiến hóa 14
1.5.2 Các đặc tính của tác tử di động 15
1.5.3 Ứng dụng của tác tử di động 15
CHƯƠNG 2 BẦU THỦ LĨNH TRÊN MẠNG ĐẦY ĐỦ 17
2.1 Giới thiệu bài toán 17
2.2 Mô hình tính toán phân tán 17
2.3 Giải thuật bầu thủ lĩnh Villadangos 18
CHƯƠNG 3 XÂY DỰNG CÂY KHUNG TỐI THIỂU 27
3.1 Bài toán cây khung tối thiểu 27
3.2 Giải thuật GHS83 27
3.3 Giải thuật SB95 36
CHƯƠNG 4 TRUYỀN BÁ THÔNG TIN PHÂN TÁN 47
GIỮA CÁC TÁC TỬ DI ĐỘNG 47
4.1 Bài toán MAGP – Mobile Agent Gossip Problem 47
4.2 Một số khái niệm 47
4.3 Mối quan hệ giữa MAGP và NLEP 48
4.3.1 Hệ thống truyền thông báo 49
4.3.2 Mô phỏng một giải thuật truyền thông báo 50
4.4 Giải thuật hẹn gặp (Rendezvous Algorithm) 53
4.5 Các giải thuật cho MAGP 54
4.5.1 Mạng bất kỳ 54
4.5.2 Mạng đầy đủ không cảm hướng 68
4.5.3 Mạng đầy đủ cảm hướng 69
Trang 4CHƯƠNG 5 GIẢI THUẬT ĐỀ XUẤT CHO MAGP TRÊN MẠNG ĐẦY ĐỦ 74
5.1 Phát biểu bài toán 74
5.2 Ý tưởng, cấu trúc dữ liệu 74
5.3 Giải thuật 76
CHƯƠNG 6 GIẢI THUẬT ĐỀ XUẤT CHO MAGP TRÊN MẠNG BẤT KỲ 94
6.1 Phát biểu bài toán 94
6.2 Ý tưởng, cấu trúc dữ liệu 94
6.3 Giải thuật 97
KẾT LUẬN 112
TÀI LIỆU THAM KHẢO 115
Trang 5BẢNG THUẬT NGỮ VÀ CÁC TỪ VIẾT TẮT
Mobile Agent Tác tử di động, là một chương trình tự trị có khả năng di
chuyển trên mạng và thực hiện nhiệm vụ tại mỗi nút
MAGP (Mobile Agent
Gossip Problem)
Bài toán truyền bá thông tin phân tán giữa các tác tử di động, ban đầu mỗi tác tử có một thông tin riêng, mục đích của MAGP là mỗi tác tử biết thông tin của tất cả các tác tử còn lại
NLEP (Node Leader
GHS83 Giải thuật xây dựng cây khung tối thiểu phân tán của
R.G Gallager, P.A Humblet, P.M Spira [19]
SB95 Giải thuật xây dựng cây khung tối thiểu phân tán của
Gurdip Singh, Arthur J Bernstein [8]
Node Một địa điểm lưu trữ và xử lý dữ liệu trên mạng
MOE (Minimum –
weight Outgoing Edge)
Cạnh ngoài có trọng số tối thiểu trong số các cạnh ngoài của một mảnh thuộc cây khung MST
Whiteboard Bảng trắng của một nút, là nơi tác tử có thể ghi, đọc và
xóa thông tin
Delivering move Bước chuyển giao: bước di chuyển với một thông báo
của một tác tử
Trang 6Backtracking move Bước chuyển quay lui của một tác tử
Rendezvous Algorithm Giải thuật hẹn gặp, các tác tử hẹn gặp nhau ở một điểm
nút nào đó trên mạng để trao đổi thông tin
DFS (Depth First
MOL (Minimum
Outgoing Link) Liên kết ngoài tối thiểu của một cây khung
Gossip, Gossiping Giải pháp truyền bá phân tán phỏng theo quá trình phổ
biến tin đồn hay lây nhiễm bệnh tật trong xã hội
Trang 7DANH MỤC HÌNH VẼ, GIẢI THUẬT
Hình 1.5.1-1 Sự tiến hóa của mô hình Mobile agents 16
Giải thuật 2.3-1 Giải thuật bầu chọn thủ lĩnh Villadangos 20
Hình 2.3-1.a Trạng thái ban đầu của mạng 23
Hình 2.3-1.b Nút 2, 4 khởi tạo giải thuật 24
Hình 2.3-1.c Nút 1, 3 chuyển thông báo 24
Hình 2.3-1.d Nút 4 gửi yêu cầu tới nút 2 25
Hình 2.3-1.e Nút 2 trả lời nút 4 25
Hình 2.3-1.f Nút 4 trở thành thủ lĩnh 25
Hình 3.2-1 Minh họa chứng minh tính chất 1 30
Hình 3.2-2 Minh họa chứng minh tính chất 2 31
Giải thuật 3.2-1 Giải thuật GHS83 32
Hình 3.2-1.b Khởi động giải thuật 36
Hình 3.2-1.c Đánh thức nút kề cận 36
Hình 3.2-1.d Đợt sát nhập đầu tiên 36
Hình 3.2-1.e Kết thúc đợt sát nhập đầu 37
Hình 3.2-1.f Kết thúc giải thuật 37
Giải thuật 3.3-1 Giải thuật SB95 39
Giải thuật 4.3-1 Giải thuật mô phỏng giải thuật A 53
Giải thuật 4.5.1-1 Giải thuật cho MAGP với mạng tùy ý 57
Giải thuật 4.5.1-2 Giải thuật chi tiết cho MAGP với mạng bất kỳ 60
Trang 8Hình 4.5.1-1.a Trạng thái mạng ban đầu 64
Giải thuật 4.5.2-1 Giải thuật cho MAGP với mạng đầy đủ không cảm hướng 70
Hình 4.5.3-1.a Mạng đầy đủ cảm hướng 72
Hình 4.5.3-1.b Một tác tử di chuyển ở bước 1 72
Hình 4.5.3-1.c Vòng rút gọn ở bước 2 72
Giải thuật 4.5.3-1 Giải thuật cho MAGP với mạng đầy đủ cảm hướng 73
Giải thuật 5.3-1 Giải thuật đề xuất cho MAGP với mạng đầy đủ 79
Hình 5.3-1.a Trạng thái ban đầu của mạng 86
Hình 5.3-1.c Khởi tạo đợt bầu chọn 87
Hình 5.3-1.d Các tác tử thực hiện thủ tục INF 88
Hình 5.3-1.e Tác tử 1 thực hiện thủ tục INF tại nút 5 88
Hình 5.3-1.f Tác tử 1 thực hiện thủ tục REP tại nút 7 89
Hình 5.3-1.g Tác tử 1 thực hiện thủ tục REQ tại nút 1 89
Hình 5.3-1.h Tác tử 4 được bầu chọn làm thủ lĩnh 90
Giải thuật 6.3-1 Giải thuật đề xuất cho MAGP với mạng bất kỳ 100
Hình 6.3-1.a Trạng thái mạng ban đầu 105
Hình 6.3-1.c Tác tử p 2 tìm thấy liên kết ngoài tối thiểu 106
Hình 6.3-1.d Cây khung T
3 hấp thu T 2 , p 3 tìm thấy MOL 3 = (2, 5) 107
Hình 6.3-1.e Cây khung T
3 hấp thu T 1 , p 3 tìm kiếm MOL 3 107
Hình 6.3-1.f Tác tử p 3 được bầu chọn làm tác tử thủ lĩnh 108
Bảng 1 Bảng so sánh giải thuật đề xuất với giải thuật gốc 116
Trang 9MỞ ĐẦU
Với sự phát triển mạnh mẽ của Internet và đặc biệt là các công nghệ truyền thông, cùng với sự bùng nổ nhanh chóng các dịch vụ và nguồn thông tin trên mạng đã làm gia tăng số người sử dụng lên con số khổng lồ Trao đổi và quảng bá thông tin là một nhu cầu thiết yếu của các thành phần tham gia vào mạng, ngoài ra nó còn đóng vai trò hạ tầng cho nhiều dịch vụ quan trọng khác như: cải tiến hiệu năng của mạng, chuẩn đoán lỗi và duy trì sự ổn định của hệ thống mạng, quản lý cấu hình, lập lịch hội họp, tính toán thông tin gộp, nhân bản nội dung, Vì vậy, việc nghiên cứu các giải pháp truyền bá thông tin phân tán hiệu quả cao luôn là một chủ đề hấp dẫn đối với các học giả khắp nơi trên thế giới
Giải thuật gossiping là một giải pháp truyền bá thông tin phân tán, phỏng theo quá trình phổ biến tin đồn hay lây nhiễm bệnh tật trong xã hội Trong bài toán gossip, mỗi bộ xử lý ban đầu có phần thông tin riêng được gọi là tin đồn, mục đích là mỗi bộ
xử lý nhận được các tin đồn của tất cả các bộ xử lý khác Phương pháp này đã được nhiều tác giả tập trung nghiên cứu và đã có những thành quả nhất định [5,12,21,22] Tác tử di động (Mobile Agent) là một chương trình tự trị có khả năng di chuyển
từ nơi này đến nơi khác trên mạng và thực hiện nhiệm vụ nào đó thay cho người dùng Phương pháp tác tử di động giúp làm giảm tải mạng, tạo ra những ứng dụng phân tán
có tính thích nghi và độ linh hoạt cao, có thể giải quyết hiệu quả hơn các bài toán được giải quyết bằng phương pháp khác trong các hệ phân tán [2]
Truyền bá thông tin phân tán giữa các tác tử di động (Mobile Agent Gossip Problem – MAGP) là một hướng nghiên cứu mới, thu hút nhiều sự quan tâm của giới nghiên cứu Ở đây mỗi tác tử có một thông tin riêng, có không quá một tác tử khởi tạo trên cùng một nút, mục đích của MAGP là làm cho mỗi tác tử thu thập thông tin của tất cả các tác tử còn lại
Rendezvous (hẹn gặp) là một trong những cách tiếp cận để giải quyết bài toán truyền bá thông tin phân tán giữa các tác tử, tất cả các tác tử được yêu cầu hẹn gặp trên một nút tại cùng một thời điểm, bằng cách trao đổi thông tin của tất cả các tác tử tại điểm hẹn gặp, chúng ta giải được bài toán MAGP Như vậy, mỗi tác tử phải biết rõ hình trạng của toàn mạng, thời điểm và vị trí hẹn gặp, để đạt được điều này, ngoài việc
xử lý phức tạp, giải thuật còn chịu nhiều phí tổn về độ phức tạp di chuyển [7,14,16,20]
Tomoko Suzuki và đồng sự đề xuất cách giải quyết bài toán MAGP hiệu quả hơn: một tác tử sẽ được bầu làm thủ lĩnh trong số các tác tử trong mạng, tác tử thủ lĩnh
sẽ duyệt toàn mạng để thu thập và truyền bá thông tin cho các tác tử khác [23,24] Từ khẳng định hai bài toán MAGP và NLEP (Node Leader Election Problem - NLEP) có
Trang 10thể quy về nhau, và dựa trên ý tưởng của các giải thuật bầu thủ lĩnh trong mô hình truyền thông báo, Tomoko Suzuki và đồng sự đã đưa ra một loạt các giải thuật cho bài toán MAGP với các hình trạng mạng khác nhau như: mạng cây không biết gốc, mạng đầy đủ không cảm hướng, mạng đầy đủ cảm hướng, mạng tùy ý, mạng vòng không đồng bộ, mạng vòng đồng bộ, với độ phức tạp tốt hơn hẳn giải thuật hẹn gặp Tuy nhiên, giải thuật cho mạng bất kỳ mới chỉ đưa ra ở mức ý tưởng, giải thuật cho mạng đầy đủ phải dùng thêm giả thiết cảm hướng để đạt được độ phức tạp di chuyển tuyến tính, những đánh giá về các giải thuật này mới ở mức sơ lược về độ phức tạp di chuyển Trên cơ sở ý tưởng của giải thuật gốc, tác giả luận văn đã trình bày một giải thuật chi tiết cho bài toán MAGP trên mạng bất kỳ, và đưa ra một số phương pháp tối
ưu bước di chuyển của tác tử, nâng cao tốc độ thực hiện của giải thuật, có chứng minh tính đúng đắn, đánh giá đầy đủ về độ phức tạp di chuyển và thời gian của giải thuật Tác giả luận văn đề xuất một giải thuật cho bài toán MAGP trên mạng bất kỳ, có đợt bầu chọn tác tử thủ lĩnh là một cải biến từ giải thuật xây dựng cây khung SB95[8] Giải thuật không cần dùng đến số hiệu mức Trong giải thuật gốc, mỗi cây khung sẽ được gắn một số hiệu mức, các cây khung được trộn với nhau dựa vào số hiệu mức,
tức cây khung T với số hiệu mức L chỉ có thể trộn với cây khung T với số hiệu mức
L, qua liên kết ngoài có trọng số tối thiểu của T chỉ khi L L, vì vậy giải thuật gốc có
độ phức tạp thời gian O(N log k + |E|) không tối ưu Với giải thuật đề xuất, khi tác tử
chủ đã xác định được liên kết ngoài có trọng số tối thiểu trên cây khung của nó, tác tử tiến hành sát nhập ngay cây khung của nó với cây khung khác qua liên kết này, điều này làm tăng tốc độ hội tụ của giải thuật Giải thuật đề xuất có độ phức tạp thời gian
O(N + |E|) tối ưu hơn hẳn độ phức tạp thời gian của giải thuật gốc Độ phức tạp di chuyển của giải thuật đề xuất trong trường hợp xấu nhất là O(N k + |E|), độ phức tạp này không tối ưu Tuy nhiên, khi mỗi cây khung là sự kết hợp của ít nhất k/log k cây khung ban đầu, thì độ phức tạp của giải thuật chỉ còn là O(N log k + |E|)
Tác giả luận văn đề xuất một giải thuật giải quyết bài toán MAGP trên mạng đầy
đủ tối ưu hơn giải thuật gốc, bằng cách vận dụng ý tưởng giải thuật bầu thủ lĩnh trên mạng đầy đủ hiệu quả hơn trong mô hình truyền thông báo
Luận văn được tổ chức thành 6 chương, nội dung cụ thể từng chương như sau: Chương 1: Giới thiệu tổng quan về hệ phân tán, vai trò, đặc trưng, mô hình truyền thông báo và công nghệ tác tử di động [1,2,11,17,25]
Chương 2: Trình bày một giải thuật bầu thủ lĩnh hiệu quả trên mạng đầy đủ của tác giả J Villadangos và đồng sự [13] Chỉ với giả thiết tồn tại một vòng ảo kết nối logic tất cả các nút trong mạng, mỗi nút trên vòng ảo biết nút kế tiếp nó trên vòng, mà không cần phải biết tất cả các nút cũng như tổng số nút trong mạng, giải thuật vẫn đạt được độ phức tạp tuyến tính cả về thông báo và thời gian
Trang 11Chương 3: Trình bày hai giải thuật xây dựng cây khung tối thiểu: giải thuật GHS83 của Gallager và đồng sự [19], giải thuật SB95 của Singh và Bernstein [8] Cả hai giải thuật này đều xây dựng cây khung tối thiểu phân tán từ rừng cây khung, mỗi cây khung trộn với cây khung khác qua cạnh ngoài có trọng số tối thiểu của nó, cho đến khi chỉ còn một cây khung duy nhất bao trùm toàn bộ mạng, đây chính là cây MST cần tìm Trong GHS83, mỗi mảnh được gắn một số hiệu mức, các mảnh được trộn trên cơ sở số hiệu mức, chính điều này làm chậm tốc độ hội tụ của GHS83, giải
thuật có độ phức tạp thời gian O(N log N) không tối ưu Giải thuật SB95 không sử
dụng số hiệu mức, ngay khi mảnh tìm được cạnh ngoài có trọng số tối thiểu của nó, mảnh sẽ thực hiện sát nhập với mảnh khác qua cạnh này, giải thuật có độ phức tạp thời
gian là O(N) tối ưu hơn hẳn GHS83
Chương 4: Trình bày mô hình hệ tác tử di động, mối quan hệ giữa hai bài toán MAGP và NLEP, giải thuật hẹn gặp, các giải thuật cho MAGP được đề xuất bởi Tomoko Suzuki và đồng sự trên mạng bất kỳ, mạng đầy đủ không cảm hướng, mạng đầy đủ cảm hướng [23,24] Trong phần này, tác giả luận văn đóng góp một giải thuật chi tiết cho bài toán MAGP trên mạng bất kỳ, dựa trên giải thuật ở mức ý tưởng về mạng bất kỳ của Tomoko Suzuki và đồng sự
Chương 5: Trình bày giải thuật đề xuất cho bài toán MAGP trên mạng đầy đủ, vận dụng ý tưởng của giải thuật bầu thủ lĩnh trên mạng đầy đủ của J Villadangos và đồng sự Giải thuật không cần dùng giả thiết cảm hướng, mỗi nút trong mạng không cần biết tất cả các nút trong mạng cũng như là tổng số nút trong mạng, mà chỉ cần biết nút kế tiếp nó trên vòng ảo nối tất cả các nút trong mạng, nhưng vẫn đạt được độ phức tạp bước di chuyển tốt hơn giải thuật gốc
Chương 6: Trình bày giải thuật đề xuất cho bài toán MAGP trên mạng bất kỳ Giải thuật có đợt bầu chọn tác tử lĩnh là một cải biến từ giải thuật xây dựng cây khung SB95 Giải thuật có độ phức tạp thời gian tối ưu hơn hẳn so với giải thuật gốc
Cuối cùng là kết luận, tóm lược những đóng góp của luận văn, đồng thời đưa ra một số hướng phát triển tiếp theo
Trang 12CHƯƠNG 1 HỆ PHÂN TÁN
1.1 Khái niệm hệ phân tán
Hệ phân tán là tập các thiết bị tính toán riêng rẽ có thể giao tiếp với nhau Đây
là một định nghĩa hết sức tổng quát bao trùm một phạm vi rộng các hệ thống máy tính hiện đại ngày nay, từ chíp VLSI đến các bộ đa xử lý, các mạng cục bộ và Internet Mục đích của xử lý song song là phân bổ một nhiệm vụ lớn cho tất cả các bộ xử
lý thực hiện Trong khi với hệ phân tán, mỗi bộ xử lý nói chung có chương trình làm việc riêng bán độc lập, nhưng vì các lý do khác nhau như chia sẻ tài nguyên, tính sẵn sàng, khả năng kháng lỗi, nên các bộ xử lý cần phối hợp hành động với nhau
Hiện nay, hệ phân tán có ở khắp nơi, trong các doanh nghiệp, học viện, chính phủ, quốc phòng, Điển hình, hệ phân tán cung cấp những phương tiện để chia sẻ các tài nguyên như các máy in màu, máy quét, và chia sẻ dữ liệu Tính toán ngang hàng cũng là một mô hình hệ phân tán, chúng ngày càng càng trở nên phổ biến trong việc cung cấp các tài nguyên và dịch vụ tính toán Các hệ thống phân tán tham vọng hơn cố gắng cải tiến hiệu năng bằng cách kết hợp giải quyết các bài toán con một cách song song, và tăng tính sẵn sàng trong trường hợp một số thành phần của hệ thống bị lỗi
1.2 Vai trò hệ phân tán
Với nhiều ứng dụng nổi bật trong thực tiễn, hệ phân tán đang ngày càng trở nên phổ biến, bởi nó nắm giữ những vai trò quan trọng sau:
Trao đổi thông tin: Các hệ phân tán cung cấp khả năng chia sẻ thông tin rộng rãi
Các chi nhánh khác nhau của một ngân hàng tại các vị trí địa lý rất xa nhau có thể trao đổi, chia sẽ thông tin cho nhau Hệ phân tán cũng cung cấp khả năng chia sẻ thông tin giữa các thiết bị hỗn tạp, một máy tính có thể giao tiếp các thiết bị viễn thông khác như điện thoại cố định, di động, các PDA, …
Chia sẻ tài nguyên: Các hệ phân tán cung cấp khả năng chia sẻ tài nguyên cả
phần cứng lẫn phần mềm, giúp giảm chi phí hệ thống Các máy tính kết nối mạng có thể dùng chung máy in, máy quét ảnh, có thể chia sẻ các tệp dữ liệu, các tệp chương trình
Nâng cao độ tin cậy, tính sẵn sàng thông qua sao lặp: Bằng việc sao lặp, nhân
bản, các hệ phân tán cho độ tin cậy và tính sẵn sàng cao Nếu toàn bộ dữ liệu của một chi nhánh ngân hàng lưu trong máy tính bị mất do sự cố nào đó, người ta có thể khôi phục lại bằng cách sao phần dữ liệu nhân bản đã được lưu tại một nơi khác trên hệ thống máy tính
Trang 13Nâng cao hiệu suất thông qua song song hóa: Thông qua song song hóa, các
thành phần trong hệ phân tán có thể chia sẻ công việc, thực hiện đồng thời công việc chung, làm tăng hiệu suất hoạt động hệ thống
Đơn giản thiết kế thông qua chuyên dụng hóa: Hệ phân tán làm đơn giản việc
thiết kế các hệ thống phức tạp Người ta có thể phân một hệ thống phức tạp thành các
bộ phận con chuyên dụng thực hiện một số tác vụ chuyên biệt nào đó và hợp tác với nhau để giải quyết nhiệm vụ lớn
1.3 Đặc trưng hệ phân tán
Một hệ phân tán có thể được mô tả như là một tập các bộ xử lý tự trị liên lạc với nhau qua một mạng truyền thông và có các đặc trưng sau:
Không có đồng hồ chung: Không thể đồng bộ hóa đồng hồ của các bộ xử lý
khác nhau vì không biết chắc độ trễ truyền thông Chúng ta có thể dùng khái niệm nhân quả thay cho đồng hộ vật lý để đạt được tính đồng bộ của hệ thống
Không có bộ nhớ toàn cục: Các bộ xử lý không thể biết được trạng thái toàn cục
của hệ thống Bởi vậy để biết được trạng thái hệ thống, người thiết kế hệ phân tán cần phải xây dựng giải thuật đánh giá các tính chất toàn cục
Không có cơ chế phát hiện sự cố chính xác: Trong hệ phân tán, chúng ta không
thể phân biệt được bộ xử lý chậm hay bị sự cố Khi một bộ xử lý gặp sự cố, các bộ xử
lý còn lại vẫn phải tiếp tục làm việc để đạt được kết quả mong muốn Do đó, cần xây dựng cơ chế phát hiện lỗi và kháng lỗi
Khoảng cách địa lý: Các bộ xử lý trong một hệ thống phân tán có thể nằm cách
xa nhau về mặt địa lý Cấu hình mạng các trạm làm việc hoặc cụm các trạm làm việc trên mạng LAN đang được quan tâm nhiều hơn khi xây dựng các hệ phân tán cỡ nhỏ Cấu hình mạng các trạm làm việc đang trở nên phổ biến bởi tận dụng được hạ tầng sẵn
có, tiết kiệm chi phí Động cơ tìm kiếm Google dựa trên kiến trúc mạng các trạm làm việc
Sự tự trị và tính hỗn tạp: Các bộ xử lý có tốc độ khác nhau và chúng có thể chạy
một hệ điều hành khác nhau, nhưng hợp tác với nhau để giải quyết một vấn đề chung
1.4 Mô hình truyền thông báo
Trong một hệ thống truyền thông báo, các bộ xử lý giao tiếp với nhau bằng cách gửi thông báo qua các kênh truyền thông, mỗi kênh truyền là một kết nối hai chiều giữa hai bộ xử lý Tô pô của hệ thống được biểu diễn bởi một đồ thị vô hướng, trong
đó mỗi nút là một bộ xử lý, mỗi cạnh là một kênh truyền thông giữa các bộ xử lý tương ứng Giải thuật cho hệ thống truyền thông báo bao gồm một chương trình cục bộ
Trang 14cho mỗi bộ xử lý, các chương trình này cung cấp khả năng cho bộ xử lý thực hiện tính toán cục bộ, gửi và nhận các thông báo từ mỗi hàng xóm của nó
Có thể hình thức hóa như sau: Một hệ thống hay giải thuật bao gồm n bộ xử lý
p 0 , p 1 ,…, p n-1 ; i là chỉ mục của bộ xử lý p i Mỗi bộ xử lý p i được coi như một máy
trạng thái với tập trạng thái Q i Bộ xử lý được xác định bởi một nút cụ thể trong đồ thị
Các cạnh liên thuộc với p i trong đồ thị được gắn nhãn bởi các số nguyên từ 1 đến r, trong đó r là bậc của p i Mỗi trạng thái của bộ xử lý p i chứa 2r thành phần đặc biệt, outbuf i ( ) và inbuf i( ), với mọi thỏa mãn 1 ≤ ≤ r Thành phần đặc biệt này là tập các thông báo: outbuf i ( ) chứa các thông báo mà p i đã gửi tới hàng xóm của nó qua kênh , nhưng chưa đến nơi, và inbuf i( ) chứa các thông báo nhận được trên kênh ,
nhưng chưa xử lý Tập trạng thái Q i chứa tập con các trạng thái đáng chú ý ban đầu,
trạng thái ban đầu của các inbuf i( ) phải là rỗng
Trạng thái của bộ xử lý, ngoại trừ các thành phần outbuf i ( ), bao gồm các trạng thái tới được của p i Hàm chuyển của bộ xử lý p i đưa các đầu vào cho trạng thái tới
được của p i , tạo ở đầu ra một giá trị cho trạng thái tới được của p i trong đó mỗi inbuf i( ) rỗng, hàm chuyển cũng tạo ở đầu ra nhiều nhất một thông báo cho mỗi kênh
: thông báo này sẽ được gửi tới hàng xóm trên kênh Vì vậy, thông báo gửi trước
đó bởi p i đang đợi được chuyển không ảnh hưởng đến bước hiện thời của p i; mỗi bước
xử lý tất cả các thông báo đang đợi được chuyển tới p i , dẫn đến thay đổi trạng thái và
có nhiều nhất một thông báo được gửi tới mỗi hàng xóm
Cấu hình: Cấu hình là một vec tơ C = (q 0 ,…, q n-1 ) trong đó q i là trạng thái của p i
Các trạng thái của các biến outbuf trong một cấu hình mô tả các thông báo chuyển qua các kênh truyền thông Cấu hình ban đầu là một vec tơ (q 0 ,…, q n-1 ) sao cho mỗi q i là
trạng thái ban đầu của p i
Sự kiện: Với các hệ thống truyền thông báo, chúng ta xem xét hai loại sự kiện, một loại là sự kiện tính, ký hiệu comp(i), biểu diễn một bước tính của bộ xử lý p i, trong
đó hàm chuyển của p i được áp dụng cho trạng thái tới được hiện thời loại còn lại là sự kiện giao, ký hiệu del(i,j,m), biểu diễn sự giao thông báo m từ bộ xử lý p i đến bộ xử lý
p j
Thực hiện: Là một chuỗi cấu hình xen kẽ sự kiện mô tả hoạt động của hệ thống, chuỗi này phải thỏa mãn các điều kiện khác nhau Có hai loại điều kiện là điều kiện an toàn và điều kiện sống động Điều kiện an toàn là điều kiện phải đúng với mọi tiền tố hữu hạn của chuỗi mô tả, có nghĩa rằng không có gì xấu xảy ra Điều kiện sống động
là điều kiện phải đúng với một số lần nhất định (có thể vô hạn lần), có nghĩa rằng cuối cùng điều tốt sẽ đến Bất kỳ chuỗi mô tả nào thỏa mãn mọi điều kiện an toàn đặt ra
được gọi là một thực hiện Một thực hiện cũng thỏa mãn tất cả các điều kiện sống động đặt ra được gọi là thực hiện thỏa đáng
Trang 15Hệ thống không đồng bộ: Một hệ thống được gọi là không đồng bộ nếu nó không
có cận trên đối với thời gian Đoạn thực hiện trong hệ thống truyền thông báo không
đồng bộ là một chuỗi cấu hình xen kẽ sự kiện có dạng: C 0 , 1 , C 1 , 2 , C 2 , 3 ,…, trong
đó mỗi C k là một cấu hình và mỗi k là một sự kiện Nếu hữu hạn thì nó phải kết thúc trong một cấu hình, và những điều kiện sau phải được thỏa mãn:
- Nếu k = del(i, j, m), thì m phải là một phần tử của outbuf i( ) trong C k-1,
với là nhãn kênh truyền (p i , p j ) của bộ xử lý p i Sự thay đổi từ cấu hình
C k-1 sang C k là m được loại bỏ khỏi outbuf i( ) trong C k-1 và được bổ sung
vào inbuf i (h) trong C k Nói cách khác, một thông báo đã được giao nếu và
chỉ nếu nó được chuyển từ outbuf của bên gửi sang inbuf của bên nhận
- Nếu k = comp(i), thì sự thay đổi từ cấu hình C k-1 sang C k là p i thay đổi
trạng thái theo hàm chuyển của nó thực hiện trên trạng thái tới được của
p i trong C k-1 , và tập các thông báo xác định bởi hàm chuyển của p i được
bổ sung vào các outbuf i trong C k Nói cách khác, p i thay đổi trạng thái và gửi các thông báo ra ngoài theo hàm chuyển của nó dựa trên trạng thái hiện thời, bao gồm tất cả các thông báo đang chờ được giao Hàm chuyển
của bộ xử lý đảm bảo rằng các inbuf rỗng
Thực hiện là một đoạn thực hiện C 0 , 1 , C 1 , 2 , C 2 , 3 ,…, trong đó C 0 là cấu hình ban đầu
Trong mô hình không đồng bộ, một thực hiện là thực hiện thỏa đáng nếu mỗi bộ
xử lý có số vô hạn lần các sự kiện tính và mỗi thông báo được gửi cuối cùng sẽ được giao
Hệ thống đồng bộ: Trong mô hình đồng bộ các bộ xử lý thực hiện theo các vòng
nhịp: thực hiện được phân chia thành các vòng, trong mỗi vòng, mọi bộ xử lý có thể gửi một thông báo tới hàng xóm của nó, các thông báo đã được giao, và mọi bộ xử lý tính toán dựa trên các thông báo vừa nhận Mô hình này, mặc dù nói chung không khả thi trong những hệ thống phân tán thực hành, nhưng lại rất tiện lợi cho việc thiết kế
giải thuật vì không phải tính đến nhiều điều không chắc chắn Thực hiện trong mô hình
đồng bộ là chuỗi cấu hình và sự kiện xen kẽ có thể được phân chia thành các vòng
riêng biệt Mỗi vòng bao gồm sự kiện giao mọi thông báo trong các outbuf, cho đến khi tất cả các outbuf rỗng, sau đó mỗi bộ xử lý thực hiện một bước tính
Trong mô hình đồng bộ, một thực hiện gọi là thực hiện thỏa đáng nếu nó là dãy
vô hạn, hàm ý rằng mọi bộ xử lý thực hiện vô hạn bước tính, và mọi thông báo trong
các outbuf nhất định sẽ được giao
Kết thúc: Chúng ta giả thiết rằng mỗi tập trạng thái của bộ xử lý bao gồm một tập con các trạng thái kết thúc và mỗi hàm chuyển của bộ xử lý ánh xạ các trạng thái kết thúc chỉ đến các trạng thái kết thúc Chúng ta nói rằng hệ thống đã kết thúc khi tất
Trang 16cả các bộ xử lý ở trạng thái kết thúc và không còn thông báo nào đang chuyển Chú ý
rằng thực hiện thỏa đáng vẫn vô hạn, nhưng khi bộ xử lý đã vào trạng thái kết thúc, nó
sẽ ở lại trạng thái đó, thực hiện các bước “giả”
Độ phức tạp được xác định bằng hai độ đo: độ phức tạp thông báo và độ phức
tạp thời gian
Độ phức tạp thông báo là số tối đa các thông báo gửi đi trong thực hiện thỏa
đáng
Độ phức tạp thời gian là thời gian tối đa đến khi kết thúc trong thực hiện thỏa
đáng Với mô hình đồng bộ, độ phức tạp thời gian là số vòng tối đa Với mô hình không đồng bộ, bộ đo dựa trên giả thiết thời gian xử lý sự kiện là không đơn vị và thời gian truyền thông báo (từ sự kiện gửi đến sự kiện xử lý thông báo) tối đa là một đơn
Code, data, context
Hình 1.5.1-1 Sự tiến hóa của mô hình Mobile agents
Trang 17Tác tử di động (Mobile Agent) là một trong những hướng nghiên cứu thu hút nhiều sự quan tâm nhất từ những năm 1990 đến nay, với những đặc điểm rất thích hợp cho việc phát triển các ứng dụng phân tán Tác tử di động là một phần mềm tự trị có khả năng di chuyển trên mạng để thực hiện một công việc xác định Khi di chuyển, các tác tử di động đóng gói mã nguồn, dữ liệu và cả trạng thái thi hành, nhờ vậy tác tử di động có thể dừng việc thi hành đang thực hiện tại máy này, di chuyển sang máy khác
và khôi phục lại sự thi hành tại máy đích Hình 1.5.1-1 minh họa sự tiến hóa của mô hình tác tử di động
1.5.2 Các đặc tính của tác tử di động
Tác tử di động có một số đặc tính quan trọng sau đây:
Tính tự trị (autonomous): Một tác tử có thể hoạt động không cần có sự
can thiệp trực tiếp của người sử dụng
Tính di động (mobility): Một tác tử có thể di chuyển từ nơi này đến nơi
khác với các tình huống khác nhau
Tính cộng tác (collaboration): Một tác tử có thể giao tác với tác tử khác
hay với con người, để trao đổi tri thức, thông tin với nhau
Tính thích ứng (reactiveness): Là khả năng của tác tử di động có thể thực
thi trên những môi trường lạ
Tính liên tục về mặt thời gian: Một tác tử có thể vừa di chuyển vừa xử lý
công việc trên mạng hoặc có thể tiếp tục công việc tại vị trí mới
Tính bền vững (durability): Một tác tử có thể được lưu lại tại bộ nhớ thứ
cấp và có thể được gọi hoạt động trở lại sau
1.5.3 Ứng dụng của tác tử di động
Với các đặc tính như trên, mô hình tác tử di động có thể được sử dụng hiệu quả trong nhiều trường hợp khác nhau:
Tương tác dữ liệu thay cho người sử dụng: Các ứng dụng thường xuyên
yêu cầu phản ứng ngay với các luồng dữ liệu thời gian thực, không cần phân biệt người sử dụng là ai và có mặt hay không
Xử lý và tính toán song song: Các tính toán phức tạp được chia nhỏ thành
nhiều đơn vị để phân tán trên các máy khác nhau, mỗi đơn vị giao cho một tác tử di động điều phối
Làm việc trên mạng có độ tin cậy kém, bị ngắt kết nối: Trong trường hợp
này có thể phục hồi mạng bằng cách di chuyển tác tử di động tới nguồn
dữ liệu mới để thực hiện thay vì chỉ tập trung vào việc kết nối lại
Trang 18 Thu thập thông tin phân tán: Tác tử di động thu thập thông tin ở các điểm
nút khác nhau trong mạng
Tìm kiếm và lọc thông tin: Tác tử di động có thể di chuyển tới các site, tìm
kiếm và lọc ra những thông tin thật sự cần thiết
Giám sát theo thời gian: Nhiều trường hợp thông tin tìm kiếm chưa có sẵn
mà phải đợi đến thời điểm nó xuất hiện Tác tử di động được tung đến điểm cần thiết, giám sát và chờ đợi để thu thập các thông tin theo yêu cầu
Phân phát thông tin: Tác tử di động di chuyển trên mạng và phân phát các
thông tin theo yêu cầu
Thương lượng, đàm phán: Các tác tử di động có thể tương tác với nhau để
thương lượng, đàm phán những vấn đề cụ thể Ví dụ, thương lượng để tổ chức một cuộc họp
Quản trị hệ thống mạng: Với các hệ thống mạng lớn, việc chẩn đoán lỗi,
duy trì sự ổn định của hệ thống là các công việc rất khó khăn Tác tử di động giúp cho các công việc chẩn đoán lỗi và duy trì từ xa sự ổn định của
hệ thống được dễ dàng hơn
Thương mại điện tử: Tác tử di động có thể thực hiện các hoạt động
thương mại điện tử
Với các đặc tính và khả năng ứng dụng nêu trên, tác tử di động thực sự là một công cụ mạnh trong hệ phân tán Trong chương 4, chúng ta sẽ trình bày mô hình phân tán có sự tham gia của các tác tử Trên nền tảng đó, giải quyết bài toán truyền bá thông tin phân tán giữa các tác tử di động
Trang 19CHƯƠNG 2. BẦU THỦ LĨNH TRÊN MẠNG ĐẦY ĐỦ
2.1 Giới thiệu bài toán
Bầu thủ lĩnh là một vấn đề cơ bản trong tính toán phân tán và đã được nghiên cứu trong các mô hình tính toán và các hình thái mạng với giả định khác nhau Giải
thuật bầu thủ lĩnh cho mạng n nút với định danh phân biệt, phải đưa mạng đến cấu
hình kết thúc, mà ở đó có chính xác một nút được bầu là thủ lĩnh, và tất cả các nút khác trong mạng biết định danh của thủ lĩnh
Mọi mạng có hình trạng là một đồ thị liên thông đều có thể đưa về mạng phủ mà
ở đó các nút được kết nối đầy đủ với nhau Vì vậy, bầu thủ lĩnh trên mạng đầy đủ đã được nhiều tác giả nghiên cứu và thu được các kết quả khác nhau, [10] đề xuất một
giải thuật cho mạng đầy đủ không cảm hướng với độ phức tạp thông báo O(n log n) và O(n /log n) thời gian, [4] đề xuất giải thuật cho mạng đầy đủ cảm hướng với độ phức tạp thông báo và thời gian đều là O(n), [9] đề xuất một giải thuật mạnh hơn cho mạng đầy đủ cảm hướng với độ phức tạp thông báo O(n) và O(log n) thời gian
Tuy nhiên các giải thuật ở trên đều yêu cầu mỗi nút biết tất cả các nút còn lại trong mạng, việc hiện thực hóa giả thiết này mất nhiều chi phí trong thực tế Tác giả J Villadangos và đồng sự [13] đã đề xuất giải thuật cho mạng đầy đủ không cần giả thiết
về hướng, không đòi hỏi mỗi nút biết trước tất cả các nút trong hệ thống, chỉ giả định
có một vòng ảo kết nối logic các nút trong hệ thống, mà vẫn đạt được độ phức tạp
tuyến tính về thời gian và thông báo là O(n)
Chương này sẽ mô tả chi tiết giải thuật của tác giả J Villadangos và đồng sự Xuất phát từ ý tưởng thiết kế giải thuật này, chúng ta sẽ thiết kế một giải thuật cho bài toán MAGP (Mobile Agent Gossip Problem) với giả thiết ban đầu về mạng yếu hơn giả thiết của các giải thuật cho mạng đầy đủ của tác giả Tomoko Suzuki và đồng sự [23,24], nhưng vẫn đạt được độ phức tạp di chuyển tối ưu hơn
2.2 Mô hình tính toán phân tán
Mạng là một đồ thị đầy đủ với các nút biểu diễn các bộ xử lý và các cạnh biểu diễn các kênh truyền thông hai chiều giữa các bộ xử lý Thời gian truyền thông báo được giả thiết là hữu hạn nhưng không thể đoán trước Chúng ta giả thiết các kênh truyền không bị mất mát thông báo cũng như ngắt thông báo Tuy nhiên các thông báo
có thể được sắp xếp lại Chúng ta giả định có một vòng ảo kết nối logic các nút trong
hệ thống theo một hướng nhất định Các nút không biết toàn bộ định danh của các nút khác trong hệ thống, mỗi nút chỉ cần biết một nút kế tiếp trên vòng ảo
Trong bài toán bầu thủ lĩnh, ban đầu tất cả các nút ở trạng thái bị động Một tập con bất kỳ các nút, thức dậy tự phát và bắt đầu giải thuật, và trở thành các nút ứng
Trang 20viên Các nút có thể bắt đầu giải thuật ở thời điểm khác nhau Thủ lĩnh được xác định
từ tập các nút ứng viên tại thời điểm giải thuật được khởi tạo
2.3 Giải thuật bầu thủ lĩnh Villadangos
Ý tưởng: Ban đầu, tập tất cả các nút ở trạng thái passive, các nút có thể tự phát
bắt đầu giải thuật, các nút này là ứng viên có thể trở thành thủ lĩnh Để thu gọn dần vòng bao gồm các nút ứng viên, chúng ta thiết lập cơ chế hợp tác giữa các ứng viên Mỗi ứng viên gửi định danh của nó cho ứng viên kế tiếp trên vòng ảo, nút ở trạng thái
passsive khi nhận được thông báo này, sẽ tự thiết lập trạng thái là dummy, và chuyển thông báo này đến nút kế tiếp trên vòng ảo Ứng viên u có định danh lớn hơn ứng viên liền trước v, yêu cầu ứng viên v thông tin về ứng viên liền trước v, nút v sẽ thay đổi trạng thái của nó thành dummy, sau khi đã trả lời u về ứng viên liền trước nút v Vậy,
khi một ứng viên nhận được trả lời, nó biết định danh của ứng viên mới trước nó trên vòng ứng viên Cuối cùng, ứng viên có định danh lớn nhất biết tất cả các nút trong hệ
thống (ngoại trừ nó) ở trạng thái dummy, ứng viên này chính là thủ lĩnh
Trong giải thuật 2.3-1, biến status i là trạng thái của nút i, cand_succ i là ứng viên
kế tiếp nút i, cand_pred i là ứng viên liền trước nút i Giải thuật được mô tả chi tiết dưới đây
Trang 21if status i = candidate then
if i < init then
if cand_succ i <> NULL then
send REP(cand_pred i ) to cand_succ i;
status i dummy;
end if end if
if status i = candidate then
IF cand_pred i = NULL then
Trang 22status i dummy;
send REP(k) to cand_succ i;
end if end if
end if
end
Giải thuật 2.3-1 được khởi động tự phát bởi bất cứ nút thụ động passive nào, chẳng hạn đó là nút i thực hiện thủ tục initiate i , thiết lập status i = candidate, gửi thông báo INF(i) tới nút kế tiếp nó trên vòng ảo
Khi thông báo INF(init) tới nút i, nó được xử lý bởi thủ tục rcvINF i (j, m) Nếu nút i là passive, nó trở thành dummy và chuyển thông báo tới nút kế tiếp nó trên vòng
ảo Nếu nút là candidate, thiết lập cand_pred i = init Xảy ra các trường hợp:
+ Nếu i > init, có hai khả năng xảy ra:
- Nếu cand_succ i = NULL thì i thiết lập status i = waiting và gửi thông báo REQ(i) cho nút init và đợi nút init gửi thông tin về định danh của ứng viên trước nút init trên vòng ảo
Giải thuật 2.3-1 Giải thuật bầu chọn thủ lĩnh Villadangos
Trang 23- Ngược lại, cand_succ i NULL, nghĩa là nút i đã nhận được một thông báo
REQ(k) từ nút k khác, biến cand_succ i là ứng viên kế tiếp nút i trên vòng ảo Vì định danh nút k lớn hơn nút i, nút i trở thành dummy và gửi cho k một thông báo REP(init) + Nếu i < init và cand_succ i NULL, khi đó nút i đã nhận được một thông báo
REQ(k) từ nút k khác, biến cand_succ i là ứng viên kế tiếp nút i trên vòng ảo Vì định danh nút k lớn hơn nút i, nút i trở thành dummy và gửi cho k một thông báo REP(init) + Nếu i = init, nút i nhận thông báo INF(i), có nghĩa rằng không có ứng viên nào khác trong vòng ảo, nút i trở thành thủ lĩnh
Khi một ứng viên i nhận một thông báo REQ(j) từ j, i biết rằng j là nút ứng viên
kế tiếp nó trong vòng ảo Nó cũng biết rằng tất cả các nút từ i tới j ở trạng thái dummy Nếu nó biết ứng viên liền trước nó trong vòng ảo (cand_pred i NULL), thì i gửi thông
báo REP(cand_pred i ) tới j và trở thành dummy Ngược lại, gán cand_succ i = j, để liên lạc j với ứng viên liền trước i Nếu nút i có status i = waiting, gán cand_succ i = j để liên lạc j với ứng viên liền trước nút i
Như vậy, một nút i thu thập thông tin ứng viên liền trước nó bằng hai cách khác nhau Nếu j là ứng viên liền trước i trong vòng ảo, i sẽ nhận một thông báo INF từ j Nếu có các ứng viên khác giữa j và i, một trong số chúng sẽ gửi thông báo REP mang định danh của nút j tới i Do đó, ý nghĩa của việc nhận một thông báo REP khá tương
tự với việc nhận thông báo INF, chỉ khác là một nút nhận thông báo REP phải là một nút ở trạng thái waiting, tức nút đợi thông tin ứng viên liền trước nó
Ví dụ thực hiện
Hình 2.3-1 minh họa thực hiện của giải thuật cho một mạng đơn giản Ban đầu, chúng ta có một tập có bốn nút như thể hiện trong hình 2.3-1.a, các nút được tổ chức logic theo một vòng nhưng tất cả các nút đã được kết nối đầy đủ
Nút 2 và 4 khởi tạo giải thuật bằng cách gửi thông báo INF tới các nút kế tiếp
Trang 24Khi nút 1 và nút 3 xử lý thông báo INF, chúng vẫn chưa khởi tạo giải thuật (status = passive) Bởi vậy, chúng trở thành dummy và truyền thông báo INF đến các
nút kế tiếp chúng (hình 2.3-1.c)
Trong hình 2.3-1.d, các nút ứng viên nhận thông báo khởi tạo từ các nút khác Vì
nút 2 có định danh thấp hơn nút 4, cand_pred 2 = 4 Nút 4 có định danh lớn hơn yêu
cầu nút 2 về ứng viên liền trước nó bằng cách gửi thông báo REQ(4) tới nút 2
Khi một nút nhận một thông báo REQ, nó sẽ trả lời ngay khi nó biết nút ứng viên liền trước nó Trong trường hợp này, nút 2 gửi một thông báo REP(4) để trả lời nút 4 (hình 2.3-1.e) và nó trở thành nút dummy Trong trường hợp này, hình 2.3-1.f, nút 4
kiểm chứng rằng nó thỏa mãn điều kiện thủ lĩnh và tự nó tuyên bố là một thủ lĩnh
Trang 25Hình 2.3-1.d Nút 4 gửi yêu cầu tới nút 2
Trang 26Tính đúng đắn của giải thuật và các đánh giá hiệu năng
Đầu tiên, ta chứng minh rằng giải thuật là một giải thuật bầu thủ lĩnh Tức là phải
chứng tỏ rằng, cuối cùng trạng thái status của nút i được thiết lập là leader (liveness - sống động), khi nút i là thủ lĩnh, không có nút nào khác có cùng trạng thái với nó
Nếu một nút trở thành thủ lĩnh sau khi thực hiện thủ tục rcv_INF i (j, m), theo (1) các nút còn lại là dummy và định lý thỏa mãn
Khi có nhiều hơn một nút khởi tạo giải thuật Khi thông báo INF(i) tới một nút ứng viên j – rcv_INF j (k, INF(i)), nút j sẽ thiết lập cand_pred j = i Theo (1), trạng thái của tất cả các nút từ i tới j là dummy Vậy tất cả các nút từ j tới cand_pred j là dummy (2) Nếu j > i, nút j yêu cầu nút i thông tin về ứng viên liền trước nút i bằng thông báo REQ(j) và thay đổi trạng thái của nó là waiting Bởi vậy nếu một thông báo REQ(j) di chuyển hướng tới nút i thì đường đi từ nút i tới j chỉ chứa các nút dummy (3)
Khi một thông báo REQ(j) tới i – rcv_REQ i (j, REQ(j)), cand_succ i có thể thay
đổi thành j Theo (3) khi cand_succ i = j, tất cả các nút từ i tới j là dummy Nếu i biết ứng viên liền trước nó (cand_pred i NULL), nó gửi cho nút j một thông báo
REP(cand_pred i ) và thay đổi trạng thái của chính nó thành dummy Bởi vậy, theo (2)
và (3), đường đi từ cand_pred i tới nút đích của thông báo REP(cand_pred i) chỉ chứa
Chứng minh Trong thời gian thực hiện giải thuật, chỉ có một tập con S N các
nút trong mạng sẽ tự thay đổi trạng thái của chúng từ passive sang candidate Thực hiện thủ tục initiate, nút i gửi một thông báo INF(i) hướng tới nút kế tiếp i trên vòng Các nút mà trạng thái của nó là passive chuyển thông báo INF(i), vậy nếu |S| = 1,
Trang 27thông báo này sẽ được chuyển qua vòng và cuối cùng sẽ đến nút i và thiết lập trạng thái status i của nó là leader
Giả sử |S| = 2 Cho i và j là các nút mà trạng thái của chúng thay đổi sang candidate, cả hai nút gửi thông báo INF(i) tới các nút kế tiếp chúng trong vòng ảo Các nút bị động passive chuyển các thông báo đó, cuối cùng nút j nhận được một thông báo INF(i) và nút i nhận được thông báo INF(j) Giả sử rằng i > j Trong trường hợp như vậy, khi nút i nhận được thông báo INF(j), vì cand_succ i = NULL, i gửi một thông báo INF(i) cho j Nút j có thể nhận thông báo INF(i) trước khi nhận thông báo REQ(i) Trong trường hợp như vậy, cand_pred j sẽ được thiết lập bằng i Vì vậy, khi j nhận được thông báo REQ(i), nó gửi thông báo REP(i) tới i Thông báo này tới i và thiết lập status i là leader
Giả sử |S| > 2 Chúng ta luôn luôn tìm được ba nút của S sao cho i là ứng viên kế tiếp của j trong vòng ảo và j là ứng viên kế tiếp của k trong vòng ảo trong đó i > j và k
> j Cuối cùng, i và j sẽ nhận được thông báo INF gửi bởi j và k Nút i sẽ yêu cầu nút j
về ứng viên liền trước j bằng thông báo REQ(i) (1) Nếu thông báo này tới j trước thông báo INF(k), thì cand_succ j = i, khi j nhận thông báo INF(k), REP(k) sẽ được gửi tới i, status j = dummy (2) Nếu INF(k) tới j trước REQ(i), thì cand_pred j = k, khi REQ(i) tới j, status j = dummy, và j gửi thông báo REP(k) tới i Trong cả hai trường hợp, REP(k) được xử lý bởi i, status j =dummy Bởi vậy, cặp thông báo REQ, REP giảm bớt số các ứng viên Cuối cùng |S| sẽ là 2, ta có kết luận của trường hợp trước đó
Bổ đề 2.3-1 Mỗi nút xử lý nhiều nhất một thông báo INF
Chứng minh Thông báo INF được gửi khi một nút i ở trạng thái bị động status i =
passive thực hiện tự phát thủ tục initiate, status i = candidate Đồng thời, chỉ các nút bị động chuyển các thông báo INF tới các nút kế tiếp nó trong vòng ảo, thực hiện này thay đổi trạng thái của chúng thành dummy Bởi vậy, mỗi thông báo INF(i) được gửi bởi ứng viên tạo ra nó và các nút ở trạng thái passive giữa hai ứng viên Vậy, mỗi nút chỉ nhận được một thông báo INF
Bổ đề 2.3-2 Mỗi nút nhận không quá một thông báo REQ
Chứng minh Các ứng viên, j nhận một thông báo INF(i) có thể gửi một thông báo REQ(j) tới i Tất cả các nút từ i tới j ở trạng thái dummy và j không chuyển INF(i), bởi vậy, không có nút nào khác có thể gửi một thông báo REQ tới i Nút i cuối cùng sẽ trả lời j thông báo REP(cand_pred i ) Rõ ràng cand_pred i i, vì vậy mặc dù việc nhận
một thông báo như vậy có thể làm cho j gửi một thông báo REQ(j) tới cand_pred i,
không phải hướng tới i
Bổ đề 2.3-3 Mỗi nút gửi nhiều nhất một thông báo REP
Chứng minh Chỉ một nút nhận được một thông báo REQ gửi một thông báo REP, theo bổ đề 2.3-2, ta có bổ đề 2.3-3 thỏa mãn
Trang 28Định lý 2.3-3 Giải thuật lựa chọn một thủ lĩnh với 3n thông báo
Chứng minh Theo bổ đề 2.3-3, mỗi nút xử lý nhiều nhất một thông báo REQ và trả lời lại bằng thông báo REP tương ứng, nút thay đổi trạng thái của nó thành dummy Theo bổ đề 2.3-1 và 2.3-2, mỗi nút xử lý và nhận nhiều nhất một thông báo INF, REQ
Theo định lý 2.3-2, cuối cùng, giải thuật sẽ chọn được một thủ lĩnh Như vậy chi phí
thông báo sau khi quá trình bầu thủ lĩnh kết thúc là 3n
Định lý 2.3-4 Giải thuật lựa chọn một thủ lĩnh trong n đơn vị thời gian
Chứng minh Để đánh giá độ trễ của giải thuật, trường hợp xấu nhất xảy ra khi
một nút được chọn là thủ lĩnh yêu cầu thông tin của các nút khác một cách tuần tự Do
đó, sau n thời gian, trạng thái của nó sẽ được thiết lập thành leader
mà vẫn đạt được độ phức tạp tuyến tính về thời gian và thông báo là O(n) Xuất phát
từ ý tưởng bầu chọn thủ lĩnh giữa các nút của giải thuật này, chúng ta sẽ thiết kế một giải thuật cho bài toán MAGP (Mobile Agent Gossip Problem) cho mạng đầy đủ, với giả thiết ban đầu về mạng yếu hơn giả thiết trong giải thuật cho MAGP trên mạng đầy
đủ cảm hướng, của tác giả Tomoko Suzuki và đồng sự [23,24], nhưng vẫn đạt được độ phức tạp di chuyển tốt hơn
Trang 29CHƯƠNG 3. XÂY DỰNG CÂY KHUNG TỐI THIỂU
3.1 Bài toán cây khung tối thiểu
Trong phần này, chúng ta trình bày một số giải thuật phân tán để nhận được cây
khung tối thiểu (Minimum Spanning Tree - MST) trong một mạng không đồng bộ
Bài toán: Cho mạng là một đồ thị vô hướng N nút biểu diễn các bộ xử lý của
mạng và E cạnh biểu diễn các liên kết truyền thông giữa các bộ xử lý Tất cả các nút
được giả thiết là có các định danh phân biệt Chúng ta giả thiết rằng tất cả các cạnh có trọng số phân biệt và mỗi nút biết trọng số của tất cả các cạnh liên thuộc nó Các nút liên lạc bằng thông báo Thông báo không bị mất và chúng đến đích trong thời gian hữu hạn nhưng không biết trước, các thông báo gửi qua một cạnh đến theo thứ tự mà chúng được gửi đi Hãy thiết kế giải thuật xây dựng cây khung tối thiểu MST, sao cho khi kết thúc giải thuật, mỗi nút biết các cạnh liên thuộc nó thuộc về cây khung tối thiểu MST
3.2 Giải thuật GHS83
Giải thuật do tác giả Gallager và đồng sự đề xuất [19] Có thể coi đây là phiên bản phân tán của giải thuật PRIM Trong giải thuật PRIM, một nhánh của cây khung ban đầu là một nút tùy ý trong đồ thị, thuật toán sẽ kết nạp dần các nút vào nhánh, theo quy tắc cạnh nối nút này với nút ở trong nhánh là cạnh có trọng số nhỏ nhất, cuối cùng chúng ta sẽ nhận được cây khung MST của đồ thị Giải thuật GHS83 duy trì một rừng cây khung (được xem như các mảnh), mỗi mảnh là một cây con của cây khung tối thiểu MST Các mảnh được sát nhập qua các cạnh ngoài có trọng số tối thiểu của chúng cho đến khi chỉ còn một mảnh đơn bao trùm toàn bộ mạng
Bài toán tìm cây khung MST được phát biểu hình thức như sau:
Bài toán: Cho một đồ thị G = (V, E), trong đó V, E tương ứng là tập các nút và
các cạnh của đồ thị Mỗi cạnh của đồ thị có gắn một trọng số phân biệt w(e) Hãy tìm một cây khung T = (V, E ) sao cho tổng
E e
) e (
w nhỏ nhất
Trọng số của một cây trong đồ thị là tổng trọng số của tất cả các cạnh trong cây,
mục tiêu của chúng ta là tìm một cây khung có trọng số tối thiểu, gọi là cây MST
Mảnh MST: một mảnh của MST là một cây con của MST Giải thuật bắt đầu với
các mảnh là mỗi nút riêng lẻ và kết thúc với một mảnh duy nhất chính là cây khung tối thiểu MST
Liên kết ngoài: liên kết ngoài của một mảnh là liên kết nối một nút ở trong mảnh
với một nút bên ngoài mảnh
Trang 30Hình 3.2-1 Minh họa chứng minh tính chất 1
Mỗi mảnh có một nút gốc, định danh của gốc là định danh của mảnh Cạnh tốt nhất là cạnh có trọng số tối thiểu trong số các cạnh ngoài của mảnh
Tính chất 1:
Cho một mảnh của MST, gọi e là một cạnh ngoài có trọng số tối thiểu của mảnh Thì e MST
Chứng minh Gọi e là cạnh ngoài của mảnh F trong MST Giả sử e không nằm
trong MST, MST e tạo thành một chu trình C, tồn tại ít nhất một cạnh ngoài của
mảnh F là e e thuộc C, ta có w(e) > w(e) Kết nạp e vào MST và bỏ cạnh e, ta nhận được cây khung T’ có tổng trọng số của tất cả các cạch bé hơn cây khung MST ban đầu, điều này mâu thuẫn (hình 3.2-1)
một cạnh e trong C không nằm trong T (bởi vì T không chứa chu trình) Vì các trọng
số là phân biệt và e nằm trong T nhưng không nằm trong T w(e) < w(e) Vì vậy
Trang 31Ở trạng thái ban đầu mỗi nút là một mảnh, mỗi mảnh tìm cạnh ngoài có trọng số tối thiểu (MOE: Minimum-weight Outgoing Edge) một cách không đồng bộ Khi tìm thấy cạnh ngoài có trọng số tối thiểu, mảnh này sẽ cố gắng kết hợp với mảnh mà liên kết này dẫn đến Ban đầu, mỗi mảnh chỉ có một nút nên có mức là 0 Giả sử rằng mảnh
F ở mức L 0 có cạnh liên kết ngoài dẫn tới và mảnh F có mức L Mảnh F và F kết hợp với nhau chỉ khi thỏa mãn một trong hai điều kiện sau:
(1) Nếu L < L, thì mảnh F bị hấp thu bởi F, mảnh mở rộng có mức là L (2) Nếu L = L và các mảnh F và F có cùng một cạnh ngoài trọng số tối thiểu, thì hai mảnh F và F kết hợp thành một mảnh mới có mức là L + 1
Trong tất cả các trường hợp khác, mảnh F đơn giản đợi mảnh F đạt đến mức đủ lớn để kết hợp với F theo các luật ở trên
Giải thuật 3.2-1 dưới đây trình bày chi tiết giải thuật GHS83
Trang 32Trạng thái nút và cạnh:
- Mỗi nút có ba trạng thái
o sleeping: trạng thái khởi tạo của nút
o find: khi nút tham gia vào việc tìm kiếm cạnh ngoài có trọng số tối
thiểu trong mảnh chứa nó
o found: khi đã tìm thấy cạnh tốt nhất của mảnh
- Mỗi nút phân loại mỗi cạnh liền kề nó ở một trong ba trạng thái:
o branch: nếu cạnh là một nhánh trong mảnh hiện tại, nói cách khác đây
chính là một cạnh của cây MST
o rejected: nếu cạnh nằm bên trong mảnh, nhưng không thuộc cây MST
o basic: chưa được phân loại, có thể là cạnh trong hoặc ngoài mảnh
Bắt đầu lặp cho đến khi chỉ còn một mảnh duy nhất trong mạng:
+ Tìm cạnh ngoài có trọng số tối thiểu trong mảnh:
- Tìm cạnh ngoài có trọng số tối thiểu của nút:
o Gốc của một mảnh thay đổi trạng thái của nó thành find (ban đầu nút gốc thức dậy tự phát từ trạng thái ngủ sleeping hoặc được đánh thức
bởi bất kỳ thông báo nào từ nút khác) và gửi một thông báo khởi tạo
initiate chứa định danh mảnh, số hiệu mức và trạng thái find tới tất cả
các nút trong mảnh
o Khi nút i nhận thông báo initiate, nó cập nhật định danh mảnh và số hiệu mức của nó Nút i sau đó thay đổi trạng thái của nó thành find và tìm liên kết ngoài có trọng số tối thiểu cục bộ Mỗi nút i sắp xếp cạnh liên thuộc nó có trạng thái basic theo trọng số của chúng với thứ tự tăng dần trong danh sách unused i Nút i tìm cạnh liên kết ngoài trọng
số tối thiểu cục bộ như sau:
Nút i chọn cạnh tiếp theo (i,j) từ unused i và gửi một thông báo
test với định danh mảnh và số hiệu mức qua cạnh này
Nút j nhận được một thông báo test từ i, nó hoạt động như sau:
Nếu định danh mảnh của j giống với định danh mảnh của i, thì i và j thuộc cùng một mảnh, j xóa cạnh (i, j) từ
Trang 33danh sách unused j, thay đổi trạng thái cạnh này thành
rejected và j trả lời i bằng thông báo reject
o Khi nút i nhận thông báo reject từ j, nó xóa cạnh (i, j) từ danh sách unused i, thay đổi trạng thái
cạnh này thành rejected và tiếp tục bằng cách gửi thông báo test qua cạnh tiếp theo trong danh sách
của nó
Nếu các định danh mảnh của i và j là khác nhau:
o Nếu L j Li , nút j gửi một thông báo accept tới i nút i nhận được thông báo accept sẽ lưu cạnh tốt nhất cục bộ của nó là (i,j), kết thúc quá trình tìm kiếm cạnh cục bộ tốt nhất tại nút i
o Ngược lại, j làm trễ sự trả lời cho đến khi L j Li /* Bởi khi hai mảnh sát nhập vào nhau, các nút trong các mảnh này không nhận được ngay tức thì thông báo mang định danh và mức của mảnh mới */
- Tìm cạnh ngoài có trọng số tối thiểu của mảnh:
/* Sau khi mỗi nút trong mảnh đã tìm thấy cạnh tốt nhất cục bộ của nó, chúng phối hợp với nhau để tìm cạnh tốt nhất toàn cục của mảnh*/
o Khi một nút i đã xác định cạnh tốt nhất cục bộ của nó là e:
Nếu i là nút lá, nó gửi một thông báo report chứa e đến cha của
nó và chuyển sang trạng thái found
Ngược lại, i là nút trong, i đợi cho đến khi nó tìm ra cạnh tốt nhất cục bộ và nhận các thông báo report từ tất cả các con của
nó Sau đó i gửi thông báo report với cạnh nhỏ nhất trong số các cạnh này tới cha của nó và chuyển sang trạng thái found
o Nút gốc sau khi đã tìm ra cạnh tốt nhất cục bộ của nó và nhận các thông báo từ tất cả các con của nó, nút gốc chọn cạnh có trọng số tối
thiểu e min trong số các cạnh này
Nếu chọn được e min, đây chính là cạnh tốt nhất của mảnh, nó
gửi thông báo change-root, tới nút trong mảnh có e min là cạnh liên thuộc Nút này trở thành gốc mới của mảnh, thay đổi trạng
thái của e min là branch, và gửi một thông báo connect với số hiệu mức của nó qua e min
Ngược lại, không có cạnh ngoài nào được tìm thấy, kết thúc giải thuật, mảnh hiện thời chính là cây MST cần tìm
Trang 34change-của mảnh kết hợp Nó tăng số hiệu mức change-của nó lên 1 và bắt đầu lần lặp
mới bằng cách gửi một thông báo initiate tới các hàng xóm của nó Ngược lại j gửi một thông báo connect tới i và i trở thành gốc mới của mảnh kết hợp, i tăng số hiệu mức của nó lên 1 và gửi thông báo initiate cho các hàng xóm của nó để khởi tạo lần lặp mới cho mảnh kết
hợp
3 l j > l i:
(a) Nếu nút j đã nhận được một thông báo initiate và chưa gửi thông báo report, thì nó gửi một thông báo initiate với định danh của mảnh G, số hiệu mức l j và trạng thái find tới i và đợi một thông báo report từ i trước khi gửi thông báo report của nó, đồng thời j thay đổi trạng thái của cạnh (j,i) thành branch Vì vậy, F được hấp thu vào G như là một phần của lần lặp hiện thời của G
(b) Nếu j đã gửi thông báo report:
Trong trường hợp này, nút j gửi thông báo initiate với định danh của mảnh G, số hiệu mức l j và trạng thái found tới i, đồng thời j thay đổi trạng thái của cạnh (j,i) thành branch Một nút nhận được một thông báo initiate với trạng thái found thay đổi trạng thái của
nó thành found, cập nhật số hiệu mức và định danh mảnh của nó và
truyền thông báo tới các con của nó
Trang 35/*
Khi j đã gửi thông báo report, cạnh tốt nhất cục bộ của nó phải có trọng số nhỏ hơn trọng số của (i,j) (thật vậy, cạnh (i,j) không thể là cạnh tốt nhất cục bộ của j bởi vì i sẽ không trả lời một thông báo test
từ j vì i ở trong mảnh có mức thấp hơn, dẫn đến j không thể gửi thông báo report) Do đó cạnh tốt nhất cục bộ của j có trọng số nhỏ hơn cạnh ngoài có trọng số tối thiểu của F Bởi vậy, sự tham gia của F trong việc tìm kiếm cạnh tốt nhất của G là không cần thiết
*/
Chứng minh tính đúng đắn:
Ta thấy giải thuật chỉ tìm cạnh ngoài có trọng số tối thiểu từ các mảnh, thông báo
connect chỉ được gửi trên cạnh ngoài tối thiểu, giải thuật thỏa mãn các tính chất 1 và 2,
do đó chúng ta nhận được cây MST
Để chỉ ra rằng khóa chết không tồn tại, ta xét tập các mảnh tồn tại trong bất kỳ thời điểm nào Ngoại trừ các mảnh có mức 0 bao gồm các nút trong trạng thái ngủ Giả thiết rằng giải thuật đã được bắt đầu nhưng không kết thúc, tập các mảnh ở trên không rỗng và mỗi mảnh có một cạnh ngoài trọng số tối thiểu Xét mảnh từ tập các mảnh có mức thấp nhất trong tập hợp với cạnh ngoài có trọng số nhỏ nhất trong tập đó Mọi
thông báo kiểm thử test từ mảnh đó hoặc sẽ đánh thức mảnh ở trạng thái ngủ sleeping
có mức không hoặc sẽ được phản hồi mà không cần đợi Tương tự, một thông báo
connect từ mảnh đó sẽ đánh thức mảnh ở trạng thái ngủ có mức 0 hoặc sẽ chuyển đến
mảnh có mức cao hơn, hoặc sẽ chuyển đến mảnh đồng mức và có chung cạnh ngoài với trọng số tối thiểu, dẫn đến mảnh mới có mức cao hơn Như vậy không có mảnh nào tồn tại vĩnh viễn không tồn tại khóa chết
Ví dụ thực hiện:
Mạng ban đầu bao gồm 7 nút và 11 cạnh, mỗi cạnh được gắn trọng số như trong
hình 3.2-1.a, tất cả các nút ở trạng thái sleeping và tất cả các cạnh ở trạng thái basic Ban đầu, mỗi nút ở trạng thái sleeping được coi là một mảnh, sẽ có một số nút thức dậy bắt đầu khởi động giải thuật Khi một nút thức dậy từ trạng thái sleeping, nó thay đổi trạng thái của nó thành find và bắt đầu tìm kiếm cạnh liên kết ngoài có trọng
số tối thiểu cục bộ của nút, việc tìm kiếm này sẽ đánh thức nút kề cận, khi một nút thức dậy và tìm thấy cạnh liên kết ngoài có trọng số tối thiểu, nó thay đổi trạng thái
Giải thuật 3.2-1 Giải thuật GHS83
Trang 36thành found và gửi thông báo connect qua cạnh này Hình 3.2-1.b, 3.2-1.c mô tả quá
trình này
Gọi mảnh ban đầu là F i ứng với các nút i, ta có F 1 và F 3 đều có L 1 = L 3 = 0,
MOE 1 = MOE 3 = (1, 3) , vậy F 1 và F 3 sát nhập thành F 3 có L 3 = 1, gốc là nút 3 Tương
tự F 5 sát nhập F 7 thành mảnh mới F 7 với L 7 = 1, gốc 7 Hình 3.2-1.d minh họa lần sát nhập đầu tiên
Tiếp tục đợt lặp đầu tiên, mảnh F 6 gửi thông báo connect tới F 3 , ta có L 3 > L 6 (1
> 0), vậy F 3 hấp thu F 6 tạo thành mảnh mới F 3 có mức L 3 = 1, và gốc là 3 Việc tìm
kiếm MOE trên F 3 làm thức nút 2, tương tự F 3 hấp thu F 2 , F 4 Hình 3.2-1.e minh họa
Trang 37Ở đợt thứ 2 (hình 3.2-1.e, hình 3.2-1.f), ta có L 3 = L 7 = 1 và MOE 3 = MOE 7 = (6,
7), vậy F 3 kết hợp với F 7 tạo thành mảnh mới F 7 có mức L 7 = 2, gốc 7 Mảnh này chính là cây MST cần tìm, giải thuật kết thúc
Độ phức tạp thông báo:
Định lý 3.2-1 Độ phức tạp thông báo của giải thuật GHS83 là O(|E |+ N log N)
Chứng minh Bởi vì số hiệu mức của một mảnh có thể nhiều nhất là log N và số hiệu mức tăng sau mỗi lần lặp, một nút có thể tham gia không quá log N lần lặp Trong một lần lặp, mỗi nút trong một mảnh có thể nhận không quá một thông báo initiate và một thông báo accept Nó có thể chuyển nhiều nhất một thông báo report và một thông báo change-root hoặc thông báo connect Vì vậy, nếu chúng ta không quan tâm
đến việc kiểm tra cạnh không thuộc cây khung tại mỗi nút, thì các nút trong mạng chỉ
có thể gửi 5N thông báo trong mỗi lần lặp, do đó sau log N lần lặp, số thông báo sử dụng là 5N log N Có nhiều nhất một thông báo reject được gửi qua mỗi cạnh Do đó, việc kiểm tra một cạnh không thuộc cây khung yêu cầu không quá 2|E| thông báo Như vậy, độ phức tạp thông báo của giải thuật là 2|E| + 5N log N
Độ phức tạp thời gian:
Định lý 3.2-2 Độ phức tạp thời gian của giải thuật GHS83 là O(N log N )
Chúng ta sẽ chứng minh bằng qui nạp rằng mất nhiều nhất 5lN – 3N đơn vị thời gian để tất cả các nút trong mạng đạt đến mức l
Với l = 1: sau thời gian N - 1, tất cả các nút được đánh thức và sẽ gửi một thông báo connect Sau thời gian 2N, tất cả các nút sẽ ở mức 1 sau khi nhận thông báo initiate từ nút gốc thuộc mảnh chứa nó
Trang 38Giả thiết đúng ở mức l, ta sẽ chứng minh đúng ở mức l + 1 Thật vậy, ở mức l, mỗi nút có thể gửi không quá N thông báo test và nó sẽ được trả lời trước thời điểm 5lN –3N + 2N = 5lN – N Tại mỗi lần lặp, các nút chuyển thông báo initiate không quá
N đơn vị thời gian, chuyển thông báo report không quá N đơn vị thời gian, chuyển thông báo change root hoặc connect không quá N đơn vị thời gian, vậy số các thông báo report, change root, connect, inititate chuyển đi trong một lần lặp mất nhiều nhất 3N đơn vị thời gian Bởi vậy, trước thời điểm 5lN – N + 3N = 5(l + 1)N – 3N tất cả các nút ở mức l + 1
Tại mức cao nhất, l log2 N, chỉ có các thông báo test, reject, và report được sử
Trong giải thuật GHS83, để giữ độ phức tạp thông báo thấp, khi một mảnh F ở mức cao hơn gửi yêu cầu nối với mảnh có mức thấp hơn F, thì mảnh F đợi mảnh có mức thấp hơn F phát triển đến thời điểm mà tại đó số hiệu mức của nó bằng hoặc lớn hơn số hiệu mức của F Chính vì vậy GHS83 có độ phức tạp thời gian trên tuyến tính
N log N
Awerbuch đề xuất giải thuật Awe87 có độ phức tạp tuyến tính về mặt thời gian [3] Tuy nhiên, giải thuật yêu cầu giai đoạn đếm tổng số nút trong mạng, và áp dụng giải thuật GHS83 cho đến khi tất cả các mảnh trong mạng đạt đến kích thước là
N/ log N, sau đó mới áp dụng phương pháp của ông
Các giải thuật GHS83 và Awe87 yêu cầu sự phát triển cân bằng của các mảnh Với giải thuật SB95, một mảnh không đợi mảnh khác đạt đến một mức cụ thể trước khi chúng có thể kết hợp với nhau Chính vì vậy, giải thuật có tốc độ hội tụ nhanh, đạt
được độ phức tạp tuyến tính về thời gian là O(N) Tuy nhiên giải thuật không tối ưu về
độ phức tạp thông báo, giải thuật có độ phức tạp thông báo trong trường hợp xấu nhất
là O(N2), giải thuật sẽ đạt được độ phức tạp thông báo O(E + N log N) sau khi tất cả các mảnh đã đạt đến kích thước N / log N
Giải thuật SB95 không sử dụng số hiệu mức như GHS83 Do đó, việc trả lời
thông báo test tại mỗi nút để kiểm tra liên kết ngoài, không cần phải trì hoãn dựa trên
số hiệu mức như GHS83 Trong GHS83, số hiệu mức được sử dụng để đảm bảo rằng, các cạnh ngoài được nhận biết một cách đúng đắn Giải thuật SB95 đảm bảo việc nhận biết đúng đắn các cạnh ngoài bằng cách chia mỗi lần lặp tại mỗi mảnh làm hai đợt
Trang 39Đợt đầu tiên, định danh của mảnh (định danh của gốc) được truyền bá tới tất cả các nút trong mảnh, đợt đầu tiên kết thúc khi tất cả các nút trong mảnh đã cập nhật định danh mới của mảnh Đợt thứ hai, nút gốc sẽ phát tỏa thông báo yêu cầu đến tất cả các nút trong mảnh tìm kiếm cạnh liên kết ngoài cục bộ tối thiểu tại mỗi nút, sau đó tại mỗi nút có sự tổng hợp kết quả tìm kiếm cạnh ngoài tối thiểu tại mỗi nút con gửi đến và của chính nó, cuối cùng nút gốc sẽ có kết quả tìm kiếm cạnh ngoài tối thiểu của toàn mảnh, mảnh sẽ trộn với mảnh khác qua cạnh ngoài tối thiểu này
Ý tưởng:
Ban đầu tất cả các nút ở trạng thái ngủ (sleeping), giải thuật bắt đầu tại một số
nút trong mạng, các nút khác được đánh thức bằng bất kỳ một thông báo nào gửi đến bởi các nút kề cận Mảnh ban đầu chỉ là một nút đơn, các mảnh sẽ được trộn với nhau qua cạnh ngoài có trọng số tối thiểu trong mỗi lần lặp
Đợt đầu tiên, định danh của mảnh (định danh của gốc) được truyền bá tới tất cả các nút trong mảnh, đợt đầu tiên kết thúc khi tất cả các nút trong mảnh đã gửi thông
báo finish tới gốc, tức tất cả các nút đã cập nhật định danh mới của mảnh Đợt thứ hai, nút gốc của mảnh sẽ phát tỏa thông báo mang trạng thái find, yêu cầu tất cả các nút
trong mảnh tìm liên kết ngoài có trọng số tối thiểu cục bộ, sau đó sẽ gửi thông báo
report hướng đến nút gốc Nếu là nút lá, thông báo report sẽ được gửi đến nút cha; nếu
là nút trong, nút này tìm kiếm xong liên kết ngoài có trọng số tối thiểu của nó, và đợi
nhận hết các thông báo report gửi đến từ nút con của nó, sau đó chọn cạnh ngoài có
trọng số tối thiểu để gửi đến nút cha của nó; cuối cùng, nút gốc sẽ nhận được kết quả cạnh liên kết ngoài có trọng số tối thiểu của mảnh (cạnh tốt nhất của mảnh) Khi mảnh
tìm thấy cạnh tốt nhất của nó, gốc sẽ gửi một thông báo change-root tới nút trong
mảnh có cạnh tốt nhất này là cạnh liên thuộc Nút này trở thành gốc mới của mảnh và
gửi một thông báo connect qua cạnh tốt nhất để yêu cầu kết nối tới mảnh mà cạnh tốt
nhất này dẫn đến
Giải thuật 3.3-1 trình bày chi tiết giải thuật SB95
Trạng thái nút và cạnh:
- Mỗi nút có ba trạng thái
o sleeping: trạng thái khởi tạo của nút
o update: khi nút nhận thông báo initiate 1 và cập nhật định danh của mảnh
o finish: khi nút cập nhật xong định danh của mảnh và gửi thông báo finish hướng tới gốc
Trang 40o find: khi nút tham gia vào việc tìm kiếm cạnh ngoài có trọng số tối
thiểu trong mảnh chứa nó
o found: khi đã tìm thấy cạnh tốt nhất của mảnh
- Mỗi nút phân loại mỗi cạnh liền kề nó ở một trong ba trạng thái:
o branch: nếu cạnh là một nhánh trong mảnh hiện tại, nói cách khác đây
chính là một cạnh của cây MST
o rejected: nếu cạnh nằm bên trong mảnh, nhưng không thuộc cây MST
o basic: chưa được phân loại, có thể là cạnh trong hoặc ngoài mảnh
- Một nút thức dậy tự phát và phát tỏa thông báo wake_up đánh thức tất cả các
nút khác trong mạng, các nút thức dậy sẽ bắt đầu thực hiện giải thuật
Lặp cho đến khi nào chỉ còn một mảnh:
Đợt đầu tiên:
+ Gốc của một mảnh khởi tạo đợt đầu tiên bằng việc gửi một thông báo
initiate 1 chứa định danh mảnh tới các con của nó
- Khi nhận được thông báo initiate 1, một nút thay đổi trạng thái
thành update, cập nhật định danh mảnh và truyền bá thông báo initiate 1 tới các con của nó
- Một nút lá sau khi đã cập nhật xong định danh mảnh sẽ thay đổi
trạng thái của nó thành finish và gửi một thông báo finish tới cha
của nó
- Một nút trong đợi một thông báo finish đến từ tất cả các con trước khi gửi một thông báo finish tới cha của nó
- Khi gốc nhận được thông báo finish từ tất cả các con của nó, nó
biết rằng tất cả các nút trong mảnh biết định danh hiện thời của mảnh Gốc bắt đầu khởi tạo đợt hai
Đợt thứ hai:
+ Gốc của mảnh bắt đầu đợt thứ hai bằng việc gửi thông báo initiate 2 tới các con của nó
+ Tìm cạnh ngoài có trọng số tối thiểu của mảnh:
- Khi nhận thông báo initiate 2 , nút i thay đổi trạng thái của nó thành find và tìm liên kết ngoài có trọng số tối thiểu cục bộ Mỗi nút i sắp xếp cạnh liên thuộc nó có trạng thái basic theo trọng số của