Yurets писал(а):IvanLis писал(а):Вы определитесь с условиями задачи.
Сначала была тройка, теперь четверка.
Чем конкретнее будут заданы условия, ограничения и критерий, тем проще написать алгоритм.
Хотелось бы сформировывать четверки, но, если таковых нет то тройки. СМысл такой
Делать работу за Вас никто не станет.
Я могу дать направление в котором двигался бы я, это лично мое мнение и не является аксиомой.
Сначала попытаться решить задачу перебора в "лоб", но повторяюсь это возможно только при малом количестве точек!
------------------
Дано: 9 точек на 2D плоскости.
Необходимо: сформировать три группы точек, по 3 точки в группе.
Критерий: минимум суммы суммы расстояний между точками по Евклидовой метрике - Вес.
--------
Если не заморачиваться над формирование групп, то всего возможно 9!=362880 вариантов.
Каждый из вариантов будем оценивать как сумму расстояний всех групп. Расстояние в группе из трех точек будем рассчитывать (опять для упрощения и унификации) как сумму расстояний между точками "каждая с каждой", итого это 3 точки у каждой 2 соседа, получаем 6 расстояний.
Все что остается, это просчитать все возможные комбинации, вычислить для них Вес и выбрать комбинацию с минимальным Весом или одно из них в случае равенства критерия (Парето). Это и будет оптимальное решение.
-----------------------------
Аналогичным образом можно сформулировать задачу и для четырех точек, решение аналогично. Только в группе будет уже 4*3=12 расстояний.
----------------------------
А уже потом пытаться оптимизировать решение. Первое что я вижу, это формирование групп. Т.к. смысла их переставлять внутри нет.
Потом расчет Веса для группы, например для точек достаточно посчитать три расстояния, а не шесть, но это по сравнению с перебором "капля в море".
При большом количестве точек задача перебором не решается. Нужно использовать альтернативные алгоритмы поиска "квази-оптимального решения".
Часто используются генетические алгоритмы.
Возможно перед перебором выполнить так называемую "релаксацию", это позволит снизить размерность задачи.
-----------------
Теперь Вам наверное понятно, почему ответа Вы не дождались и не дождетесь. Потому что разбираться в чужом коде, а еще заведомо неверным, никто не станет.
Да и читать лекции и разжевывать давно известные методы и алгоритмы никто не станет.
Пользуйтесь поиском, каждый из этапов описанного мной решения, описаны многократно и подробнейшим образом.