У меня есть список непрозрачных объектов. Я могу только рассчитать расстояние между ними (не правда, просто установив условия для задачи):
class Thing {
public double DistanceTo(Thing other);
}
Я бы хотел сгруппировать эти объекты. Я хотел бы контролировать количество кластеров, и я бы хотел, чтобы «закрытые» объекты находились в одном кластере:
List<Cluster> cluster(int numClusters, List<Thing> things);
Может ли кто-нибудь предложить (и дать ссылку на ;-)) некоторые алгоритмы кластеризации (чем проще, тем лучше!) Или библиотеки, которые могут мне помочь?
Уточнение Большинство алгоритмов кластеризации требуют размещения объектов в некотором N-мерном пространстве. Это пространство используется для поиска "центроидов" скоплений. В моем случае я не знаю, что такое N, и при этом я не знаю, как извлечь систему координат из объектов. Все, что я знаю, это то, насколько далеко находятся два объекта. Я хотел бы найти хороший алгоритм кластеризации, который использует только эту информацию.
Представьте, что вы группируете на основе "запаха" объекта. Вы не знаете, как разместить «запахи» на 2D-плоскости, но вы точно знаете, похожи ли эти два запаха или нет.