Thủ tục Scan – And – Repair

Một phần của tài liệu Giải thuật di truyền giải bài toán phủ đỉnh nhỏ nhất (Trang 81 - 83)

Trong thuật toán di truyền, các toán tử lai ghép và đột biến được sử dụng để tìm kiếm không gian lời giải. Sau khi thực hiện các hoạt động này, cá thể con thu được có thể không phải là lời giải hợp lệ – không tương ứng với một phủ đỉnh của đồ thị. Để

khắc phục tình trạng đó, Huo Hongwei đã thiết kế thủ tục Scan – And – Repair để hiệu chỉnh kết quả không hợp lệ thành lời giải hợp lệ cho bài toán. Thủ tục này áp dụng phương thức tìm kiếm đơn giản, duyệt ma trận kề của đồ thị đã cho ứng với mỗi cá thể không hợp lệ, tìm và bổ sung những đỉnh không có trong phủ của đồ thị V’.

Hoạt động của toán tử này như sau.

Bước 1. Nếu đồ thị suy ra từ xâu nhị phân là một phủ của đồ thị đã cho thì dừng; ngược lại chuyển sang Bước 2.

Bước 2 (Scan). Nếu đỉnh thứ k của xâu nhị phân bằng 1 thì xóa các cạnh nối với k

trong ma trận kề, tức là thiết lập akj= 0 và ajk= 0 với mọi (k, j) thuộc E, 1 jn.

Bước 3 (Repair). Kiểm tra ma trận kề kết quả sau Bước 2, nếu có thành phần nào khác 0 trong ma trận thì ta thêm một đỉnh tương ứng với thành phần đó vào V’ và loại bỏ các cạnh tương ứng với nó từ ma trận kề kết quả.

Toán tử Scan – And – Repair sử dụng phương pháp tìm kiếm đơn giản có độ phức tạp thời gian là đa thức O(n2), do đó có thể thực thi hiệu quả trong thực tế.

Bên cạnh đó, để cải tiến lời giải tốt nhất của thuật toán, tác giả còn đưa vào thủ tục Local - Improvement để giảm bớt tối đa số đỉnh dư thừa trong phủ đỉnh kết quả. Với một xâu nhị phân bất kỳ, đầu tiên ta đưa tất cả các đỉnh tương ứng với bit 1 trong xâu lời giải vào một danh sách L. Sau đó, bắt đầu từ đỉnh đầu tiên trong L tương ứng với đỉnh i nào đó. Nếu tất cả các cạnh nối với i đều bị xóa, tức là aij = 0 và aji = 0 với mọi giá trị i, j thì đỉnh i sẽ là dư thừa và bị loại ra khỏi phủ đỉnh. Ngược lại, giữ lại đỉnh

i và xóa tất cả các cạnh nối với i, tức là thiết lập aij = 0 và aji = 0 với mọi giá trị i, j. Thủ tục được mô tả như sau:

Bước 1. Nếu đồ thị ứng với xâu nhị phân không phải là phủ đỉnh của bài toán đã cho thì dừng; ngược lại chuyển sang Bước 2.

Bước 3. Lấy đỉnh i ra khỏi danh sách L. Nếu tất cả các cạnh nối với i đều bị xóa, tức là

aij= aji với mọi giá trị i, j thì loại đỉnh i ra khỏi phủ; ngược lại xóa tất cả các cạnh nối với đỉnh này, tức là, đặt aij= aji= 0 với mọi giá trị i , j.

Bước 4. Nếu không còn đỉnh nào trong L chưa được xét thì dừng; ngược lại quay sang Bước 3 để xét đỉnh tiếp theo trong danh sách.

Trong thủ tục này, tác giả sử dụng phương pháp tìm kiếm first – fit để cải thiện kết quả. Nghĩa là, ngay khi tìm thấy một đỉnh dư thừa trong xâu nhị phân, thủ tục thực hiện loại bỏ đỉnh ra khỏi lời giải. Sau khi áp dụng thủ tục này, kích thước phủ đỉnh tương ứng với một số xâu nhị phân nào đó có thể giảm đi và do đó chất lượng lời giải được cải thiện.

Một phần của tài liệu Giải thuật di truyền giải bài toán phủ đỉnh nhỏ nhất (Trang 81 - 83)