Mã hóa CB-TCR [37] được sử dụng trong giải thuật di truyền do Sang-moon Soak đề xuất. Trong cách mã hoá mới này thì mỗi cây khung được biểu diễn bởi một xâu có độ dài định danh nút, trong đó mỗi định danh nút đơn giản là một số nằm trong khoảng (Ở đây, ta gán nhãn cho các đỉnh của đồ thị từ
) với là số nút; mỗi nút xuất hiện ít nhất 1 lần trong chuỗi đó.
Phương án ban đầu được khởi tạo ngẫu nhiên. Cách mã hoá này làm việc bởi việc rút gọn một tập các cạnh từ chuỗi và sau đó chạy thuật toán "định hướng xây dựng cây theo kiểu phá vỡ chu trình- Cycle Breaking Tree Construction Routing- CBTCR" trên tập cạnh này.
~ 88 ~
Hình 4-7 Giải thuật xây dựng cây khung từ một chuỗi CB-TCR
Ý tưởng của CB-TCR là lấy các cạnh trong một tập có thứ tự cho trước cho đến khi cạnh được lấy tạo ra chu trình. Tại điểm này, chu trình có chứa cạnh vừa mới thêm vào, chúng ta sẽ xét tập đầy đủ các cạnh của chu trình đó là Ec. Cạnh có giá cao nhất trong Ec sẽ được loại bỏ và chu trình sẽ được phá vỡ một cách ngẫu nhiên. Và chúng ta sẽ xét đến phần tử tiếp theo trong chuỗi mã hoá… Cho đến hết chuỗi mã hoá và cây xây dựng được có đủ cạnh(phần sau ta sẽ giải thích tại sao với chuỗi mã hoá như vậy, dùng CB-TCR ta sẽ thu được cây khung có nghĩa-có đủ
cạnh và không có chu trình).
1. Đặt là tập cạnh rút gọn.
2. , ,
3. Nếu , dừng thuật toán, trả về cây T
4. Loại bỏ cạnh từ E 5. Nếu và ; ; ; Quay về bước 3; 6. Nếu và ; ; ; Quay về bước 3; 7. Nếu và và ; Quay về bước 3; 8. Nếu và và
Đặt C là tập cạnh trong chu trình ở trong cây T;
là cạnh có trọng số lớn nhất trong C;
; ;
~ 89 ~ Một số đặc điểm của chuỗi CB-TCR:
Bất kì một xâu bao gồm định danh nút nào trong đó các nút xuất hiện ít nhất một lần đều mã hoá một cây khung có nghĩa khi sử dụng thuật toán "định hướng xây dựng cây theo kiểu phá vỡ chu trình", CB-TCR.
Cho trước cây khung có N nút, sẽ có một xâu có tối đa định danh nút mà khi sử dụng thuật toán giải mã CB-TCR mã hoá chính xác cây khung đó. Ví dụ: 4 1 3 2 5 1 2 5 7 8 9
Hình 4-8 Đồ thị minh họa cho mã hóa CB-TCR
Đồ thị này có 6 đỉnh nên độ dài xâu mã hoá là .
Với xâu mã hoá là , ta sẽ áp dụng CB-TCR như sau: Bước khởi tạo: , ,
Xét n0=1 và n1=5, n0,n1 U, (n0,n1)T thêm (1, 5) vào T. Xoá 1,5 khỏi U.
U={2,3,4}. T={(1,5)}
Xét n1 =5, n2 =2, có n1U,n2 U,(n1,n2)T vì vậy ta thêm (5,2) vào cây T. Loại 2 ra khỏi U. U={3,4}. T={(1,5), (2,5)}
Xét n2 =2, n3 =1, có n2U,n3U,(n1,n2)T. Ta thêm (2,1) vào cây. Cạnh này sẽ tạo ra chu trình trên cây (1,5,2,1). Ta tìm cạnh lớn nhất trong chu trình trên, đó là cạnh (2,5) và loại bỏ cạnh này ra khỏi cây.T={(1,5), (1,2)}.
~ 90 ~ Cây khung thu được như sau:
4 1 3 2 5 1 2 5 7
Hình 4-9 Cây khung sinh ra từ chuỗi CB-TCR (1,5,2,1,4,3,2,5)