Information

Author(s) Vincent Branders, Pierre Dupont
Deadline No deadline
Submission limit No limitation

Sign in

[TP.01] Les marches du pouvoir - quotient d'Hare

Le système de vote à la proportionnelle semble assez simple et immédiat au commun des mortels (ou au commun des électeurs) : le nombre de sièges attribués à un parti correspond à la proportion des votes que ce dernier a obtenus. Cependant, si l’on s’attarde sur quelques petites considérations techniques, certaines subtilités qui animent pas mal de monde apparaissent.

Examinons un exemple d’élection : trois partis se disputent 5 sièges à pourvoir.

Parti Nombre de voix Allocation exacte
Utly 437 2,185
Siditu 478 2,390
Ismo 85 0,425

Le problème consiste donc à traduire l’allocation exacte en un nombre de sièges de la manière la plus démocratique. Il existe deux écoles principales (qui se déclinent en moult variantes).

Méthode du plus fort reste : le quotient d’Hare

La méthode du plus fort reste (variante du quotient d’Hare) consiste à accorder un nombre de sièges égal à la partie entière de son allocation exacte dans un premier temps. Les sièges restants à pourvoir sont donnés tour à tour aux partis dont la partie décimale est la plus importante. Dans le cas de l’exemple susmentionné, on obtient :

Parti Nombre de voix Allocation exacte Partie entière Reste Sièges accordés
Utly 437 2,185 2 0,185 2
Siditu 478 2,390 2 0,390 2
Ismo 85 0,425 0 0,425 1

Question 1: [Validation] Un exemple simple

Calculez la répartition à laquelle on aurait abouti en suivant la méthode du plus fort reste s’il y avait eu six sièges à pourvoir.

Note : Votre réponse doit être représentée comme un tableau de trois entiers correspondants respectivement au nombre de sièges des partis Utly, Siditu et Ismo. Votre réponse, s'il y avait eu cinq sièges, aurait dû être [2,2,1].

Question 2: Le paradoxe de l'Alabama

En contrastant la répartition des sièges, entre Utly, Siditu et Ismo, lorsqu'il y a cinq ou six sièges à pourvoir, identifiez un comportement indésirable de l'algorithme.

Question 3: Plus fort reste

Vous êtes chargés d'implémenter la fonction suivante en Python. Pour préparer votre code, vous pouvez télécharger le fichier plus_fort_reste.py qui contient la signature de la fonction et quelques exemples de tests.

Note: Lorsqu'il vous est demandé d'implémenter une fonction, vous êtes invités à ne remplir que le corps de la fonction à implémenter.

def plus_fort_reste(n_sieges, resultat_vote):
    '''
    Calcul la repartition des sieges selon la methode du plus
    fort reste (variante du quotient de Hare)
    pre: `n_sieges` > 0
    pre: len(`resultat_vote`) > 1
    pre: `resultat_vote[i]` >= 0
        pour tout `i` tel que 0 <= `i` < len(`resultat_vote`)
    post: retourne un tableau `t` de même longueur que `resultat_vote`
        et tel que `t[i]` est le nombre de sieges attribues au parti
        correspondant a `resultat_vote[i]`
    '''