Ứng dụng giải thuật Prim (An Adaptation of Prim’s Algorithm)

Một phần của tài liệu Các thuật toán phân tán giải bài toán định tuyến đa đích (Trang 48 - 50)

Trong thuật toán thứ hai được đưa ra bởi Kompalla[25], chiến lược sử dụng là tương tự như thuật toán Prim xây dựng cây bao trùm tối thiểu (cây khung nhỏ nhất). Nó bao gồm phát triển cây định tuyến, bắt đầu từ nút nguồn cho đến khi đạt đến điểm đích.

Các thuật toán được đưa ra theo các kỹ thật khác nhau cho mỗi cạnh được thêm vào cây. Trong chiến lược lựa chọn cạnh đầu tiên, để hạn chế độ trễ, các cạnh hiệu quả nhất được lựa chọn. Như vậy vấn đề về độ trễ được thỏa mãn. Cạnh thứ hai sẽ được lựa chọn để cân bằng cho độ trễ của các cạnh khi sử dụng. Việc này được áp dụng bằng nhân tố “bias”, trong đó ưu tiên cạnh có độ trễ nhỏ nhất trong số những cạnh có cùng chi phí(điều kiện).

b(i, j) =

Trong đó D(s,j) là tổng độ trễ tối thiểu giữa s và nút i, là độ trễ tối đa cho phép, thông thường w(i,j) và d(i,j) là chi phí (điều kiện) và độ trễ giữa nút

i và j.

Một vấn đề quan trọng đối với thuật toán phân tán là làm thế nào để xác định các tính toán kết thúc. Đây là một vấn đề bởi vì mỗi nút hoạt động độc lập, và do đó không có cách nào tập trung để xác định rằng mục tiêu của tính toán đã đạt được hay chưa.

Các tác giả của các tài liệu đã đề cập ở trên cũng thảo luận về vấn đề kết thúc cho các thuật toán định tuyến đa đích. Trong trường hợp này, vấn đề tồn tại vì một số cấu trúc có thể đưa ra vấn đề không khả thi, trong khi tính khả thi có thể được phục hồi bằng cách thực hiện một số thay đổi đối với giải pháp hiện hành. Một phương pháp phân tán cho việc khôi phục vấn đề khả thi, được đề xuất như một cách để nhận biết khi kết thúc việc tính toán.

2.3.4. Sử dụng lan tràn cho tính toán đường đi (Using Flooding for Path Computation)

Lan tràn là kỹ thuật đơn giản và hữu ích trong mạng định tuyến. Mặc dù lan tràn khá chậm trong thực tế, nhưng nó có thể sử dụng thành công như là một phần của thuật toán phức tạp hơn. Mokbel đã thảo luận về thuật toán phân tán cho định tuyến đa đích hạn chế độ trễ. Thuật toán chia thành một số giai đoạn sau:

Giai đoạn đầu của thuật toán bao gồm phát hiện thông tin về các nút trong mạng(như khi router nhận được một gói multicast, đầu tiên nó kiểm tra xem gói tin này đã nhận được trước đó chưa), đặc biệt về độ trễ phát sinh bởi các gói. Trong giai đoạn này, nếu là lần đầu tiên, router sẽ gửi gói tin đến tất

cả các cổng của nó, ngoại trừ cổng mà đã gửi gói tin đến. Khi sử dụng kỹ thuật flooding, các gói tin được nhân đôi ở mỗi nút.

Tại mỗi nút truy cập, thông tin về tổng độ trễ và chi phí bởi các gói dữ liệu được thu thập, bổ sung vào gói dữ liệu và truyền lại. Mỗi điểm đến sẽ nhận thông tin các gói về đường đi trong thời gian trễ xác định trước đó. Sau khi nhận được gói tin, mỗi điểm đến sau đó chọn kết quả đường đi với chi phí thấp nhất sẽ được sử dụng.

Lưu ý: Trong bước cuối cùng của giai đoạn đầu, tất cả các điểm gửi thông tin này đến nút nguồn. Nút nguồn sau đó có dữ liệu về tình trạng của mạng mà sau này có thể được sử dụng để xác định các router tốt nhất để đến được đích.

Trong giai đoạn thứ hai của thuật toán, nút nguồn sẽ nhận được lựa chọn đường đi cho mỗi đích đến và xây dựng một cây định tuyến dựa trên thông tin này. Do đó, đây là một giai đoạn tập trung, và có thể được áp dụng cho xây dựng cây.

Trừ một số hạn chế được áp dụng cho các dữ liệu được truyền đi, độ phức tạp của thuật toán flooding có thể dẫn đến trường hợp xấu nhất. Trong trường hợp này để cải thiện hiệu suất của thuật toán và để tránh tình trạng quá tải các gói dữ liệu trong mạng trong giai đoạn flooding, mỗi nút được yêu cầu duy trì ở hầu hết các gói K bất cứ lúc nào. Sử dụng tham số này, độ phức tạp của thuật toán là O(K2|V|2).

Một phần của tài liệu Các thuật toán phân tán giải bài toán định tuyến đa đích (Trang 48 - 50)