CHƢƠNG 5 GIẢI THUẬT ĐỀ XUẤT
5.6. Tính đúng đắn
Bổ đề 5.1. Nếu J thuộc hTreeK được chọn đưa vào tabP thì mọi nút trên đường đi từ K đến J trên cây htabK đều đã được chọn đưa vào tabP nhận K là nút liền sau P trên đường định tuyến.
Chứng minh. Giả sử đường đi từ K đến J trên cây htabK là K = Jn, Jn-1, …, J1, J0 = J. Theo giải thuật, nếu J thuộc hTreeK được chọn đưa vào tabP thì idJ = TOP(hTreeK).id và hoặc J là láng giềng của P (TOP(hTreeK).n = NIL) hoặc nút trước J trên đường đi từ K đến J trên cây htabK (nút J1 có định danh TOP(hTreeK).n) đã được chọn đưa vào tabP
nhận K là nút liền sau P trên đường định tuyến (GET(TOP(hTreeK).n, tabP).a = idK). Trường hợp J là láng giềng của P (n=0): J chính là K và Bổ đề 5.1. hiển nhiên đúng. Trường hợp J không phải là láng giềng của P (n > 0): J1 đã được chọn đưa vào tabP
nhận K là nút liền sau P trên đường định tuyến. Lập luận tương tự cho J1 dẫn đến J2 đã được chọn đưa vào tabP nhận K là nút liền sau P trên đường định tuyến. Lập luận tương tự cho J2 dẫn đến J3 đã được chọn đưa vào tabP nhận K là nút liền sau P trên đường định tuyến, … Cuối cùng, K = Jn đã được chọn đưa vào tabP nhận K là nút liền sau P trên đường định tuyến. Như vậy, toàn bộ đường đi từ K đến J trên cây htabK là K = Jn, Jn-1, …, J1, J0 = J được đưa vào cây tabP. Bổ đề được chứng minh.■
A B
B D
5 2
Hình 5.2.e Trạng thái các nút sau vòng 3 (ổn định).
C D A 5 C D 1 2 B 1 C A 1 C D 2 1 A 5 B 2 5
Định lý 5.1.Cấu hình Cs tại đó với mọi bộ xử lý Q:
Số phần tử của NeighborsQ bằng số láng giềng của Q,
NeighborsQ bao hàm mọi láng giềng của Q,
Mỗi phần tử <idP, htabP> NeighborsQ thỏa mãn
o P là láng giềng của Q
o Số phần tử trong htabP bằng số bộ xử lý trong thành phần liên thông của P, và
o htabP bao hàm mọi bộ xử lý thuộc thành phần liên thông của P, mỗi phần tử t nằm trong của htabP thỏa mãn
t.id là định danh của một nút trong thành phần liên thông của P, gọi là U
t.dis-LEN(Q, P) là khoảng cách ngắn nhất từ P đến U
t.a là định danh nút liền kề (sau) P trên đường đi ngắn nhất từ P đến U nếu U P, NIL nếu U = P
t.n là định danh của nút liền kề (trước) U trên đường đi ngắn nhất từ P đến U nếu U P, là NIL nếu U = P.
là cấu hình an toàn đối với giải thuật và tập các thực hiện hợp lệ LE.
Chứng minh. Để chứng minh Cs là cấu hình an toàn, ta phải chứng minh mọi thực hiện xuất phát từ Cs đều là thực hiện hợp lệ.
Dễ thấy Cs thỏa mãn điều kiện hợp lệ.
Với thực hiện bất kỳ, tại đầu vòng thứ nhất, htabP chính là cây định tuyến đúng cho P. Mỗi bộ xử lý Q có đầy đủ các cây định tuyến đúng của các láng giềng, đặt chúng vào cây lớn có gốc tại Q, sau đó duyệt trên cây lớn để lấy ra cây định tuyến tabQ. Thủ tục duyệt đảm bảo mọi nút trên cây lớn được duyệt, do vậy mọi nút trong thành phần liên thông được kết nạp vào tabQ. Theo giải thuật, nếu bộ <idJ, dis, ., n> htabK được chọn để kết nạp J thì bộ <idJ, dis, idK, n> được đưa vào tabQ. dis bằng tổng độ dài đường đi ngắn nhất
từ K đến J với LEN(Q, K) và <idJ, dis, ., n> htabKđược chọn có dis nhỏ nhất nên dis là độ dài đường đi ngắn nhất từ Q đến J. Theo Bổ đề 5.1, đường đi từ Q đến J trong tabQ
được tạo thành bằng cách nối cung (Q, K) với đường đi từ K đến J trên htabK, do vậy n
cũng là định danh của nút liền trước J trên đường đi từ Q đến J. idK rõ ràng là định danh nút liền sau Q trên đường đi từ Q đến J. Như vậy, kết thúc vòng 1, tabQ là cây định tuyến đúng cho Q, cấu hình Cs1 đạt được sau vòng 1 thỏa mãn điều kiện hợp lệ.
Lưu ý rằng, kết thúc vòng 1, các htabQ được xây dựng từ tabQ tại các láng giềng của Q, thành phần dis của mỗi phần tử được cộng thêm độ dài cung liền kề, bởi vậy cấu hình
Cs1 có các tính chất như Cs. Lập luận tương tự cho vòng 2, 3, …, ta thấy mọi cấu hình
Cs2, Cs3, … đều thỏa mãn điều kiện hợp lệ. ■
Để chứng minh tính tự ổn định của giải thuật, ta giả thiết thời gian từ 0 đến T mạng có thể biến đổi nhưng từ T trở đi mạng ổn định. Gọi T0 là thời điểm mọi thông báo đang được gửi ở thời điểm T được chuyển đến đích.
Gọi định danh trôi trong một số cấu hình c là định danh xuất hiện trong các bộ thuộc
htab* hoặc trong các bộ thuộc thông báo đang gửi mà không có bộ xử lý có định danh như vậy trong cùng thành phần liên thông. Gọi bộ trôi là những bộ chứa định danh trôi.
Ta có nhận xét sau về các bộ trôi.
Bổ đề 5.2. Trong mọi thực hiện R, từ thời điểm T0 trở đi, không xuất hiện thêm định danh trôi mới.
Chứng minh. Từ thời điểm T0 trở đi, không có thông báo nào được gửi từ thành phần liên thông này sang thành phần liên thông khác. Do vậy, không có một định danh nào được chuyển từ thành phần liên thông này sang thành phần liên thông khác để sinh ra định danh trôi mới. ■
Bổ đề 5.3.Trong mọi thực hiện R, gọi CT0 là cấu hình đạt được tại thời điểm T0 và gọi R’ là hậu tố của R bắt đầu từ CT0. Ta có, sau i vòng đầu tiên của R’, trong mọi cây định tuyến, mọi đường đi từ gốc đến một nút có định danh trôi có ít nhất i liên kết.
Chứng minh. Tại vòng thứ nhất của R’, mọi nút có định danh trôi không phải là nút gốc, bởi vậy mọi đường đi từ gốc đến nút có định danh trôi có ít nhất một liên kết.
mọi nút trên đường đi từ K đến J trên cây htabK đều đã được chọn đưa vào tabP nhận K là nút liền sau P trên đường định tuyến. Bởi vậy, số liên kết trên đường đi từ P đến J trong cây tabP bằng số liên kết trên đường đi từ K đến J trên cây htabKcộng 1. Nếu J là nút có định danh trôi thì số liên kết trên đường đi từ K đến J trên cây htabKbé nhất là 1, do vậy số liên kết trên đường đi từ P đến J trong cây tabP bé nhất là 2.
Lập luận tương tự cho các vòng tiếp theo dẫn đến bổ đề được chứng minh. ■
Định lý 5.2.Mọi thực hiện đạt đến cấu hình CNF tại đó không có định danh trôi nào sau hữu hạn vòng sau T0. Các cấu hình tiếp sau CNF cũng không có định danh trôi.
Chứng minh. Theo cách kết nạp nút mới vào cây định tuyến được thực hiện bởi giải thuật, mỗi nút không được kết nạp vào cây định tuyến hơn một lần.
Theo Bổ đề 5.2, từ thời điểm T0 trở đi không xuất hiện thêm định danh trôi mới, do vậy tổng số định danh khác nhau có trong một thành phần liên thông (cả trôi và không trôi) là hữu hạn. Gọi Nmax là số định danh khác nhau của thành phần liên thông có nhiều định danh khác nhau nhất.
Giả sử tại vòng thứ i ≥ Nmax tính từ thời điểm T0 vẫn còn bộ trôi. Theo Bổ đề 5.3, số liên kết trên đường đi từ gốc đến nút có định danh trôi bé nhất là i, do vậy số nút (có định danh khác nhau) trên đường đi này ít nhất là i+1 > Nmax. Điều này mâu thuẫn với Nmax là số định danh khác nhau của thành phần liên thông có nhiều định danh khác nhau nhất.
CNFchính là cấu hình đạt được sau vòng thứ Nmax.■
Gọi dmax là đường kính lớn nhất của các thành phần liên thông. Gọi MINLEN là độ dài liên kết ngắn nhất và MAXLEN là độ dài liên kết dài nhất.
Xét một cấu hình bất kỳ, với P, Q là hai bộ xử lý bất kỳ, xét đường đi từ P đến Q trên cây tabP. Nếu trong mạng thực sự có đường đi từ P đến Q như đường đi được chỉ ra trong
tabP thì ta gọi đường đi trong tabP là đường đi thực, ngược lại ta gọi đường đi trong tabP
là khôngthực. Bộ <idQ, ., .,.> tabP ứng với đường đi thực được gọi là bộ thực, bộ <idQ, ., .,.> tabP ứng với đường đi không thực được gọi là bộkhông thực.
Bổ đề 5.4. Với thực hiện R bất kỳ, gọi R’’ là hậu tố của R sau cấu hình CNF. Sau dmax vòng đầu của R’’, với mọi P, Q thuộc cùng thành phần liên thông, tabP bao hàm t =
<idQ, dis, ., .>(1); và sau dmax*MAXLEN/MINLEN+1 vòng t.dis lớn hơn hoặc bằng khoảng cách từ P đến Q nếu t thực, t.dis lớn hơn khoảng cách từ P đến Q nếu t không thực (2).
Chứng minh. Sau vòng thứ nhất, các láng giềng của Q nhận được <idQ, 0, ., .> từ Q.
Sau vòng thứ hai, các bộ xử lý cách Q hai chặng nhận được <idQ, ., ., .> từ các bộ xử lý láng giềng của Q. Sau vòng thứ ba, các bộ xử lý cách Q ba chặng nhận được <idQ, ., ., .>
từ các bộ xử lý cách Q hai chặng, … Như vậy, sau dmax vòng, mọi bộ xử lý trong thành phần liên thông của Q đều có <idQ, ., ., .> trong cây định tuyến của mình. Phần thứ nhất của bổ đề được chứng minh.
Xét cấu hình đạt được sau dmax*MAXLEN/MINLEN+1 vòng từ CNF.
Trường hợp đường đi từ P đến Q trong tabP là thực: Dĩ nhiên độ dài đường đi đang xét lớn hơn hoặc bằng độ dài đường đi ngắn nhất từ P đến Q, tức t.dis trong t = <idQ, dis, .,.> tabP lớn hơn hoặc bằng khoảng cách từ P đến Q.
Trường hợp đường đi từ P đến Q trong tabP không thực: Gọi đường đi là L. Đường đi này phải được xây dựng từ một đường đi không thực L1 khác đến Q của một láng giềng K của P trong vòng thứ dmax*MAXLEN/MINLEN. Tương tự, L1 phải được xây dựng từ một đường đi không thực L2 khác của một láng giềng của K trong vòng thứ
dmax*MAXLEN/MINLEN-1, … Cứ lập luận như vậy, L phải được xây dựng từ một đường đi không thực L dmax*MAXLEN/MINLEN tại một bộ xử lý trong cùng thành phần liên thông tại vòng 1. Vì L có hơn L1 một liên kết, L1 có hơn L2 một liên kết, L2 có hơn L3 một liên kết, … nên L có ít nhất dmax*MAXLEN/MINLEN liên kết, vậy độ dài L ít nhất là
dmax*MAXLEN lớn hơn bất kỳ đường đi thực nào nên lớn hơn độ dài đường đi ngắn nhất từ P đến Q. Nói cách khác, t.dis trong <idQ, dis, .,.> tabP lớn hơn hoặc bằng khoảng cách từ P đến Q.
Phần (2) của bổ đề được chứng minh. ■
Bổ đề cũng đúng với các htab* ở cuối vòng vì htab* là tab* với dis của mỗi phần tử được cộng thêm độ dài cung liền kề.
Gọi CM là cấu hình đạt được sau CNF sau dmax*MAXLEN/MINLEN+1 vòng, ta có bổ đề sau.
P, sau vòng thứ i của R’’’, có ít nhất min(i, cP) bộ xử lý trong thành phần liên thông của P xác định đúng đường đi đến P – cây định tuyến có bộ <idP, dis, a, n> thực với dis bằng độ dài đường đi ngắn nhất đến P, n là nút trước P, a là nút liền kề trên một đường đi ngắn nhất đến P - trong đó cP là số bộ xử lý trong thành phần liên thông của P; và nếu tại vòng thứ i Q xác định đúng đường đi đến P thì các vòng tiếp theo Q cũng xác định đúng đường đi đến P.
Chứng minh.
Trường hợp i = 1: Vì trong mọi vòng P đều đưa <idP, 0, NIL, NIL> vào tabP nên P là nút xác định đúng đường đi đến P ngay từ vòng 1.
Trường hợp i = 2: Mọi láng giềng của P đều nhận được <idP, 0, NIL, NIL> từ P, cập nhật dis với độ dài cung liền kề và lưu trong htabP. Láng giềng K gần P nhất xây dựng cây định tuyến cho mình, xác định đường đi đến P dựa trên các cây định tuyến nhận được trước đó. Theo Bổ đề 5.4, tất cả các bộ <idP, dis, ., .> không thực đều có dis lớn hơn độ dài đường đi đến P, tất cả các bộ <idP, dis, ., .> thực đều có dis lớn hơn hoặc bằng độ dài đường đi đến P. Trong số các <idP, dis, ., .> thực có bộ có dis bằng độ dài đường đi đến P (bộ do P gửi đến), bởi vậy theo giải thuật chọn bộ có dis nhỏ nhất, một bộ thực có dis
bằng độ dài đường đi đến P được chọn. Nói cách khác, đường đi đến P được xác định đúng. Khi bộ thực được chọn để đưa vào bảng định tuyến, thành phần a được chỉnh sửa phù hợp với đường đi mới.
Trường hợp i > 2: Gọi tập các bộ xử lý đã xác định đúng đường đi đến P từ vòng i-1 là CP. Bộ xử lý ngoài CP, gần P nhất, và liền kề với ít nhất một bộ xử lý thuộc CP có bộ <idP, dis, ., .> thực có dis bằng độ dài đường đi đến P, các bộ <idP, dis, ., .> thực khác có
dis lớn hơn hoặc bằng độ dài đường đi đến P, các bộ <idP, dis, ., .> không thực có dis lớn hơn độ dài đường đi đến P, nên một trong các bộ <idP, dis, ., .> thực có dis bằng độ dài đường đi đến P được chọn. Thành phần a của bộ được chọn được chỉnh sửa phù hợp với đường đi mới.■
Định lý 5.3.Giải thuật đề xuất tự ổn định với LE.
Chứng minh. Gọi cmax là số bộ xử lý của thành phần liên thông có nhiều bộ xử lý nhất. Theo Bổ đề 5.5, tại cấu hình Cs đạt được sau cmax vòng kể từ cấu hình CM, mọi bộ xử lý đều xác định đúng đường đi đến tất cả các bộ xử lý trong cùng thành phần liên thông.
Định lý 5.2. cho thấy cấu hình Cs không có bộ trôi nào. Như vậy, tại cấu hình Cs, mỗi bộ xử lý đã có cây định tuyến đúng, và cây định tuyến này được cập nhật tại các láng giềng, tăng thành phần dis theo độ dài cung liền kề. Định lý 5.1. cho thấy Cs là cấu hình an toàn.■