Giải thuật bảo toàn cây khung trong mạng ñộng (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 46)

3.3.1. Khái quát v gii thut

Nhưñã ñề cập, trong mạng ñộng, chúng ta không dễ dàng xây dựng cây khung như

trong mạng tĩnh. Trong quá trình xây dựng hay kể cả khi xây dựng xong, rất có thể sẽ có những thay ñổi trong topo mạng, gây ảnh hưởng ñến cây khung mà chúng ta ñang xây dựng. Vì vậy, các thuật toán trong mạng ñộng phải tính ñến những trường hợp này và có những biện pháp ñáp ứng với sự thay ñổi trong mạng.

Thông thường, các giải thuật trong mạng ñộng có thểñược xây dựng bằng cách cải tiến các giải thuật tương ứng trong mạng tĩnh theo mô hình sau ñây:

•Áp dụng giải thuật trong mạng tĩnh tương ñương ñể giải quyết bài toán một cách bình thường

•Khi phát hiện ra sự thay ñổi trong topo mạng, tìm cách hủy toàn bộ kết quả ñạt

ñược và khởi ñộng lại thuật toán từñầu.

Cách tiếp cận này có ưu ñiểm là ñơn giản, dễ dàng trong việc xây dựng các thuật toán trong mạng ñộng dựa vào những thuật toán ñã ñược nghiên cứu trong mạng tĩnh. Tuy nhiên, tính hiệu quả của phương pháp này không cao. Nếu thuật toán tương ứng trong mạng tĩnh có ñộ phức tạp lớn, thì ñộ phức tạp ñể ñáp ứng với mỗi thay ñổi trong topo mạng cũng lớn tương ứng.

Nếu sử dụng phương pháp này trong bài toán xây dựng cây khung tối thiểu, với mỗi thay ñổi trong topo mạng, toàn bộ cây khung sẽ bị hủy (kể cả khi cây khung ñã xây dựng xong), thuật toán sẽ phải khởi ñộng lại từñầu ñể xây dựng cây khung mới. Như chúng ta

ñã biết, các thuật toán xây dựng cây khung phân tán hiện nay ñều có ñộ phức tạp là O(E) (E là số liên kết trong mạng). Vì vậy, ñộ phức tạp ñáp ứng với mỗi thay ñổi trong mạng trong trường hợp này là O(E).

Phương pháp trên thiếu hiệu quả do không tận dụng ñược những kết quảñã có trong các lần thực hiện thuật toán trước. Với mỗi sự thay ñổi dù nhỏ trong topo mạng, toàn bộ

kết quả của thuật toán sẽ bị hủy. Vì vậy, các tác giả trong bài báo ... ñã ñưa ra một cách tiếp cận khác cho bài toán xây dựng cây khung trong mạng ñộng. Bằng cách sử dụng lại những thành quảñã ñạt ñược, mỗi khi có thay ñổi trong mạng, các nút chỉ cần bằng cách nào ñó, thay ñổi lại một số trạng thái của mình. Nhờ ñó, ñộ phức tạp của phương pháp này ñối với mỗi thay ñổi trong mạng giảm xuống con O(V) (V là số nút trong mạng). Tất nhiên, ñộ phức tạp khi xây dựng cây khung ban ñầu vẫn là O(E).

3.3.2. Tư tưởng ca gii thut OMST.

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.

3.3.3. Chi tiết gii thut OMST

Cũng giống như giải thuật GHS-83, các mảnh MST trong quá trình thực hiện giải thuật cũng liên tục tìm kiếm liên kết ngoài có trọng số tối thiểu qua thủ tục FIND. Sau ñó tiến hành ghép các mảnh lại với nhau qua các liên kết ñó. Quá trình này ñược lặp ñi lặp lại cho tới khi chỉ còn một mảnh duy nhất, chính là cây khung của hệ thống.

Trong giải thuật chính, ngoài việc tìm kiếm các liên kết ngoài tối thiểu qua thủ tục FIND, các nút còn phải thực hiện thủ tục UPDATE ñể cập nhật lại cấu trúc dữ liệu của mình. Thủ tục UPDATE ñược gọi khi có thay ñổi trong topo mạng hoặc trước khi chúng ta tiến hành ghép mảnh. Lưu ý, thủ tục UPDATE luôn ñược thực hiện trước thủ tục FIND nhằm ñảm bảo quá trình tìm kiếm diễn ra chính xác.

•Khi một liên kết trong cây khung bị mất:

Thực hiện thủ tục loại bỏ liên kết này tại hai ñầu của liên kết.

•Khi hai mảnh kết hợp với nhau hoặc topo mạng thay ñổi: Gọi thủ tục UPDATE, sau ñó gọi thủ tục FIND.

•Khi hai mảnh chọn chung một liên kết ngoài:

Hai mảnh thực hiện thủ tục UPDATE riêng rẽ. Kết hợp hai mảnh lại làm một qua liên kết ngoài ñó.

Hình 19. Chương trình chính

Thủ tục UPDATE là một trong hai thủ tục quan trọng nhất trong thuật toán. Nhiệm vụ của thủ tục này là cập nhật lại cấu trúc dữ liệu “rừng ảo” tại mỗi nút sao cho “rừng ảo” giống “rừng thật” (cây khung hiện tại) nhất có thể. Chúng ta có thể chứng minh ñược, sau khi thực hiện thủ tục UPDATE, ít nhất “cây ảo” của một nút sẽ giống hệt như mảnh MST chứa nút ñó. Nhờ vậy, thủ tục FIND có thể tìm ñược liên kết ngoài tối thiểu của mảnh.

Để giảm ñộ phức tạp thông báo trong thủ tục UPDATE, mỗi nút không chỉ lưu “rừng ảo” của nút mình, mà còn lưu một tập “rừng ảo” của tất cả các nút khác trong hệ

thống. Cụ thể, mỗi nút sẽ lưu lại một mảng Forest[] bao gồm toàn bộ các “rừng ảo” của các nút khác mà nó biết trong mạng. Forest[u] là một bản sao “rừng ảo” của nút u. Để

tránh nhầm lẫn, chúng ta dùng ký hiệu Forestv[u] là bản sao “rừng ảo” của nút u ñược lưu tại nút v. Như vậy, một “rừng ảo” của nút nào ñó có thểñược lưu ở toàn bộ các nút khác trên mạng. Các bản sao cục bộ này sẽñược ñiểu chỉnh cho khớp với nhau thông qua thủ

tục UPDATE.

Thủ tục UPDATE ñược xử dụng ñể thay ñổi “rừng ảo” tại mỗi nút cho khớp với “rừng thật”. Trong thủ tục này, mỗi nút sẽ tìm cách gửi các thông tin về “rừng thật” cho các nút lân cận của nó. Ví dụ, một nút thấy liên kết kề với mình vừa bịñứt, nó sẽ gửi một thông tin báo cho các nút lân cận về thay ñổi này. Các thông tin này sẽñược tính dựa vào các phiên bản “rừng ảo” lưu tại nút ñó.

Tuy nhiên, vấn ñề phức tạp ở ñây là: khi hai nút kề nhau không “ñồng ý” về thông tin của “rừng ảo”, hay hai nút không biết thông tin của nút nào là chính xác hơn. Vấn ñề

này có thể giải quyết dựa vào khái niệm “phía” của một nút như sau:

Xét mt liên kết (u, v) trong mt mnh MST. Khi bỏ ñi liên kết này, sẽ ñược hai mnh MST phân bit, mt mnh cha u và mt mnh cha v. Ta ñịnh nghĩa mt nút hay mt liên kết trong mnh là “phía u” nếu nút hay liên kết này thuc mnh MST cha u. Ngược li, nó s là “phía v”.

Quay lại vấn ñề trên, khi hai nút u, v gửi thông tin về “rừng ảo” cho nhau, chúng sẽ

dựa vào “phía” ñể xác ñịnh xem thông tin nào là chính xác hơn. Các thông tin về liên kết phía u lưu tại u sẽ chính xác hơn những thông tin này khi lưu tại v. Hay những thông tin phía u bao giờ cũng ñến u trước rồi mới ñến v. Vì vậy, trong thủ tục UPDATE, một nút chỉ cần gửi thông tin về phía mỉnh cho các nút lân cận ñể cập nhật.

Thủ tục UPDATE sẽ ñược gọi tại nút gốc, khi ñó nút gốc sẽ gửi các yêu cầu UPDATE ñến lần lượt các nút khác trong mạng. Mỗi nút khi nhận ñược yêu cầu UPDATE từ nút cha, ngoài việc gửi yêu cầu này cho nút con, chúng sẽ gọi một thủ tục LOCAL_UPDATE ñể cập nhật thông tin cho các nút lân cận. Thủ tục này còn ñược gọi khi một nút nhận ñược các thông tin có ích từ nút khác. Chi tiết thủ tục LOCAL_UPDATE như sau:

Th tc LOCAL_UPDATE

•Với mọi k: (v, k) thuộc cây và Forestv(k) khác rỗng: Gửi thông báo DIFF(diff(k)) cho nút k

Forestv(k) = Forestv(k) + diff(k)

(Đoán trước vic sa “rng o” ti nút k, vì vy v sa luôn vào bn sao rng o ca nút k ca mình)

•Khi nhận ñược một thông báo DIFF (Add, Del) từ nút k Forestv(v) = Forestv(v) + Add - Del

Forestv(k) = Forestv(k) – treek(Forestv(k) – {v,k}) U treek(Forestv(v) – {v, k})

(Chnh li luôn Forestv(k) cho ging vi phiên bn “rng o” ca nút k)

Th tc diff(k)

(k: nút k cn ñược cp nht, tr li 2 thông tin Add, Del)

(Add: các liên kết cn phi ñược thêm vào “rng o” ca nút k, theo ý kiến ca nút v)

(Del: các liên kết cn phi ñược xóa khi “rng o” ca nút k, theo ý kiến ca nút v)

Add = (Forestv(v) – Forestv(k)) proj my-side(k) Del = (Forestv(k) – Forestv(v)) proj my-side(k) return(Add, Del)

Th tc my-side(k)

(tr li phn cây o còn li ca v sau khi loi b phn có cha k)

return treev(Forestv(v) – {v, k})

(treei(k): cây thuộc rừng ảo của k có chứa nút i)

Hình 21. Minh họa việc gửi thông báo DIFF

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 46)

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

(79 trang)