The Schulze method (), also known as the beatpath method, is a single winner ranked-choice voting rule developed by Markus Schulze. The Schulze method is a Condorcet completion method, which means it will elect a majority-preferred candidate if one exists. In other words, if most people rank A above B, A will defeat B (whenever this is possible). Schulze's method breaks cyclic ties by using indirect victories. The idea is that if Alice beats Bob, and Bob beats Charlie, then Alice (indirectly) beats Charlie; this kind of indirect win is called a "beatpath".

The Schulze method is used by several organizations including Debian, Ubuntu, Gentoo, Pirate Party political parties and many others. It was also used by Wikimedia prior to their adoption of score voting.

Description of the method

right|thumb|181x181px|A sample ballot asking voters to order candidates by preference

Schulze's method uses ranked ballots with equal ratings allowed. There are two common (equivalent) descriptions of Schulze's method.

Beatpath explanation

The idea behind Schulze's method is that if Alice defeats Bob, and Bob beats Charlie, then Alice "indirectly" defeats Charlie. These chained sequences of "beats" are called 'beatpaths'.

Every beatpath is assigned a particular strength. The strength of a single-step beatpath from Alice to Bob is just the number of voters who rank Alice over Bob. For a longer beatpath, consisting of multiple beats, a beatpath is as strong as its weakest link (i.e. the beat with the smallest number of winning votes).

We say Alice has a "beatpath-win" over Bob if her strongest beatpath to Bob is stronger than Bob's strongest beatpath to Alice (or if Bob has no beatpath to Alice). The winner is any candidate who is not beaten by any other candidate via a beatpath-win.

This definition of a beatpath-win is transitive: in other words, if Alice has a beatpath-win over Bob, and Bob has a beatpath-win over Charlie, Alice has a beatpath-win over Charlie. As a result, the Schulze method is a Condorcet method, providing a full extension of the majority rule to any set of ballots.

Iterative description

The Schulze winner can also be constructed iteratively, using a defeat-dropping method:

  1. Draw a directed graph with all the candidates as nodes; label the edges with the number of votes supporting the winner.
  2. If there is more than one candidate left:
  3. Check if any candidates are tied (and if so, break the ties by random ballot).
  4. Eliminate all candidates outside the majority-preferred set.
  5. Delete the edge closest to being tied.

The winner is the only candidate left at the end of the procedure.

Example

In the following example 45 voters rank 5 candidates.

{| class="wikitable"

!Number of voters

!Order of preference

|-

|5

|ACBED

|-

|5

|ADECB

|-

|8

|BEDAC

|-

|3

|CABED

|-

|7

|CAEBD

|-

|2

|CBADE

|-

|7

|DCEBA

|-

|8

|EBADC

|}

The pairwise preferences have to be computed first. For example, when comparing ' and ' pairwise, there are voters who prefer ' to ', and voters who prefer ' to '. So <math>d[A, B] = 20</math> and <math>d[B, A] = 25</math>. The full set of pairwise preferences is:

right|thumb|300x300px|[[Directed graph labeled with pairwise preferences d[*, *] ]]

{| class="wikitable" style="text-align:center"

|+ Matrix of pairwise preferences

|-

! !! <math>d[*,A]</math> !! <math>d[*,B]</math> !! <math>d[*,C]</math> !! <math>d[*,D]</math> !! <math>d[*,E]</math>

|-

! <math>d[A,*]</math>

| || style="background:#fdd;"|20 || style="background:#dfd;"|26 || style="background:#dfd;"|30 || style="background:#fdd;"|22

|-

! <math>d[B,*]</math>

| style="background:#dfd;"|25 || || style="background:#fdd;"|16 || style="background:#dfd;"|33 || style="background:#fdd;"|18

|-

! <math>d[C,*]</math>

| style="background:#fdd;"|19 || style="background:#dfd;"|29 || || style="background:#fdd;"|17 || style="background:#dfd;"|24

|-

! <math>d[D,*]</math>

| style="background:#fdd;"|15 || style="background:#fdd;"|12 || style="background:#dfd;"|28 || || style="background:#fdd;"|14

|-

! <math>d[E,*]</math>

| style="background:#dfd;"|23 || style="background:#dfd;"|27 || style="background:#fdd;"|21 || style="background:#dfd;"|31 ||

|}

The cells for d[X, Y] have a light green background if d[X, Y] > d[Y, X], otherwise the background is light red. There is no undisputed winner by only looking at the pairwise differences here.

Now the strongest paths have to be identified. To help visualize the strongest paths, the set of pairwise preferences is depicted in the diagram on the right in the form of a directed graph. An arrow from the node representing a candidate X to the one representing a candidate Y is labelled with d[X, Y]. To avoid cluttering the diagram, an arrow has only been drawn from X to Y when d[X, Y] > d[Y, X] (i.e. the table cells with light green background), omitting the one in the opposite direction (the table cells with light red background).

One example of computing the strongest path strength is p[B, D] = 33: the strongest path from B to D is the direct path (B, D) which has strength 33. But when computing p[A, C], the strongest path from A to C is not the direct path (A, C) of strength 26, rather the strongest path is the indirect path (A, D, C) which has strength min(30, 28) = 28. The strength of a path is the strength of its weakest link.

For each pair of candidates X and Y, the following table shows the strongest path from candidate X to candidate Y in red, with the weakest link underlined.

{| class="wikitable" style="text-align:center"

|+ Strongest paths

|-

!

! A !! B !! C !! D !! E

!

|-

! A

| || border|none|150px A-(30)-D-<u>(28)</u>-C-(29)-B || border|none|150px A-(30)-D-<u>(28)</u>-C || border|none|150px A-<u>(30)</u>-D || border|none|150px A-(30)-D-(28)-C-<u>(24)</u>-E

! A

|-

! B

| border|none|150px B-<u>(25)</u>-A || || border|none|150px B-(33)-D-<u>(28)</u>-C || border|none|150px B-<u>(33)</u>-D || border|none|150px B-(33)-D-(28)-C-<u>(24)</u>-E

! B

|-

! C

| border|none|150px C-(29)-B-<u>(25)</u>-A || border|none|150px C-<u>(29)</u>-B || || border|none|150px C-<u>(29)</u>-B-(33)-D || border|none|150px C-<u>(24)</u>-E

! C

|-

! D

| border|none|150px D-(28)-C-(29)-B-<u>(25)</u>-A || border|none|150px D-<u>(28)</u>-C-(29)-B || border|none|150px D-<u>(28)</u>-C || || border|none|150px D-(28)-C-<u>(24)</u>-E

! D

|-

! E

| border|none|150px E-(31)-D-(28)-C-(29)-B-<u>(25)</u>-A || border|none|150px E-(31)-D-<u>(28)</u>-C-(29)-B || border|none|150px E-(31)-D-<u>(28)</u>-C || border|none|150px E-<u>(31)</u>-D ||

! E

|-

!

! A !! B !! C !! D !! E

!

|}

{| class="wikitable" style="text-align:center"

|+Strengths of the strongest paths

|-

! !! <math>p[*,A]</math> !! <math>p[*,B]</math> !! <math>p[*,C]</math> !! <math>p[*,D]</math> !! <math>p[*,E]</math>

|-

! <math>p[A,*]</math>

| || style="background:#dfd;"|28 || style="background:#dfd;"|28 || style="background:#dfd;"|30 || style="background:#fdd;"|24

|-

! <math>p[B,*]</math>

| style="background:#fdd;"|25 || || style="background:#fdd;"|28 || style="background:#dfd;"|33 || style="background:#fdd;"|24

|-

! <math>p[C,*]</math>

| style="background:#fdd;"|25 || style="background:#dfd;"|29 || || style="background:#dfd;"|29 || style="background:#fdd;"|24

|-

! <math>p[D,*]</math>

| style="background:#fdd;"|25 || style="background:#fdd;"|28 || style="background:#fdd;"|28 || || style="background:#fdd;"|24

|-

! <math>p[E,*]</math>

| style="background:#dfd;"|25 || style="background:#dfd;"|28 || style="background:#dfd;"|28 || style="background:#dfd;"|31 ||

|}

Now the output of the Schulze method can be determined. For example, when comparing ' and ', since <math>(28 =) p[A,B] > p[B,A] (= 25)</math>, for the Schulze method candidate ' is better than candidate '. Another example is that <math>(31 =) p[E,D] > p[D,E] (= 24)</math>, so candidate E is better than candidate D. Continuing in this way, the result is that the Schulze ranking is <math>E > A > C > B > D</math>, and ' wins. In other words, ' wins since <math>p[E,X] \ge p[X,E]</math> for every other candidate X.

Implementation

Computation of the strongest path strengths is the widest path problem. It is a variation of the all-pairs shortest path problem and it can be solved via a variant of the Floyd–Warshall algorithm. The following pseudocode illustrates the algorithm.<syntaxhighlight line="" lang="text">

  1. Input: d[i,j], the number of voters who prefer candidate i to candidate j.
  2. Output: p[i,j], the strength of the strongest path from candidate i to candidate j.

for i from 1 to C

for j from 1 to C

if i ≠ j then

p[i,j] := d[i,j] - d[j,i]

for k from 1 to C

for i from 1 to C

if i ≠ k then

for j from 1 to C

if j ≠ k and j ≠ i then

p[i,j] := max (p[i,j], min (p[i,k], p[k,j]))

</syntaxhighlight>This algorithm is efficient and has running time O(C<sup>3</sup>) where C is the number of candidates.

Ties and alternative implementations

When allowing users to have ties in their preferences, the outcome of the Schulze method naturally depends on how these ties are interpreted in defining d[*,*]. Two natural choices are that d[A, B] represents either the number of voters who strictly prefer A to B (A>B), or the margin of (voters with A>B) minus (voters with B>A). But no matter how the ds are defined, the Schulze ranking has no cycles, and assuming the ds are unique it has no ties.

Although ties in the Schulze ranking are unlikely, they are possible. Schulze's original paper recommended breaking ties by random ballot.

  • Majority criterion
  • Majority loser criterion
  • Condorcet criterion
  • Condorcet loser criterion
  • Smith criterion
  • Mono-add-plump In other words, when Ranked Pairs and the Schulze method produce different orders of finish, for the majorities on which the two orders of finish disagree, the Schulze order reverses a larger majority than the Ranked Pairs order.

History

The Schulze method was developed by Markus Schulze in 1997. It was first discussed in public mailing lists in 1997–1998 and in 2000. In 2011, Schulze published the method in the academic journal Social Choice and Welfare. It is also used by the cities of Turin and San Donà di Piave in Italy and by the London Borough of Southwark through their use of the WeGovNow platform, which in turn uses the LiquidFeedback decision tool.

Political parties

Schulze was adopted by the Pirate Party of Sweden (2009), and the Pirate Party of Germany (2010). The Boise, Idaho chapter of the Democratic Socialists of America in February chose this method for their first special election held in March 2018.

  • Five Star Movement of Campobasso, Fondi, Monte Compatri, Montemurlo, Pescara, and San Cesareo
  • Pirate Parties of Australia, Austria, Belgium, Brazil, Germany, Italy, the Netherlands, Sweden, and the United States
  • SustainableUnion
  • Volt Europe

Student government and associations

  • AEGEE – European Students' Forum
  • Club der Ehemaligen der Deutschen SchülerAkademien e. V.
  • Associated Student Government at École normale supérieure de Paris
  • Flemish Society of Engineering Students Leuven
  • Graduate Student Organization at the State University of New York: Computer Science (GSOCS)
  • Hillegass Parker House
  • Kingman Hall
  • Associated Students of Minerva Schools at KGI
  • Associated Student Government at Northwestern University
  • Associated Student Government at University of Freiburg
  • Associated Student Government at the Computer Sciences Department of the University of Kaiserslautern-Landau

Organizations

It is used by the Institute of Electrical and Electronics Engineers, by the Association for Computing Machinery, and by USENIX through their use of the HotCRP decision tool.

Organizations which currently use the Schulze method include:

  • Annodex Association
  • (BVKJ)
  • BoardGameGeek
  • Cloud Foundry Foundation
  • County Highpointers
  • Dapr
  • Debian
  • EuroBillTracker
  • European Democratic Education Community (EUDEC)
  • FFmpeg
  • Free Geek
  • Free Hardware Foundation of Italy
  • Gentoo Foundation
  • GNU Privacy Guard (GnuPG)
  • Haskell
  • Homebrew
  • Internet Corporation for Assigned Names and Numbers (ICANN) (until 2023)
  • Kanawha Valley Scrabble Club
  • KDE e.V.
  • Knight Foundation
  • Kubernetes
  • Kumoricon
  • League of Professional System Administrators (LOPSA)
  • LiquidFeedback
  • Madisonium
  • Metalab
  • MTV
  • Neo
  • Noisebridge
  • OpenEmbedded
  • Open Neural Network Exchange
  • OpenStack
  • OpenSwitch
  • RLLMUK
  • Squeak
  • Students for Free Culture
  • Sugar Labs
  • Sverok
  • TopCoder
  • Ubuntu
  • Vidya Gaem Awards
  • Wikimedia (2008)
  • Wikipedia in French, Hebrew, Hungarian, Russian, and Persian.

Generalizations

In 2008, Camps et. al devised a method that, while ranking candidates in the same order of finish as Schulze, also provides ratings indicating the candidates' relative strength of victory.

Notes