# [EM] A later-no-harm and later-no-help variant of Schulze STV.

Ross Hyman rahyman at sbcglobal.net
Sun Apr 14 12:02:09 PDT 2013

```The following is a Later no harm and Later no Help variant of Schulze STV.  Like regular STV it either elects or excludes one candidate at a time instead of comparing candidate sets.  Like Schulze STV, it protects against Free Riding.  It requires fewer calculations than Schulze STV but it is not Condorcet.

All candidates are either elected, hopeful, or excluded.  Initially all candidates are hopeful.  The total number of votes is V(Total).  The number of seats to be filled is N.  Initially, R = N.
1.	 Calculate the V(H)’s and V(Hopeful) using one of the procedures below*.
2.	If the vote total for the hopeful candidate with the largest vote total exceeds V(Hopeful)/(R+1) then go to step 3.  Otherwise go to step 4.
3.	Declare the hopeful candidate with the largest vote total elected.  If R=1, declare all hopeful candidates excluded and end the count.  Otherwise subtract 1 from R and go to step 1.
4.	Declare the candidate with the smallest vote total excluded.  If the number of hopeful candidates equals R then declare all hopeful candidates elected and end the count.  Otherwise go to step 1.

*Procedure for calculating the V(H)’s and V(Hopeful) if there are no elected candidates:
V(J,H) =1 if H is the highest ranked hopeful candidate on the Jth ballot.  V(J,H) =0 otherwise.  V(H) = Sum_J V(J,H) for each hopeful candidate, H.  V(Hopeful) = Sum_H V(H).

*Procedure for calculating the V(H)’s and V(Hopeful) if there are is at least one elected candidate:

1.	V(J,A) is the vote assigned from ballot J to elected candidate A.  Initially V(J,A) = 1 if A is elected and is ranked higher than the highest ranked hopeful candidate on ballot J or if ballot J ranks no hopeful candidates.  Otherwise V(J,A) =0.  V(J,Hopeful) =1 if the Jth ballot ranks at least one hopeful candidate.  Otherwise V(J,Hopeful) =0.
2.	V(J) = sum_A V(J,A) +V(J,Hopeful).  Rescale V(J,A)  to V(J,A)/V(J) and V(J,Hopeful) to V(J,Hopeful)/V(J).
3.	V(A) = sum_J V(J,A).  V(Hopeful) = sum_J V(J,Hopeful).  Go to step 4 if V(Hopeful)  has converged.  Otherwise rescale V(J,A) to V(J,A)V(Total)/((N+1) V(A)) and V(J,Hopeful) to V(J,Hopeful)(R+1)V(Total)/((N+1)V(Hopeful)) and go to step 2.
4.	If H is the highest ranked hopeful candidate on ballot J then V(J,H) = V(J,Hopeful).  Otherwise V(J,H) =0.  The total vote for each hopeful candidate H is V(H) = Sum_J V(J,H).  By definition V(Hopeful) = Sum_H V(H).

```