2010-12-29 3 views
0

Je cherchais à ce que les membres soumettent leur top-10 liste de quelque chose, ou leur top 10 des classements, puis ont un algorithme combinent les résultats. Y a-t-il quelque chose comme ça?Les classements soumis par l'utilisateur

Merci!

+6

Je pense que c'est la question la plus vague que j'ai jamais vue ici. Ou au moins dans le top 10. – Oded

+0

Vague et spécifique à la fois. "Quel classement algorithmique a le plus de sens pour agréger une liste décente des 10 meilleurs?" Gardez-le ouvert, les réponses devraient être dignes. –

+0

Dans l'application de la vie réelle, le football collégial utilise les classements combinés de l'AP et des entraîneurs pour déterminer leur classement.Je n'ai rien trouvé qui révèle ce qu'ils utilisent pour combiner les classements, mais j'aimerais essentiellement faire la même chose. – killerbarney

Répondre

0

Vous pouvez simplement additionner le total pour chaque élément du classement donné par un utilisateur, puis les trier.

-à-dire:

A = (a,b,c) 
B = (a,c,b) 
C = (b,a,c) 
D = (c,b,a) 
E = (a,c,b) 
F = (c,a,b) 

a = 1 + 1 + 2 + 3 + 1 + 2 = 10 
b = 2 + 3 + 1 + 2 + 3 + 3 = 14 
c = 3 + 2 + 3 + 1 + 2 + 1 = 12 

Ainsi,

  1. un
  2. c
  3. b
1

Ahhhh, qui est ouvert bien. Considérons un simple cas où seulement deux personnes votent:

1 ALPHA 
2 BRAVO 
3 CHARLIE 

1 ALPHA 
2 DELTA 
3 BRAVO 

Nous ne pouvons pas uniquement par le comte ... ALPHA doit évidemment gagner, mais il a les mêmes voix que BRAVO. Pourtant, nous devons éviter un cas où seulement quelques votes de première place dominent une quantité massive de votes de la 10ème place. Pour ce faire, je suggère ce qui suit:

$score = log($num_of_answers - $rank + 2) 

La première place serait alors la peine un peu plus d'un point, et la dixième place obtiendrait .3 points. Cette mise à l'échelle logarithmique empêche la dominance ridicule, mais donne toujours du poids aux classements. De ces votes par exemple (et en supposant qu'ils étaient le top 3 d'une liste de 10), vous obtiendrez:

ALPHA: 2.08 
BRAVO: 1.95 
DELTA: .1 
CHARLIE: .95 

Pourquoi? Eh bien, c'est subjectif. Je pense que sur une très longue liste, 4 000 votes à la 10e place valent plus de 1 000 votes à la 1re place. Vous pouvez le redimensionner différemment en changeant la base de votre journal (naturel, 2, etc.), ou choisir un autre système.

-1

Je pense que vous pouvez résoudre ce problème en utilisant un max flow algorithm, pour créer un classement global , en supposant les éléments suivants:

  1. Chaque élément unique à partir de la liste des éléments est un nœud dans un graphe. Par exemple. S'il y a 10 choses à voter, il y a 10 nœuds.
  2. Un tronçon va du nœud * a * au nœud * b * si * a * est immédiatement avant * b * dans un classement utilisateur unique.
  3. Le dernier nœud créé à partir d'un classement submitted_ utilisateur _single aura un bord pointu à l'évier * *
  4. Le premier noeud créé à partir d'un classement submitted_ utilisateur _single aura un bord entrant de la source * *

Cela devrait vous donner une agrégée top-10 liste.

+0

Je ne comprends absolument pas comment cela est lié. Il demande comment les classer, mais à l'étape 2, vous supposez que le classement est déterminé. –

+0

A l'étape 2, un classement est "1 ALPHA, 2 BRAVO, 3 CHARLIE" comme vous l'avez écrit. Je vais reformulé ma réponse. faites-moi savoir si cela n'a pas de sens. – Davidann

Questions connexes