Thuật toán BFS

Một phần của tài liệu thuật toán gen trong bài toán định tuyến và phân bước sóng mạng cáp quang (Trang 29)

Việc duyệt đồ th theo chiều rộng được thực hiện bằng cách sử d ng kĩ thuật tìm kiếm theo chiều rộng BFS (Breadth-First Search Ý tưởng c a tìm kiếm theo bề rộng xuất phát t đỉnh v như sau T đỉnh v ta lần lượt đi th m tất cả các đỉnh u kề đỉnh v mà u chưa được th m Sau đó đỉnh nào th m trước th các đỉnh kề c a nó cũng sẽ được th m trước. Quá trình trên sẽ được tiếp t c cho đến khi không thể th m đỉnh nào nữa. Ta cần quan tâm đến các đ c điểm sau trong kĩ thuật này:

- Tại mỗi bước, t một đỉnh đã được th m ta đi th m tất cả các đỉnh kề đỉnh đó (tức là th m theo chiều rộng).

- Trật tự các đỉnh được th m là: đỉnh nào được th m trước th các đỉnh kề c a nó cũng phải được th m trước.

27

Để lưu lại các đỉnh được th m chúng ta sử d ng một hàng đợi Q. Mỗi khi đến th m một đỉnh th đỉnh đó được xen vào đuôi hàng đợi Q. Thuật toán tìm kiếm theo chiều rộng xuất phát t đỉnh v được biểu diễn bởi hàm BFS(v). Ta có thể viết mã c a thuật toán như sau: 1) Procedure BFS(v) 2) begin 3) Create Queue Q = Φ; 4) Insert v into Q; 5) Mark v is explore; 6) while (!Q.empty() ) do 7) w is front Q; 8) for ( u incident w) do 9) if (u isunexplored) 10) then do 11) Insert u into Q 12) Mark u is explore 13) end – if; 14) end – for; 15) Remove w from Q; 16) end - while ; 17)end;

Đoạn mã trên được diễn giải như sau:  Khởi tạo một hàng đợi rỗng Q (dòng 3)

 Xen v vào hàng đợi Q đánh dấu v đã được th m dòng 4 5

 Tạo một vòng l p với điều kiện Q không rỗng dòng 6 trong đó thực hiện: - Lấy phần tử w ở đầu hàng đợi (dòng 6)

- T m các điểm u liền kề với w, nếu u chưa được đánh dấu thì xen u vào hàng đợi đồng thời đánh dấu u đã được th m dòng 8 - 14)

 Loại w ra khỏi hàng đợi (dòng 15)

T thuật toán duyệt đồ th theo chiều rộng BFS ta có thể t m được đường đi ngắn nhất c a đồ th . Giả sử ta cần t m đường đi ngắn nhất t điểm a đến điểm b Trước hết ta sử d ng thuật toán BFS duyệt qua đồ th với điểm bắt đầu là a. Sau khi duyệt qua đồ th

28

nếu trong tập được đánh dấu đã th m không có b th ta có thể kết luận giữa a và b không tồn tại đường đi ngược lại ta có đường đi ngắn nhất giữa 2 điểm này Để lấy đường đi này ta cần tạo một mảng list với thành phần list [u] sẽ ghi lại đỉnh trước đỉnh u trên đương duyệt t a đến u. Tạo một vòng l p như sau như sau ta thu được đường đi ngắn nhất t a đến b trong mảng _list:

while (b != a) {

_list.insert (b); //Đưa b vào trong _list; b = list[b];

}

Thuật toán BFS có thể được minh họa như sau:

Giả sử ta cần t m đường đi ngắn nhât giữa 2 điểm 0 – 5 trong đồ th sau:

Ta tạo một hàng đợi rỗng và đưa điểm vào hàng đợi. Tạo một mảng d và đánh dấu d[0] = 1; mảng list lưu các giá tr c a đường đi

0

Lấy đỉnh hàng đợi (0) ra khỏi hàng đợi và đưa các đỉnh kề 1 2 vào hàng đợi đánh dấu d[1] = 1; d[2] = 1; list[1] = 0; list[2] = 0;

2 3 1 0 4 5

29

1 2

Lấy 1 ra khỏi hàng đợi và đưa đỉnh 3 kề với 1 vào hàng đợi; d[3] = 1; list[3] = 1;

2 3

Do đỉnh 3 kề với 2 đã được đánh dấu lên bước tiếp theo ta đưa 2 ra khỏi hàng đợi

3

Lấy 3 ra khỏi hàng đợi đưa đỉnh kề 4 vào hàng đợi đánh dấu d[4] = 1; list[4] = 3;

4

Lấy 4 ra khỏi hàng đợi đưa đỉnh kề 5 vào hàng đợi đánh dấu d[5] = 1; list[5] = 4; Đỉnh 5 không còn cạnh kề chưa đánh dấu lên kêt thúc (adsbygoogle = window.adsbygoogle || []).push({});

T các giá tr c a mảng list ta thu được đường đi ngắn nhất t điểm 0 – 5 là: 0 – 1 – 3 – 4 – 5

4.3. Các nghiên cứu cho bài toán đ nh tuyến và phân bước sóng mạng WDM

Bài toán đ nh tuyến và phân bước sóng RWA (Routing and Wavelength Assignment) c a chúng ta được mô tả như sau: Với một mạng quang WDM và một bộ lightpath có sẵn, cần tìm một tuyến đường cho mỗi sợi quang và gán cho mỗi sợi quang đó một bước sóng sao cho số lượng bước sóng sử d ng nhỏ nhất.

30

Có nhiều phương pháp khác nhau đề xuất để giải quyết bài toán RWA. Một số phương pháp th chia bài toán thành hai bài toán con: bài toán đ nh tuyến và bài toán phân bước sóng. Một số phương pháp khác th giải quyết đồng thời cả hai vấn đề.

Bannerjee và Mukherjee [5] giải quyết bài toán trong 2 giai đoạn Đầu tiên một trong những tuyến đường cho mỗi lightpath được chọn bởi thuật toán làm t m đường ngẫu nhiên Sau đó một bước sóng sẽ được chọn cho để gán mỗi lightpath.

Hyytia và Virtamo [6] cũng đi theo chiến thuật phân chia nhưng sử d ng thuật toán khác nhau cho t ng giai đoạn. Các tuyến đường được tính bằng cách sử d ng thuật toán đường đi ngắn nhất. Sau đó một bước sóng được chọn để gán cho mỗi lightpath.

Manohar, Manjunath và Shegaonkar [7] sử d ng thuật toán tham lam để giải quyết bài toán R A đây là phương pháp đầu tiên giải quyết đồng thời cả hai bài toán con. Tại mỗi bước l p, một tập con các lightpath được chọn và đ nh tuyến sao cho những lightpath được chọn sử d ng những đường tách rời nhau khi đ nh tuyến Sau đó tất cả những lightpath này sẽ được gán cùng một bước sóng. Th t c được l p lại với các lightpath.

Thuật toán tốt nhất cho bài toán R A được đưa ra gần đây do Skorin-Kapov [8] nghiên cứu mang tên BFD. Thuật toán này sẽ được giới thiệu kĩ trong phần tiếp theo Đây cũng ch nh là thuật toán làm tiền đề để áp d ng thuật toán gen vào bài toán RWA.

4.4. Thuật toán BFD-RWA

4.4.1. Mô tả thuật toán

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 (adsbygoogle = window.adsbygoogle || []).push({});

 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.

4.4.2. Chứng minh thuật toán

Chứng minh thuật toán đồng nghĩa với việc ta chứng minh thuật toán thỏa mãn hai điều kiện c a bài toán đ nh tuyến và phân bước sóng R A Đồng thời thuật toán cũng cho kết quả số bước sóng sử d ng nhỏ nhất có thể:

2 3 1 0 4 5 G(2) 2 3 1 0 4 5 G(1) 2 3 1 0 4 5 G(0)

37

 Thứ nhất: ta thấy rằng mỗi lightpath được đ nh tuyến trên một bản sao c a đồ th và sử d ng bước sóng tương ứng với bản sao do đó điều kiện về tính liên t c c a bước sóng được thỏa mãn.

 Thứ hai: sau khi một lightpath được đ nh tuyến trên một bản sao tất cả các cạnh trên đường đi c a lightpath được xóa bỏ do đó nếu các lighpath khác sử d ng những cạnh đó trên đường đi th cần phải đ nh tuyến trên bản sao khác. Mà các bản sao tương ứng với các bước sóng khác nhau Do đó t nh riêng biệt c a bước sóng được thỏa mãn.

 Thứ 3: trước khi tạo một bản sao mới ứng với t ng thêm một bước sóng sử d ng. Mỗi lighpath đều được t m đường đi trong các bản sao trước đó nếu không tồn tại đường đi trong tất cả các bản sao thì mới tạo bản sao mới Điều này đã giảm thiểu tối đa việc t ng số bước sóng sử d ng Do đó số bước sóng sử d ng ở đây là nhỏ nhất.

4.5. Thuật toán gen r ng bài án định tuyến và ph n bước sóng (GA – RWA)

4.5.1. Đặt vấn đề

Qua phần bên trên chúng ta có thể thấy thuật toán BFD thỏa mãn đầy đ hai đ c tính liên t c và riêng biệt về bước sóng. Thuật toán cũng sẽ tối ưu về số bước sóng nhỏ nhất sử d ng nếu như tất cả các lightpath có độ dài min-length khác nhau. Tuy nhiên vấn đề sẽ xảy ra nếu như có nhiều lightpath có cùng một độ dài min-length Khi đó việc xắp xếp thứ tự đ nh tuyến c a các lightpath có c ng độ dài min-length theo những thứ tự khác nhau sẽ cho ra những kết quả khác nhau Do đó nếu chỉ chạy thuật toán BFD một lần sẽ cho ra kết quả chưa chắc tốt nhất Để giải quyết vấn đề trên có thể chạy thuật toán BFD nhiều lần đến khi thu được một kết quả mong muốn. Tuy nhiên ở giải pháp này mỗi một lần chạy BFD các lightpath cùng min-length sẽ được sắp xếp theo một thứ tự ngẫu nhiên và kết quả thu được cũng sẽ là ngẫu nhiên, tức là kết quả thu được ở lần chạy sau có thể tốt hơn ho c có thể xấu hơn kết quả c a lần chạy trước đó Do đó phần này sẽ giới thiệu phương pháp sử d ng thuật toán gen trong bài toán RWA (GA- RWA) để sắp xếp thứ tự được đ nh tuyến c a các lightpath có cùng min-length qua mỗi vòng l p tương đương với các (adsbygoogle = window.adsbygoogle || []).push({});

38

thế hệ c a thuật toán gen. Và điều quan trọng nhất là kết quả c a lần chạy sau luôn tốt hơn ho c bằng với kết quả c a lần chạy trước.

Một phần của tài liệu thuật toán gen trong bài toán định tuyến và phân bước sóng mạng cáp quang (Trang 29)