The Schulze method () is an electoral system developed in 1997 by Markus Schulze that selects a single winner using votes that express preferences. The method can also be used to create a sorted list of winners. The Schulze method is also known as Schwartz Sequential dropping (SSD), cloneproof Schwartz sequential dropping (CSSD), the beatpath method, beatpath winner, path voting, and path winner. The Schulze method is a
Condorcet method A Condorcet method (; ) is an election method that elects the candidate who wins a majority rule, majority of the vote in every head-to-head election against each of the other candidates, that is, a candidate preferred by more voters than any oth ...
, which means that if there is a candidate who is preferred by a majority over every other candidate in pairwise comparisons, then this candidate will be the winner when the Schulze method is applied. The output of the Schulze method (defined below) gives an ordering of candidates. Therefore, if several positions are available, the method can be used for this purpose without modification, by letting the ''k'' top-ranked candidates win the ''k'' available seats. Furthermore, for
proportional representation Proportional representation (PR) characterizes electoral systems in which divisions in an electorate are reflected proportionately in the elected body. The concept applies mainly to geographical, and to ideological partitioning of the electorate. ...
elections, a single transferable vote variant has been proposed. The Schulze method is used by several organizations including Wikimedia, Debian, Ubuntu (operating system), Ubuntu, Gentoo Linux, Gentoo, Pirate Party political parties and #Users, many others.

Description of the method


The input for the Schulze method is the same as for other Ranked voting, ranked single-winner electoral systems: each voter must furnish an ordered preference list on candidates where Tie (draw), ties are allowed (Weak ordering, a strict weak order). One typical way for voters to specify their preferences on a Ranked voting#Ballot variations, ballot is as follows. Each ballot lists all the candidates, and each voter ranks this list in order of preference using numbers: the voter places a '1' beside the most preferred candidate(s), a '2' beside the second-most preferred, and so forth. Each voter may optionally: * give the same preference to more than one candidate. This indicates that this voter is indifferent between these candidates. * use non-consecutive numbers to express preferences. This has no impact on the result of the elections, since only the order in which the candidates are ranked by the voter matters, and not the absolute numbers of the preferences. * keep candidates unranked. When a voter doesn't rank all candidates, then this is interpreted as if this voter (i) strictly prefers all ranked to all unranked candidates, and (ii) is indifferent among all unranked candidates.


Let d[V,W] be the number of voters who prefer candidate V to candidate W. A ''path'' from candidate X to candidate Y is a sequence of candidates C(1),\cdots,C(n) with the following properties: # C(1) = X and C(n) = Y. # For all i = 1,\cdots,(n-1): d[C(i),C(i+1)] > d[C(i+1),C(i)]. In other words, in a pairwise comparison each candidate in the path will beat the following candidate. The ''strength'' p of a path from candidate X to candidate Y is the smallest number of voters in the sequence of comparisons: : For all i = 1,\cdots,(n-1): d[C(i),C(i+1)] \ge p. For a pair of candidates A and B that are connected by at least one path, the ''strength of the strongest path'' p[A,B] is the maximum strength of the path(s) connecting them. If there is no path from candidate A to candidate B at all, then p[A,B] = 0. Candidate D is ''better'' than candidate E if and only if p[D,E] > p[E,D]. Candidate D is a ''potential winner'' if and only if p[D,E] \ge p[E,D] for every other candidate E. It can be proven that p[X,Y] > p[Y,X] and p[Y,Z] > p[Z,Y] together imply p[X,Z] > p[Z,X]. Therefore, it is guaranteed (1) that the above definition of "''better''" really defines a transitive relation and (2) that there is always at least one candidate D with p[D,E] \ge p[E,D] for every other candidate E.


In the following example 45 voters rank 5 candidates. :\begin \text & \text \\ \hline 5 & ACBED \\ 5 & ADECB \\ 8 & BEDAC \\ 3 & CABED \\ 7 & CAEBD \\ 2 & CBADE \\ 7 & DCEBA \\ 8 & EBADC \end 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 d[A, B] = 20 and d[B, A] = 25. The full set of pairwise preferences is: labeled with pairwise preferences d[*, *] 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. Now the output of the Schulze method can be determined. For example, when comparing and , since (28 =) p[A,B] > p[B,A] (= 25), for the Schulze method candidate is ''better'' than candidate . Another example is that (31 =) p[E,D] > p[D,E] (= 24), so candidate E is ''better'' than candidate D. Continuing in this way, the result is that the Schulze ranking is E > A > C > B > D, and wins. In other words, wins since p[E,X] \ge p[X,E] for every other candidate X.


The only difficult step in implementing the Schulze method is computing the strongest path strengths. However, this is a well-known problem in graph theory sometimes called the widest path problem. One simple way to compute the strengths, therefore, is a variant of the Floyd–Warshall algorithm. The following pseudocode illustrates the algorithm. # Input: d[i,j], the number of voters who prefer candidate i to candidate j. # 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 if (d[i,j] > d[j,i]) then p[i,j] := d[i,j] else p[i,j] := 0 for i from 1 to C for j from 1 to C if (i ≠ j) then for k from 1 to C if (i ≠ k and j ≠ k) then p[j,k] := max (p[j,k], min (p[j,i], p[i,k])) This algorithm is P (complexity), efficient and has time complexity, running time Big O notation, O(''C''3) 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 ''d''s are defined, the Schulze ranking has no cycles, and assuming the ''d''s are unique it has no ties. Although ties in the Schulze ranking are unlikely, they are possible. Schulze's original paper proposed breaking ties in accordance with a voter selected at random, and iterating as needed. An alternative way to describe the winner of the Schulze method is the following procedure: # draw a complete directed graph with all candidates, and all possible edges between candidates # iteratively [a] delete all candidates not in the Schwartz set (i.e. any candidate ''x'' which cannot reach all others who reach ''x'') and [b] delete the graph edge with the smallest value (if by margins, smallest margin; if by votes, fewest votes). # the winner is the last non-deleted candidate. There is another alternative way to ''demonstrate'' the winner of the Schulze method. This method is equivalent to the others described here, but the presentation is optimized for the significance of steps being ''visually apparent'' as you go through it, not for computation. # Make the results table, called the "matrix of pairwise preferences," such as used above in the example. If using margins rather than raw vote totals, subtract it from its transpose. Then every positive number is a pairwise win for the candidate on that row (and marked green), ties are zeroes, and losses are negative (marked red). Order the candidates by how long they last in elimination. # If there's a candidate with no red on their line, they win. # Otherwise, draw a square box around the Schwartz set in the upper left corner. You can describe it as the minimal "winner's circle" of candidates who do not lose to anyone outside the circle. Note that to the right of the box there is no red, which means it's a winner's circle, and note that within the box there is no reordering possible that would produce a smaller winner's circle. # Cut away every part of the table that isn't in the box. # If there is still no candidate with no red on their line, something needs to be compromised on; every candidate lost some race, and the loss we tolerate the best is the one where the loser obtained the most votes. So, take the red cell with the highest number (if going by margins, the least negative), make it green—or any color other than red—and go back step 2. Here is a margins table made from the above example. Note the change of order used for demonstration purposes. The first drop (A's loss to E by 1 vote) doesn't help shrink the Schwartz set. So we get straight to the second drop (E's loss to C by 3 votes), and that shows us the winner, E, with its clear row. This method can also be used to calculate a result, if you make the table in such a way that you can conveniently and reliably rearrange the order of the candidates on both row and column (use the same order on both at all times).

Satisfied and failed criteria

Satisfied criteria

The Schulze method satisfies the following criteria: * Unrestricted domain * Arrow's impossibility theorem, Non-imposition (Aka (initialism), a.k.a. Arrow's impossibility theorem, citizen sovereignty) * Non-dictatorship * Pareto efficiency, Pareto criterion * Monotonicity criterion * Majority criterion * Majority loser criterion * Condorcet criterion * Condorcet loser criterion * Schwartz set, Schwartz criterion * Smith criterion * Independence of Smith-dominated alternatives * Mutual majority criterion * Independence of clones criterion, Independence of clones * Reversal symmetry * Mono-appendDouglas R. Woodall
Properties of Preferential Election Rules
''Voting Matters'', issue 3, pages 8-15, December 1994
* Mono-add-plump * Resolvability criterion * Polynomial time, Polynomial runtime * prudence * MinMax sets * Plurality criterion, Woodall's plurality criterion if Condorcet method#Defeat strength, winning votes are used for d[X,Y] * Symmetric-completion if Condorcet method#Defeat strength, margins are used for d[X,Y]

Failed criteria

Since the Schulze method satisfies the Condorcet criterion, it automatically fails the following criteria: * Participation criterion, Participation * Consistency criterion, Consistency * Tactical voting#Compromising, Invulnerability to compromising * Tactical voting#Burying, Invulnerability to burying * Later-no-harm criterion, Later-no-harm Likewise, since the Schulze method is not a dictatorship and agrees with unanimous votes, Arrow's Theorem implies it fails the criterion * Independence of irrelevant alternatives The Schulze method also fails * Peyton Young's criterion Local independence of irrelevant alternatives, Local Independence of Irrelevant Alternatives.

Comparison table

The following table compares the Schulze method with other Ranked voting, preferential single-winner election methods: The main difference between the Schulze method and the ranked pairs method can be seen in this example: Suppose the MinMax score of a set X of candidates is the strength of the strongest pairwise win of a candidate A ∉ X against a candidate B ∈ X. Then the Schulze method, but not Ranked Pairs, guarantees that the winner is always a candidate of the set with minimum MinMax score. So, in some sense, the Schulze method minimizes the largest majority that has to be reversed when determining the winner. On the other hand, Ranked Pairs minimizes the largest majority that has to be reversed to determine the order of finish, in the minlexmax sense. 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.


The Schulze method was developed by Markus Schulze in 1997. It was first discussed in public mailing lists in 1997–1998 and in 2000. Subsequently, Schulze method users included Debian (2003),See:
Constitutional Amendment: Condorcet/Clone Proof SSD Voting Method
June 2003
Constitution for the Debian Project
appendix A6
Debian Voting Information
/ref> Gentoo Linux, Gentoo (2005),See:
2009 Gentoo Council Election Results
December 2009
2010 Gentoo Council Election Results
June 2010
2011 Gentoo Council Election Results
June 2011
2012 Gentoo Council Election Results
June 2012
2013 Gentoo Council Election Results
June 2013
Topcoder (2005),2007 TopCoder Collegiate Challenge
September 2007
Wikimedia Foundation, Wikimedia (2008),See: * m:Board elections/2008/Results/en, 2008 Board Elections, June 2008 * m:Board elections/2009/Results/en, 2009 Board Elections, August 2009 * m:Board elections/2011/Results/en, 2011 Board Elections, June 2011 KDE (2008),section 3.4.1 of th
Rules of Procedures for Online Voting
/ref> the Pirate Party of Sweden (2009),See:
Inför primärvalen
October 2009
Dags att kandidera till riksdagen
October 2009
Råresultat primärvalet
January 2010
and the Pirate Party Germany, Pirate Party of Germany (2010).11 of the 16 regional sections and the federal section of the Pirate Party Germany, Pirate Party of Germany are usin
for unbinding internal opinion polls. In 2010/2011, the Pirate Parties of Neukölln
, Mitte
, Steglitz-Zehlendorf
, Lichtenberg
, and Tempelhof-Schöneberg
adopted the Schulze method for its primaries. Furthermore, the Pirate Party of Berlin (in 2011)
and the Pirate Party of Regensburg (in 2012)
adopted this method for their primaries.
In the French Wikipedia, the Schulze method was one of two multi-candidate methods approved by a majority in 2005,:fr:Wikipédia:Prise de décision/Choix dans les votes#B - Proposition n°7 : Méthode Condorcet, Choix dans les votes and it has been used several times. The newly formed Boise, Idaho chapter of the Democratic Socialists of America in February chose this method for their first special election held in March 2018. In 2011, Schulze published the method in the academic journal ''Social Choice and Welfare''.Markus Schulze
A new monotonic, clone-independent, reversal symmetric, and condorcet-consistent single-winner election method
Social Choice and Welfare, volume 36, number 2, page 267–303, 2011. Preliminary version in ''Voting Matters'', 17:9-19, 2003.


Image:Voting2.png, sample ballot for Wikimedia Foundation, Wikimedia's Board of Trustees elections The Schulze method is used by the city of Silla, Valencia, Silla for all referendums. 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. The Schulze method is used by the cities of Turin and San Donà di Piave and by the London Borough of Southwark through their use of the WeGovNow platform, which in turn uses the LiquidFeedback decision tool. Organizations which currently use the Schulze method include: * Association des États Généraux des Étudiants de l'Europe, AEGEE - European Students' Forum * Annodex, Annodex Association * Northwestern University, 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 * :de:Berufsverband der Kinder- und Jugendärzte, Berufsverband der Kinder- und Jugendärzte (BVKJ) * BoardGameGeek
Club der Ehemaligen der Deutschen SchülerAkademien e. V.
* Collective Agency * County Highpointers * Debian * EuroBillTracker * European Democratic Education Community, European Democratic Education Community (EUDEC) * FFmpeg * Five Star Movement of Campobasso, Fondi, Monte Compatri, Montemurlo, Pescara, and San Cesareo * Flemish Society of Engineering Students Leuven * Free Geek * Free Hardware Foundation of Italy * Gentoo Linux, Gentoo Foundation
* GNU Privacy Guard, GNU Privacy Guard (GnuPG) * Graduate Student Organization at the State University of New York: Computer Science (GSOCS) * Haskell (programming language), Haskell * Hillegass Parker House * ICANN, Internet Corporation for Assigned Names and Numbers (ICANN)
Ithaca Generator
* Kanawha Valley Scrabble Club * KDE, KDE e.V. * Kingman Hall * John S. and James L. Knight Foundation, Knight Foundation * Kubuntu * Kumoricon * League of Professional System Administrators, League of Professional System Administrators (LOPSA) * LiquidFeedback
* Metalab * MTV, Music Television (MTV) * :de:Neo (Tastaturbelegung), Neo * New Liberals * Noisebridge * OpenEmbedded * OpenStack
* Pirate Party Australia * Pirate Party of Austria * Pirate Party (Belgium), Pirate Party of Belgium * Pirate Party of Brazil * Pirate Party Germany, Pirate Party of Germany * Pirate Party (Iceland), Pirate Party of Iceland * Pirate Party (Italy), Pirate Party of Italy * Pirate Party of the Netherlands * Pirate Party of New Zealand * Pirate Party of Sweden * Pirate Party Switzerland, Pirate Party of Switzerland * United States Pirate Party, Pirate Party of the United States * RLLMUK * Squeak * Students for Free Culture * Sugar Labs * SustainableUnion * Sverok * TestPAC * TopCoder * Ubuntu (operating system), Ubuntu * Vidya Gaem Awards * Volt Europe * Wikipedia in French Wikipedia, French, Hebrew Wikipedia, Hebrew, Hungarian Wikipedia, Hungarian, Russian Wikipedia, Russian, and Persian Wikipedia, Persian.See [//fa.wikipedia.org/w/index.php?oldid=18462330 here]


External links

The Schulze Method of Voting
by Markus Schulze
Condorcet Computations
by Johannes Grabmeier
by Bernhard Nebel
Accurate Democracy
by Rob Loring * Christoph Börgers (2009),
Mathematics of Social Choice: Voting, Compensation, and Division
', SIAM, * Nicolaus Tideman (2006),
Collective Decisions and Voting: The Potential for Public Choice
', Burlington: Ashgate,
by the Public Software Group
Arizonans for Condorcet Ranked Voting

Condorcet PHP
Command line application and PHP Library (computing), library, supporting multiple Condorcet methods, including Schulze.
Implementation in Java

Implementation in Ruby

Implementation in Python 2

Implementation in Python 3
{{voting systems Articles with example pseudocode Debian Monotonic Condorcet methods Single-winner electoral systems