我的基因组是图中顶点的排列(Salesman的路径).
我应该如何在我的基因组上进行交叉操作?
在哪里可以找到C#中我的问题的实现?
关键的洞察是将排列表示为其反转序列,即,对于每个元素i,存储在[i]中,在排列中i比在i左侧多少个元素.与直接表示不同,对于[i]的唯一约束是局部的,即[i]不能大于N-i.这意味着两个有效反转序列的简单交叉总是产生两个有效的反转序列 – 不需要特殊处理重复元素.