2015-10-26 6 views
1

Я дал следующую проблему. На карте распространяется множество мест (например, около 200 футбольных клубов). Я хочу группировать местоположения на основе их расстояния друг к другу. Результатом должен быть список групп (от 10 до 20), так что расстояние, которое каждый футбольный клуб должен проехать, чтобы посетить все остальные клубы в своей группе, сводится к минимуму.Группа местоположения на карте на основе расстояния

Я уверен, алгоритм уже существует. Мне, вероятно, нужно только «официальное» название этой проблемы.

Может ли кто-нибудь мне помочь?

ответ

0

Если вы хотите выбрать максимальное расстояние d в начале (а затем определите, сколько групп достаточно, чтобы гарантировать, что команде не потребуется больше, чем это расстояние, чтобы добраться до другой команды в своей собственной группе), тогда вы можете сформулировать проблема как graph colouring задачи: сделать вершину для каждой команды, и положить край между двумя вершинами, когда расстояние между ними превышает д. Решение проблемы окраски графов присваивает каждой вершине «цвет» (только метку), так что (а) никакие две вершины, связанные краем, не имеют одинакового цвета, и (б) количество различных используемых цветов минимально. (Другими словами, ребра представляют собой «конфликты», что указывает, что эти две конечные точки не могут принадлежать к одной и той же группе.) Таким образом, здесь, каждый цвет соответствует группе, которая гарантированно состоять только из команд, которые все < = d друг от другое, и решение попытается свести к минимуму общее количество групп. Возможно, вам понадобится повторить несколько разных значений d, пока вы не получите решение с приемлемо несколькими группами.

Обратите внимание, что это NP-трудной задачей, так что это может занять много времени, чтобы найти точное решение (минимально-группа подсчета). Есть много эвристик, которые намного быстрее и все же выполняют достойную работу.

Смежные вопросы