Thuật toán xác định m-cycle

Một phần của tài liệu (LUẬN văn THẠC sĩ) một số phương pháp định vị liên kết lỗi trên mạng quang (Trang 49 - 57)

- Tất cả cácliên kết mạng đều được giám sát Vì vậy khôngcó mã cảnh báo nào bằng 0 (phương trình 15).

Hình 2.10 Giải pháp m-tree cho mạng Deutsche Telekom với 14 nodes và 23 liên kết

2.4.2 Thuật toán xác định m-cycle

Input: Mạng cáp quang được biểu diễn dưới da ̣ng đồ thi ̣ đơn vô hướng G(V, E), trong đó tập các nút V biễu diễn các nút của mạng, tập các cạnh E biểu diễn các liên kết. Mạng không có liên kết single-bridge.

Output: Tìm tập M các m2-cycle {c1, c2, c3, c4,…..,cM} và bảng mã TA (đã được giới thiệu ở mục 2.1) mà mỗi hàng chỉ ra liên kết và mã cảnh báo khi liên kết đó lỗi

Bước 1: Khởi ta ̣o:

+ Đánh dấu tất cả các liên kết trong G(V, E) là chưa được xét + Khở i ta ̣o tâ ̣p B rỗng

+Trên mỗi liên kết trong G((V,E) xây dựng các m2-cycle và thêm vào danh sách X theo thứ tự tăng về độ dài.

Bước 2: Khai triển để xây dựng tâ ̣p cơ sở B.

2a. Duyệt tập X và tìm m2-cycle đầu tiên (m2-cycle có một vài liên kết chưa được xét). Những liên kết chưa xét ta ̣o thành tập F.

2b. Khở i ta ̣o tập T rỗng

2c. Lấy một liên kết từ tập F và tìm thấy tất cả các m2-cycle chứa nó. Nếu một m2-cycle chứ a ít nhất một liên kết chưa đánh dấu thì thêm nó vào tập B. Đánh dấu tất cả các liên kết mới được xét bởi m2-cycle này và thêm vào tập T. Lă ̣p la ̣i bước 2c cho tất cả các liên kết trong tập F. Sau đó gán tập T cho tập F

2d. Lặp la ̣i các bước 2b-2c cho đến khi không có m2-cycle mớ i nào thêm vào tập B nữa.

2e. Kiểm tra nếu có bất kì liên kết nào chưa được đánh dấu trong G(V,E) thì tiếp tục quay la ̣i bước 2a. Nếu không thì chuyển sang bước 3.

Bước 3: Phát triển để xóa các m2-cycle dư thừa và thêm một vài m2-cycle.

3a. Xây dựng một bảng mã TA, trong bảng này mỗi hàng là một bảng mã cảnh báo cho một liên kết trong G(V,E) và mỗi cô ̣t biểu diễn một m2-cycle trong tập B (đã được giới thiệu ở mục II.1).

Khở i ta ̣o mảng TA mang giá tri ̣ 0. Mỗi m2-cycle tìm thấy tất cả các liên kết nó bao phủ và tương tác và phần tử đó mang giá trị một.

3b. Dò theo mỗi cô ̣t trong TA và kiểm tra.

Xét mỗi cột trong bảng mã TA, nếu trừ cột đang được xét tồn tại ít nhất một hàng mang toàn giá trị 0 hoặc tồn tại một vài hàng có bảng mã giống hệt nhau và khi tính cả cột đang được xét bảng mã trở nên khác nhau thì cột đó là không dư thừa. Nếu không thỏa mãn các điều trên thì cột đang xét là dư thừa và sẽ được xóa bỏ trong bảng mà TA, m2-cycle tương ứng cũng được xóa bỏ khỏi tập B.

3c. Kiểm tra nếu bất kì hai liên kết la và lb có mã cảnh báo giống nhau trong bảng mã TA. Nếu có, ta ̣m thời xóa liên kết la khỏi G(V,E) và tìm một m2-cycle trên cơ sở lb và ngược lại. Thêm m2-cycle có độ dài ngắn hơn vào B. Đồng thời cập nhật lại bảng mã TA.

3d. Kết luâ ̣n cuối cùng tìm ra được CM và TA. + Tính chất thuật toán M2-CYCLE

Đi ̣nh lý 1: Thuật toán đưa ra một tập vòng bao phủ CM bao phủ tất cả các liên kết trong mạng.

Chứ ng minh: vì ma ̣ng không có liên kết cầu, các liên kết không được bao phủ có thể được xác đi ̣nh ở bước 2e trong thuâ ̣t toán và sau đó được bao phủ bởi m2-cycle thêm vào B. Chú ý bước 3b không thể biến liên kết đã được bao phủ thành mô ̣t liên kết chưa được bao phủ. Vì vâ ̣y tất cả các liên kết đều được bao phủ bởi CM

Đi ̣nh lý 2: Số lượng m2-cycle được sinh ra bở i thuâ ̣t toán M2-CYCLE luôn nhỏ hơn hoặc bằng số lượng m2-cycle sinh ra khi áp dụng mô ̣t thuâ ̣t toán nào đó trên sơ sở spanning-tree.

Chứ ng minh: G(V,E) biểu diễn một ma ̣ng và S0 biểu diễn một spanning-tree bất kỳ trong đồ thi ̣ G(V,E). Giả sử chúng ta có mô ̣t draft. Mỗi khi chúng ta thêm mô ̣t m2-cycle vào tâ ̣p cơ sở B, chúng ta cũng vẽ nó trong draft. Hướng tiếp câ ̣n của chúng ta là đếm số chords nhỏ nhất có thể. Vì vâ ̣y, mỗi liên kết trong draft nếu không là một chord thì sẽ là một trunk. Áp dụng thuât toán trên cơ sở spanning-tree từ mỗi chord tạo ra mô ̣t m-cycle, chú ng ta có thể so sánh số m2-cycle được ta ̣o ra bởi thuâ ̣t toán M2-CYCLE vớ i số lượng chord trong draft.

Hình 2.15a

Khi chú ng ta thêm hai m2-cycle đầu tiên c1: a-b-c-d-a và c2:e-f-g-h-i-e vào draft, trên mỗi m2-cycle phải có mô ̣t chord. Trong draft, những liên kết khác ta ̣o thành hai spanning tree riêng biệt trong c1 và c2. Để phân biê ̣t các spanning-tree trong draft với S0 trong G(V,E), chúng ta gọi chúng là: spanning tree ảo(VSTs). VSTs mở rô ̣ng (và kết hợp) khi m2-cycle được thêm vào draft. (Chú ý rằng VSTs cũng không thâ ̣t cần thiết cho đồ thi ̣ con của S0, vì chúng ta chỉ sử du ̣ng để đếm số lượng các chord nhỏ nhất

trong draft). Sau đó, giả sử mô ̣t m2-cycle thứ 3 c3: c-d-k-j-g-c được thêm vào draft và nó kết nối c1 vớ i c2. Điều này cần giới thiê ̣u chord mớ i khác, mă ̣c dù chúng ta có thể tìm mô ̣t vòng lă ̣p trong S0 (dù thế nào thì hai chord đầu tiên cũng thuô ̣c c1 và c2). Để giảm số lượng chord trong draft, VST được mở rô ̣ng hay kết hợp để trở thành mô ̣t spanning tree. Nhìn chung, nếu mô ̣t m2-cycle kết nối hai VSTs riêng biê ̣t với nhau, sau đó m2-cycle này cũng đưa ra chord mới, và VST được mở rô ̣ng hay được kết hợp để trở thành cây spanning tree trong draft.

Hình 2.15b

Bây giờ chúng ta xem xét hình 2.15b, thêm lần lượt từng vòng vào draft c1: a-b-c-d- a, c2:c-b-d-c và c3: f-a-e-c-f. Về cơ bản, viê ̣c thêm c2 là tương đương với viê ̣c kết nối hai nú t b và d trong VST( được cấu ta ̣o bởi c1) vớ i mô ̣t đường dẫn mới b-c-d. Để tránh bất kỳ sự lă ̣p la ̣i nào trong S0 và để tối thiểu hóa số lượng chord trong draft, việc kết nối b và d phải đưa ra mô ̣t chord mới, và VST được mở rô ̣ng( được cấu ta ̣o bởi c1 và

c2) để trở thành mô ̣t spanning tree. Sau đó, khi c3 được thêm vào, VST được cấu ta ̣o bở i c1 và c2được kết nối bởi a-e-c và a-f-c. Vì vâ ̣y, c3 đưa ra hai chord mớ i thay thế nó.

Thực tế mỗi khi thêm mô ̣t m2-cycle vào VST sẵn có thì số lượng chord sẽ bằng với số lần VST vừa mới kết nối.

Sau đây chúng ta xem xét biểu thức khai triển của M2-CYCLE.

Hình 2.15c

Giả sử ba liên kết a-b, c-d và e-f trong hình 2.15c được bao phủ bởi tâ ̣p tương tự các m2-cycle và vì vâ ̣y các lỗi được phân biê ̣t. Cho cx là m2-cycle đầu tiên đưa ra ba liên kết để đưa vào draft và cy là m2-cycle được xây dựng ở phía sau. Cả cx và cy được bao gồ m từ biểu thức mở rô ̣ng. Khi cx được xây dựng, draft chỉ bao gồm cx và tất cả các m2-cycle được xây dựng trước cx. Sau đó ta ̣m thời chúng ta bỏ bất kì mô ̣t liên kết nào đó trong số ba liên kết đó và xây dựng mô ̣t m2-cycle trong draft hiện ta ̣i trên cơ sở một trong hai liên kết còn la ̣i. Nếu không thể tìm thấy m2-cycle nào thỏa mãn, thì tồn tại hai liên kết không thể phân biê ̣t trong draft hiê ̣n ta ̣i( ví du ̣ như c-d và e-f). Nói cách khác, nếu mô ̣t m2-cycle mớ i được thêm vào, e-f tạm thời bi ̣ xóa bỏ và mô ̣t m2-cycle trên cơ sở a-b có thể được bao gồm bằng viê ̣c đi qua mô ̣t vài nút trong VST được cấu tạo ban đầu, sau đó cx phải được đưa vào VST ban đầu lần nữa và vì thế đưa ra hai

chord mớ i. Tuy nhiên, chúng ta đã thêm vào B mô ̣t m2-cycle. Vì vâ ̣y, thông qua bước 3c trong thuật toán và thêm m2-cycle mở rô ̣ng để phân biê ̣t hai lỗi, só lượng m2-cycle vẫn không vượt quá số lượng chord.

Với bất kỳ các liên kết không thể phân biê ̣t, như c-d và e-f, giả sử biểu thức cải tiến cuối cùng thêm mô ̣t m2-cycle để phân biệt chúng bàng viê ̣c ta ̣m thời bỏ đi e-f và xây dựng mô ̣t m2-cycle trên cơ sở c-d. Điều này có thể nếu như có mô ̣t m2-cycle cy được xây dựng bao phủ một vài các nút hoă ̣c liên kết giữa d và e. Khi c-d và e-f vẫn không phân biệt được sau khi cy được thêm vào, cy phải được kết nối với VST lần nữa như hình 9c. Vì vâ ̣y lại thêm hai chord mới được thêm vào cy, nhưng chỉ mô ̣t m2-cycle cy

được xây dựng. Nếu chúng ta thêm mô ̣t m2-cycle mở rô ̣ng để phân biê ̣t hai lỗi này, số lượng m2-cycle không vượt quá số chord của đồ thì G(V,E).

Việc liên kết các bằng chứng chúng ta đưa ra ở trên cho ba draft lý tưởng trong hình 2.15, số các m2-cycle sinh ra bằng thuâ ̣t toán M2-CYCLE sẽ không bao giờ lớn hơn số m2-cycle được sinh ra bới thuâ ̣t toán trên cơ sở spanning tree. Thêm nữa , trong bước cải tiến của thuật toán M2-CYCLE có lẽ sẽ bỏ thêm mô ̣t vài m2-cycle dư thừ a đi nữa.

Đi ̣nh lý 3: So sánh vớ i bất kì thuâ ̣t toán xây dựng m-cycle trên cơ sở spanning tree nào, đô ̣ dài của mỗi m2-cycle và đô ̣ dài bao phủ LC trong thuật toán M2-CYCLE luôn nhỏ nhất.

Chứ ng minh: Từ phần khai triển của thuâ ̣t toán M2-CYCLE, độ dài của các m2- cycle được xây dựng trên cớ sở mỗi liên kết trong đồ thị đã là nhỏ nhất. Trong bước 3c củ a phần khải triển, nếu chúng ta cần thêm mô ̣t m2-cycle mở rộng vào B, nó cũng được xây dựng theo cách thức có độ dài nhỏ nhất. Chú ý rằng LC là tổng đô ̣ dài của tất cả các m-cycle. Khi số các m2-cycle trong M2-CYCLE không bao giờ lớn hơn các m-cycle trong cách tiếp câ ̣n trên cơ sở spanning tree, và dô ̣ dài của mỗi m2-cycle là nhỏ nhất, theo đó LC trong M2-CYCLE cũng là nhỏ nhất.

Đi ̣nh lý 4: Bước sóng kiểm soát W không bao giờ lớn bất kỳ thuâ ̣t toán nào trên cơ sở spanning-tree.

Chứ ng minh: Cho CM và Cs là các kết luâ ̣n tương ứng của thuâ ̣t toán M2-CYCLE và thuâ ̣t toán trên cơ sở spanning tree. Bởi vì đô ̣ dài của mỗi m2-cycle trong CM được tối thiểu hóa, chúng ta có thể mở rô ̣ng mô ̣t vài m2-cycle trong CM và biến CM thành Cs. Trong hình 10, c1: b-a-e-b, c2: c-b-e-f-c và c3: d-c-f-g-d là ba m2-cycle trong CM. c1

cũng là mô ̣t m-cycle trong Cs bởi vì nó bao phủ chỉ mô ̣t chord. Nếu chúng ta thay thế một chord b-e trong c2 bở i đường dẫn b-a-e, và c-f trong c3 bằng c-b-a-e-f, sau đó cả c2

và c3 được chuyển thành các m-cycle.

Không mất tính tổng quát, chúng ta xem xét b-a-e-b trong hình 10. Giả sử rằng b-a, a-e, và b-e được bao phủ bởi CM vớ i só lần tương ứng là: 1 lần, 2 lần, và x lần, tương ứng. Để biến đổi CM thành Cs. chú ng ta cần chuyển hướng mô ̣t vài cycle từ b-e thành

b-a-e qua x-1 lần. Sau đó, số lần bao phủ lên mỗi liên kết là:

12 2 : ( 1) : ( 1) : 1 b a x a e x b e              

Bên cạnh b-e, những chord khác như c-f trong c3 có lẽ cũng cần chuyển hướng qua

b-a-e. Cho WM và WS biểu diễn yêu cần bước sóng kiểm soát cho CM và Cs. Chú ng ta có:

WS ≥ max{1, 2}+(x-1). (2)

Khi giá tri ̣ của 1, 2 và x phải là ít nhất, chúng ta có:

Hình 2.16: Một m2-cycle có thể là tăng lên đối với một m-cycle

Công thứ c (3) cho thấy WS không nhỏ hơn số lần mà b-a, a-e và b-e được chuyển đổi bởi CM. Chú ý rằng b-a-e-b là mô ̣t m-cycle trong CS. Thực tế chú ng ta có thể mở rộng phân tích này cho bất kỳ csCS. Khi CS bao phủ mo ̣i liên kết trong hình, từ (3) chú ng ta có WM ≤WS.

Đi ̣nh lý 5: Mứ c đô ̣ đi ̣nh vị DL củ a M2-CYCLE là không lớn hơn bất kì thuâ ̣t toán trên cơ sở spanning tree nào.

Chứ ng minh: Trong thuật toán M2-CYCLE, nếu bất kỳ hai liên kết nào có mã cảnh báo giống nhau, một liên kết sẽ phải ta ̣m thời xóa bỏ, và mô ̣t m2-cycle thêm vào được xây dựng trên mô ̣t liên kết khác để phân biê ̣t hai lỗi này. Nếu m2-cycle thêm vào không thể làm được thì bất kì thuâ ̣t toán trên cơ sở vòng hay spanning tree nào cũng không thể làm được. Khi DL nhỏ hơn nghĩa là mức đô ̣ định vi ̣ tốt hơn, DL trong M2-CYCLE không lớ n hơn bất kì thuâ ̣t toán trên cơ sở spanning-tree nào.

Một phần của tài liệu (LUẬN văn THẠC sĩ) một số phương pháp định vị liên kết lỗi trên mạng quang (Trang 49 - 57)

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

(70 trang)