¿Cómo implementará físicamente la ciudad de Nueva York el algoritmo de votación por orden de preferencia con miles de votaciones únicas para alcaldes posibles?

Los neoyorquinos de Politico eligen un nuevo alcalde después de que comienzan las caóticas e históricas primarias:

NUEVA YORK — Las urnas cerraron en la primera elección por orden de preferencia en la historia de la ciudad de Nueva York y, aunque la suerte está echada, es posible que los votantes no sepan el resultado durante semanas.

[...] Ampliar aún más el conteo de boletas es el advenimiento de la votación por orden de preferencia, que permite a los neoyorquinos seleccionar hasta cinco candidatos para cada puesto. El sistema se activa cuando ningún candidato obtiene el 50 por ciento de los votos en el primer pase. La junta planea emitir los resultados preliminares de las votaciones clasificadas el 29 de junio.

De acuerdo con esto :

Más de una docena de demócratas y dos republicanos competirán para reemplazar al alcalde saliente Bill de Blasio (D). Se espera que la elección por orden de preferencia tarde semanas en resolverse.

Por lo tanto, la cantidad de formas distintas pero válidas en las que una persona puede votar es grande. Creo que es la suma de 0, 1, 2, 3, 4 y 5 de 14 posibilidades, pero ni siquiera estoy seguro de eso (ver más abajo).

Tengo curiosidad por saber cómo la ciudad de Nueva York implementará física y computacionalmente el conteo de votos por orden de preferencia.

Pregunta: Algorítmicamente , se puede hacer a través de varias pasadas de una función de clasificación sobre todos los votos de elección por orden de preferencia en una tabla en la memoria o en un disco duro, pero ¿cómo implementan esto con las diversas formas físicas de los votos emitidos en las elecciones para la alcaldía de Nueva York? ?

¿Recurrirán a toda la implementación electrónica del algoritmo, todo físico, o algún método híbrido?


En Python, asumiendo (por ejemplo) exactamente 14 candidatos disponibles (en matemáticas es el número de permutaciones sin repeticiones )

from itertools import permutations
possible = []
for k in [0, 1, 2, 3, 4, 5]:
    uniques = list(permutations('abcdefghijklmn', k))
    possible.append(uniques)
    print(k, len(uniques))
all_possible = sum(possible, [])
print('total: ', len(all_possible))

 k        uniques
 0           1
 1          14
 2         182
 3        2184
 4       24024
 5      240240

total:  266645
¿De qué se trata tu pregunta? ¿Los riesgos políticos y logísticos y los resultados de elegir lo que algunos considerarían un sistema de votación demasiado complicado y confuso? ¿O los algoritmos para ello? Realmente no creo que citar el código de Python esté dentro de la intención de este sitio. Dicho esto, dadas las reglas claras de cómo funciona la clasificación matemáticamente, el menor de los problemas probablemente sea obtener los resultados una vez que las boletas hayan sido escaneadas o cargadas.
@ItalianPhilosophers4Monica vea la parte donde dice Pregunta: en negrita, "... pero cómo implementan esto..." No se trata de reglas, se trata de cómo se implementan las reglas; por conteo físico clasificando más de 3000 tipos de votos.
Es un poco confuso lo que estás preguntando. ¿Está preguntando cómo se vería la boleta, dado que hay tantas combinaciones posibles? Recuerde que no es necesario que haya un cuadro separado para cada combinación, podría haber una cuadrícula con una línea para cada candidato y cinco columnas para la primera a la quinta opción.
en lugar de publicar un código, ¿quizás publicar una boleta de muestra?
@AlphaDracon es casi instantáneo y las respuestas correctas sugieren que la pregunta es clara para al menos dos personas.
@ItalianPhilosophers4Monica en este caso, el ejemplo 142 de una clasificación de cuatro opciones sería 1.º: 'a', 2.º: 'c', 3.º: 'b', 4.º: 'n'
La votación por orden de preferencia (RCV) puede referirse a varios sistemas de votación, aunque en los EE. UU. creo que generalmente significa votación de segunda vuelta instantánea (IRV): ¿es eso lo que se quiere decir aquí?
Tenga en cuenta que "varios pases" no es tan subóptimo como parece, porque todos menos el primer pase tienen lugar en las papeletas que cuentan para el candidato restante con el recuento de votos más bajo (es decir, las papeletas en las que es el candidato superviviente más alto ). Esto debe ser menor que N/n (N papeletas, n candidatos restantes) y en la práctica será mucho menor ya que los primeros candidatos en ser eliminados serán opciones marginales, y una vez que las personas hayan votado por su amigo/candidato principal de un solo tema, Llegará rápidamente a una opción convencional.
@gidds Creo que eso se puede explorar en una pregunta nueva (e interesante); las fuentes que he usado no especifican. Tal vez diferentes estados y municipios hayan optado por diferentes sabores incluso.
Las papeletas son tales que solo puede emitir un voto de segunda preferencia, y así sucesivamente. No sé si se contarían ni, de ser así, cómo se contarían, pero la cantidad de formas únicas de marcar una boleta con un voto es potencialmente 70, no 5.
@phoog no confunda la forma en que se realiza el cálculo con el resultado. Nada de lo que dije sugiere que hay 5 formas únicas. Simplemente hice el conteo separando las votaciones que enumeraban 0, 1, 2, 3, 4 o 5 nombres, luego apliqué permutaciones sin repeticiones a cada una para enumerar la cantidad de formas únicas en que uno podría votar válidamente usando esa cantidad de nombres. No tomé en cuenta a las personas que dejan el primero y el segundo en blanco y solo completaron los tres últimos, por ejemplo, asumiendo que no se considerarían válidos.
¿ No es esta pregunta sobre la sumabilidad del recinto ? Sin ella, ¿cómo se transporta de manera segura la información de la boleta a la ubicación central de conteo, donde se realiza el STV?

Respuestas (4)

Cómo se pueden contar a mano las papeletas de votación por orden de preferencia

Creo que el conteo se puede hacer a mano (usando varios 'pasos' si es necesario). Por ejemplo, en Canadá, según CBC.ca (sobre la votación clasificada en Canadá):

"Son realmente simples. Son tan fáciles como uno, dos, tres. Clasificas tus opciones en orden, entonces, ¿quién quiero que sea alcalde, quién es mi primera opción, quién es mi segunda opción y quién es mi tercera opción?

En la primera ronda, solo sumamos las primeras opciones, y si alguien tiene la mayoría, se acabó. Ellos ganan. Pero si nadie tiene la mayoría, digamos que la persona con más votos solo tiene el 30 por ciento, entonces obviamente no debería ser el alcalde necesariamente.

Así que elimina al candidato con la menor cantidad de votos y simplemente transfiere esos votos a la segunda opción en cada voto hasta que alguien tenga la mayoría.

Contar esto a mano no parece tan difícil, no necesitaría tener en cuenta todas las posibles combinaciones de boletas en el proceso de conteo.

Como dice la cita, comienza dividiendo las papeletas por primera opción. Si tiene 14 candidatos, entonces tiene 14 montones de boletas. Si no hay un ganador basado en las primeras opciones, entonces elimina al candidato con la menor cantidad de votos (primera opción) y comienza a buscar la segunda opción en las boletas de esa pila. Entonces solo te quedan 13 candidatos en la carrera. este proceso continúa hasta que tenga un ganador.

Así es también como NPR describe el proceso de conteo para la elección de alcalde de la ciudad de Nueva York:

  1. Si alguien obtiene el 50% más uno después de contar todos los votos de primera opción, entonces la elección ha terminado y ese candidato gana.

  2. Pero si nadie obtiene el 50% más uno, se pasa a la Ronda 2.

  3. La persona con el menor número de votos de primer lugar es eliminada y las segundas opciones de los votantes de ese candidato se redistribuyen como votos para otros candidatos.

  4. Esta reasignación de votos continúa hasta que alguien alcanza el 50% más uno.

Implementación de Nueva York

Sin embargo, en las elecciones de Nueva York, los votos serán contados por una máquina. Como informó CBS News el 25 de mayo de 2021:

Los neoyorquinos pueden esperar saber quién ganó las próximas primarias demócratas para alcalde de la ciudad más rápido de lo que lo hubieran hecho si la Junta Electoral del Estado de Nueva York no hubiera actuado el martes para aprobar el software para tabular los resultados de la votación por orden de preferencia. La decisión significa que la ciudad ahora evitará un largo conteo manual de los votos emitidos en la carrera el próximo mes.

Sin embargo, los resultados probablemente no estarán disponibles de inmediato, del mismo artículo de CBS News :

A pesar de la aprobación del software, aún pasarán días, si no semanas, antes de que los neoyorquinos sepan quién ganó las primarias del 22 de junio. Se espera que los resultados no oficiales de los votos de primera opción se publiquen la noche de las primarias para mostrar los votos de primera opción, pero la Junta Electoral de la ciudad dice que los funcionarios no podrán comenzar a calcular los resultados hasta al menos la semana siguiente.

En cuanto a la implementación específica, ya se ha tratado en profundidad en la respuesta de Zach Lipton .

¿Es esto lo que realmente están haciendo en Nueva York? ¿Transportar todas las papeletas al mismo lugar y contarlas físicamente?
@endolith no necesita llevarlos a todos a una sola ubicación, puede realizar el conteo una vez por distrito y llamar a los conteos a una ubicación central. Luego cuente las papeletas donde la primera opción fue para los de menor rango y continúe. Lo que sí tiene que hacer, por supuesto, es esperar a que todos los distritos informen sus resultados para saber quién es el último en cada etapa.
No lo había pensado mucho, pero no creo que se me haya ocurrido que para las boletas que terminan con su voto número 1 para uno de los candidatos principales, las opciones más bajas se ignoran por completo. ¿ O hay un método similar que le dé peso a las selecciones más bajas?
@MichaelRichardson - Esa podría ser una nueva pregunta realmente interesante para hacer. Pero si vota por uno de los principales candidatos, ¿por qué importaría a quién más quisiera si no consiguiera el trabajo?
@Bobson Supongamos que hay dos candidatos muy populares pero controvertidos, A y B, que dividen la mayoría de los votos número 1 entre ellos, pero los votantes de cada uno de ellos realmente odian al otro. También hay un candidato de compromiso bien considerado C que le gusta a todo el mundo, pero en la mayoría de los casos no es su elección número 1. C obtiene una abrumadora mayoría de los votos #2. C parece la mejor opción obvia, con mucho el apoyo más amplio si marca los votos # 2, pero C es eliminado por tener solo el 5% de los votos # 1, y termina con un ganador que a la mitad de los votantes les gusta algo más que C pero la otra mitad lo odia.
@Douglas: IRV no es perfecto. Lo que describe es un gran ejemplo de IRV que no cumple con el criterio de Condorcet (cualquiera que gane todas las elecciones por parejas debería ganar todas las elecciones).
@ChrisH Bueno, ¿es eso lo que realmente hacen? ¿Llamar a cada distrito y recopilar los resultados de forma iterativa durante un largo período de tiempo? Otras jurisdicciones los transportan a todos a una ubicación central : "Si ningún candidato gana la mayoría de los votos la noche de las elecciones en las contiendas que tienen tres o más candidatos, las boletas y los dispositivos de memoria de cada municipio se transportan de forma segura a un sitio de tabulación central en Augusta ."
@Douglas Sí, C sería el ganador legítimo, pero la mayoría de las personas que votan por los referéndums de RCV solo quieren clasificar a los candidatos y no les importa ni entienden cómo se cuentan/eliminan realmente las papeletas.
El conteo podría hacerse a mano, pero esa no es una respuesta a la pregunta, que es "¿cómo contará la ciudad de Nueva York" los votos? Las boletas son escaneables por computadora, por lo que la intención obvia es que la computadora cuente los votos, no las personas.
@phoog tienes razón, editado un poco para ser más específico sobre la implementación de NY. En mi respuesta original me centré en la forma en que estos votos se pueden contar a mano, ya que parecía ser una parte importante de la pregunta.
@ChrisH, también puede hacer que cada distrito cuente individualmente usando un orden de rango de pseudo-candidato, lo que rápidamente se vuelve absurdo con más de un puñado de candidatos: rangevoting.org/IrvNonAdd
@uhoh, creo que debe seguir las respuestas individualmente si desea recibir notificaciones.
@JJJ ay! Realmente no sigo (aparentemente en más de un sentido), así que nunca noté que también estaba allí en cada respuesta. ¡gracias!

La ciudad de Nueva York tabuló a mano algunas boletas de elección clasificadas en elecciones especiales a principios de este año, donde la cantidad de boletas y candidatos fue comparativamente pequeña y el conteo manual fue más factible.

Sin embargo, para la elección de alcalde, la Junta Estatal de Elecciones certificó el software para el proceso de conteo: The RCV Universal Tabulator , un paquete de código abierto producido por un grupo sin fines de lucro llamado The Ranked Choice Resource Center.

El software es de código abierto y se puede ver en GitHub . Imagino que las papeletas físicas se escanearán utilizando un equipo típico de tabulación de votos certificado para producir la entrada para el software RCV. Si puede leer Java, el ciclo de tabulación central parece bastante sencillo (el software admite múltiples ganadores, aunque claramente no se usa en esta elección):

// At each iteration, we'll either a) identify one or more
// winners and transfer their votes to the remaining candidates (if we still need to find more
// winners), or b) eliminate one or more candidates and gradually transfer votes to the
// remaining candidates.

Eventualmente, también publicarán el registro completo de votos emitidos, lo que permitirá a cualquiera realizar su propia versión del algoritmo si lo desea.

De las tres respuestas actuales, solo esta aborda directamente "¿Cómo implementará físicamente la ciudad de Nueva York el algoritmo de votación por orden de preferencia..." Se escanearán las papeletas y se procesarán los datos mediante el software X, que ha sido certificado por la junta Y, y aquí están los datos de apoyo. fuentes. No veremos catorce montones de votos ordenados a mano después de cada aprobación.
actualización: ahora algunos otros también lo hacen.
"Eventualmente también publicarán el registro completo de votos emitidos" ¿Puede proporcionar una fuente para esto?
@endolith La fuente es el artículo de Gothamist vinculado a "software certificado", que dice: "Hasta ahora, el BOE de la ciudad dijo que no publicará lo que se llama el "registro de votos emitidos" hasta después de que se certifiquen los resultados primarios, lo que podría ser varias semanas después de las primarias. El registro de votos emitidos muestra los resultados en función de cómo los votantes clasificaron todas sus opciones y es lo que se usa al compilar los resultados de votación de opciones clasificadas".
Y solo como seguimiento, aquí está el registro de votos emitidos , que se publicó en línea después de las primarias.

Creo que está malinterpretando cómo funciona la votación por orden de preferencia. Si, como fue el caso, ningún candidato supera el 50% de los votos, el candidato del último lugar queda eliminado. Sus boletas ahora están todas asignadas a los candidatos de segunda elección de sus votantes. Entonces, los únicos votos que deben volver a contarse son los del candidato del último lugar.

Luego volvemos al principio y simulamos que esos votos recategorizados tienen al candidato de segunda opción como candidato de primera opción, a la tercera opción como segunda opción, etc. y nuevamente observamos si alguien ha cruzado el 50%. Si no, repetimos el proceso con el nuevo candidato del último lugar. Tenga en cuenta que es posible que el umbral del 50 % baje a medida que continúa el proceso si nadie elige un segundo o tercer candidato, etc.

El proceso se describe aquí: https://vote.nyc/page/ranked-choice-voting

También agregaría que (a) no comenzarán el proceso hasta la próxima semana y (2) algunas de las reasignaciones de la primera ronda serán muy rápidas, ya que hay números muy pequeños para la mayoría de los candidatos menores.

Mi pregunta simplemente hace la pregunta para permitir que se publiquen las respuestas. Mi entendimiento o malentendido no está disponible para usted por la forma en que está redactada la pregunta y no debe ser parte de su respuesta. "Lo que no entiendes es..." las respuestas me parecen gratuitas.
@uhoh, describe un proceso que no corresponde a cómo funciona la votación por orden de preferencia. Respondí a la pregunta de cómo, pero también señalé que su pregunta era defectuosa porque la votación no funciona de la manera que cree.
No sabes lo que pienso. Eso es axiomático. "Es más simple de lo que mucha gente piensa..." o "Todo el retorcerse las manos es en vano..." está bien, pero no es necesario señalarme a mí o a cualquier OP en SE personalmente con "No entiendes... ."
Habla sobre cuántas combinaciones posibles de boletas podría haber (y escribe un programa en Python para algo que podría calcularse con las matemáticas de la escuela secundaria y una calculadora, y obtuvo la respuesta incorrecta para empezar. El número de opciones clasificadas de 5 de 14 candidatos si ₅*P*₁₄ = 14!/5! = 726 485 760). No necesitas algoritmos, necesitas montones de papeletas. Solía ​​enseñar este material. Lo sé y puedo decir cuando alguien no lo entiende.
Y mis palabras exactas fueron: "Creo que está malinterpretando cómo funciona la votación por orden de preferencia". Nada de lo que ha dicho ha hecho más que persuadirme de que no lo hace.
Nada de lo que has dicho sugiere que no pienses que 𝜋=3 y, sin embargo, he permanecido en silencio al respecto hasta que me obligaste a hacerlo :-) Actualicé el cambio de combinaciones a permutaciones sin repeticiones, pero solo obtuve 240,240 para 5 de 14; si las matemáticas son incorrectas, tendré que solucionarlo, comprobando de nuevo ahora...
¡Por 14!/(14-5)! obtengo 240,240; Creo que está bien. ¡La pregunta interesante será cuántos votantes de la ciudad de Nueva York olvidaron la regla "sin repeticiones"!
¡Oh! Ha pasado tanto tiempo desde que tuve que calcular una permutación que me equivoqué de denominador. La mayoría de las veces, el cálculo es la permutación que tiene un denominador de (mn)!n! y dejé caer el denominador equivocado. Han pasado 15 años desde la última vez que estuve enseñando. Pero independientemente, ese número no entra en juego en la votación por orden de preferencia. La misma clase en la que enseñé permutaciones también cubrió los algoritmos de votación e hicimos una elección simulada (de sabores de helado) con múltiples algoritmos de votación. Incluso con 40 estudiantes, fue un trabajo rápido contar los votos en clase para cada uno de los algoritmos.
En retrospectiva, debería haber tenido una elección sobre algoritmos de conteo de votos.
La regla sin repeticiones tampoco se aplica estrictamente porque las personas no elegirán necesariamente un candidato para cada espacio de elección. Sin mencionar los votos por escrito que representaron alrededor de 700 votos de primera elección de la iirc.
¡Ahora eso sería una excelente respuesta y demostraría algo que realmente no aprecié! ¿Consideras agregarlo a tu publicación?
@DonHosek Uh, se escribiría ₁₄P₅, no ₅P₁₄, y sería igual a 14!/9!, ¡no a 14!/5!. Algo irónico, dado el contexto.
No quiero dejarme llevar demasiado por el argumento matemático, pero , para exactamente 5 de 14 opciones clasificadas lo es 14!/9!, pero para hasta 5 de 14 opciones clasificadas es en realidad SUM(14!/(14-n)!) for n=1 to 5lo que podría calcular en Excel, pero aún así,... El punto es que no importa para esto.
Don, tuve que rechazar tu respuesta porque no pude rechazar tus comentarios. Sé cómo funciona RCV al menos tan bien o mejor que cualquiera de los presentes. Y usted no entiende la base de la pregunta. En última instancia, se trata del transporte opaco de los datos de la boleta a la ubicación central de conteo. Hare RCV no es un precinto sumable como lo es FPTP. Pero un RCV compatible con Condorcet sería resumible por precinto (por lo que no sería necesario el transporte opaco de los datos de la boleta y el ganador puede determinarse agregando subtotales del precinto) si se usara. Desafortunadamente no lo es.

Tengo curiosidad por saber cómo la ciudad de Nueva York implementará física y computacionalmente el conteo de votos por orden de preferencia.

Físicamente , los votantes recibieron una boleta tabular (consulte esta página del gobierno de la Ciudad de Nueva York )ingrese la descripción de la imagen aquídonde las filas son candidatos y las columnas están en orden de preferencia, y las boletas se escanean para obtener registros de longitud variable (el votante puede expresar 1÷5 opciones) que contienen los candidatos votados en orden de preferencia.

Computacionalmente , NYC tiene una versión más a prueba de fallas de este script de Python (relativamente) simple

from random import seed, shuffle
from timeit import default_timer as dt
seed(20210622)
n_candidates, n_choices, n_ballots = 14, 5, 10**6    
# ##### generate the ballots
start_generation = dt()
candidates = list(range(n_candidates))+[0] # introducing a bias for candidate 0
ballots = [candidates[:n_choices] for _ in range(n_ballots)
           if not shuffle(candidates)]
print("\nGeneration of %d ballots required %.2f s"%(
        n_ballots, dt()-start_generation))

# ##### process the ballots
start_count = dt()
while True:
    counts = {candidate:0 for candidate in candidates}
    # count 1st choices
    for ballot in ballots: counts[ballot[0]] += 1
    # sort candidates according to 1st choices
    ranks = sorted(list(counts.items()), key=lambda t:t[1])
    # max no. of 1st choices
    max_1st = ranks[-1][1]
    # if there is a winner, stop counting
    if max_1st > len(ballots)//2: break
    
    # who is the loser?
    loser = ranks[0][0]
    
    # remove loser from ballots and from list of candidates
    for ballot in ballots:
        if loser in ballot: ballot.remove(loser)
    candidates.remove(loser)

    # remove any empty ballot from list of ballots
    # (copying not empty ballots is WAY FASTER than deleting void ballots)
    ballots = [ballot for ballot in ballots if ballot]

# we have a winner
print(*reversed(ranks), sep='\n')
print("Counting %d ballots required %.2f s"%(
        n_ballots, dt()-start_count))

Cuando lo ejecuté en mi antiguo portátil de gama baja, obtuve el siguiente resultado

Generation of 1000000 ballots required 9.29 s
(0, 490711)
(12, 245897)
Counting 1000000 ballots required 6.08 s

Incluso en esta simulación es evidente que el verdadero problema es preparar los datos en un formato que sea adecuado para contar, entonces es cuestión de segundos...


Como nota al pie, inicialmente pensé que tenía que optimizar el script usando bibliotecas matemáticas vectoriales, pero resultó que no era necesario.

los comentarios no son para +1, así que lo haré +n!, pero me pregunto si la detección y el manejo de clasificaciones faltantes (por ejemplo, solo 2, 3 y 5) o repeticiones (por ejemplo, 1: "X", 2: "Y", 3 : "X") es una parte importante del proceso? No pregunté específicamente sobre eso, pero como publicaste un algoritmo de ejemplo, debería representar de alguna manera cada uno de los elementos críticos.
En cuanto a las clasificaciones que faltan, el comité electoral tiene la última palabra, pero yo diría "simplemente «cambiar a la izquierda» las preferencias: s/- 3 - 7 2/3 7 2 - -/". Lo mismo se aplica a las repeticiones, pero aquí la página que vinculé dice que las repeticiones simplemente se ignoran, por lo que debería ser s/3 3 3 12 1/3 12 1 - -/. Finalmente, se tratan registros de diferentes longitudes durante el procesamiento, por lo que puedo decir que también se pueden tratar registros de diferentes longitudes en el primer paso.
@uhoh Esto puede ser una simplificación excesiva, pero el explicador de NYC vinculado en la respuesta lo aborda parcialmente. "Si clasifica a su candidato preferido más de una vez, por ejemplo, como su 1.ª, 2.ª, 3.ª, 4.ª y 5.ª elección, solo contará su primera clasificación": esto sugiere que los votos repetidos para el mismo candidato simplemente se ignoran en lugar de invalidando la papeleta. "Si clasificó a ese candidato primero, su voto irá al siguiente candidato mejor clasificado en su boleta" sugiere que se omiten los niveles que faltan
Puede ser más importante saber qué sucede si (por error) alguien clasifica a dos candidatos en el mismo lugar, por ejemplo, X e Y en primer lugar, luego Z en tercer lugar, etc. Sin embargo, tratar con boletas inválidas no es específico de este tipo de esquema. .