Я действительно не знаю, что вы имеете в виду под "типичным кроссовером", но я думаю, что вы могли бы использовать кроссовер, аналогичный тому, который часто используется для перестановок:
- take m целых от первого родителя ( m <<em> n , где n - количество целых в ваших наборах)
- сканирует второй и заполняет из него ваше подмножествос ( нм ) свободными (не входящими в подмножество) вставками.
Таким образом, у вас будет n вставок от первого и nm int от второго родителя, без дублирования.
Звучит как настоящий кроссовер для меня :-).
Полагаю, было бы полезно не выполнять какие-либо шаги для упорядоченных множеств (или использовать итератор, в котором порядок возвращаемых элементов каким-либо образом коррелирует с естественным упорядочением целых чисел), в противном случае либо меньшие, либо большие числа получатболее высокий шанс быть в ребенке делает ваш поиск предвзятым.
Если это лучший метод, зависит от проблемы, которую вы хотите решить ...