Thuật toán BFD (Best Fit Decreasing) là thuật toán được Skorin-Kapov nghiên cứu cho bài toán đ nh tuyến và phân bước sóng (RWA) trong mạng quang WDM. Một topology vật lý c a mạng quang được biểu diễn bằng đồ th G = (V, A) với V là số đỉnh c a đồ th tương ứng với số node trong mạng và A là số cạnh nối 2 đỉnh c a đồ th tương ứng với số sợi quang kết nối 2 node trong mạng.
Thuật toán được mô tả như sau: các bản sao c a đồ th được tạo ra đồng thời có một bước sóng được gán cho bản sao. Các lighpath sẽ được đ nh tuyến trên các bản sao c a G, những lightpath được đ nh tuyến trên cùng một bản sao sẽ được gán cùng một bước sóng
31
tương ứng với bản sao đó M c tiêu số bước sóng sử d ng nhỏ nhất tương ứng với số bản sao được tạo ra ít nhất.
Với một tập T biểu th số lightpath yêu cầu gồm các lightpath 1 2 …T một giá tr min-length được tính cho mỗi lightpath để biểu th đường đi ngắn nhất c a lightpath trong đồ thi G. Giá tr này được t nh để đánh giái độ ưu tiên xem lighpath nào được đ nh tuyến trước. Khi một lightpah được đ nh tuyến trên một bản sao c a G, tất cả các cạnh nối 2 node trên đường đi c a lightpath sẽ được xóa nhằm tránh các lightpath khác sử d ng đoạn đường đó Các lightpath có thể không được đ nh tuyến trên đường đi ngắn nhất ban đầu do có thể cạnh trên đường đi ngắn nhất c a lightpath đó đã được xóa trong quá trình đ nh tuyến lightpath trước đó Mà lúc này lightpath sẽ được đ nh tuyến trên đường đi ngắn nhất c a thực trạng bản sao khi đó
Mã c a thuật toán BFD được viết như sau:
1) Procedure BFD-R A G T d π 2) Set S = Φ C = Φ
3) for i = 1 2 …|T| do
4) If (there is no (arc-disjoint) path available for routing π(i) with less than d arcs in any of the copies of G in C)
5) then do
6) Create a new copy of G and assign a wavelength; 7) Add to C the new copy of G;
8) end-if
9) Find the copy of G in C where lightpath π i can be routed with the smallest number of arcs;
10) Let pπ i be the shortest path between the endnodes of lightpath Wπ i be its corresponding wavelength;
11) Add (Pπ i , Wπ i ) into S: S = S (Pπ i , Wπ i )
12) Delete all arcs in path Pπ i from this copy of G; 13) end-for;
14) return S;
15) end BFD-RWA Đoạn mã trên được diễn giải như sau:
32
Dòng 1: khởi tạo hàm và biểu diễn đầu vào: gồm một đồ th G biểu diễn một topology mạng, một tập các lightpath yêu cầu T, một vector π biểu thứ tự các lighpath được sắp xếp theo thứ tự giảm dần c a giá tr min-length, một giá tr d biểu diễn là giá tr lớn nhất c a một tuyến đường; giá tr này nhằm tránh cho lighpath có đ nh tuyến bằng đường đi quá lớn. Giá tr d được tính bằng c n bậc 2 c a tích số liên kết trong đồ th G nhân với đường kính c a đồ th ; đường kính c a đồ th được tính bằng giá tr lớn nhất trong số đường đi giữa 2 c p đỉnh bất kì tính bằng đường đi ngắn nhất Nghĩa là t nh đường đi ngắn nhất giữa 2 c p đỉnh bất k và đường k nh đồ th chính là giá tr lớn nhất trong số đó
Dòng 2: khởi tạo một tập S và một tập C ban đầu rỗng. Tập S biểu diễn đầu ra bao gồm đường đi c a lightpath và bước sóng tương ứng với nó; tập C lưu các bản sao c a đồ th G.
Các dòng t 3 – 13 thực hiện một vòng l p duyệt qua các lightpath theo thứ tự sắp xếp trong π tức là giá tr giảm dần theo giá tr min-length c a lightpath. Tại mỗi vòng l p thực hiện:
- Nếu không tồn tại đường đi nào cho lighpath có độ dài nhỏ hơn d trong tập các bản sao C thì thêm vào C một bản sao mới c a G và gán 1 bước sóng tương ứng với bản sao đó dòng 4 5 6, 7, 8).
- T m đường đi nhỏ nhất c a giữa 2 điểm đầu cuối c a lighpath đang được duyệt trong tất cả các bản sao c a G. Lấy ra giá tr nhỏ nhất trong số trên và bước sóng tương ứng với bản sao cho giá tr nhỏ nhát đó Gọi pπ i và Wπ i là đường đi và bước sóng thu được (dòng 9, 10).
- Thêm Pπ i , Wπ i vào tập đầu ra S. Dòng 14: trả về tập S.
Dòng 15: kết thúc.
Thuật toán được minh họa như sau:
Giả sử dưới đây là một topology mạng với tập các lightpath yêu cầu là: 0 – 1, 1 – 3, 2 – 4, 0 – 4, 0 – 5 => Thứ tự lightght sắp xếp theo thứ tự giảm dần min- length là 0 – 5 , 0 – 4, 2 – 4, 0 – 1.
33
Đầu tiên do chưa có bản sao nào lên một bản sao c a G(0) được tạo ra và được thêm vào C và bước sóng được gán giả sử là w0
Lightpath 0 – 5 có độ dài min length lớn nhất sẽ được đ nh tuyến trước Đường đi ngắn nhất t m được là 0 – 1 – 3 – 4 – 5 Đây ch nh là đường đi c a lightpath c a lightpath 0 – 5 và bước sóng cho lightpath này là w0 Đường đi trên được xóa khỏi G(0) Khi đó tập C sẽ chứa đồ th G(0) dạng:
Lightpath 0 – 4 được đ nh tuyến tiếp theo. Do trong bản sao G(0) không có đường đi nên một bản sao mới G(1) bước sóng tương ứng được gán là w1) được tạo ra thêm vào tập C đường đi ngắn nhất thu được trên bản sao mới là 0 – 1 – 3 – 4 Đây ch nh là đường đi cho lightpath – 4 và bước sóng được gán là w1. Xóa các cạnh trên đường đi c a lightpath này trong bản sao G(1). Lúc này trong tập C gồm 2 bản sao c a G: 2 3 1 0 4 5 G(0) 2 3 1 0 4 5
34
Lightpath tiếp theo được đ nh tuyến là 2 – 4. Do tìm trong 2 bản sao G(0) và G(1) không có đường đi nên một bản sao G(2) được tạo ra và thêm vào tập C đồng thời cũng gán một bước sóng w2 tương ứng Đường đi ngắn nhất t m được là 2 – 3 – 4 Đây cũng ch nh là đường đi c a lightpath 2 – 4 được đ nh tuyến và bước sóng sử d ng là w2. Xóa các cạnh trên trên đường đi tại bản sao G(2) ta thu được tập C lúc này gồm 3 bản sao: 2 3 1 0 4 5 G(1) 2 3 1 0 4 5 G(0)
35
Lightpath cuối c ng được đ nh tuyến 0 – 1. Duyệt qua tập các bản sao c a G, thu được kết quả là đường 0 – 1 thuộc bản sao G(2) Khi đó lightpath – 1 được đ nh tuyến sẽ là 0 – 1 và được gán bước sóng tương đương với G(2) tức là w2. Xóa cạnh 0 – 1 tại bản sao G(2) ta thu được tập C như sau:
2 3 1 0 4 5 G(2) 2 3 1 0 4 5 G(1) 2 3 1 0 4 5 G(0)
36
Như vậy tất cả các bước sóng yêu cầu đã được đ nh tuyến.