stodol@freja.diku.dk (David Stodolsky) (12/07/89)
Single Transferable Vote Counting Procedures
The purpose of this message is to demonstrate single transferable vote (STV)
counting procedures that can be used with simple word processing systems. The
system must have a search and replace function, if this procedure is to be
automated to a reasonable degree. A column cut function plus a sort function
can also be used, if votes are displayed in a monospaced font. I will assume
the use of a search and replace function, but will also sort as this makes it
easier to see what is happening.
The choices are assumed to be ranked from left to right. That is, the person's
first choice is given as the first character on a line, the second choice as
the next character, and so forth. The choices are assumed to be followed by
one or more spaces (any other character can be used, but the choices should be
padded with enough characters so that all votes are of equal length [if a
column cut function is used, additional padding equal to the length of a valid
vote may be required]. The vote characters can also be preceded by any set of
characters [such as "Subject: "] as long as these are always the same. With
word processors using search and replace functions that cannot find non-
printing characters, at least one unique leading character may be necessary.)
In this example, the vote itself is followed by a name. This is not required
for vote counting.
Counting is simplified if voters follow these rules:
1. Clear the Subject line (except for "Subject: ").
2. While unmoved names remain;
Select your preferred name and move it to the subject line
(place each name after [to the right of] the ones already moved).
3. Place a "no" after the last name you find acceptable.
If none of the names are acceptable, put the "no" before the names.
4. Replace each name with the single character indicated.
5. Replace the "no" with the character "n".
6. Check your vote to see if contains a character for each name and for "no"
(e. g., If two names have been presented, a valid vote will have three
characters).
A example of votes received
(assuming choices "c", "s", [for alternative names] and "n" [for "no"])
after a sort (based on the vote characters) is:
Subject: c yer@it
Subject: cns tow@fu
Subject: cs y@not
Subject: csn uc@it
Subject: nc tin@hed
Subject: ncs bad@as
Subject: ns sea@hear
Subject: sc rich@kid
Subject: scn re@ley
Subject: y not@valid
Observe that the vote "y" is in the last place, with a single person voting
"yes". This vote is eliminated first, because it has the least support. With a
long list, a search of the list with the strings, "Subject: y", "Subject: s",
"Subject: c", "Subject: n", and so on (replacing with the same string, if
only a search and replace function [as opposed to search alone] is available),
would tell us the lowest scoring choice (assuming the word processor gives the
number of times the match is found). We eliminate the choice "y" by searching
for "Subject: y" and replacing it with "Subject: " (i. e., the same string
without the "y"). The list when resorted looks like (may vary depending on
your word processor):
Subject: c yer@it
Subject: cns tow@fu
Subject: cs y@not
Subject: csn uc@it
Subject: nc tin@hed
Subject: ncs bad@as
Subject: not@valid
Subject: ns sea@hear
Subject: sc rich@kid
Subject: scn re@ley
Observe the choice "s", from the votes "sc" and "scn", is now in last place
with only two persons voting "s". We eliminate the choice "s" by searching for
"Subject: s" and replacing it with "Subject: ", leaving the votes "c" and
"cn". Thus, the list when resorted looks like:
Subject: c rich@kid
Subject: c yer@it
Subject: cn re@ley
Subject: cns tow@fu
Subject: cs y@not
Subject: csn uc@it
Subject: nc tin@hed
Subject: ncs bad@as
Subject: not@valid
Subject: ns sea@hear
The "n" choice now has the lowest support with three votes. The same type of
search and replace yields (after sorting):
Subject: c rich@kid
Subject: c tin@hed
Subject: c yer@it
Subject: cn re@ley
Subject: cns tow@fu
Subject: cs bad@as
Subject: cs y@not
Subject: csn uc@it
Subject: not@valid
Subject: s sea@hear
The choice "s" again has lowest support. After a search and replace, and a
sort we find:
Subject: c rich@kid
Subject: c tin@hed
Subject: c yer@it
Subject: cn re@ley
Subject: cns tow@fu
Subject: cs bad@as
Subject: cs y@not
Subject: csn uc@it
Subject: not@valid
Subject: sea@hear
A search and replace of the string "Subject: c" tells us that eight (of the
ten) people support the most preferred name.
Take the total number of votes (ten) and subtract the number of "no"s
(character "n") removed (three) to find the number of people supporting the
creation of a newsgroup with the most preferred name. Thus, seven people
support creation of the group.
Support for the preferred name and support for creation of the newsgroup will
not, in general, be the same (even if all votes are valid).
This method does not deal with ties.
--------
Corrections, comments, improvements, and extensions received will be
incorporated in an update of this message.
--
David S. Stodolsky, PhD Routing: <@uunet.uu.net:stodol@diku.dk>
Department of Psychology Internet: <stodol@diku.dk>
Copenhagen Univ., Njalsg. 88 Voice + 45 31 58 48 86
DK-2300 Copenhagen S, Denmark Fax. + 45 31 54 32 11