Chương 4. THUẬT TOÁN DI TRUYỀN GIẢI BÀI TOÁN PHỦ ĐỈNH
4.1. Cách tiếp cận bài toán của Ketan Kotecha và Khuri [11] [16]
4.1.6. Toán tử lai ghép
Thuật toán dùng cách mã hóa nhị phân nên có thể sử dụng các phương pháp lai ghép đã được trình bày trong phần trước. Nhưng có một vấn đề xảy ra khi sử dụng các cách lai ghép phổ biến này với cách mã hóa trực tiếp đó là: Các cá thể con sinh ra có thể là không hợp lệ tức là xâu con sinh ra không thỏa mãn điều kiện tương ứng với một phủ đỉnh. Do đó phải kiểm tra điều kiện phủ đỉnh nếu muốn dùng các phương pháp lai
ghép này. Tức là phải hiệu chỉnh kết quả nếu các cá thể con sinh ra chưa thỏa mãn điều kiện là phủ đỉnh. Ketan Kotecha đề xuất toán tử lai ghép HVX như sau.
Xét đồ thị vô hướng G = (V, E), với V là tập các đỉnh và E là tập cạnh của G. VT và ET là bảng đỉnh và bảng cạnh tương ứng, v là tập đỉnh của cá thể lời giải. P1 và P2 là hai cá thể bố mẹ được lựa chọn để lai ghép. V’ là cá thể con được sinh sau phép lai ghép.
Thủ tục HVX begin
V’ ={ }
Tạo các bảng VT và ET
VT= (F(v), N(v)), trong đó F(v) là tần xuất của đỉnh v trong P1 và P2, N(v) là bậc của đỉnh v trong G, với v thuộc P1 và v thuộc P2 ET=E(x, y) với E thuộc G
while ET <> {} do
Chọn v1 thuộc VT sao cho N v( )1 N v( ) với mọi vVT. Nếu có nhiều đỉnh v1 có cùng bậc thì chọn đỉnh có tần suất F(v1) cao nhất. Nếu vẫn có nhiều hơn một đỉnh làm ứng viên thì lựa chọn ngẫu nhiên. Giả sử đỉnh được chọn là v1.
Cập nhật: ET = ET –{E{x, y} | x= v1 hoặc y = v1} V’ = V’ {v1}
Kết thúc vòng while Return V’
end
Các cá thể khởi tạo được sinh ngẫu nhiên bằng cách lựa chọn từng đỉnh một sao cho tất cả các cạnh đều được bao phủ. Trong các thế hệ tiếp theo, hai cá thể được chọn dựa trên độ thích nghi làm đầu vào cho HVX. Giả sử với đồ thị Hình 4.1, hai cá thể cha P1 và P2 được chỉ ra như sau :
Hình 4.1. Thủ tục lai ghép HVX Thủ tục HVX sinh ra cá thể con như sau :
1. Tạo ra hai bảng VT (bảng 4.1) và ET (bảng 4.2).
2. Lựa chọn đỉnh có N(v) cao nhất từ VT. Như trong bảng 4.3, với run 1 thì nó là đỉnh 3.
3. Loại tất cả các cạnh liên quan tới đỉnh 3 ra khởi ET.
4. Thêm 3 vào V’.
Lặp lại thủ tục này cho đến khi ET trở nên rỗng và N(v) bằng 0 với mọi v thuộc VT.
Thủ tục này được minh họa từng bước trong bảng 4.3.
Bảng đỉnh VT
Đỉnh (v) Số lần xuất hiện v trong cha mẹ F(v) Số cạnh nối với đỉnh
1 2 4
2 1 4
3 2 5
4 2 3
6 1 2
Bảng 4.1. Bảng đỉnh VT
Bảng cạnh ET
Đỉnh
1 2 3 4 5
2 1 3 4 6
3 1 2 4 5 6
4 1 2 3
5 1 3
6 2 3
Bảng 4.2. Bảng cạnh ET Hoạt động của HVX được mô tả trong bảng sau
Đỉnh (v)
F(v) N(v) Run 1 v1 =3 V’ ={3}
N1(v1)
Run 2 v1 =1 V’ ={3, 1}
N2(v1)
Run 3 v1 =2 V’ ={3, 1, 2}
N3(v1)
1 2 4 3 0 0
2 1 4 3 2 0
3 2 5 0 0 0
4 2 3 2 1 0
6 1 2 1 1 0
Bảng 4.3. Kết quả của thủ tục lai ghép HVX Từ bảng kết quả này cá thể con V’ được sinh ra là : V’=1 1 1 0 0 0
Ngoài thủ tục theo kiểu heuristic như HVX cho toán tử lai ghép ta có thể dùng một toán tử lai ghép khác dựa trên xác suất. Toán tử lai ghép này gần giống với HVX nhưng có một điểm khác đó là việc chọn các đỉnh vào V’ là ngẫu nhiên.
Tác giả Khuri đề xuất một thủ tục lai ghép như sau: Gọi P1 và P2 là hai cá thể được chọn để lai ghép và V* là con được tạo ra. Gọi V1 và V2 là hai tập độc lập tương ứng
với hai cá thể là P1 và P2 hay V1 và V2 là tập các bit 0 trong xâu chứa lời giải tương ứng với P1 và P2. Gọi V=V1 U V2, ta tạo ra con V* bằng cách sau :
Kết nạp các đỉnh trong V vào trong tập V’ lần lượt theo bậc của nó từ nhỏ đến lớn.
Nếu có hai đỉnh có bậc bằng nhau thì ưu tiên đỉnh nằm trong cả hai tập V1 và V2.
Nếu chúng cùng nằm trong cả V1 và V2 thì chọn ngẫu nhiên.Việc chọn đỉnh tiếp theo để kết nạp vào phải thỏa mãn điều kiện nó độc lập với những đỉnh đã chọn trước nó.
Cá thể con được sinh ra V* có xâu biểu diễn là xâu có các bit 0 là tập V’. Với cách lai ghép này, cá thể con sinh ra chưa hẳn đã tốt hơn so với các cá thể cha mẹ của nó.