ternary operator vote

Dave Brueck dave at pythonapocrypha.com
Tue Feb 11 11:40:38 EST 2003


On Tue, 11 Feb 2003, Andrew Koenig wrote:

> Here's an example.  Suppose there are three candidates: A, B, and C.
> B and C are fairly close to each other; A is completely different
> from either of them.  Suppose 40% of the electorate prefers A, but
> the remaining 60% are evenly split between B and C.  Then A will win.
> However, if either B or C were to drop out, A would lose.

Yes, we face this "problem" in the U.S. today.

> Gardner went on to say that there were many voting schemes that could
> solve this problem, such as various kinds of run-off elections.
> However, one wcheme is much simpler than all of the others: Allow
> voters to vote for as many candidates as they like; the winner is the
> one with the most votes.
>
> He called this process ``approval voting.''  Its main result is that
> the winner is the candidate that is acceptable to the most voters,
> rather than the candidate that is the favorite of the most voters.

Yes, but his reasoning is flawed because it turns the voting process into
"the only thing that is acceptable is getting what I want". An often
overlooked subtlety of having very few candidates is that it encourages
people to meet in the middle - to make some concessions on things that
matter less to them in order to weigh in more heavily on things that
matter more. It's a way of helping people work through their differences
rather than being selfish.

The approval voting process is not immune to rigging, either. In the
political realm, if you know you can easily get 20% of the votes but see
diminishing returns beyond that, then you stop putting money into
expanding support for your cause and you instead "prop up" lots of
opposing views with little differentiation between them. That way you will
win because you divide and conquer your opposition. In terms of this PEP,
the way to accomplish this is to encourage support for many different
forms of the PEP (short-circuiting versus not, new keywords versus not,
etc.) so that the people in favor of it are too splintered and no single
suggestion has enough votes to beat out a small but unified coalition of
people against it. Thus, even if a larger group of people would like to
see a conditional operator than those who don't, it will get shot down,
even if in reality an agreement could have been reached.

Going the other way, the people in favor of the PEP could reach a
consensus and then splinter those against it by encouraging little
sub-groups to form: those who oppose any changes, those who would concede
to a builtin function, etc.

In the end, approval voting actually satisfies the _least_ number of
people, and because it encourages very few people to cooperate, on average
the decision chooses something that a larger number of people consider to
be more extreme. As flawed as a two-party political system is, it also
nearly guarantees that no extremist (like a member of a race supremacy
group) will ever get elected, while with approval voting that is a real
possibility.

> I would like to suggest that whenever there is a vote on PEP308, it be
> conducted as an approval vote: List all of the alternatives, allow
> people to vote for as many alternatives as they like, and count the
> votes.

For the above reasons I'll have to disagree.

-Dave





More information about the Python-list mailing list