Вариант решения этой проблемы оптимизации:
При заданном пороговом значении вы хотите узнать, возможно ли найти подмножество из точек, чтобы каждая пара точек в подмножестве находилась на расстоянии не менее единиц.tnt
Конечно, если вы можете решить проблему решения, мы можем решить вашу проблему оптимизации (путем бинарного поиска на пороге ).t
Теперь эта проблема решения является проблемой нахождения независимого множества в евклидовом графе, где точки имеют ребро между ними, если они находятся на расстоянии друг от друга. Один из подходов заключается в рассмотрении стандартных алгоритмов аппроксимации для независимого множества.x,y≤t
Более того, вы можете посмотреть на алгоритмы для независимого множества в графах геометрических пересечений . Рассмотрим набор дисков, где каждый диск имеет диаметр и с центром в одной из точек в наборе . Теперь мы можем сформировать геометрический граф пересечений, где есть одна вершина для каждого диска и ребро между двумя вершинами, если их соответствующие диски пересекаются. Проблема нахождения независимого множества в этом виде графа была изучена и есть алгоритмы аппроксимации для этой проблемы, которые вы могли бы попробовать использовать.tC
Если вам нужен точный оптимум, а не приближение, вы можете использовать любой из стандартных «больших молотков», такой как решатель SAT или решатель ILP. Существует простой способ сформулировать проблему независимого набора в качестве экземпляра SAT, и затем вы можете применить к нему решатель SAT, чтобы выяснить, существует ли подмножество из точек, которые все отстоят друг от друга.n≥t