Tưởng, cấu trúc dữ liệu

Một phần của tài liệu Truyền bá thông tin phân tán giữa các tác tử di động (Trang 76)

Tomoko Suzuki và đồng sự đã trình bày giải thuật cho mạng đầy đủ không cảm hướng với độ phức tạp di chuyển là 4N log k + 4N + 4, và giải thuật cho mạng đầy đủ cảm hướng với độ phức tạp di chuyển là 4N + 8k. Cả hai giải thuật đều yêu cầu mỗi nút phải biết tất cả các nút trong mạng, giải thuật cho mạng đầy đủ cảm hướng yêu cầu thêm giả thiết cảm hướng để đạt được độ phức tạp di chuyển tốt hơn. Giải thuật chúng ta đề xuất dưới đây, không yêu cầu mỗi nút phải biết tất cả các nút trong mạng, chỉ giả thiết tồn tại vòng ảo kết nối tất cả các nút trong mạng, mỗi nút biết nút kề cận nó trên vòng ảo, nhưng vẫn đạt được độ phức tạp N + 7k, tối ưu hơn hẳn so với giải thuật gốc trong trường hợp mạng đầy đủ cảm hướng.

Ý tưởng giải thuật: Ban đầu chỉ có k nút khởi tạo vị trí của k tác tử trong mạng, bởi vậy, chúng ta xây dựng một vòng ảo rút gọn mà các nút trên vòng là nút nhà của k

tác tử.

Chỉ có một phần trong số k tác tử tham gia đợt bầu chọn thủ lĩnh, tác tử tham gia đợt bầu chọn thủ lĩnh sẽ ghi trạng thái ứng viên trên nút nhà của mình, loại bỏ nút nhà của các tác tử không tham gia đợt bầu chọn thủ lĩnh trên vòng rút gọn, chúng ta thu được vòng ảo chỉ bao gồm các nút nhà của các tác tử ứng viên. Giải thuật của chúng ta sẽ xây dựng một cơ chế hợp tác giữa các tác tử ứng viên để thu gọn vòng ứng viên (vòng chỉ bao gồm nút nhà của tác tử ứng viên), theo quy tắc nút nhà v của tác tử ứng viên có định danh bé hơn định danh tác tử ứng viên có nút nhà kế tiếp v sẽ bị loại ra khỏi vòng ứng viên. Cuối cùng, chỉ có duy nhất nút nhà của ứng viên có định danh lớn nhất còn tồn tại trên vòng ứng viên, tác tử ứng viên có nút nhà này chính là tác tử thủ lĩnh. Tác tử thủ lĩnh sẽ di chuyển dọc theo vòng ảo rút gọn để làm nhiệm vụ truyền bá thông tin cho các tác tử khác.

Chúng ta có thể mô tả ý tưởng hình thức hơn như sau: Đầu tiên, chúng ta xây dựng vòng rút gọn k nút là k nút nhà của k tác tử trong mạng, sau đó thực hiện đợt bầu thủ lĩnh trên vòng ảo rút gọn.

Ở đợt bầu thủ lĩnh, mỗi tác tử ghi trạng thái passive và định danh lên bảng trắng tại nút nhà của nó, tác tử pi khởi động tự phát giải thuật bầu chọn, thay đổi trạng thái nút nhà v thành candidate, và mang thông báo chứa định danh của pi và định danh nút nhà di chuyển đến nút kế tiếp u trên vòng rút gọn. Nút u ở trạng thái passive sẽ bị thiết lập trạng thái là dummy và phát sinh bước di chuyển mang thông báo này của tác tử pi

tới nút kế tiếp u. Nút u ở trạng thái candidate có định danh lớn hơn, sẽ phát sinh bước di chuyển của tác tử pi mang thông báo yêu cầu nút v, thông tin về tác tử ứng viên có nút nhà liền trước nút v; nút nhà của ứng viên có định danh thấp hơn sẽ thiết lập trạng thái là dummy, khi phát sinh bước di chuyển mang thông báo trả lời tới nút nhà của ứng viên có định danh lớn hơn. Vậy, khi một nút tiếp nhận bước di chuyển trả lời, nó biết định danh của ứng viên mới có nút nhà liền trước nó trên vòng ứng viên; đồng thời, sẽ có ít nhất một nút nhà của ứng viên bị loại ra khỏi vòng. Cuối cùng, chỉ có nút nhà của ứng viên có định danh lớn nhất tồn tại trên vòng ứng viên, tác tử có nút nhà này chính là thủ lĩnh. Tác tử thủ lĩnh sẽ di chuyển dọc theo vòng rút gọn để thu thập và truyền bá thông tin cho tất cả các tác tử khác.

Giải thuật của chúng ta bao gồm ba đợt:

+ Đợt thứ nhất: Xây dựng vòng ảo rút gọn, vòng ảo sẽ được xây dựng lại sao cho mỗi nút trên vòng ảo là một nút nhà của các tác tử trên mạng. Nếu mạng chúng ta có k tác tử thì vòng ảo mới sẽ có k nút nhà tương ứng.

+ Đợt thứ hai: Bầu chọn tác tử thủ lĩnh trên vòng ảo rút gọn, được mô phỏng dựa trên ý tưởng giải thuật của tác giả J. Villadangos và đồng sự (chương 2).

+ Đợt thứ ba: Tác tử thủ lĩnh duyệt trên vòng ảo rút gọn để thu thập thông tin, sau đó duyệt lại một lần nữa để phát tán thông tin cho tất cả các tác tử khác trong mạng.

Cấu trúc dữ liệu: các biến ghi trên bảng trắng của mỗi nút v trong mạng: + ownerv: là định danh tác tử ban đầu được khởi tạo tại v.

+ id(v): là định danh của nút v.

+ neigh_agentv: là nút nhà kề cận nút nhà v của tác tử piđược khởi tạo bằng NULL.

+ cand_succv, cand_predv: lưu ứng viên kế tiếp và ứng viên liền trước v

trong quá trình thực hiện đợt bầu chọn.

+ statusv: là trạng thái của nút v, nhận một trong bốn giá trị passive,

candidate, leader, dummy.

+ lockv: là biến cho biết có tác tử trên nút hay không, nó nhận một trong hai giá trị TRUE, FALSE.

Mỗi tác tử pi có vùng nhớ lưu thông tin riêng infoi, có vùng nhớ lưu thông tin của các tác tử khác trong mạng, biến id(pi) ghi định danh của nó, biến home_nodei ghi định danh nút nhà của nó, biến msg_agenti là thông tin thao tác trong giải thuật, biến

status_agenti là trạng thái tác tử nhận một trong ba giá trị leader, dummy, NULL.

Một phần của tài liệu Truyền bá thông tin phân tán giữa các tác tử di động (Trang 76)