I got curious what research might be like, so I approached Dr. Rob LeGrand in the ASU Computer Science department to see if there were any research topics he would like to explore.
Dr. LeGrand mentioned that his dissertation was on mathematically finding a optimal voting strategy for Approval-style voting systems within a voting framework thought of by Dr. Lorrie Cranor called Declared Strategy Voting.
To briefly try to describe DSV, instead of voting directly on a ballot, you instead inform a computer what your honest preferences are, as well as what kind of strategy you would like it to use to maximize a particular kind of outcome.
Dr. LeGrand showed that in a system such as this, for a particular definition of happiness, the best strategy was a specific kind of strategy that was still 'sincere'; in other words, at no point did you choose to vote for someone you preferred less than someone you hadn't voted for.
I asked if the same technique could be applied to Instant Runoff Voting (what many Americans call Ranked Choice Voting), and he said no.
And then he spent the next two weeks furiously coming up with a less math-formula, more algorithmic way of achieving the same result that he achieved for Approval voting, but that could be applied to a broader range of voting systems, such as IRV/RCV, Borda, etc.
Unfortunately, this project took place over a very short summer semester, and one in which I also had a major writing class. I didn't have as much time to work on this code as I would have preferred.
However... it worked! The algorithmic method (once I got the code actually working) resulted in the same outcomes as what had been proven previously via mathematical formulas, and not only could be applied to RCV/IRV, Borda, and others, but started giving hints that the best strategy (for this particular definition of 'best') for an RCV/IRV voting system was an insincere one.
The Paper (PDF) (Draft, not ready for publication.)
Notes:
- This project was more about finding a new analysis method that can be computationally applied to more voting systems, not showing one voting system was better than another.
- No ideologies were studied. Voters had a randomized opinion about faceless, opinionless candidates.
- We ran out of time.
- My code likely has inefficiencies. I can already think of two things off the top of my head that I'd change:
- Preventing the computation of debug/result output in cases where that output would never be printed
- Ripping out all use of stringstream and perhaps replacing it with overloading the << operator.