Algoritmo de clasificación basado en comparación

Me gustaría clasificar u ordenar una colección de elementos (con un tamaño potencialmente mayor de 100,000) donde los elementos de la colección no tienen un valor intrínseco (comparable), en su lugartodo lo que tengo son las comparaciones entre dos elementos que han sido proporcionados por los usuarios de manera subjetiva.

Ejemplo: considere una colección con elementos[a, b, c, d] y comparaciones por usuariosb > a, a > d, d > c. El orden correcto de esta colección sería[b, a, d, c].

Este ejemplo es simple, sin embargo, podría haber casos más complicados:

Como las comparaciones son subjetivas, un usuario también podría decir quec > b. En cuyo caso eso causaría un conflicto con el pedido anterior.Además, es posible que no tenga comparaciones que "conecten" todos los elementos, es decirb > a, d > c. En cuyo caso el orden es ambiguo. Podría ser[b, a, d, c] o[d, c, b, a]. En este caso, cualquier pedido es aceptable.

Si es posible, sería bueno tener en cuenta de alguna manera múltiples instancias de la misma comparación y darles más peso a aquellos con ocurrencias más altas. Pero una solución sin esta condición aún sería aceptable.

La aplicación FaceMash de Zuckerberg utilizó una aplicación similar de este algoritmo, donde clasificó a las personas según las comparaciones (si lo entendí correctamente), pero no he podido encontrar cuál era realmente ese algoritmo.

¿Existe algún algoritmo que ya pueda resolver el problema anterior? No me gustaría gastar esfuerzo tratando de encontrar uno si ese es el caso. Si no hay un algoritmo específico, ¿hay quizás ciertos tipos de algoritmos o técnicas a los que me pueda indicar?