As you learned from the Gibbard-Satterthwaite theorem, it can be advantageous for a voter to vote strategically, expressing preferences in an election that are insincere.
But how manipulable are elections? In this lab you will simulate all possible elections, and within each, all attempts at manipulation. You will measure how often the manipulation is successful, thereby establishing a measure of a voting system's manipulability.
Here we shall look at plurality, Borda, and single transferable vote.
Using the approach sketched above, simulate all possible elections and determine how often manipulation is successful. Make your voting rule abstract, so that you can experiment with plurality, Borda, and single transferable vote.
To help you with managing combinations of things, code is posted on piazza and here for efficiently iterating over combinations of sets, lists, etc. Place those Java files in a combo package in your eclipse project.
If 10 voters proves too expensive to compute, then try a smaller number of voters until the computation becomes managable.