Để chứng minh tính ñúng ñắn của giải thuật OMST, chúng ta trước hết xem xét một sốñịnh nghĩa sau:
Định nghĩa 3.3. Xét một mảnh MST tại một thực hiện nào ñó
•Đặt Un là hợp của tất cả “cây ảo” của các nút ở trong mảnh MST này
•Đặt Um là hợp của các liên kết trong thông báo DIFF ñang di chuyển trên các liên kết trong mảnh.
Thì “tập cây ảo” của mảnh MST ñó ñược ñịnh nghĩa là hợp của Un và Um
Định nghĩa 3.4. “Tập cây ảo” ñược gọi là có “tính bất biến không vòng lặp” nếu với mọi mảnh trên cây MST thật, “tập cây ảo” của nó không chứa chu trình.
Tính chất này của “tập cây ảo” ñóng một vai trò rất quan trọng trong việc chứng minh tính ñúng ñắn của giải thuật. Chỉ cần các thủ tục trong giải thuật ñảm bảo “tính bất biến” trước và sau khi thực hiện, thì quá trình ghép và xây dựng cây khung sẽ luôn chính xác. Trong quá trình thực hiện giải thuật, “cây ảo” trên các nút không phải luôn luôn phản ánh chính xác cây thật. Ví dụ, một nút có thể phát hiện ra một liên kết trong mảnh bị mất, nó sẽ hủy bỏ liên kết này trong dữ liệu nhưng chưa kịp thông báo cho các nút khác. Điều này dẫn ñến “cây ảo” của nút này sẽ khác với “cây ảo” của các nút khác trong cùng một mảnh. Tuy nhiên, nếu thuật toán luôn ñảm bảo “tính bất biến không vòng lặp”, thì các nút trong mảnh sẽ không chọn một liên kết ngoài thay thế trước khi biết sự thay ñổi này. Nhờ ñó, cây khung MST ñược xây dựng sẽ không có chu trình.
Chúng ta có một sốñịnh lý sau:
Định lý 3.5:. Chừng nào thuật toán còn ñảm bảo ñược “tính bất biến không vòng lặp”, thì các mảnh MST hiện thời sẽ không có chu trình
Các liên kết trên các mảnh MST luôn luôn xuất hiện trên “cây ảo” của các nút kề với liên kết ñó. Vì vậy, tập các liên kết trong mảnh MST sẽ là tập con của “tập cây ảo” của mảnh. Nếu “tập cây ảo” không có chu trình thì mảnh MST tương ứng cũng không có chu trình. Định lý ñược chứng minh.
Định lý 3.6:. Chừng nào thuật toán còn ñảm bảo ñược “tính bất biến không vòng lặp”, thì thủ tục FIND luôn kết thúc, và nút gốc sẽ biết sự kết thúc này.
Chứng minh:
Với mọi nút u trong mảnh, nếu u không bị ngắt khỏi mảnh (do thay ñổi topo mạng), thì sẽñảm bảo những ñiều sau ñây:
•Nếu u không phải là gốc, sau khi u nhận ñược phản hồi của các nút con, u sẽ gửi phản hồi của nó cho nút cha
•Nếu u là gốc, sau khi u nhận ñược phản hồi của các nút con, thủ tục FIND sẽ kết thúc tại u
•Khi u nhận ñược tất cả các phản hồi của nút con, thì thủ tục FIND ñã kết thúc tại tất cả các nút con của nút u.
Các sự thay ñổi trong mạng không ảnh hưởng ñến những chứng minh trên. Chúng ta xét 2 trường hợp:
•Một liên kết ñược phục hồi, thủ tục FIND không bị ảnh hưởng vì liên kết này không thuộc mảnh.
•Nếu liên kết giữa u và một nút con bị mất, u sẽ không ñợi phản hồi từ nút con này, vì vậy các chứng minh trên vẫn chính xác. Đồng thời, nút con của u sẽ trở
thành gốc của một cây mới và tiến hành lại các thủ tục UPDATE và FIND.
Định lý 3.7:. Thủ tục UPDATE không làm thay ñổi “tính bất biến không vòng lặp” trong “tập cây ảo”
Định lý này chứng minh tương ñối phức tạp, chi tiết có thể xem trong tài liệu tham khảo [7].
Các thủ tục khác trong thuật toán không làm thay ñổi “cây ảo” tại các nút. Kết hợp với ñịnh lý trên, “tính bất biến không vòng lặp” luôn ñược ñảm bảo trong quá trình thực hiện giải thuật.
CHƯƠNG 4. ĐỀ XUẤT MỘT SỐ GIẢI THUẬT GIẢI QUYẾT BÀI TOÁN