Các cách tiếp cận lập trình di truyền mã hóa cặp nút trình bày trong chương này dựa trên mã hóa cạnh cho đồ thị trước đó bởi Luke và Spector (1996). Cách tiếp cận của họ bao gồm một topo mạng độc lập về vị trí với số lượng nút và các liên kết được chỉ ra bởi chương trình GP. Tuy nhiên ở đây số lượng nút là cố định từ trước. Chương trình GP chỉ cần chỉ được ra liên kết.
Trong cách tiếp cận lập trình di truyền nút kết nối CN, chương trình này lại mô tả cách mà mạng cần được kết nối. Tuy nhiên, với cách tiếp cận mã hóa cặp cạnh NP,
cây chương trình được đánh giá theo hướng từ cao xuống thấp: nút cha trước sau đến nút con. Các hàm xử lý cặp nút (thể hiện bởi hai nút định danh a và b) sau đó truyền vào cặp nút có thể được sửa đổi cho mỗi nút con của chúng. Tương tự, hằng số kết thúc xử lý cặp nút được truyền cho chúng. Việc thực thi tổng quát của cây này bắt đầu với (a,b)=(0,0).
Hình 6.4 Chương trình CN cho mạng đích
Cách tiếp cận này sử dụng cặp nút hiện thời tương tự với khái niệm trong Luke và Spector (1996) nhưng không có bất kỳ cấu trúc tương đương nào cho ngăn xếp nút của chúng. Hai dạng mã hóa cặp được mô tả ở đây (NP1 và NP2) có sự khác biệt ở các tham số của hàm hoặc hằng kết thúc thể hiện ở bảng 6.1.
Hàm “add” thêm một liên kết giữa cặp nút hiện tại (a,b), giả sử a b≠ ; trong khi đó hàm kết thúc “cut” loại bỏ liên kết giữa các cặp nút hiện tại nếu có. Để cho phép cặp
nút hiện tại thay đổi cần di chuyển thực thi của chương trình đến một điểm khác trong mạng, 5 hàm (da, ia, ia2, ia4, ia8) thay đổi giá trị của biến a. Việc lựa chọn 1, 2, 4, 8 cho các giá trị mà a có thể được tăng thông qua xem xét chiều dài mô tả tối thiểu. Bằng cách đưa ra hàm đặt chỗ (rev), các sửa đổi tương tự được thực hiện đối với biến b. Hàm nhân đôi db1 và hàm nhân ba tp1 cho phép các toán tử của cặp nút mà gần nhau về số học được thực hiện sử dụng cây phân cấp nhỏ hơn. Lấy ví dụ, trong hình 6.5, hàm tp1 ở góc trái- dưới của sơ đồ mà chỉ cặp nút (2,1) cho phép các đường liên kết (2,1), (3,1) và (4,1) được thêm vào cây con của nó. Nếu không có hàm tp1, một cây tương đương chỉ dựa trên hàm adds, ia?s, và nops sẽ sâu hơn 2 mức. Cuối cùng hàm kết thúc nop không làm gì với hai cặp nút của nó, do vậy cho phép một nhánh chương trình kết thúc mà không cần phải thêm hoặc loại bỏ nút.
Trong NP1, hàm “add” là hàm chỉ có một tham số, trong khi đó hàm NP2 không có tham số. Hơn nữa, trong NP1, các hàm mà biến đổi biến a chỉ có một tham số, ở NP2 thì các hàm này có 2 tham số. Tác dụng của sự khác biệt này là để khuyến khích các cây chương trình hẹp hơn và cao hơn trong NP1, với nhiều hơn các toán tử trong bổ sung liên kết và cây chương trình rộng hơn, nông hơn trong NP2 với việc bổ sung liên kết ở mỗi nhánh chương trình. Điều này được minh họa bởi cây chương trình thủ
công (cho mạng đích ở hình 6.3) được đưa ra tại hình 6.5 và 6.6 sử dụng tương ứng NP1 và NP2. Ở cả 2 sơ đồ, cặp nút hiện tại được chỉ ra đối với mỗi hàm “add” hoặc hàm kết thúc. Cần phải chú ý rằng cây ở hình 6.5 có độ sâu là 10 sử dụng 28 nút, trong khi đó, ở hình 6.6 cây chỉ có độ sâu 7 cấp và chỉ sử dụng 24 hàm và hàm kết thúc.