Сравнительный алгоритм ранжирования
Я хотел бы ранжировать или отсортировать коллекцию предметов (с размером, потенциально превышающим 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, где он оценивал людей на основе сравнений (если я правильно понял), но я не смог найти, что это был за алгоритм на самом деле.
Есть ли алгоритм, который уже существует, который может решить проблему выше? Я не хотел бы тратить усилия, пытаясь придумать один, если это так. Если нет конкретного алгоритма, возможно, есть ли определенные типы алгоритмов или методов, на которые вы можете указать мне?