• Aucun résultat trouvé

Implantation de MC

Dans le document Vers des modes de scrutin moins manipulables (Page 178-182)

assentiment et le vote par notation dans leur conguration par défaut4. Bien sûr, cet attribut vaut False pour IRV.

>>> print ( election . is_based_on_ut_minus1_1 ) False

Les quatre critères suivants sont intimement liés et sont utilisés pour le calcul de MC et de ses variantes. Il s'agit des critères majoritaires principaux étudiés au chapitre3.

>>> print ( election . meets_Condorcet_c_rk ) False

>>> print ( election . meets_majority_favorite_c_rk ) True

>>> print ( election . meets_IgnMC_c ) True

>>> print ( election . meets_InfMC_c ) True

Dans SVVAMP, plusieurs variantes de ces critères existent, en fonction de la distinction habituelle entre classement et utilités, et en fonction de questions de départage d'égalité entre les candidats. Voir la documentation pour plus de détails. SVVAMP gère les implication entre ces critères : par exemple, un développeur peut se contenter d'informer SVVAMP qu'un certain système de vote vérie une va- riante donnée de FavMaj. SVVAMP sait alors quelles autres variantes de FavMaj et quelles déclinaisons de CMIgn et CMInf cela implique.

6.3 Implantation de MC

Dans cette section, nous nous concentrons sur l'implantation de MC, qui illustre au mieux les techniques générales utilisées dans SVVAMP.

6.3.1 Minimisation des calculs

Lors du calcul de MC et de ses variantes, si l'élection n'est pas manipulable, il est généralement nécessaire de boucler sur tous les candidats pour le prouver. Mais si l'élection est manipulable, il est susant de prouver la manipulation en faveur d'un seul candidat. Pour cette raison, il est intéressant de deviner pour quels candidats une manipulation est la plus vraisemblable et de tester ces can- didats en premier. Dans les méthodes génériques de la classe Election, on utilise une heuristique simple : les candidats sont examinés dans l'ordre décroissant du nombre de manipulateurs qui leur correspond. Ce comportement peut facilement être redéni quand on implante un système de vote en particulier.

De manière générale, SVVAMP essaie d'être aussi paresseux que possible. Cela signie par exemple : 1. ne pas faire de calculs inutiles et 2. ne pas faire le même calcul deux fois.

4. Dans la conguration par défaut pour le vote par notation et le jugement majoritaire, on considère que les vecteurs d'utilité sont dénis à une transformation ane strictement positive près, comme dans le modèle classique de Von Neumann et Morgenstern (annexe B). Donc prétendre qu'on a une utilité de 1 pour c et −1 pour les autres revient à dire qu'on a strictement la meilleure utilité pour c et une même utilité pour les autres.

Dans la conguration par défaut du vote par assentiment, on considère que les vecteurs d'utilité sont dénis à une constante multiplicative positive près, comme dans le modèle avec limite d'approbation de la sectionB.7, et que le bulletin sincère d'un électeur ne dépend que du signe des utilités. Donc prétendre qu'on a une utilité de 1 pour c et −1 pour les autres revient à dire qu'on donne son assentiment à c, et uniquement à c.

Ceci peut être illustré par l'exemple suivant.

>>> is_CM , log_CM = election .CM () >>> print ( is_CM )

True

>>> is_CM , log_CM , candidates_CM = election . CM_with_candidates ()

>>> print ( candidates_CM ) [0. 0. 1. 0. 1.]

1. Lorsque CM est appelé, voici une exécution possible : SVVAMP examine le candidat 0 en premier, parce qu'il a le plus de manipulateurs, mais la manipulation est prouvée impossible. Puis SVVAMP examine le candidat 2 et trouve une manipulation. SVVAMP arrête le calcul et décide que is_CM est True.

2. Lorsque CM_with_candidates est appelé, SVVAMP se rappelle le résultat du calcul pour les candidats 0 et 2 et il eectue le calcul uniquement pour les autres candidats.

6.3.2 Nombre de manipulateurs

Quand on calcule MU ou MT pour un candidat donné c, on utilise un ensemble xe de manipulateurs : les électeurs qui préfèrent eectivement c au vainqueur sin- cère w. Cependant, MC et MCI fonctionnent diéremment. En fait, pour étudier MC ou MCI en faveur d'un candidat c, SVVAMP traite la question suivante. Étant donné la sous-population des électeurs sincères, c'est-à-dire ceux qui ne préfèrent pas strictement c à w, quel est le nombre de manipulateurs minimal qu'il faut ajouter pour eectuer la manipulation5? Notons cet entier xc.

Pendant le calcul, SVVAMP maintient à jour une borne inférieure et une borne supérieure de xc. Dès que la borne inférieure devient plus grande que le nombre de manipulateurs, la manipulation est prouvée impossible. À l'inverse, dès que la borne supérieure devient inférieure ou égale au nombre de manipulateurs, la manipulation pour c est prouvée.

Ce mécanisme permet à SVVAMP de combiner diérents algorithmes et d'ac- célérer les calculs, même quand l'attribut CM_option a la valeur 'exact'. Par exemple, en utilisant VTI en mode exact, SVVAMP commence par utiliser un al- gorithme polynomial approché pour diminuer l'intervalle entre les bornes (nous y reviendrons en section6.5). Si cela sut à décider MC, le calcul s'arrête. Sinon, l'algorithme exact non-polynomial est utilisé et il exploite les bornes déjà connues pour accélérer le calcul.

6.3.3 Anonymat et caractère résolu

Le mécanisme d'ajout de manipulateurs que nous venons de décrire explique un important choix de SVVAMP : les modes de scrutin doivent être anonymes, au sens où ils traitent tous les électeurs de la même façon. Ce choix permet à SVVAMP de travailler sur le nombre de manipulateurs, pas sur leur identité. Si les électeurs avaient des poids diérents, beaucoup de problèmes faciles deviendraient diciles : par exemple, même pour un nombre xe de 3 candidats, décider MC avec des électeurs pondérés pour Borda, Maximin, VTI ou Veto est N P-complet (Conitzer

5. Cette question est appelée le problème d'optimisation non-pondéré constructif par coalition (Constructive Coalitional Unweighted Optimization problem) parZuckerman et al.(2009). Il permet de décider MC pour tous les systèmes de vote actuellement implantés dans SVVAMP.

6.3 Implantation de MC

et Sandholm, 2002; Conitzer et al., 2003, 2007), alors qu'avec des électeurs non pondérés, le problème est dans P (par rapport au nombre d'électeurs V ).

Nous supposons également que les modes de scrutin sont déterministes et résolus : ils élisent un unique candidat. Sinon, dénir la manipulation est une question en soi, parce qu'il est nécessaire de préciser comment les préférences sur les candidats s'étendent à des préférences sur les ensembles de candidats (ou les distributions de probabilité sur les candidats), ce qui peut être fait d'une innité de façons. On pourra en trouver des exemples chez Gärdenfors (1976); Gibbard

(1978);Duggan et Schwartz(2000). Utiliser des modes de scrutin résolus permet à SVVAMP de décider MC et ses variantes en bouclant sur les candidats susceptibles de bénécier d'une manipulation (c.a.d. tous sauf le vainqueur sincère), en consi- dérant pour chacun l'ensemble des électeurs intéressés par le candidat en question. En revanche, si le mode de scrutin renvoie un sous-ensemble de candidats (resp. une distribution de probabilité sur les candidats), alors il est déraisonnable (resp. impossible) de boucler sur tous les résultats possibles.

Puisque les modes de scrutin sont anonymes et résolus, ils sont nécessaire- ment non neutres en général (voir proposition1.16) : en eet, ils doivent renvoyer un unique vainqueur, y compris dans des congurations totalement symétriques comme l'exemple minimal habituel de paradoxe de Condorcet (avec V = 3 et C = 3). Dans SVVAMP, la règle de départage habituelle est que le candidat avec le plus petit index est favorisé. Par exemple, s'il y a une égalité entre les can- didats 0 et 1, alors le candidat 0 est déclaré vainqueur. Nous avons choisi cette règle pour sa simplicité : avec des règles plus compliquées, certains problèmes de manipulation habituellement dans P deviennent N P-complets (Obraztsova et al.,

2011;Obraztsova et Elkind, 2012; Aziz et al.,2013). Cependant, il n'y a pas de limitation architecturale dans SVVAMP qui empêche d'implanter des systèmes de vote utilisant d'autres règles de départage.

6.3.4 Sous-fonctions de MC

SVVAMP est écrit de façon modulaire, en utilisant une approche orientée objet qui est naturelle dans le langage Python. Par exemple, la fonction CM (ou sa version détaillée CM_with_candidates) dénie dans la classe Election appelle, en fait, un certain nombre de sous-fonctions spéciques. Chacune de ces sous-fonctions peut être redénie dans la sous-classe qui implante un mode de scrutin en particulier, tout en conservant les autres sous-fonctions par défaut.

À titre indicatif, on peut diviser les sous-fonctions en trois catégories : tests préliminaires généraux, tests préliminaires dédiés à un candidat, noyau de calcul. Les tests préliminaires généraux ont pour but de décider MC immédiatement si possible.

 Si le système de vote vérie FavMaj (section 6.2.6) et si w est un favori majoritaire6, alors MC vaut False.

 Si le système de vote vérie Cond et si w est vainqueur de Condorcet résistant, alors MC vaut False.

 Si le système de vote vérie CMInf et si w n'est pas Condorcet-admissible, alors MC vaut True.

 Si MT, MU ou MCI vaut True, alors MC vaut True.

Si nécessaire, SVVAMP eectue des tests préliminaires qui sont dédiés à la manipulation en faveur d'un candidat donné c.

6. Pour chaque test préliminaire, il y a diverses variantes qui dépendent de questions de départage d'égalité. Par souci de concision et de clarté, nous ne décrivons pas ces variantes ici. Pour plus de détails, on pourra consulter le code de la classe Election.

 Si le système de vote vérie CMInf, alors il est susant d'avoir plus de manipulateurs que d'électeurs sincères.

 Si le système de vote vérie FavMaj, alors il est nécessaire d'avoir assez de manipulateurs pour empêcher le vainqueur sincère w d'apparaître comme un favori majoritaire.

 Si le système de vote vérie Cond, alors il est nécessaire d'avoir assez de manipulateurs pour empêcher w d'apparaître comme un vainqueur de Condorcet (on peut faire le parallèle entre ce test et la notion de vainqueur de Condorcet résistant).

 Si MT ou MU est possible pour c, alors MC est possible pour c.

 Le nombre de manipulateurs susant pour MCI est également susant pour MC.

À ce stade, si l'attribut CM_option a la valeur 'lazy', l'algorithme s'arrête, que la solution ait été trouvée ou pas. Dans ce dernier cas, on renvoie la valeur conventionnelle nan.

Si l'attribut CM_option a la valeur 'exact', alors la classe Election possède un algorithme par défaut, qui peut être redéni dans chaque système de vote pour plus d'ecacité.

Si l'attribut is_based_on_rk vaut True, l'algorithme exact par défaut de la classe générique Election utilise la force brute : les manipulateurs essaient tous les bulletins possibles. Pour un candidat c, en notant nc le nombre de manipulateurs pour c contre w, cet algorithme par défaut a une complexité en temps de l'ordre de (C!)nc (multiplié par un polynôme et par le temps nécessaire pour calculer

le vainqueur d'une élection), ce qui le rend utilisable seulement pour de petites congurations7.

Si l'attribut is_based_on_ut_minus1_1 vaut True, l'algorithme exact par défaut est évident : les manipulateurs ont simplement besoin de tester le bulletin sincère correspondant à une utilité de 1 pour c et une utilité de −1 pour tous les autres candidats. Ceci fonctionne en temps polynomial (multiplié par le temps nécessaire pour calculer le vainqueur d'une élection).

Dans les autres cas (c'est-à-dire pour un système qui ne repose pas sur des classements et où la stratégie optimale de manipulation pour un certain candidat c ne consiste pas à agir comme si on avait une utilité de 1 pour c et −1 pour les autres candidats), cette méthode lève une erreur NotImplemented.

Dans la sous-classe qui implante un système de vote en particulier, la sous- fonction implantant l'algorithme exact est fréquemment redéni pour bénécier d'un algorithme plus ecace que la force brute.

6.3.5 Performances de l'algorithme générique polynomial

En utilisant l'option 'lazy', l'algorithme générique pour MC fonctionne en temps polynomial mais peut ne pas décider. La gure 6.2 donne son ecacité mesurée sur des systèmes de vote pour lesquels aucun algorithme spécique n'est implanté dans SVVAMP8. Pour ces systèmes de vote, seule la règle de calcul du vainqueur est fournie à SVVAMP, ainsi que les propriétés de base du système de vote (is_based_on_rk, meets_Condorcet_c, etc.). Par conséquent, l'algorithme

7. La complexité est en fait un peu inférieure car on teste les bulletins possibles à permutation près des manipulateurs.

8. Parmi les systèmes représentés dans la gure6.2, on sait que le problème de la manipulation est N P-dicile pour les méthodes de Baldwin et Nanson (Narodytska et al.,2011;Davies et al., 2014), PO (Xia et al.,2009;Hemaspaandra et al.,2013;Parkes et Xia,2012) et la méthode de Kemeny. Pour VTID, CSD et BI, la question est ouverte.

6.4 Algorithmes spéciques pour certains modes de scrutin

Dans le document Vers des modes de scrutin moins manipulables (Page 178-182)