Эта проблема известна как (дискретная) проблема $ k $ -центра и является хорошо известной проблемой кластеризации. Хотя задача в целом является NP-полной, существует очень простой алгоритм, который генерирует решение в пределах фактора 2 оптимального решения в любой метрике (включая подразумеваемое двумерное евклидово расстояние вопроса). Это связано с Гонсалесом, и выглядит следующим образом
- Укажите любую точку
- Найди самого дальнего соседа
- Найдите точку, наиболее удаленную от этих двух
- и так далее, пока у вас не будет k очков.
Радиус R, который вы в итоге получите, является расстоянием от этой последней точки до следующей самой дальней точки. По построению вы гарантированно закроете все точки дисками радиуса с центром в каждой из k точек, и по неравенству треугольника это R будет в 2 раза больше оптимального радиуса.
Если вы знаете, что находитесь в плоскости, вы можете сделать несколько лучше в теории (в том числе получить точный алгоритм по полиному по времени от n и экспоненте от k), но на практике приведенный выше алгоритм, вероятно, будет самым простым