I know we already have a fraud-detection script that removes serial downvotes (and
maybe serial upvotes). This script is a temporal script; it is based on a number of votes occurring against a particular user during a short time period (probably 24 hours). It does not address at all the problem of routine upvoting on a regular basis by a sockpuppet.
Sockpuppets that are created for the sole purpose of upvoting a user's main account are easy to identify; they generally have less than 10 posts, and large percentage of their votes are cast against the main account.
Things get more muddy if the sock has several posts and hundreds of rep. Is this a sock, a coworker engaged in ring voting, or just an ardent fan? There are several steps a moderator can take to determine if a sock is really a true sock, but it's always a judgment call.
The only remedy a moderator has for dealing with this kind of cross-voting is to merge accounts, and that can be risky (and unfair) if the sock turns out to be someone else's account. My understanding is that account merges can be undone by SE developers, but it's a time-consuming and difficult process.
So I'd like to propose an algorithm that limits the percentage of upvotes any single account can make to any one user. I believe this would severely limit users' ability to use sock puppets to enrich their own accounts, but would not affect at all even the most ardent of fanboys (users who cast large numbers of upvotes at certain high-rep users).
I don't know exactly what this algorithm looks like yet, but I believe that a good starting point would be that no more than 50% of any one user's total votes could be cast towards a single person. With a little fine-tuning, I think you could even detect voting rings this way.