Я хотел бы ранжировать или отсортировать коллекцию элементов (с размером потенциально больше 100 000), где элементы в коллекции не имеют внутреннего (сопоставимого) значения, вместо этого все, что у меня есть, это сравнения между любыми двумя элементами , которые были предоставлены пользователями субъективно.
Пример: рассмотрим коллекцию с элементами [a, b, c, d]
и сравнения пользователей b> a
, a> d
, d> c
. Правильный порядок этой коллекции будет [b, a, d, c]
.
Этот пример прост, однако могут быть более сложные случаи:
c> b
. В этом случае это может привести к конфликту с указанным выше порядком. b> a
, d> c
. В этом случае порядок будет неоднозначным. Это может быть [b, a, d, c]
или [d, c, b, a]
. В этом случае приемлемо любое упорядочение. Если возможно, было бы неплохо как-то учесть несколько экземпляров одного и того же сравнения и придать больший вес тем, у которых больше совпадений. Но решение без этого условия все равно было бы приемлемым.
Аналогичное применение этого алгоритма использовалось приложением Цукерберга FaceMash, где он оценивал людей на основе сравнений (если я правильно понял), но я не смог найти, что этот алгоритм действительно был.
Есть ли уже существующий алгоритм, который может решить указанную выше проблему? Я не хотел бы тратить усилия на то, чтобы придумать такой алгоритм, если это так. Если нет конкретного алгоритма, возможно, есть определенные типы алгоритмов или методов, на которые вы можете указать мне?