Tư tưởng của giải thuật OMST

Một phần của tài liệu Nghiên cứu vấn đề truyền bá thông tin giữa các tác tử di động trong mạng động (Trang 47)

Thuật toán OMST ñược sử dụng ñể xây dựng cũng như bảo toàn cây khung tối thiểu trong mạng ñộng. Tương tự như giải thuật GHS-83 trong mạng tĩnh, giải thuật này cũng dựa trên tư tưởng kết hợp dần các mảnh MST lại thành cây MST. Các mảnh MST ñược kết hợp lại bằng cách chọn ra các liên kết ngoài có trọng số tối thiểu. Chi tiết về vấn ñề

này có thể xem tại phần về giải thuật GHS-83.

Tuy nhiên, nếu chúng ta chỉ sử dụng phương pháp của giải thuật xây dựng cây khung tối thiểu trong mạng tĩnh, thì khi có một sự thay ñổi trong topo mạng, cây khung trong mạng có thể bị ảnh hưởng và các nút trong mạng sẽ không có cơ sở nào ñểñáp ứng lại những thay ñổi ñó. Vì vậy, trong giải thuật OMST, các tác giả ñã ñưa ra một cấu trúc dữ liệu ñặc biệt ñể lưu trữ trên mỗi nút, sử dụng ñể khôi phục lại cây khung trong trường hợp có những thay ñổi trong mạng [7].

Định nghĩa 3.1: “Rng o”(forest replica) là mt cu trúc d liu trên mt nút, lưu tr thông tin các liên kết trong cây MST hin thi (rng tht) ca h thng.

Như vậy, “rừng ảo” là một bản sao của cây MST hiện thời, ñược lưu trữ trên một nút. Tất nhiên bản sao này có thể không hoàn toàn giống như cây MST thật (do hệ thống phân tán và các nút không biết trạng thái toàn cục trong mạng), nhưng mỗi nút sẽ cố gắng xây dựng “rừng ảo” giống cây MST thật nhất có thể.

Định nghĩa 3.2: “Cây o” (tree replica) là mt cây con thuc “rng o” ñược lưu tr trên mt nút. Để phân bit, ta ký hiu “cây o v” là cây o cha nút v.

Hình 16. “Rừng ảo” lưu tại nút u

Như hình trên, nút u lưu một “rừng ảo” bao gồm hai cây ảo. Một cây bao gồm 3 liên kết (u, v)(v, q)(q, w) và một cây (x,y). Trong ñó, liên kết (x, y) không thuộc cây MST thật, nhưng vẫn tồn tại trong “rừng ảo” của nút u (do nút u chưa kip cập nhật thông tin).

Mỗi nút trong hệ thống sẽ lưu một “rừng ảo” trong bộ nhớ cục bộ. “Rừng ảo” sẽ là cơ sở ñể các nút thực hiện thủ tục tìm kiếm liên kết ngoài tối thiểu cũng như kết hợp các mảnh MST lại với nhau. Vì vậy, trong quá trình thực hiện thuật toán, “rừng ảo” sẽ ñược

ñảm bảo sao cho giống “rừng thật” (cây MST hiện thời) nhất có thể.

Giải thuật OMST duy trì cấu trúc dữ liệu “rừng ảo” nhằm giảm ñộ phức tạp trong quá trình tìm kiếm liên kết ngoài có trọng số tối thiểu. Hai thủ tục quan trọng nhất trong giải thuật và liên quan trực tiếp ñến cấu trúc dữ liệu này là UPDATE và FIND.

• Thủ tc UPDATE: có nhiệm vụ duy trì “rừng ảo” tại mỗi nút giống với “rừng thật”. Với mỗi thay ñổi trong topo mạng, thủ tục UPDATE sẽ ñược gốc của mỗi mảnh MST gọi, và các nút trong mạng sẽ thực hiện các thủ tục LOCAL_UPDATE

ñể ñiều chỉnh lại “rừng ảo” của nút ñó cho giống với “rừng thật”. Ta có thể chứng mình ñược, sau khi thực hiện thủ tục UPDATE, “cây ảo” của một nút u trong hệ

• Thủ tc FIND: dựa vào “rừng ảo” tại mỗi nút, các nút sẽ tìm ñược liên kết ngoài tối thiểu cục bộ và gửi về cho nút gốc. Từ ñó, nút gốc sẽ chọn ra ñược liên kết ngoài tối thiểu của mảnh và thực hiện các biện pháp ghép mảnh.

Có thể thấy, do mỗi nút có lưu trữ “rừng ảo” trong bộ nhớ, thủ tục tìm kiến liên kết ngoài tối thiểu cục bộ sẽ có ñộ phức tạp thông báo là 0. Mỗi nút sẽ gửi thông báo cho nút gốc sau khi tìm kiếm xong. Vì vậy, ñộ phức tạp thông báo của thủ tục FIND là O(V). Đối với thủ tục UPDATE, chúng ta sẽ nghiên cứu kỹ cấu trúc dữ liệu và cách cài ñặt của thủ

tục này ở phần tiếp theo. Thủ tục này cũng có ñộ phức tạp là O(V).

Ngoài hai thủ tục UPDATE và FIND, trong giải thuật OMST còn một số thủ tục khác tương tự giải thuật GHS-83 ñể xây dựng cây khung tối thiểu:

• Thủ tc chuyn gc: Sau khi tìm ñược liên kết ngoài tối thiểu của mảnh, gốc của mảnh sẽñược chuyển xuống nút có liên kết ngoài ñó. Việc chuyển gốc sẽ giúp quá trình kết hợp mảnh dễ dàng hơn.

• Thủ tc kết hp mnh: Có thay ñổi so với thủ tục tương ứng trong thuật toán GHS-83 ñể tránh tình trạng deadlock. Trong thủ tục này, khi 2 mảnh MST chọn 1 liên kết ngoài chung, mảnh có ID nhỏ hơn sẽ tiến hành việc yêu cầu kết nối. Giả sử

mảnh u trong liên kết ngoài tối thiểu (u, v) có ID nhỏ hơn. Khi u trở thành gốc (qua thủ tục chuyển gốc), nó sẽ gửi 1 thông báo Request qua liên kết (u, v). Khi thông báo ñến v, nút v có thể hoặc không phải là gốc, nhưng vẫn tạm chấp nhận thông báo Request này. Đợi tới khi cây chứa v tìm thấy liên kết (u, v) và chuyển gốc lại cho nút v. v sẽ gửi một thông báo Accept lại cho u. Sau ñó mới tiến hành kết hợp hai mảnh qua liên kết (u, v). Những trường hợp thay ñổi topo mạng trong quá trình kết hợp mảnh sẽñược xem xét sau ñây.

• Thủ tc x lý khi cu hình mng thay ñổi: Khi một liên kết trong mảnh MST nối từ nút con ñết nút cha bị ñứt, nút con sẽ hủy bỏ liên kết này, trở thành gốc của mảnh mới và thực hiện các thủ tục ñể tìm liên kết ngoài nhỏ nhất như với các gốc thông thường. Nếu thay ñổi xảy ra trong quá trình thực hiện các thủ tục UPDATE và FIND, các nút sẽ có những biện pháp cụ thểñể xử lý tương ứng, tránh tình trạng deadlock. Ví dụ, khi một liên kết giữa nút cha và nút con bị ñứt, nút cha sẽ không

ñợi thông báo phản hồi từ nút con qua liên kết này nữa. Các trường hợp thay ñổi cấu hình mạng khác như các liên kết phục hồi lại, các liên kết ngoài bị ñứt ñều không ảnh hưởng gì ñến việc thực hiện thủ tục UPDATE và FIND.

• Thủ tc x lý khi cu hình mng thay ñổi trong quá trình kết hp mnh: Với các thuật toán trong mạng tĩnh thông thường, khi một mảnh chọn ñược liên kết ngoài có trọng số nhỏ nhất, liên kết này sẽ không bao giờ bị thay ñổi, và gốc của mảnh

chỉ cần ñợi cho ñến khi nó ñược hấp thụ bởi một mảnh khác. Tuy nhiên trong mạng

ñộng, khi một mảnh ñã chọn ñược liên kết ngoài tối thiểu, các liên kết bị ñứt từ

trước có thể hồi phục, khiến cho liên kết ñã chọn không còn có trọng số nhỏ nhất nữa. Điều này nếu không ñược xử lý, sẽ dẫn ñến tình trạng deadlock trong thuật toán, khi 2 mảnh chọn ra 2 liên kết ngoài khác nhau và không thể kết hợp lại ñược.

Hình 17: Mảnh A chọn liên kết ngoài có trọng số 2

Hình 18: Mảnh B chọn liên kết ngoài có trọng số 1

Vì vậy, giải thuật OMST ñưa ra phương án giải quyết thông qua thủ tục Alert. Khi một nút nào ñó phát hiện thấy cấu hình mạng thay ñổi, nó sẽ gửi thông báo Alert tới cho gốc. Điều này cho phép gốc của cây biết rằng, cạnh ngoài có trọng số nhỏ nhất có thể ñã bị thay ñổi. Nếu gốc chưa gửi thông báo Request, nó sẽ thực hiện lại việc tìm kiếm cạnh ngoài nhỏ nhất từñầu. Nếu gốc ñã gửi thông báo Request và ñã nhận ñược Accept, thông báo Alert ñơn giản là bị bỏ qua. Vì sau khi ghép 2 cây, gốc của cây sẽ tự ñộng thực hiện Update. Nếu gốc ñã gửi thông báo Request (và chưa nhận ñược Accept), nó sẽ gửi một thông báo Cancel cho mảnh kia. Nếu mảnh này ñã gửi thông báo Accept, thì nó sẽ bỏ qua thông báo Cancel, khi ñó 2 mảnh sẽ vẫn ñược kết hợp lại làm một (Tương tự trường hợp

ñã nhận ñược Accept bên trên). Nếu mảnh này chưa gửi Accept, nó sẽ gửi một thông báo Canceled, chấp nhận việc hủy bỏ thông báo Request ñã nhận ñược, nút gốc nhận ñược Canceled sẽ tiến hành tìm kiếm lại liên kết ngoài tối thiểu.

(adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Nghiên cứu vấn đề truyền bá thông tin giữa các tác tử di động trong mạng động (Trang 47)