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