Maximin

class svvamp.Maximin(population, **kwargs)[source]

Maximin method.

Inherits functions and optional parameters from superclasses ElectionResult and Election.

Example:
>>> import svvamp
>>> pop = svvamp.PopulationSpheroid(V=100, C=5)
>>> election = svvamp.Maximin(pop)

Candidate c‘s score is the minimum of the row matrix_duels_rk[c, :] (except the diagonal term), i.e. the result of candidate c for her worst duel. The candidate with highest score is declared the winner. In case of a tie, the candidate with lowest index wins.

This method meets the Condorcet criterion.

CM(): Deciding CM is NP-complete, even for 2 manipulators.

  • CM_option = 'fast': Zuckerman et al. (2011). This approximation algorithm is polynomial and has a multiplicative factor of error of 5/3 on the number of manipulators needed.
  • CM_option = 'exact': Non-polynomial algorithm from superclass Election.

ICM(): Exact in polynomial time.

IM(): Exact in polynomial time.

not_IIA(): Exact in polynomial time.

TM(): Exact in polynomial time.

UM(): Exact in polynomial time.

References:

‘Complexity of Unweighted Coalitional Manipulation under Some Common Voting Rules’, Lirong Xia et al., 2009.

‘An algorithm for the coalitional manipulation problem under Maximin’, Michael Zuckerman, Omer Lev and Jeffrey S. Rosenschein, 2011.

scores

1d array of integers. scores[c] is the minimum of the row matrix_duels_rk[c, :] (except the diagonal term), i.e. the result of candidate c for her worst duel.

w

Integer (winning candidate).

Default behavior in superclass ElectionResult:
The candidate with highest value in vector scores is declared the winner. In case of a tie, the tied candidate with lowest index wins.