Chciałbym uszeregować lub posortować kolekcję przedmiotów (o potencjalnie większych rozmiarach niż 100 000), gdzie przedmioty w kolekcji nie mają wewnętrznej (porównywalnej) wartości, zamiast tego wszystko, co mam, to porównania między dowolnymi dwie pozycje, które zostały dostarczone przez użytkowników w subiektywny sposób.Algorytm porównywania oparty na porównaniu
Przykład: Rozważ kolekcję z elementami [a, b, c, d]
i porównania użytkowników: b > a
, a > d
, d > c
. Prawidłowa kolejność tej kolekcji to [b, a, d, c]
.
Ten przykład jest prosty, jednak nie może być bardziej skomplikowane przypadki:
- Ponieważ porównania są subiektywne, użytkownik może również powiedzieć, że
c > b
. W takim przypadku spowoduje to konflikt z powyższym zamówieniem. - Możesz także nie mieć porównań, które "łączą" wszystkie elementy, tj.
b > a
,d > c
. W takim przypadku zamówienie jest niejednoznaczne. Może to być[b, a, d, c]
lub[d, c, b, a]
. W takim przypadku zamawianie jest dopuszczalne.
W miarę możliwości dobrze byłoby uwzględnić wiele przypadków tego samego porównania i zwiększyć masę zdarzeń o większej liczbie wystąpień. Ale rozwiązanie bez tego warunku byłoby nadal dopuszczalne.
Podobną aplikację tego algorytmu wykorzystała aplikacja Zapperberga w FaceMash, gdzie oceniał ludzi na podstawie porównań (o ile dobrze zrozumiałem), ale nie byłem w stanie znaleźć tego, czym był ten algorytm.
Czy istnieje już algorytm, który może rozwiązać powyższy problem? Nie chciałbym spędzać wysiłku próbując wymyślić jeden, jeśli tak jest. Jeśli nie ma określonego algorytmu, czy są jakieś rodzaje algorytmów lub technik, które możesz wskazać mi?
Jeśli jesteś zainteresowany (bardziej niż opracowywaniem), powinieneś spróbować rankade, naszego systemu rankingowego. Różni się od systemu rankingowego Elo i Glicko (tutaj jest [porównanie] (https://rankade.com/ree#ranking-system-comparison)), ponieważ może on zarządzać meczami z 2+ frakcjami (tj. Przedmiotami w twoim scenariuszu). W przeciwieństwie do TrueSkill ranking jest bezpłatny i łatwy w użyciu. –