STV again (was Re: PEP 308 vote type (was Re: Update to PEP308: if-then-else expression))

Alex Martelli aleax at aleax.it
Wed Feb 12 07:17:21 EST 2003


Erik Max Francis wrote:

> Oren Tirosh wrote:
> 
>> This would let me express the opinion that I am against any change,
>> but
>> if more people are in favor of some kind of in-the-else expression the
>> form "(if COND: EXPR1 else: EXPR2)" is the one I find most acceptable.
> 
> Approval voting works fine in the case where one of the possible choices
> is "do nothing."  If you reject the PEP and want to do nothing, you only
> mark "do nothing" on your ballot.  Problem solved.
> 
> In your case, you'd probably want to mark "do nothing" and `if C: x
> else: y' (one of the options), and nothing else.  That way, you express
> that you want no change, but would accept that particular form if it cam
> down to it.

However, Oren's opinion is different from that of somebody who thinks
"(if C: x else: y) would be WONDERFUL, but if that cannot be, then
``no change'' is better than all other alternatives, which I hate".
Approval voting does not distinguish.  _Single transferable vote_
does (see the subthread "STV (was" &c): if the ballot is, say:

[A} no change (no introduction of ternary operator into Python)
[B] (if C: x else: y)
{ etc for C, D, and so on }

Oren might vote "A, B", the other hypothetical somebody would vote
"B, A", and the STV algorithm would distinguish in just the right
way.  Say there's only one further choice C, and for example:

40% of voters' preferences are A, B
21% are B, A
20% are A, C
19% are C, A

i.e. 60% of voters prefer no change, though, of those, 2/3 would
rather put up with B than with C (they hate C intensely and B
only a little), 1/3 vice versa; 21% prefer B (but hate C so much
they'd rather see no change than it); 19% prefer C (but hate B
so much they'd rather see no change than it).

Since 60% prefer no change, there should be no change -- and
that is what STV would give.

With approval voting, you'd count 61% for B, 60% for A, 39% for
C -- and would pass B instead.  Weird.

I think if you construct all cases in which approval and STV
give different results, STV's outcome is a better match for
the voters' collective preferences.

And don't tell me it's too complicated -- once I'm mailing in
a list of approved alternatives such as "A B", it's just as
simple to take into account that order matters: both "A B"
and "B A" are approval at some level for the two cases, but
"A B" indicates A is preferred, "B A" indicates B is -- quite
natural and simple IMHO.


Alex





More information about the Python-list mailing list