На евклидовой плоскости заданы

точек. Как разделить их на

групп таким образом, чтобы расстояния между точками в группе было наименьшим?

Интересуют алгоритмы подобных разбиений множества точек на подмножества. Хорошо бы ещё, чтобы можно было задавать размеры искомых групп, скажем, чтобы в каждой из

групп было не менее

точек.