Рассмотрим множество S всех двоичных векторов длины n, где каждый содержит ровно m единиц; поэтому в каждом векторе есть нули нулей.
Моя цель - построить число, k, векторов из S так, чтобы эти векторы были как можно более разными друг от друга.
В качестве простого примера возьмем n = 4, m = 2 и k = 2, тогда возможное решение: [1,1,0,0] и [0,0,1,1].
Кажется, что это открытая проблема в литературе теории кодирования (?).
Есть ли способ (то есть алгоритм) найти субоптимальное, но хорошее решение?
Является ли Хэмминг расстоянием правильной оценки эффективности для использования в этом случае?
Некоторые мысли:
В этой статье авторы предлагают пару алгоритмов, чтобы найти подмножество векторов такое, что попарно расстояние Хэмминга> = некоторое значение, d.
Я применил случайный подход следующим образом: возьмем множество SS, которое инициализируется любым вектором из S. Затем рассмотрим оставшиеся векторы в S. Для каждого из этих векторов я проверяю, имеет ли этот вектор хотя бы расстояние d по отношению к каждому вектору в SS. Если это так, то он добавляется к SS.
Принимая максимальное возможное d, если размер SS равен> = k, то я рассматриваю SS как оптимальное решение, и я выбираю любое подмножество k векторов из SS. Используя этот подход, я думаю, что полученный SS будет зависеть от тождества начального вектора в SS; т.е. существует множество решений (?).
Но как действовать, если размер SS равен <k?
Из предложенных алгоритмов в статье я понял только случайный. Меня интересует двоичный лексикографический поиск (раздел 2.3), но я не знаю, как его реализовать (?).