hi,
i am currently developing an mma listings site that lists fighters, events, promotions etc and we want to setup our own rankings system. we would need some sort of algorithm that will rank fighters based on a variety of criteria, here are some ideas our team have come up with:
--------------------
Fighter A's result when he fought Fighter B is the most important factor in determining who ranks higher
If they haven't fought then there should be an entity relationship diagram created, arrows represent a match between two entities (fighters) and the direction of the arrow indicates the winner. To relatively rank fighter A vs B when they haven't fought you count the number of wins each in the shortest path between them, this means if A fought C and won and B fought C and lost then A will rank higher than B, though often this will be calculated over more than just one hop
Lastly if they still can't be separated then a count of points they have earned should be taken with points weighted by class and experience
Points are weighted by opponent's class - D the least and A the most
i.e. Fighters get more for beating higher classed opponents
A fighter is ranked up a class when they win a fight at the new class, a B class fighter moves up and beats an A class opponent, he is now ranked as an A class fighter for subsequent matches only.
This would mean a de-normalised table for holding both fighter's and matches
--------------------
we are currently building our website in asp and our database of fighters is mssql
I can design the algorithm and code it in Java or C/C++. However, I cannot do it with MSSQL because I do not have it installed. Instead, I can use another database which is freely available for the development phase. I can also assist you in the deployment to ASP/MSSQL.