<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">This is some thought about keeping it simple, yet doable.<br><br>I will lean toward Ranked Pairs with margins, but amending toward other types of Condorcet should be doable.<br><br>Voting:  Voter can rank one or more candidates.  Equal ranking permitted.  Counters care only which of any pair of candidates ranks higher, not how voter decides on ranking.  Write-ins permitted (if few write-ins expected, counters may lump all such as if a single candidate - if assumption correct the count verifies it; if incorrect, must recount).<br><br>Counting:  Besides the N*N matrix, I would add an N array to optimize this.  Count each ranked candidate in the array.  Later the array will be added into the matrix rows as if the ranked candidates won in every one of their pairs.  This is correct for pairs with no ranking, and for pairs with one ranked.  For pairs w/winner and loser, give loser a negative count to adjust; for ties you can leave both winning; or mark both losing via negative counts.<br>    (For example, a ballot with 3 ranks gets 3 counts in N, and adjustments for 3 pairs in N*N - even if there are a dozen pairs on the ballot)<div><br></div><div>Completing matrix:<br>     I had thought of doing adjustments if N was different in different matrices.  Having trouble with picking a need for this, but it is doable - add an empty element to N and an empty row and column to N*N.</div><div>     Shortest path is to sum all the matrices and all the arrays.  Then add each array element into its matrix row as wins by its candidate in each of its pairs.</div><div>     Can want a matrix for a district - same idea as above.</div><div>     Either way the diagonals (A,A thru N,N) should be zero - make them thus.  </div><div><br></div><div>Find the winner.  What I read below sounds like an excessive amount of labor, especially if many candidates - so, for candidates A-N (I have not specified response for ties):</div><div>     A single loss disqualifies a candidate from being CW, so start with A vs B.  If A loses, B continues; if B loses A continues.  Check final row when all but one have lost.  If no losers found we have the CW; else we have a cycle member.</div><div>     Cycle members lose to other cycle members.  Based on this, make a list of all such.</div><div>     There are many methods for resolving cycles.  For RP I see deleting the smallest margins from the list until what remains is not a cycle, but does identify a winner.</div><div><br></div><div>Dave Ketchum</div><div><br></div><div>On Mar 10, 2010, at 12:54 AM, Chris Benham wrote:</div><div>Re: [EM] Burlington Vermont repeals IRV 52% to 48%<br><blockquote type="cite">...<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I think the name "Ranked Pairs" normally applies to the Margins version.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><a href="http://en.wikipedia.org/wiki/Ranked_Pairs">http://en.wikipedia.org/wiki/Ranked_Pairs</a><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">"The RP procedure is as follows:<br></blockquote><blockquote type="cite"><span class="Apple-tab-span" style="white-space: pre; ">     </span>1. Tally the vote count comparing each pair of candidates, and determine the winner of each pair (provided there is not a tie)<br></blockquote><blockquote type="cite"><span class="Apple-tab-span" style="white-space: pre; ">      </span>2. Sort (rank) each pair, by the largest margin of victory first to smallest last.<br></blockquote><blockquote type="cite"><span class="Apple-tab-span" style="white-space: pre; ">  </span>3. "Lock in" each pair, starting with the one with the largest number of winning votes, and add one in turn to a graph as long as they do not create a cycle (which would create an ambiguity). The completed graph shows the winner. "<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Chris Benham</blockquote></div></body></html>