GIẢI THUẬT ĐỀ XUẤT CHO MAGP TRÊN MẠNG BẤT KỲ

Một phần của tài liệu (LUẬN văn THẠC sĩ) truyền bá thông tin phân tán giữa các tác tử di động luận văn ths công nghệ thông tin 60 48 15 (Trang 96 - 118)

BẤT KỲ

6.1. Phát biểu bài toán

Cho mạng là một đồ thị vô hướng G = (V, E), trong đó VE tương ứng là tập các nút và tập các cạnh của G, với các nút là các bộ xử lý, mỗi cạnh là một kênh truyền mà ở trên đó hai bộ xử lý trong mạng có thể liên lạc trực tiếp với nhau. Liên kết giữa nút u và nút v được ký hiệu bởi euv hoặc evu. Số các nút N = |V|, số các tác tử trong mạng là k. Mỗi tác tử là một chương trình tự trị có thể di chuyển từ một nút sang một nút khác trong mạng. Mỗi tác tử và mỗi nút có định danh phân biệt. Mỗi tác tử ban đầu không biết các định danh của các tác tử và các nút khác, cũng không biết trước số nút

N và số tác tử k. Không có quá một tác tử được khởi tạo trên cùng một nút. Nút mà ở đó tác tử khởi tạo vị trí ban đầu là nút nhà của tác tử. Các tác tử ở trên nút uV có thể di chuyển sang nút vV chỉ khi liên kết euvE. Mỗi một nút biết tất cả các hàng xóm của nó. Ở cấu hình ban đầu, mỗi tác tử pj có thông tin riêng Ij. Ta cần thiết kế giải thuật MAGP để 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:

Cho Sj(Ci) là một tập thông tin mà tác tử pj có trong cấu hình Ci. Trong cấu hình khởi tạo C0, mỗi tác tử pj có thông tin riêng Ij:

Sj(C0) = {Ij}

MAGP được giải quyết trong cấu hình Ci nếu tất cả k tác tử kết thúc và thỏa mãn điều kiện sau đây:

j (0 ≤ j < k) Sj(Ci) =

k l

0 {Il}

6.2. Ý tưởng, cấu trúc dữ liệu

Tomoko Suzuki và đồng sự đã trình bày một giải thuật MAGP cho mạng bất kỳ ở mức sơ thảo, chỉ nêu ra các giai đoạn chính trong giải thuật, mà không trình bày cụ thể giải quyết như thế nào.

Tác giả luận văn đã đưa ra một giải thuật chi tiết (chương 4), dựa vào giải thuật ý tưởng của Tomoko Suzuki và đồng sự cho bài toán MAGP trong trường hợp mạng bất kỳ. Ngoài việc cụ thể hóa giải thuật gốc, tác giả luận văn đã đưa ra một số phương pháp trong giải thuật để tối ưu bước di chuyển của các tác tử và thời gian thực hiện của giải thuật. Khi tác tử xây dựng cây khung ban đầu cho nó, tác tử sẽ xác định trạng thái các cạnh trong vùng của mình nếu có thể. Mỗi tác tử tìm liên kết ngoài có trọng số tối thiểu trên cây khung của nó theo cách tối ưu, tức chỉ xét cạnh nào mà chưa biết nó có thuộc cây khung cuối cùng hay không và theo thứ tự trọng số tăng dần tại mỗi nút, do

đó bất cứ khi nào nút xác định được liên kết ngoài, thì đồng thời liên kết này cũng là liên kết ngoài có trọng số tối thiểu.

Trong phần này tác giả luận văn đề xuất một giải thuật hoàn toàn mới, dựa trên ý tưởng của giải thuật SB95 để đạt được tốc độ hội tụ nhanh hơn giải thuật gốc. Trong giải thuật gốc, mỗi cây khung có một số hiệu mức, số hiệu mức này giúp tác tử xác định chính xác liên kết ngoài có trọng số tối thiểu của cây khung; việc trộn các cây khung dựa trên cơ sở số hiệu mức, cây khung chỉ trộn với cây khung khác có số hiệu mức lớn hơn hoặc bằng số hiệu mức của nó, qua liên kết ngoài có trọng số tối thiểu. Giải thuật đề xuất không dùng số hiệu mức, chúng ta định nghĩa một lần lặp trong cây khung là giai đoạn tác tử cập nhật định danh của nó trên bảng trắng của mỗi nút trong cây khung, sau đó tìm liên kết ngoài có trọng số tối thiểu của cây khung; nếu tìm thấy liên kết ngoài, tác tử sẽ tiến hành sát nhập với cây khung khác qua liên kết ngoài này. Để đảm bảo mỗi tác tử xác định chính xác liên kết ngoài có trọng số tối thiểu trên cây khung của nó, chúng ta chia một lần lặp thành ba giai đoạn, giai đoạn đầu tiên, tác tử sẽ duyệt DFS trên cây khung để cập nhật định danh của nó trên bảng trắng của mỗi nút trong cây khung, giai đoạn này kết thúc khi tác tử quay trở về nút gốc của cây khung; giai đoạn thứ hai, tác tử duyệt DFS cây khung để tìm liên kết ngoài có trọng số tối thiểu; giai đoạn thứ ba, nếu tìm thấy liên kết ngoài có trọng số tối thiểu, tác tử sẽ di chuyển qua liên kết này để trộn cây khung của nó với cây khung mà liên kết này dẫn đến. Giai đoạn thứ nhất giúp tác tử xác định chính xác liên kết ngoài có trọng số tối thiểu của cây khung ở giai đoạn hai; tại mỗi nút, tác tử chủ kiểm tra lần lượt các cạnh mà không phải đợi như giải thuật gốc. 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ó, nó 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 giải thuật đề xuất hội tụ nhanh hơn giải thuật gốc. Giải thuật đề xuất cũng kế thừa tất cả các phương pháp tối ưu trong phần giải thuật chi tiết mà tác giả luận văn đưa ra trong chương 4.

Ý tưởng giải thuật: Ban đầu, các tác tử sẽ duyệt DFS (Depth First Search) để xây dựng cây khung với gốc là nút nhà của tác tử. Mỗi tác tử thu nạp các nút vào cây khung của nó theo luật đến trước - thu nạp trước, các cây khung mà mỗi tác tử xây dựng không có nút chung. Trong quá trình xây dựng cây khung, mỗi tác tử thiết lập trạng thái các cạnh liên thuộc ở mỗi nút ở một trong ba trạng thái là branch, rejected,

basic, trong đó, trạng thái branch cho biết cạnh thuộc cây khung, rejected cho biết cạnh không thuộc cây khung, basic cho biết cạnh chưa xác định được có thuộc cây khung hay không. Mỗi tác tử ghi nhớ hình trạng cây khung của nó, để có thể di chuyển đến nút bất kỳ mà không cần phải duyệt toàn bộ trong cây khung.

Mỗi liên kết euv được gắn trọng số (min{id(u), id(v)}, max{id(u), id(v)}), trong đó id(u) là định danh của nút u, trọng số được so sánh theo thứ tự từ điển. Cây khung

của tác tử piTi, mỗi tác tử pi sẽ tìm kiếm liên kết ngoài có trọng số tối thiểu trên nối cây khung của nó với cây khung của tác tử khác, gọi là MOLi (Minimum Outgoing Link).

Đợt đầu tiên, tác tử pi duyệt DFS trên cây khung Ti của nó để cập nhật định danh của tác tử lên bảng trắng của mỗi nút, việc cập nhật kết thúc khi tác tử quay về nút gốc của cây khung.

Đợt thứ hai, tác tử pi tìm MOLi bằng cách duyệt DFS trên cây khung Ti của nó, tại mỗi nút v, pi tìm kiếm cạnh liên kết ngoài có trọng số tối thiểu cục bộ tại v, khi tác tử pi di chuyển về nút gốc, nó sẽ có thông tin về MOLi. Để tìm cạnh liên kết ngoài có trọng số tối thiểu cục bộ tại mỗi nút v, ta duy trì một danh sách unusedv lưu cạnh liên thuộc v có trạng thái basic được sắp xếp theo thứ tự trọng số tăng dần, pi chỉ việc kiểm tra lần lượt các phần tử trong danh sách, nếu tìm thấy phần tử là liên kết ngoài, phần tử này chính là liên kết ngoài có trọng số tối thiểu cục bộ tại v, pi sẽ cập nhật lại biến

MOLi của nó (bằng giá trị nhỏ nhất giữa giá trị MOLi hiện thời của pi với giá trị MOL

cục bộ tại v) và di chuyển đến nút tiếp theo, tiếp tục quá trình tìm kiếm cạnh ngoài tại nút này.

Khi pi đã tìm thấy MOLi trên cây khung Ti của nó, giả sử MOLi = euv dẫn tới cây khung Tj của tác tử pj, với vTi, uTj. Tác tử pi di chuyển đến v, cập nhật lại gốc mới của cây là v, thiết lập trạng thái cạnh euvbranch trên v, pi di chuyển đến u, thiết lập trạng thái cạnh euvbranch trên u, piđợi trên u cho đến khi nó gặp pj, xảy ra các trường hợp sau:

1. Nếu pj đang ở trạng thái thực hiện đợt một, khi đó pj sẽ duyệt DFS trên toàn bộ cây Ti của pi và cập nhật định danh của pj trên mỗi nút của Ti để hấp thu cây Ti, tất cả các nút trong Ti sẽ tham gia lần lặp hiện thời của pj trên cây Tj,

pj làm chủ cây khung mới Tj hình thành từ việc Tj hấp thu Ti.

2. Nếu pj đang ở trạng thái thực hiện đợt hai, khi đó pi sẽ đợi trên v cho đến pj

thực hiện xong đợt hai trên Tj, xảy ra trường hợp sau:

a. MOLj = MOLi =euv, pi gặp pj ở trạng thái tìm thấy MOLj = euv, khi đó Ti

trộn với Tj qua euv, tác tử nào có định danh lớn hơn sẽ làm chủ cây khung mới. Không mất tính tổng quát, ta giả thiết id(pi) > id(pj), khi đó pi là chủ chủ cây khung mới Ti, hình thành từ việc trộn Ti với Tj; pi sẽ khởi động lần lặp tiếp theo trên cây khung mới Ti.

b. MOLjMOLi, pi gặp pj ở trạng thái thực hiện đợt đầu tiên của lần lặp tiếp theo, khi đó pj sẽ duyệt DFS trên toàn bộ cây Ti của pi và cập nhật định danh của pj trên mỗi nút của Ti để hấp thu cây Ti, tất cả các nút trong Ti sẽ tham gia lần lặp tiếp theo của pj trên cây Tj, pj làm chủ cây khung mới Tj hình thành từ việc Tj hấp thu Ti.

Quá trình trộn các cây khung vào nhau, diễn ra cho đến khi trên mạng chỉ còn một cây khung duy nhất, tác tử làm chủ cây khung này chính là thủ lĩnh.

Tác tử thủ lĩnh sẽ duyệt trên cây khung của nó để thu thập và truyền bá thông tin cho các tác tử khác.

Cấu trúc dữ liệu: Để vận dụng ý tưởng của giải thuật xây dựng cây khung tối thiểu SB95, cấu trúc dữ liệu được thiết kế như sau:

+ Ban đầu, mỗi tác tử pi duyệt DFS để thu nạp các nút vào cây khung của nó dựa theo luật đến trước - thu nạp trước, các cây khung mà mỗi tác tử xây dựng không có nút chung. Gọi Ti là cây khung của pi.

+ Nhãn (min{id(u), id(v)}, max{id(u), id(v)}) được gán cho mỗi liên kết euv là trọng số, trong đó id(u) là định danh của nút u. Hai nhãn (u1, v1) và (u2, v2) được so sánh theo tứ tự từ điển, đó là, (u1, v1) < (u2, v2) u1 < u2  (u1 = u2 v1 < v2).

+ Một liên kết ngoài tối thiểu của cây khung Ti là liên kết có trọng số bé nhất kết nối một nút trong Ti và một nút trong cây khung khác. Ký hiệu MOLi (Minimum Outgoing Link) là liên kết ngoài tối thiểu của cây khung Ti.

+ Bảng trắng của mỗi nút v trong cây khung Ti lưu các thông tin sau:

 Định danh id(pi) của tác tử ứng viên pi là chủ cây khung Ti (chính là định danh của cây khung Ti).

 Bảng mô tả các liên kết kề cận của nút là phân tử dạng (link, weight, state), state nhận một trong ba giá trị là: branch, rejected, basic.

 Biến unusedv lưu danh sách các liên kết liên thuộc v có trạng thái basic

được sắp theo thứ tự tăng dần.

+ Mỗi tác tử pi có thông in riêng infoi, vùng nhớ lưu thông tin của các tác tử khác trong mạng; id(pi) ghi định danh của nó; MOLi ghi liên kết ngoài có trọng số tối thiểu của cây khung Ti; root_nodei là gốc của cây khung Ti; statei là trạng thái của tác tử pi,

statei nhận một trong ba giá trị: initiate1 thực hiện đợt một, initiate2 thực hiện đợt 2,

connect thực hiện sát nhập với cây khung khác qua cạnh MOLi vừa tìm được; biến

subtreei lưu cây khung Ti.

6.3. Giải thuật

Giải thuật được chia làm ba đợt (giải thuật 6.3-1). Đợt đầu tiên, mỗi tác tử duyệt DFS để xây dựng cây khung cho nó, tác tử thu nạp các nút vào cây khung của nó theo luật đến trước thu nạp trước. Tiếp theo là đợt bầu chọn tác tử thủ lĩnh, đợt này vận dụng ý tưởng giải thuật xây dựng cây khung tối thiểu phân tán SB95. Cuối cùng là đợt truyền bá thông tin, tác tử thủ lĩnh duyệt cây khung của nó để thu thập và phát tán thông tin cho tất cả các tác tử còn lại.

Khởi tạo cây khung:

+ Xây dựng cây khung Ti của tác tử pi: mỗi tác tử pi duyệt DFS để thu nạp các nút vào cây khung của nó dựa theo luật đến trước - thu nạp trước, các cây khung mà mỗi tác tử xây dựng không có nút chung. Gốc root_nodei của cây khung Ti được khởi tạo là là nút nhà của tác tử pi. Trong quá trình pi di chuyển để xây dựng cây khung Ti, ban đầu tác tử pi ghi thông tin (1) vào bảng trắng của nút gốc root_nodei, khi pi di chuyển từ nút u sang nút v, nếu v chưa bị tác tử khác thu nạp, pi ghi thông tin (1) trên bảng trắng của v. Tác tử pi thiết lập trạng thái các liên kết (u,v) thuộc tập liên kết kề v theo quy tắc sau:

- Nếu uTi, định danh cây khung trên v là NULL, thiết lập trạng thái cạnh (v, u) trên vbranch, tức (u, v) là một cạnh thuộc cây khung, subtreei =

subtreei (v, u).

- Nếu u,vTi, (u, v)  subtreei, pi thiết lập trạng thái cạnh (v, u) trên v

branch.

- Nếu u,vTi, (u, v)  subtreei, pi thiết lập trạng thái cạnh (v, u) trên v

rejected.

- Nếu uTi, vTi, pi không làm gì trên v. - Nếu uTi, vTi, pi không làm gì trên v.

+ Bảng trắng của mỗi nút v trong vùng Ti được pi ghi các thông tin sau (1): - Định danh id(pi) của tác tử (chính là định danh của cây khung Ti) - Bảng mô tả các liên kết kề cận của mỗi nút trong cây khung Ti.

Đợt bầu chọn thủ lĩnh:

Lặp đến khi chỉ còn một cây khung duy nhất:

+ Tác tử pi cập nhật định danh của nó lên bảng trắng của mỗi nút trong Ti:

- Tác tử pi thiết lập statei = initiate1, MOLi = NULL, subtreei = root_nodei và duyệt DFS toàn bộ cây khung Ti.

- Đến mỗi nút v, pi ghi định danh id(pi) lên bảng trắng của nút v.

- Tác tử pi từ u chọn (u, v) có trạng thái branch, thực hiện di chuyển tới v, nếu (u, v) subtreei, thì subtreei = subtreei (u, v).

- Giai đoạn này kết thúc khi tác tử pi quay về nút gốc của cây khung. + Tác tử pi tìm cạnh có trọng số bé nhất MOLi trong cây khung Ti:

- Tác tử pi thiết lập statei = initiate2, và duyệt DFS toàn bộ cây khung Ti. - Đến mỗi nút v, pi tìm cạnh ngoài có trọng số bé nhất cục bộ của v như sau:

 Tác tử pi chọn cạnh tiếp theo (v, u) từ unusedv và di chuyển đến nút u. Khi di chuyển đến hàng xóm u của v, pi đọc định danh ghi trên bảng trắng của

u. Xảy ra các trường hợp sau:

 Nếu định danh cây của v bằng định danh cây của u, uv cùng thuộc

Ti, pi thiết lập trạng thái euvrejected trên u, xóa cạnh euv khỏi danh sách unusedu, sau đó pi sẽ quay trở về v, nó thay đổi trạng thái euv trên bảng trắng của vrejected, đồng thời xóa evu từ danh sách unusedv.

 Ngược lại, nếu định danh cây của v khác với định danh cây của u, giả sử uTj. Cạnh euv là liên kết ngoài có trọng số tối thiểu cục bộ của v. Khi pi trở về v, nếu MOLi = NULL, pi thiết lập MOLi = euv, ngược lại nếu trọng số của euv bé hơn MOLi, pi thiết lập MOLi = euv , kết thúc quá trình tìm kiếm liên kết ngoài có trọng số tối thiểu tại v.

- Tác tử pi quay trở về nút gốc root_nodei, xảy ra các trường hợp sau:

MOLi = NULL, tác tử pi không tìm được MOLi, chứng tỏ Ti là cây khung còn lại duy nhất bao trùm tất cả các nút trong mạng, pi chính là tác tử thủ lĩnh cần tìm, kết thúc đợt bầu chọn.

MOLi NULL, tác tử pi tìm thấy liên kết euvMOLi, trong đó v, u là các

Một phần của tài liệu (LUẬN văn THẠC sĩ) truyền bá thông tin phân tán giữa các tác tử di động luận văn ths công nghệ thông tin 60 48 15 (Trang 96 - 118)

Tải bản đầy đủ (PDF)

(118 trang)