PROJET DE FIN D`ETUDE Le DIPLÔME d`INGENIEUR

publicité
PROJET DE FIN
D’ETUDE
présenté pour obtenir
Le DIPLÔME d’INGENIEUR et MATER 2
RECHERCHE
de SUPELEC et l’UNIVERSITE PAUL VERLAINE
par
Abdelmounaim Lokman ABBAS-TURKI
SUJET:
Monte Carlo sur GPU
Encadrants :
Bernard Lapeyre
Renaud Keriven
Enseignant chercheur au CERMICS, ENPC
Directeur du CERTIS, ENPC
Septembre 2007
Aux deux femmes qui
ont rempli mon coeur
d’amour et d’affection.
Remerciements
Mes premiers remerciements vont à Monsieur Bernard Lapeyre, d’une part, de m’avoir
proposé un sujet que j’ai énormément aimé pour sa richesse scientifique théorique et appliquée et, d’autre part, pour ses conseils avisés, son aide et sa confiance continue en mon
travail.
Je remercie aussi très chaleureusement Monsieur Renaud Keriven qui a rendu, lui et
son équipe, mon travail tellement agréable que j’ai eu l’impression de passer mes meilleures
vacances avec eux.
Ce travail a été effectué au CERMICS et principalement au sein de l’équipe du CERTIS. Que tous les membres de ces départements trouvent ici l’expression de ma gratitude,
en particulier Monsieur Jean-François Delmas et Alexandre Chariot. Leur gentillesse
et leur disponibilité ont grandement contribué à rendre ma tâche facile et mon séjour
agréable.
Je tiens également à remercier Messieurs Stéphane Vialle, Olivier pietquin et Michelle
Barret d’avoir suivi l’état d’avancement de mon travail et de me faire l’honneur d’assister
à ma soutenance.
Je suis très reconnaissant à tous les enseignants que j’ai eus durant mes dix-sept années
d’étude et de formation, sans lesquels ce mémoire n’aurait pas eu son contenu actuel.
Le travail modeste que je présente n’est qu’une goutte dans l’océan de savoir détenu
par des chercheurs d’exception comme Messieurs Knuth, Niederreiter, Fishman et tant
d’autres. Qu’ils trouvent ici l’expression de ma reconnaissance envers leur travaux de très
hauts niveaux scientifique.
Enfin, on dit souvent que l’on ne choisit pas ses parents. En ce qui me concerne, si
j’avais à le faire, j’aurais certainement retenu les miens. Qu’ils trouvent en moi l’enfant
redevable toute sa vie.
Table des matières
0 Introduction générale
0.1 Contexte du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
0.2 Objectif du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
0.3 Organisation du manuscrit . . . . . . . . . . . . . . . . . . . . . . . . . . .
0-1
0-1
0-2
0-3
1 Formalisation d’un problème de pricing via Monte Carlo
1.1 Actifs dérivés . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1 Histoire de Zaccaria, négociant génois . . . . . . . . . . .
1.1.2 La couverture par le contrat d’option . . . . . . . . . . .
1.2 Modélisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.1 Valeur d’une option et absence d’opportunité d’arbitrage
1.2.2 Equation d’un cours d’action . . . . . . . . . . . . . . .
1.3 Monte Carlo . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.1 Solution théorique du problème . . . . . . . . . . . . . .
1.3.2 Solution numérique du problème . . . . . . . . . . . . .
1.3.2.1 Schéma d’Euler en une dimension . . . . . . . .
1.3.2.2 Schéma d’Euler en plusieurs dimensions . . . .
.
.
.
.
.
.
.
.
.
.
.
1-1
1-1
1-2
1-2
1-3
1-3
1-5
1-5
1-6
1-7
1-7
1-8
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2 Ce que l’on veut faire Vs ce que l’on peut faire
2.1 Ce que sait faire une GPU . . . . . . . . . . . . . . . .
2.2 Ce que l’on veut faire . . . . . . . . . . . . . . . . . . .
2.2.1 Génération de nombres aléatoires . . . . . . . .
2.2.2 L’architecture optimale proposée . . . . . . . .
2.2.3 Extension de l’architecture . . . . . . . . . . . .
2.3 Ce que l’on peut faire . . . . . . . . . . . . . . . . . . .
2.3.1 Génération de nombres aléatoires . . . . . . . .
2.3.2 Limitations de l’architecture optimale proposée
2.3.3 Extension de l’architecture . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2-1
2-2
2-3
2-3
2-3
2-4
2-5
2-5
2-7
2-7
3 Simuler l’aléatoire
3.1 Forme générale . . . . . . . . . . . .
3.1.1 Cas à examiner puis à ignorer
3.1.2 Une autre formulation . . . .
3.2 Le plus populaire des générateurs . .
3.2.1 Choix des constantes . . . . .
3.2.2 Avantages du LCG . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3-1
3-1
3-2
3-2
3-3
3-3
3-3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3-3
3-4
3-5
3-5
3-5
3-6
3-6
3-6
4 Théorie des domaines finis
4.1 Fondements algébriques . . . . . . . . . . . . . . . . .
4.1.1 Théorie des groupes . . . . . . . . . . . . . . . .
4.1.2 Les anneaux et les domaines . . . . . . . . . . .
4.1.3 Les polynômes . . . . . . . . . . . . . . . . . .
4.1.4 L’extension des domaines . . . . . . . . . . . . .
4.2 La structure d’un domaine fini . . . . . . . . . . . . . .
4.2.1 Caractérisation du domaine fini . . . . . . . . .
4.2.2 La trace . . . . . . . . . . . . . . . . . . . . . .
4.2.3 Racines de l’unité . . . . . . . . . . . . . . . . .
4.3 Les sommes exponentielles . . . . . . . . . . . . . . . .
4.3.1 Les caractères . . . . . . . . . . . . . . . . . . .
4.3.2 Sommes de caractères d’arguments polynômiaux
4.4 Les polynômes de permutation . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4-1
4-1
4-2
4-4
4-7
4-8
4-9
4-9
4-10
4-11
4-12
4-12
4-16
4-18
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5-1
5-2
5-3
5-4
5-5
5-5
5-6
5-6
5-6
5-6
5-7
5-7
5-7
5-7
5-8
5-8
5-8
5-8
5-8
5-9
5-9
5-11
3.3
3.4
3.2.2.1 Parallélisation par division . . . . .
3.2.2.2 Parallélisation par paramétrisation
MRG et LFG comme alternatives . . . . . . . . . .
3.3.1 MRG comme alternative . . . . . . . . . . .
3.3.2 LFG comme alternative . . . . . . . . . . .
L’open source des générateurs . . . . . . . . . . . .
3.4.1 SPRNG . . . . . . . . . . . . . . . . . . . .
3.4.2 Mersenne Twister . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
5 Tester le générateur
5.1 Procédures générales de test . . . . . . . . . . . . . . . .
5.1.1 Test du χ2 . . . . . . . . . . . . . . . . . . . . . .
5.1.2 Test de Kolmogorov-Smirnov (KS) . . . . . . . .
5.2 Tests empiriques . . . . . . . . . . . . . . . . . . . . . .
5.2.1 Tests de Knuth . . . . . . . . . . . . . . . . . . .
5.2.1.1 Test d’équidisribution . . . . . . . . . .
5.2.1.2 Test de séries . . . . . . . . . . . . . . .
5.2.1.3 Test de l’écart (ou intervalle) . . . . . .
5.2.1.4 Test du poker . . . . . . . . . . . . . . .
5.2.1.5 Test du ramasseur de coupon . . . . . .
5.2.1.6 Test de permutation . . . . . . . . . . .
5.2.1.7 Test de monotonie . . . . . . . . . . . .
5.2.1.8 Test du t-maximum . . . . . . . . . . .
5.2.1.9 Test de collision . . . . . . . . . . . . .
5.2.1.10 Test de corrélation . . . . . . . . . . . .
5.2.1.11 Test de sous-séquences . . . . . . . . . .
5.2.1.12 Les tests empiriques, les plus importants
5.2.2 Tests DIEHARD . . . . . . . . . . . . . . . . . .
5.2.3 Tests SPRNG . . . . . . . . . . . . . . . . . . . .
5.3 Test théorique . . . . . . . . . . . . . . . . . . . . . . . .
5.4 Test spectral . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5.5
5.4.1 Distance maximale séparant les hyperplans adjacents
5.4.2 Dicrépance . . . . . . . . . . . . . . . . . . . . . . . .
Relation entre tests . . . . . . . . . . . . . . . . . . . . . . .
5.5.1 Relation entre test théorique et test de séries . . . . .
5.5.2 Relation entre test spectral et test de séries . . . . .
5.5.2.1 Justification du générateur séquentiel . . . .
5.5.2.2 Justification du générateur parallèle . . . .
6 Solution trouvée
6.1 Solution trouvée . . . . . . . . . .
6.1.1 Choix des multiplicateurs
6.1.2 Implémentation . . . . . .
6.2 Résultat, Tests et améliorations .
6.2.1 Résultat . . . . . . . . . .
6.2.2 Tests . . . . . . . . . . . .
6.2.3 Améliorations . . . . . . .
6.3 Avantages et liberté . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5-13
5-14
5-15
5-15
5-16
5-17
5-18
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6-1
6-1
6-2
6-2
6-2
6-3
6-3
6-3
6-4
Conclusion générale
7-1
A Exemple de programme sur CG
A-1
B Preuves des théorèmes du chapitre 4
B-1
Bibliographie
i
Chapitre 0
Introduction générale
" La finance a envahi l’actualité. Sa complexité, l’énormité des sommes en jeu, la
rapidité des fortunes et des ruines, la valse des bourses et des monnaies, l’émergence de
puissances hors contrôle des états, tout cela fascine ou inquiète. "
Catherine Lambert pour "Le Commerce Des Promesses"
Sommaire
0.1
0.2
0.3
0.1
Contexte du projet . . . . . . . . . . . . . . . . . . . . . . . . . 0-1
Objectif du projet . . . . . . . . . . . . . . . . . . . . . . . . . . 0-2
Organisation du manuscrit . . . . . . . . . . . . . . . . . . . . . 0-3
Contexte du projet
En quête de plus de rapidité dans les calculs, plusieurs institutions financières investissent dans des machines multiprocesseurs très puissantes. La cause principale de cet
investissement est qu’un trader, ayant recours à la quantification d’un produit financier,
s’impatiente en moyenne au bout de 10 minutes et prend une décision au détriment du
calcul scientifique.
Parmi les méthodes les plus utilisées dans le domaine du "pricing" d’options, on trouve
la simulation de Monte Carlo. Cette méthode est intuitive dès qu’il y a un problème d’intégration numérique. Subséquemment, toute équation différentielle linéaire peut être résolue
grâce à cette méthode.
Cependant, comme toute procédure de calcul scientifique, la simulation de Monte Carlo
possède des avantages et des inconvénients. L’obstacle majeur dans son utilisation reste
sa lenteur de calcul qui s’accentue avec notre gourmandise pour la précision du résultat.
Néanmoins, le fait qu’elle soit une méthode parfaitement parallèle favorise son usage.
0-1
CHAPITRE 0. INTRODUCTION GÉNÉRALE
En d’autres termes, on peut lancer plusieurs processeurs, travaillant de manière indépendante, pour accélérer ainsi l’obtention du résultat.
Une méthode parallèle implique l’utilisation d’une architecture informatique parallèle.
Celle-ci est illustrée par une machine multiprocesseurs qui travaillent en parallèle 1 , comme
elle peut prendre la forme d’une architecture cluster 2 .
Une architecture parallèle, récente dans le calcul scientifique, est celle de la carte
graphique. Le GPU de la carte manipule une structure de données en pipe-line 3 , exécutant
plusieurs tâches d’une manière parallèle et indépendante. La conception spéciale de cette
carte, dédiée à des traitements graphiques, rend sa manipulation très limitée. En revanche,
une fois les limitations contournées, la rapidité de l’exécution des tâches est nettement
supérieure à celle d’une CPU 4 (figure 0.1.1).
Fig. 0.1.1 – Historique des performances en milliards d’opérations par seconde.
0.2
Objectif du projet
Considérant le contexte du projet, on doit proposer une méthode efficace de calcul
d’options sur carte graphique. À première vue, l’implémentation peut paraître simple
1. ce qui est utilisée maintenant par les banques et autres entreprises
2. impliquant des communications maître-esclave, beaucoup plus utilisée dans des laboratoires
3. l’exécution des tâches est découpée en étages
4. théoriquement 100 fois plus rapide
0-2
CHAPITRE 0. INTRODUCTION GÉNÉRALE
puisque, d’une part, le Monte Carlo est par construction parallélisable et que, d’autre
part, l’architecture en pipe-line est parallèle. Toutefois, la difficulté se trouve ailleurs : elle
est dans la subtilité de générer de bons nombres aléatoires, qui se complexifie en exigeant
leur indépendance parallèle, en plus de leur indépendance séquentielle.
De ce fait, le sujet le plus important, traité dans ce mémoire, sera la génération de
nombres aléatoires qui sera largement abordée dans le cadre des limitations matérielles et
logicielles.
0.3
Organisation du manuscrit
Pour atteindre la majorité des objectifs fixés ci-dessus, le partage des chapitres a
été fait d’une manière logique : Commençant par la formulation et le positionnement du
problème, puis une exploration étendue sur l’ensemble des solutions possibles présentes
dans la littérature, jusqu’à l’élaboration de la solution qui m’a paru la plus pertinente,
tout en la justifiant.
Chapitre 1
Ce chapitre formalise le problème à résoudre et soulèvera le problème de pricing d’options via la méthode de Monte Carlo. Il se termine par une équation stochastique s’appuyant sur le modèle brownien géométrique et la méthode de Monte Carlo qui servira à
la résolution numérique de cette équation.
Chapitre 2
Cette partie est certainement la moins "digérable". En effet, nous verrons quelques
architectures logicielles pour la mise en oeuvre de la solution et les limitations auxquelles
nous serons confrontés. Dès lors que nous fixerons les degrés de liberté, il sera plus facile
au lecteur de comprendre le choix pour lequel nous basculerons.
Chapitre 3
Cette section présente plusieurs recettes de génération de nombres pseudo-aléatoires.
On verra les générateurs, de même que certaines librairies gratuites de génération disponibles sur le net. S’appuyant sur le chapitre précédent, la fin de celui-ci convergera
progressivement vers le choix du générateur approprié.
Chapitre 4
Après un choix temporaire du générateur, nous aurons à introduire ici le fondement
de la théorie, connue jusqu’à maintenant, dans le domaine de la cryptographie et de la
génération des nombres aléatoires.
0-3
CHAPITRE 0. INTRODUCTION GÉNÉRALE
Afin de rendre la lecture de ce chapitre assez fluide, on abordera la théorie avec les
preuves indispensables pour la compréhension, laissant de ce fait les autres preuves en
annexe A.
Ainsi, ce chapitre sera le moins corrélé avec l’enchaînement des autres chapitres mais,
il se terminera par des résultats indispensables pour la suite du rapport.
Chapitre 5
Comme le chapitre 3, on présentera des recettes pour tester les générateurs, une fois
choisis. Néanmoins, la valeur rajoutée de cette partie sera d’exhiber la relation entre les
différents tests 5
Bien que cette partie contienne des développements mathématiques, pour convaincre
le lecteur du fondement de nos affirmations, elle reste toutefois moins rigoureuse que la
partie qui la précède.
Chapitre 6
On finit ainsi par présenter la solution ainsi que son implémentation induisant : les
résultats, la critique des résultats et les possibles améliorations.
5. comment les résultats d’un test peuvent induire les résultats d’un autre test.
0-4
Chapitre 1
Formalisation d’un problème de pricing
via Monte Carlo
" In recent years the growing importance of derivative products in financial markets
has increased the demand for mathematical skills in financial methods. "
D. Lamberton and B. Lapeyre
Sommaire
1.1
1.2
1.3
Actifs dérivés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-1
Modélisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-3
Monte Carlo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-5
Le titre de ce chapitre contient deux mots dont l’explication fera l’objet de son contenu.
Le premier mot est pricing, lui même faisant référence à deux concepts, l’un de finance
qui est le produit financier et l’autre physique qui est la modélisation pour pouvoir
quantifier ce même produit financier. Le deuxième mot est Monte Carlo, qui est une
méthode numérique d’intégration.
Par conséquent, l’enchaînement des idées sera le suivant : partant d’une conception
purement financière, on finira par une abstraction purement mathématique qui demande
une certaine ingéniosité pour pouvoir la résoudre.
1.1
Actifs dérivés
Sans doute, une très bonne référence introductive en finance et économie du marché
est le livre [Gir01] du professeur Pierre-Noël Giraud. Ici je lui emprunterai l’histoire de
"Zaccaria, négociant génois" 1 , pour expliquer le problème de couverture par actifs dérivés.
1. elle même empruntée de l’histoire de Zaccaria à Jean Favier
1-1
CHAPITRE 1. FORMALISATION D’UN PROBLÈME DE PRICING VIA
MONTE CARLO
1.1.1
Histoire de Zaccaria, négociant génois
En 1298, un négociant génois, Benedetto Zaccaria, identifie une affaire potentiellement très rentable. Il sait qu’un stock d’alun 2 de 20 tonnes est à vendre à Aigues-Mortes
et que l’alun est actuellement très demandé à Bruges, dans les Flandres, où l’industrie
textile florissante en fait grande consommation. Supposons qu’une seule et même monnaie constituée de pièces d’or, les ducats, soit utilisée en Méditerranée et dans les Flandres.
Zaccaria sait que 20 tonnes d’alun se vendait couramment environ 2000 ducats à Bruges
ces derniers mois. Ayant approché le propriétaire du stock d’alun à Aigues-Mortes, il sait
pouvoir l’acquérir pour 1000 ducats. L’oppération durera trois mois et rien ne dit qu’au
bout de cette durée, le prix de la cargaison d’alun à Bruges sera de 2000 ducats. En
fonction des activités des autres marchands qui font converger l’alun vers Bruges et de la
demande d’alun à Bruges, le prix pourra varier, dans les deux sens.
De ce fait, dans la suite, on exposera un contrat permettant de réduire ce risque de
variation des prix au détriment d’une espérance de gain moins importante.
1.1.2
La couverture par le contrat d’option
Ici on s’intéresse aux contrats exercés à terme : ce sont des contrats impliquant un
échange de physique 3 dans le futur. Ils stipulent donc que celui qui a vendu le contrat
s’engage à livrer, dans un mois par exemple, un lot de marchandises à celui qui a acheté
le contrat, à un prix qui est fixé aujourd’hui. Naturellement, jusqu’au jour de livraison
prévu, tant le vendeur que l’acheteur du contrat peuvent s’en séparer (le vendeur le racheter, l’acheteur le revendre).
Un principe fondamental en finance est celui qui affirme : "Pour se couvrir contre
un risque de fluctuations des prix, un acheteur (resp. vendeur) d’une marchandise doit
prendre une position contraire en contrat à celle prise dans le physique. " Dit autrement,
pour se couvrir, un acheteur d’une marchandise à terme doit acquérir des contrats de
vente 4 . Cependant, un vendeur de marchandise à terme, pour se couvrir, il doit acquérir
des contrats d’achat 5 .
Un des contrats que l’on peut exercer à terme est l’option, à une seule différence
est que l’option ne nous oblige pas l’exercice. Il existe deux types principaux 6
d’options : options d’achat et options de vente 7 . Acheter aujourd’hui une option d’achat
(resp. de vente) de 1 tonne d’alun à échéance de trois mois et au prix d’exercice de 100,
c’est acheter, en payant aujourd’hui le prix de l’option, par exemple 5, le droit d’acheter
2. L’alun est un produit minéral qui, à l’époque, était utilisé dans l’industrie du textile pour fixer la
teinture.
3. marchandises, actions,...
4. Dans le jargon, on dit qu’il est long dans le physique et court en contrat
5. Dans le jargon, on dit qu’il est court dans le physique et long en contrat
6. principaux, ou ordinaires et dans le jargon financier, on dit options vanilles.
7. appelés respectivement calls et puts en anglais.
1-2
CHAPITRE 1. FORMALISATION D’UN PROBLÈME DE PRICING VIA
MONTE CARLO
(resp. de vendre) dans trois mois 1 tonne d’alun au prix de 100 à celui qui a vendu l’option.
Remarque:
Pour rester dans le cas le plus facile, cette option ne peut être exercée qu’à la maturité,
elle est dite option européenne.
Ainsi, si Zaccaria veut se couvrir contre une baisse du prix de l’alun qui au comptant 8
vaut 100 aujourd’hui, il achète une option de vente à troix mois au prix d’exercice de
100. Le prix d’option est 5, qu’il débourse aujourd’hui. Si, trois mois après, le prix de
l’alun a baissé à 80, il exerce l’option de vente et cède donc son alun à 100 au vendeur de
l’option qui, le revendant à 80, perd 20 moins 5, le produit de la vente de l’option qu’il
conserve. Le prix effectif de vente pour Zaccaria sera 100 − 5(prix d’option)= 95. L’intérêt
de l’option pour Zaccaria c’est que si le prix de l’alun a monté à 110, il n’exerce pas
l’option et vend son alun à 110 sur le marché. Son prix effectif de vente sera 110 − 5(prix
d’option)= 105. Le vendeur de l’option évidemment gagne 5. Ainsi Zaccaria qui est long
en alun, en achetant une option de vente, achète une protection contre la baisse des prix
sans pour autant se priver d’une possibilité de gain si le prix monte. Un industriel court
en alun achètera, lui, une option d’achat, se protégeant ainsi contre le risque de hausse
tout en conservant la possibilité de gain si le prix baisse.
Un point, dans le paragraphe précédent, peut attirer l’attention du lecteur : Comment
le vendeur d’option a pu perdre autant, lors de la baisse des prix? La réponse est simple,
il a mal estimé la valeur de son option. Tout l’art de la section suivante est de quantifier
le prix de cette option. Il va de soit qu’une bonne quantification implique une bonne
stratégie financière.
1.2
Modélisation
C’est là qu’intervient le roi des sciences 9 , la physique. Comment modéliser un actif
pour pouvoir, par la suite, estimer les contrats fondés sur sa valeur?
Un très bon livre se trouvant à l’intersection des finances et des mathématiques
est [HUL04] de John Hull. S’inspirant de cet ouvrage, deux points seront présentés dans
cette section : Le problème de modélisation financière, faisant appel aux équations stochastiques. Et le problème d’évaluation d’une option, faisant appel à la notion d’absence
d’opportunité d’arbitrage. Commençons par le dernier point.
1.2.1
Valeur d’une option et absence d’opportunité d’arbitrage
Dans les marchés financiers, un facteur principal influençant le prix d’un actif financier
est l’arbitrage. L’arbitrage comme il est défini par Pierre Noël Giraud est : une opération
sans risque qui résulte d’une "imperfection" des marchés et qui a pour vertu
8. Le prix d’achat immédiat.
9. Karl Friedrich Gauss a affirmé que si les mathématiques sont la reine des sciences alors la phyique
en est le roi.
1-3
CHAPITRE 1. FORMALISATION D’UN PROBLÈME DE PRICING VIA
MONTE CARLO
de corriger cette imperfection.
L’illustration que l’on peut donner dans le contexte de l’histoire de Zaccaria est la
suivante :
Supposons le cours de l’alun au comptant, à l’instant initial 10 t = 0 est :
S0 = 50
D’autre part le prix de l’exercice 11 pour lequel Zaccaria considère son commerce comme
rentable est :
K = 95
Zaccaria effectuera sa transaction au bout de trois mois, ce qui représente une période 12
de :
T = 0.25
en unité d’année.
Zaccaria veut estimer le bon prix de son option de vente. Sa belle mêre 13 , une femme
riche et exigente 14 , est prête à lui assurer pour n’importe quelle somme K exp−rT déposée
chez elle, une somme de K exp−rT exprT = K au bout de la période T où r représente le
taux d’intérêt à risque neutre, on prend ici r = 0.1.
Deux solutions 15 d’investissement peuvent être envisagées par Zaccaria :
S1◦ ) Déposer le montant K exp−rT chez sa belle mêre, pour récupérer K au bout de trois
mois . Soit un investissement de 92.6544.
◦
S2 ) Soit acheter un contrat de vente au prix P donnant le droit à Zaccaria de vendre la
tonne d’alun à K à la date T au lieu de le vendre à ST , pour une marchandise qu’il
a initialement achetée à S0 = 50. Soit un investissement de 50 + P .
A l’échéance et s’il existe une opportunité d’arbitrage, la deuxième solution est plus rentable 16 , puisque :
Si ST < K La solution permet à Zaccaria d’exercer l’option pour recevoir K.
Si ST > K Zaccaria n’exerce pas son option et il reçoit donc ST .
De ce fait, la deuxième solution lui procure un portefeuille égal à max(ST ; K). Contrairement à la première qui ne lui procure que K. Soit donc à maturité :
P + S0 ≥ Ke−rT
(1.1)
10. avant toute opération commerciale
11. strike en anglais
12. dite maturité
13. qui joue ici le rôle d’une banque, puisque cette activité n’existait pas en 1298
14. en partie parcequ’il est marié avec sa fille
15. une troisième solution ne peut être qu’un ajustement dynamique entre les deux solutions citées ici
16. et surtout un risque théoriquement équivalent
1-4
CHAPITRE 1. FORMALISATION D’UN PROBLÈME DE PRICING VIA
MONTE CARLO
Dans le cas où il n’y a pas d’arbitrage et P ≤ K exp−rT −S0 à l’instant initial, un arbitragiste 17 achètera la deuxième solution et vendra la première, jusqu’à absence d’opportunité
d’abitrage, c’est à dire :
Pborne inf = max(Ke−rT − S0 ; 0)
(1.2)
Le zéro dans l’identité précédente vient du non exercice de P. En effet, à l’échéance, si
ST > K alors P = 0.
En vérité l’expression (1.2) n’est qu’une borne inférieure du prix du put. En effet,
conaissant le comportement moyen de l’actif St , un put européen vaut à l’échéance :
PT = E{max(K − ST ; 0)}
Où E représente l’espérance mathématique. Pour obtenir cette valeur à l’instant initial,
il suffit de pondérer par un taux sans risque, soit donc :
PT = e−rT E{max(K − ST ; 0)}
1.2.2
(1.3)
Equation d’un cours d’action
Dans le cas d’un invistissement sans risque et avec une rentabilité fixe à temps continu,
on obtient un processus qui suit :
dS = rSdt, S(t = 0) = S0
(1.4)
Le cours d’une action présente un risque, c’est-à-dire une volatilité σ non-nulle qui doit
être prise en compte dans (1.4) pour obtenir l’équation stochastique suivante :
dS = rSdt + σSdW, S(t = 0) = S0
avec : dW =
√
(1.5)
dtε où ε est une variable aléatoire normale centrée réduite.
L’équation stochastique (1.5) est la même utilisée par Black, Scholes et Merton pour
extraire l’équation suivie par le contrat sur un sous-jacent S.
1.3
Monte Carlo
Deux très bons documents, résumant le Monte Carlo dans les finances, sont [LST] et
le polycopié [Jou07] de Monsieur Benjamin Jourdain. Ici, il ne sera traîté que la résolution
de (1.5) à une et plusieurs dimensions.
17. qui peut être aussi la belle mêre de Zaccaria
1-5
CHAPITRE 1. FORMALISATION D’UN PROBLÈME DE PRICING VIA
MONTE CARLO
1.3.1
Solution théorique du problème
La méthode de Monte Carlo s’inspire de la loi des grands nombres qui affirme la
convergence de la moyenne empirique vers l’espérance mathématique.
Théorème 1.1 Soit (Xi )i≥1 une suite de variables aléatoires indépendantes et identiquement distribuées. Si l’espérance de Xi est finie, i.e. E(Xi ) < ∞, alors la loi forte des
grands nombres affirme que :
µ
¶
X1 + X2 + ... + Xn
P
lim
= E(Xi ) = 1
(1.6)
n→+∞
n
D’autre part, le théorème de la limite centrale permet de déterminer la vitesse de convergence vers cette espérance 18 . Définissons donc l’erreur d’estimation suivante :
ǫn = E(Xi ) −
X1 + X2 + ... + Xn
n
(1.7)
alors le théorème suivant nous précise la vitesse de convergence.
Théorème 1.2 Soit (Xi )i≥1 une suite de variables aléatoires indépendantes et identiquement distribuées. Si le moment du deuxième ordre de Xi est fini, i.e. E(Xi2 ) < ∞ et σ 2
est donc sa variance , alors le théorème de la limite centrale affirme que :
√
n
ǫn → G
(1.8)
σ
avec G une variable aléatoire gaussienne centrée et réduite, i.e. G ∼ N (0,1).
De ce fait, s’il on veut avoir une approximation de 95%, ce qui s’exprime en variable
gaussienne centrée réduite par :
P (|G| ≤ 1.96) ≈ 0.95
(1.9)
σ
ǫn ≤ 1.96 √
n
(1.10)
ainsi (1.8) et (1.9) donnent :
Les théorèmes 1.1 et 1.2 vont servir à donner une estimation à l’espérance qui apparait
dans l’expression de l’option qu’on a établit dans la section 1.2.1 et qui se met sous la
forme suivante :
P = max(e−rT E(K − ST ),0)
(1.11)
La seule ambiguité qui reste dans formule (1.11) est la valeur de ST . Cette ambiguité est
levée après la résolution numérique de la forme stochastique (1.5). En plus le théorème
suivant, dit théorème d’Itô, affirme l’unicité de cette solution.
18. pour de vraies variables aléatoires
1-6
CHAPITRE 1. FORMALISATION D’UN PROBLÈME DE PRICING VIA
MONTE CARLO
Théorème 1.3 Soit l’EDS suivante :
½
dx(t) = b(t,x(t))dt + σ(t,x(t))dBt
x(0) = x0
(1.12)
On suppose que :
∃K > 0, ∀t ∈ [0,T ],
½
∀x ∈ Rn , |b(t,x)| + |σ(t,x)| ≤ K(1 + |x|)
(1.13)
∀x,y ∈ Rn , |b(t,x) − b(t,y)| + |σ(t,x) − σ(t,y)| ≤ K|x − y|
Alors, l’EDS (1.12) admet une unique solution (Xt )t∈[0,T ] presque sûrement 19 .
Comme tout théorème d’existence et d’unicité de la solution d’une équation, celui d’Itô
peut-être prouvé d’une manière classique en passant par la technique du point fixe.
Ce théorème nous affirme l’unicité de la solution de l’équation stochastique qui modélise le comportement de St et qui donne de ce fait la valeur de l’action ST à la maturité.
1.3.2
Solution numérique du problème
Commençons par le problème simple à une seule dimension.
1.3.2.1
Schéma d’Euler en une dimension
Résoudre une EDS en une dimension s’effectue de la manière suivante : On subdivise
l’intervalle [0,T ] en N sous-intervalles de même longueur et pour k ∈ {0,...,N }, on pose
tk = kT /N , puis la discrétisation de l’équation (1.5) , selon un schéma d’Euler explicite,
donne :
½
S(t =
¡ 0) = S0
¢
(1.14)
∀k ∈ {0,...,N − 1}, Stk+1 = Stk 1 + r(tk+1 − tk ) + σ(Wtk+1 − Wtk )
√
avec : (Wtk+1 − Wtk ) = tk+1 − tk ε où ε est une variable aléatoire normale centrée réduite.
Ainsi pour connaitre la valeur de l’actif financier à la maturité, il suffit
de simuler une distribution gausienne.
La génération de variables aléatoire gaussienne résulte de celle des variables aléatoires
uniforme par une simple transformation. Il existe plusieurs passages entre une loi uniforme
et une loi Gaussienne 20 . Celle utilisée et qui colle bien à notre application est celle de BoxMuller. La proposition suivante donne la formule de passage. Pour plus d’informations,
j’invite le lecteur à consulter le livre de recette [Dag88] de Dagpunar.
Proposition 1.1 Soient deux variables aléatoires uniformes et indépendantes U1 et U2
sur l’intervalle (0,1). Alors N1 et N2 tels que :
p
p
N1 = −2logU1 cos(2πU2 ), N2 = −2logU2 sin(2πU1 )
sont deux variables aléatoires gaussiennes indépendantes centrées réduites.
19. Ce théorème introduit une unicité forte. L’unicité faible serait celle, par exemple, qui garantit la
même loi pour deux solutions de la même équation
20. Par exemple, on peut utiliser le théorème centrale limite
1-7
CHAPITRE 1. FORMALISATION D’UN PROBLÈME DE PRICING VIA
MONTE CARLO
1.3.2.2
Schéma d’Euler en plusieurs dimensions
Ce modèle est utilisé pour évaluer les options sur panier d’actfis. Une option sur
panier d’actifs est une option qui ne contient plus un seul sous-jacent 21 mais plusieurs
sous-jacents. De ce fait, par rapport au modèle en une dimension, ici on attribuera un
modèle à chaque sous-jacent et c’est la valeur du portefeuille, qui est la somme de tous
les actifs, qui nous intéresse. Formellement pour une option européenne de vente (put) on
utilise la formule suivante :
P = max(exp−rT E(Σ − ΠT ),0)
(1.15)
avec :
ΠT =
n
X
SiT
et Σ =
n
X
Ki
(1.16)
i=1
i=1
Ce qui n’est qu’une somme sur n valeurs d’actifs et des strike, où n est le nombre
d’actifs sous-jacents.
Connaissant la solution du problème en une dimension, la résolution du même problème en plusieurs dimensions peut paraître facile, si les actifs sont indépendants. Cependant, dans la théorie financière, les actifs sous-jacents sont choisis pour être corrélés. En
effet, une bonne stratégie financière sur des actifs corrélés peut diminuer le risque pour
un taux de rentabilité fixé, ou bien augmenter le taux de rentabilité pour un risque fixè.
La bonne nouvelle est que la corrélation, de deux actifs qui suivent une équation (1.5),
peut être traduite par la corrélation des browniens qui les génèrent. Cette procédure, de
corréler les browniens, peut être réaliser avec la décomposition Cholesky, de sorte que
pour la matrice de covariance A = E{XX T } − E{X}E{X T } des actifs X = (S1 ,...,Sn )T ,
une décomposition de Cholesky s’écrit :
A = LLT
(1.17)
avec L une matrice triangulaire inférieure.
Ainsi pour un vecteur de variables normales centrées réduites et décorrélées Υ =
(ε1 ,ε2 ,...,εn )T , on exécute le schéma d’Euler pour chaque actif Si utilisant la nouvelle variable normale ωi = [LΥ]i .
Une autre méthode est utilisée pour corréler les browniens, elle est fondée sur l’analyse
en composantes principales (ACP). Cette deuxième méthode est préférée dans le cas
d’un grand panier d’actifs, puisque cette deuxième alternative fait diminuer les calculs et
ne prend en considération que quelques axes préviligiés de la corrélation.
21. Un sous-jacent est une action, une marchandise ...
1-8
Chapitre 2
Ce que l’on veut faire Vs ce que l’on
peut faire
" Because of the GPU’s specialized design, it is much faster at graphics tasks, such
as rendering 3D scenes, than a general-purpose CPU would be. New GPUs process tens
of millions of vertices per second and rasterize hundreds of millions or even billions of
fragments per second. Future GPUs will be even speedier. This overwhelmingly faster
than the rate at which a CPU could process a similar number of vertices and fragments.
However, the GPU cannot execute the same arbitrary, general-purpose programs that a
CPU can. "
Randima Fernando et Mark J. Kilgard
Sommaire
2.1
2.2
2.3
Ce que sait faire une GPU . . . . . . . . . . . . . . . . . . . . . 2-2
Ce que l’on veut faire . . . . . . . . . . . . . . . . . . . . . . . . 2-3
Ce que l’on peut faire . . . . . . . . . . . . . . . . . . . . . . . . 2-5
L’architecture d’une GPU est très spécifique et ne ressemble pas à celle d’une CPU.
Aussi les langages, permettant de les manipuler, autorisent moins de degrés de liberté 1
que ceux existant pour CPU.
Après avoir expliquer le fonctionnement d’une GPU dans la première partie de ce
chapitre, il est alors question d’exposer, dans la deuxième partie, nos souhaits d’implémentation. Puis, en troisième partie, de définir les solutions plausibles liées aux limitations
matérielles et logicielles.
1. même si une avancée considérable a été réalisée depuis les premières GPU. Cette progression ne
peut que durer à cause de l’appétence des jeunes pour les jeux vidéo.
2-1
CHAPITRE 2. CE QUE L’ON VEUT FAIRE VS CE QUE L’ON PEUT FAIRE
2.1
Ce que sait faire une GPU
La GPU est l’unité responsable du traitement de données sous format graphique.
Le format graphique d’un flux de données vidéo est une séquence d’images alors que celui
d’une image est un ensemble de fragments. L’élément graphique élémentaire constituant
un fragment est un pixel. En d’autres termes, l’information est portée par un ensemble
de pixels regroupés dans un fragment, dans une image ou dans un flux vidéo.
Une fois que l’on connaît l’objet qui conduit l’information, le traitement de cette information prendra en compte la nature de l’objet qui la porte. Ainsi, si l’on veut dégager
une information de mouvement de rotation dans une séquence vidéo, il suffit d’afficher
séquentiellement sur l’écran une trentaine d’images par seconde, de manière à ce que la
valeur portée par chaque pixel, dans chaque image, donne cette impression de mouvement.
Le logiciel openGL réalise l’inverse de la fonction de notre cerveau, du fait qu’il traduit l’information du mouvement physique, comme la rotation, en une information de
flux de pixels. La différence entre openGL et CG réside dans le lieu de cette traduction.
En effet, le premier l’effectue au niveau du CPU et envoie cette traduction au GPU alors
que le deuxième envoie les informations utiles pour la traduction du CPU au GPU. C’est
donc cette dernière unité qui joue le rôle de l’interprète.
Le fait que CG ne sollicite le CPU que pour l’initialisation des données et le retour des
résultats, les communications CPU/GPU sont considérablement réduites. L’autre point
qui accélère la vitesse de traitement est celui dû au nombre de processeurs dans une GPU
participant à la tâche de traduction.
Avec CG, la manipulation des données est découpée en plusieurs étages. Le shader
est la spécification des différentes opérations à réaliser au niveau d’un étage. L’ensemble
des opérations est exécuté sur un groupe de pixel, dit texture. De ce fait, le shader est
l’élément principal du langage CG qui reçoit, en entrée, une texture et des données nécessaires à la transformation puis renvoie une texture en sortie.
Les opérations réalisées par un shader sont, par défaut, exercées sur un pixel indépendamment des autres appartenant à la même texture. L’expression par défaut remplace
ici le fait que l’on peut créer une dépendance entre pixels de la même texture si l’on réussit
à trouver l’algorithme approprié.
Un shader n’accepte pas des appels récursifs pour la seule raison qu’il n’y a pas de
notion de piles en manipulant des pixels. Un pixel peut contenir quatre valeurs rgba 2 int
(resp float) dans une texture int (resp float). Contrairement à une allocation de int qui
permet de représenter les entiers ∈ [0,232 − 1], c’est à dire 32 bits de précision, l’allocation
float ne permet que 23 bits de précision.
2. les trois couleurs principales et le niveau de gris
2-2
CHAPITRE 2. CE QUE L’ON VEUT FAIRE VS CE QUE L’ON PEUT FAIRE
Fig. 2.1.1 – L’allocation float.
Nous donnons, dans l’annexe A, un exemple de programmation d’un shader sur CG
pour le schéma d’Euler (1.14).
2.2
Ce que l’on veut faire
Rappelons que l’objectif principal du stage est de : réussir à programmer, sur une
carte graphique, une simulation de Monte Carlo afin de pouvoir estimer une
option européenne.
Du but principal, on peut extraire plusieurs objectifs intermédiaires que l’on résume
d’une manière chronologique dans les points suivants :
2.1.1 Vérifier que l’on peut réaliser un bon générateur de nombres aléatoires sur carte
graphique.
2.1.2 Qu’elle est l’architecture qui permet de se rapprocher, le plus possible, des performances optimales?
2.1.3 Est-ce qu’on peut exploiter l’architecture présentée pour d’autres actifs dérivés?
Les trois préoccupations, citées ci-dessus, seront détaillées dans les sous-sections suivantes.
2.2.1
Génération de nombres aléatoires
On souhaite : (i) réaliser la génération de nombres aléatoires sur des entiers pour avoir
la période maximale. En effet, lorsqu’on utilise des int, on gagne 9 bits de représentation
par rapport à des float. D’autre part, on veut (ii) perdre le moins de précision possible
lorsqu’on passera en float, (iii) utiliser le meilleur générateur possible et, (iv) maximiser
la période de génération.
2.2.2
L’architecture optimale proposée
Une architecture raisonnable est celle qui nous permettra de manipuler des trajectoires complètement parallèles d’actifs financiers, comme cela est représenté à la figure
2.1.1. En effet, les trajectoires, dans un Monte Carlo, sont simulées de façon indépendante.
Le meilleur moyen de tenir compte de cette indépendance est d’associer une trajectoire à
chaque pixel. De ce fait, la communication sera celle établie entre les pixels de textures
différentes et non pas entre les pixels de la même texture.
2-3
CHAPITRE 2. CE QUE L’ON VEUT FAIRE VS CE QUE L’ON PEUT FAIRE
Formellement, les textures, en noir, représentées sur la figure 2.1.1 sont des textures
float qui contiennent la valeur du sous-jacent à l’instant tn−1 et tn successivement. Cet
actif sous-jacent suit l’équation aux différences (1.14). De ce fait, le passage d’une texture
à une autre s’effectuera après une génération de nombres aléatoires sur la texture int en
rouge. Cette dernière texture contient sur chaque pixel un générateur de nombres aléatoires. C’est comme si on avait N processeurs travaillant parallèlement, où N représente
le nombre de pixels utilisés.
Cette architecture permet aussi de décider du nombre de trajectoires nécessaires pour
une précision donnée 3 . Ainsi, avant de lancer la simulation, on spécifie la taille des textures
pour un niveau de précision donné.
120
Textures successives remplies
par la valeur de
100
l’actif
Texture de génération
de nombres aléatoires
80
60
S0= 50
40
20
0
20
40
60
80
100
Fig. 2.2.1 – Architecture que l’on veut réaliser.
2.2.3
Extension de l’architecture
L’architecture présentée, pour le cas à une seule dimension, est parfaitement adaptée
à plusieurs types d’options, comme les options asiatiques ou encore, plus importantes, les
options sur panier.
3. formule (1.10) du chapitre précédent.
2-4
CHAPITRE 2. CE QUE L’ON VEUT FAIRE VS CE QUE L’ON PEUT FAIRE
1
1
1
2
21
3
1 2
1 2
3
3
1 2
1 2
3
Textures de génération de nombres aléatoires
Textures des browniens 1,2 et 3
Matrice triangulaire inférieure de Cholesky
Textures d’actifs
Fig. 2.2.2 – Architecture pour trois actifs.
L’importance de ces dernières options vient de leur gourmandise en temps de calcul,
une gourmandise qui est proportionnelle au nombre d’actifs qui interviennent dans le
calcul. Cependant, il est tout à fait raisonnable d’appliquer la même architecture aux
options sur panier, puisqu’il suffit d’utiliser plusieurs textures rouges pour générer des
nombres aléatoires, puis générer les browniens correspondants sur des textures noires.
Enfin, il faut considérer une autre texture pour contenir l’actif qui sera calculé à partir
d’une somme pondérée 4 des différents browniens, comme ceci est représenté à la figure
2.1.2.
2.3
Ce que l’on peut faire
Afin de garder l’attention du lecteur, cette section sera agencée sous la forme de
réponses aux points que l’on voulait mettre en oeuvre dans la section précédente.
2.3.1
Génération de nombres aléatoires
(i) Contrairement aux anciennes cartes qui utilisent exclusivement des float, la nouvelle
carte graphique GeForce 8800 de NVIDIA permet de manipuler des int, même
si le "driver" utilisé est toujours en version bêta. C’est ce qui nous a incité à réaliser
ce stage.
(ii) Le problème de passage de int en float n’est pas optimal. En effet, la double précision n’existe pas sur carte graphique et on doit passer par des float, pour pouvoir
normaliser et obtenir des nombres aléatoires dans l’intervalle [0,1]. Une solution de
ce problème est présentée dans le dernier chapitre de ce mémoire 5 .
4. par exemple celle utilisant la matrice de Cholesky
5. L’idée s’appuye sur la précision scientifique d’un nombre donné.
2-5
CHAPITRE 2. CE QUE L’ON VEUT FAIRE VS CE QUE L’ON PEUT FAIRE
(iii) Pour l’instant, le Mersenne Twister est le meilleur générateur, mais il est inacceptable par un langage du type CG 6 , comme tous ceux qui utilisent la notion
de registre. En effet, ce langage peut être caricaturé par une usine de travail à la
chaîne 7 . Au lieu de produire des voitures (ou un autre accessoire), cette usine produit des textures.
Une texture peut être vue comme un ensemble de pixels. Les ouvriers dans cette
chaîne sont les shader. Un shader n’est responsable que de la tâche qu’on lui a
spécifié. Ainsi, le shader agit sur une file de textures, comme dans une chaîne de
voiture où chaque ouvrier est forcé d’exécuter une tâche bien précise sur les voitures
qui passent devant lui.
Par conséquent, la notion du passé est limitée. Cette notion ne peut être réaliser
qu’en définissant des textures de stockage, ce qui limite notre architecture en textures significatives 8
Une question qui peut venir à l’esprit est celle de se dire : puisqu’une texture est
un ensemble de pixels, pourquoi ne pas organiser ces pixels de manière à ce que
l’on puisse stocker les données du passé dans certains d’entre eux ? Cette question
fait appel à une autre, celle qui concerne la liberté de se déplacer dans une texture,
comme c’est le cas dans un emplacement mémoire.
La réponse est négative. Effectivement, CG ne permet pas la liberté de se déplacer 9
sur une architecture pour récupérer les données qui nous arrangent, mais admet la
manipulation d’une architecture en pipeline, c’est-à-dire, uniquement les pixels qui
se trouvent dans deux textures différentes peuvent être dépendants 10 .
Pour conclure donc ce point important : Un bon générateur, au sens optimalité d’implémentation, est celui qui utilise le moins de données du
passé. Consulter [FK] pour plus de précisions.
(iv) Enfin, la période du générateur est limitée par la représentation 32 bit des int.
D’autre part, même si l’on veut agencer deux allocations de 32 bits pour avoir
une de 64 bit, on se confrentera au problème de passage int64 à float. Certes, le
générateur de nombres aléatoires sera meilleur que celui de 32 bits, néanmoins les
calculs seront plus longs, la précision float limitant la densité 11 de notre générateur,
6. Le langage que j’ai utilisé pour programmer sur carte graphique
7. l’usine de montage de Renault, par exemple
8. celles qui ne vont pas se contenter seulement de stocker des données, mais plutôt de rendre un
résultat, puisqu’il y a une limitation en nombre de pixels manipulés
9. déplacement très limité
10. On voit bien que cette architecture est très bien adaptée pour une application vidéo, là où l’information résulte d’une succession d’images et non pas de transformations réalisées sur une même image,
soit donc, une communication inter-textures et non pas une communication intra-texture
11. En effet, un générateur à 64 bits est plus dense, en passant à une variable aléatoire uniforme sur
(0,1), que le générateur à 32 bits.
2-6
CHAPITRE 2. CE QUE L’ON VEUT FAIRE VS CE QUE L’ON PEUT FAIRE
aussi performant soit-il 12 .
2.3.2
Limitations de l’architecture optimale proposée
La bonne nouvelle du stage est que l’architecture proposée est parfaitement réalisable. Néanmoins deux limitations sont à prendre en compte.
1◦ ) Cette limitation est dans le nombre de processeurs pouvant travailler en parallèle. On
peut penser que seul le nombre de pixels délimite le nombre de processeur travaillant
en parallèle. Ce n’est malheureusement pas le cas. En fait, les limitations sont au
niveau "hardware" puisque on ne peut pas dépasser le nombre de 128 processeurs
en parallèle. De ce fait, la limitation de vitesse théorique est de 128×la vitesse d’un
CPU.
◦
2 ) Une autre limitation vient de l’indépendance des générateurs de la texture rouge.
En effet, étant donné que la GPU utilise seulement 32 bit c’est insuffisant pour
avoir des générateurs complètement indépendants. La solution à ce problème sera
présentée au chapitre 6.
2.3.3
Extension de l’architecture
En effet il est tout à fait possible de généraliser ce type d’architecture sur d’autres
types d’options. La seule limitation, en plus de celles spécifiées pour l’opton vanille, est la
limitation en nombres de pixels utilisés, puisqu’en vérité la GPU ne peut pas manipuler
plus de 75 × 108 pixels. Ce nombre peut sembler énorme, mais il suffit d’utiliser trois
textures de 1024 × 1024 pour chaque actif pour se rendre compte des restrictions 13 . Ce
problème peut-être résolu en chargeant les données sur CPU, lorsqu’il y a saturation.
12. Je précise toutefois que je n’ai pas effectué de tests pour valider définitivement cette affirmation
13. autour de 200 actifs
2-7
Chapitre 3
Simuler l’aléatoire
" Le caractère aléatoire d’un signal peut être une illusion liée à notre manque de
connaissance. "
Bernard Picinbono
Sommaire
3.1
3.2
3.3
3.4
Forme générale . . . . . . . . . . . .
Le plus populaire des générateurs .
MRG et LFG comme alternatives .
L’open source des générateurs . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3-1
3-3
3-5
3-6
Ce chapitre constitue, en quelque sorte, un brouillon des chapitres ultérieurs. Le but ici
n’est pas de résoudre la problématique du stage, mais seulement de donner une intuition,
un a priori sur le bon choix de la fin. J’ai essayé de mon mieux de rendre ce chapitre le plus
fluide possible, pour que le lecteur puisse le comprendre en un seul passage. Par contre,
l’assimilation du chapitre antérieure est indispensable à la compréhension de celui-ci 1 .
Le partage se fera en quatre sections. Dans la première, on donnera la forme générale
d’un générateur de nombres aléatoires. La deuxième contiendra plus de détails sur le plus
utilisé d’entre eux, c’est-à-dire le LCG. Dans l’avant dernière section, on cite les deux
autres générateurs classiques restants. Enfin, on termine par mentionner les générateurs
proposés dans les bibliothèques scientifiques 2 et leurs adéquations à notre problème.
3.1
Forme générale
Un générateur de nombres aléatoires se met sous la forme générale suivante :
– Soit un ensemble d’entiers : F = {0,1,...,m}
1. Le chapitre précédent est une sorte de spécifications ou (si l’on préfère) un cahier des charges de ce
chapitre.
2. gratuites
3-1
CHAPITRE 3. SIMULER L’ALÉATOIRE
– en entrée : la racine " X0 ∈ F k , k ∈ N∗ " est un vecteur aléatoire .
– puis une récurrence parfaitement déterministe qui étale l’information aléatoire :
Xn = (AXn−1 + C) mod(m)
(3.1)
avec :
2
– A = (ai,j∈[1,k] ) ∈ F k
– C ∈ F k vecteur constant.
3.1.1
Cas à examiner puis à ignorer
Plusieurs choix peuvent être pris pour la valeur de m. En général les deux alternatives
trouvées dans la litérature sont celles d’un modulo un Mersenne Prime (MS) 3 ou une
puissance de 2.
La deuxième solution est défectueuse pour le motif suivant :
Théorème 3.1 Soit la séquence suivante :
Xn = (AXn−1 + C) mod(m1 )
Si m2 divise m1 , alors :
Yn = Xn
mod(m2 )
satisfait :
Yn = (AYn−1 + C) mod(m2 )
En appliquant ce théorème à un m = 2e , on comprend facilement que le bit d’ordre j avec
0 < j < e, dans la représentation des nombres aléatoires, aura une période maximale de
2j . Par conséquent, les bits de poids faibles n’auront pas un caractère aléatoire.
En général, les personnes qui utilisent toujours ce type de générateur, emploient une
grande période et rejettent les bits de poids faibles. En ce qui concerne notre projet, le
cas m = 2e a été directement rejeté.
3.1.2
Une autre formulation
La forme générale d’un générateur de nombre aléatoire, explicitée dans la section
précédente dans (3.1), s’écrit sous une forme plus simple :


³
´ Xn−1
Xn = (AXn−1 + C) mod(m) = A ... C  . . .  mod(m)
1
De ce fait, sans perte de généralité nous supposerons que C = 0 dans la section 3.3 de ce
chapitre, Soit donc :
Xn = AXn−1
mod(m)
(3.2)
3. un Mersenne Prime est un nombre premier qui s’écrit sous la forme m = 2e − 1 avec e un nombre
impair.
3-2
CHAPITRE 3. SIMULER L’ALÉATOIRE
3.2
Le plus populaire des générateurs
C’est aussi le plus ancien car c’est celui qui résiste à toutes les tendances. Le Linear
Congruential Generator (LCG) est obtenu en remplaçant le vecteur aléatoire dans
(3.1) par une variable aléatoire. Ce qui donne la récurrence suivante :
xn = axn−1 + c mod(m)
3.2.1
(3.3)
Choix des constantes
La période maximale d’un LCG est m. Néanmoins cette période n’est obtenue que
dans des cas spécifiques (voir Théorème A dans [Knu81]). D’autre part, statistiquement
parlant, la constante c ne rajoute rien à la qualité de notre générateur 4 . En prenant c = 0
(3.3) devient :
xn = axn−1
mod(m)
(3.4)
Dans ce cas, la période diminue pour devenir m − 1. La raison est que dans la séquence
(3.4) xn ne peut pas valoir 0, sinon toute la suite est nulle.
La condition pour que cette période soit atteinte est que :
– x0 soit relativement premier à m 5 .
– "a mod(m)" est un nombre relativement premier au sens qu’il satisfait aλ ≡ 1
mod(m)" avec λ le plus grand possible 6 .
La deuxième condition n’est pas claire, pour l’instant. En fait, pour comprendre son
concept, il faut raisonner en terme d’anneau multiplicatif 7 . Il faut imaginer que l’on se
déplace sur un anneau grâce à des multiplications successives, une fois que l’on parcourt
un tour complet, on réalise implicitement un modulo. En répétant la même expérience,
le bon multiplicateur a est celui qui nous permet de maximiser le nombre de tours sans
passer par un point, par lequel on était déjà passé.
3.2.2
Avantages du LCG
Un premier avantage de ce générateur est certainement le fait qu’il soit très simple
à réaliser. Un autre avantage est qu’il peut être parfaitement parallélisé. Deux choix de
parallélisation peuvent être pris en considération :
3.2.2.1
Parallélisation par division
On a vu précédemment que le LCG correspond à un parcours d’anneau, sans repassage
par les points déjà traversés. Une manière intuitive et facile de parallélisation est celle qui
divise toute la séquence des nombres aléatoires, produite par le LCG, en sous-séquences
4. elle translate les hyperplans du test spectral (voir le chapitre 5)
5. ce qui est le cas si m est un Mersenne Prime et x0 < m
6. On comprend facilement que λ ici représente la période du générateur
7. La théorie sera exposée en détail au chapitre 4
3-3
CHAPITRE 3. SIMULER L’ALÉATOIRE
qui ne se recouvrent pas. Cette méthode est facile par le fait que la subdivision en sousséquences s’effectue par le simple choix des racines appropriées.
Les inconvénients de cette méthode peuvent être résumés dans les points suivants :
– La première difficulté découle de la subdivision, qui réduit la période de chaque
générateur parallèle par le nombre de subdivision.
– Le deuxième inconvénient est celui dû au caractère déterministe de notre générateur.
En effet, le fait de considérer la même récurrence (3.3), dans chaque sous-séquence,
fait apparaitre le caractère non-aléatoire.
Les deux générateurs
au même endroit à
l’instant initial, même
racine.
Les deux générateurs
après avoir parcourus
une fois l’anneau
multiplicatif.
Les deux générateurs
après une génération.
Générateur LCG ayant a1 comme multiplicateur.
Générateur LCG ayant a2 comme multiplicateur, avec a2 < a1
Fig. 3.2.1 – Parallélisation par paramétrisation.
3.2.2.2
Parallélisation par paramétrisation
Cette solution consiste en une parallélisation par utilisation des paramêtres a différents, dans l’équation (3.3). Les raisons instinctives 8 , de la préférence de cette solution par
rapport à la précédente est que la parallélisation ne réduit pas la période du générateur,
d’une part, et, d’autre part cette parallélisation utilise des multiplicateurs différents, ce
qui implique une dynamique différente pour les différents générateurs.
Pour illustrer ce résultat, on considère à la figure 3.2.1 deux multiplicateurs a1 et a2 ,
a1 étant plus grand que a2 , alors a1 parcourt la période de l’anneau plus rapidement que a2 .
Un principe bien connu en physique est celui qui dit que l’on ne peut pas avoir des
avantages sans avoir d’inconvénients. La diffculté principale de cette méthode est dans le
choix des multiplicateurs appropriés pour paramétriser. En effet, il est possible de voir
à la figure 3.2.1 qu’un multiplicateur comme a1 donne une très grande corrélation 9 lors
8. par rapport à la méthode 3.2.2.1
9. à l’oeil nu
3-4
CHAPITRE 3. SIMULER L’ALÉATOIRE
de la génération des nombres aléatoires. Le choix de ces multiplicateurs sera effectué au
chapitre 6.
3.3
MRG et LFG comme alternatives
Les deux autres générateurs utilisés presque autant que le LCG sont :
Le MRG pour Multiple Recursive Generator
Le LFG pour Lagged-Fibonacci Generator.
Commençant par celui qui a la forme la plus générale et qui est le moins cité dans la
littérature.
3.3.1
MRG comme alternative
Ce générateur est obtenu en remplaçant A dans (3.2) par la forme compagnon suivante :


0
1
··· 0
 ..
..
. . . .. 
 .
. 
.
A=
(3.5)

 0
0
··· 1 
ak ak−1 · · · a1
puis il suffit de poser Xn = (xn ,...,xn+k−1 )T pour avoir la récurrence suivante, d’un MRG :
xn = (a1 xn−1 + ... + ak xn−k ) mod m
(3.6)
L’expression (3.6) exige k échantillons précédents pour générer un nombre aléatoire. De
ce fait, s’il est question d’utiliser l’architecture présentée au chapitre précédent, il faudra
utiliser k textures, ce qui alourdira notre programme de ∼ k fois.
Ainsi, au premier plan, un des problèmes principaux de ce générateur est qu’il soit
long relativement au LCG. Mais, il y a aussi un autre problème 10 plus important, c’est
celui de la parallélisation. Puisque, jusqu’à présent, il n’existe pas de méthode rigoureuse
pour le rendre parallèle.
3.3.2
LFG comme alternative
Certainement le plus utilisé après le LCG, le LFG prend plusieurs formes. Le ALFG,
A comme Additive, est la version la plus intéressante du LFG, pour sa facilité d’implémentation et surtout qu’elle obtient les mêmes scores statistiques, en utilisant des
opérations autres que l’addition.
Le ALFG peut être vu comme un cas particulier de (3.6), puisqu’il prend la forme
suivante :
xn = (xn−j + xn−l )mod(m)
10. un problème de recherche
3-5
(3.7)
CHAPITRE 3. SIMULER L’ALÉATOIRE
avec 0 < j < l.
La même remarque, que pour le MRG, s’applique pour le LFG. Comme la récurrence
(3.7) demande l données passées, la vitesse de ce générateur, par rapport au LCG est de
l’ordre de 1/l celle du LCG. Cependant, il existe une méthode de parallélisation de ce
générateur fondée sur la notion de classe d’équivalence obtenue par un choix de racines
(voir [MCPR95]).
3.4
L’open source des générateurs
Sur internet, on trouve énormément de générateurs de nombres aléatoires prêts à
l’utilisation, ou bien sur CPU, ou alors sur plusieurs CPU d’un même cluster [MCS00].
Dans cette section, nous aborderons deux générateurs bien connus, l’un très performant sur
CPU et l’autre spécifique à des architectures cluster. Nous commençons par la présentation
de ce dernier.
11
3.4.1
SPRNG
En fait, c’est un ensemble de 6 générateurs destinés à un calcul sur cluster. Ces générateurs sont :
1◦ ) Une combinaison LCG-64 bits et un MRG-32 bits.
2◦ ) Un LCG-48 bits.
3◦ ) Un LCG-64 bits.
4◦ ) Une combinaison de deux LFG-32 bits.
5◦ ) Un LFG multiplicatif sur 64 bits.
6◦ ) Un LCG-64 bits.
Sachant que la GPU utilise exclusivement des entiers sur 32 bit 12 et que les générateurs
proposés par SPRNG ne sont pas modifiables, il est impossible d’éxécuter les générateurs
fournis par cette bibliothèque sur GPU.
3.4.2
Mersenne Twister
Ce générateur a tellement eu de succès qu’il est devenu, presque exclusivement, le
seul utilisé pour un problème de génération séquentielle de nombres aléatoires. Ce générateur, utilise aussi des données du passé pour générer un nombre aléatoire [MN98]. De
ce fait, même s’il est possible de le mettre en oeuvre avec une architecture GPU, il sera
impossible de le faire sans une certaine lenteur dans les calculs. Cependant, il n’est pas
parallélisable 13 . Les auteurs de ce générateur disent dans l’article [MSHN06] que la seule
manière raisonnable de paralléliser un générateur est de le paramétriser 14 .
11. open source en français signifie : code source libre
12. en plus de la représentation en float, bien sûr
13. aucun travail n’a été fait dans ce sens
14. comme cela est expliqué à la section 3.2.2.2
3-6
Chapitre 4
Théorie des domaines finis
" The theory of finite fields is a branch of modern algebra that has come to the fore
in the last 50 years because of its diverse application in combinatorics, coding theory,
and the mathematical study of switching circuits, among others. "
Rudolf Lidl et Harald Niederreiter
Sommaire
4.1
Fondements algébriques . . . . . . . . . . . . . . . . . . . . . . . 4-1
4.2
La structure d’un domaine fini
4.3
Les sommes exponentielles . . . . . . . . . . . . . . . . . . . . . 4-12
4.4
Les polynômes de permutation . . . . . . . . . . . . . . . . . . 4-18
. . . . . . . . . . . . . . . . . . 4-9
Comme déjà indiqué à l’introduction, ce chapitre constitue la partie mathématique
principale dans ce rapport. D’une part, certains résultats, considérés comme triviaux
ou largement connus par la communauté mathématique, ne seront pas prouvés. D’autre
part, les théorèmes, lemmes et propositions non triviaux seront tous prouvés, à l’unique
exception que quelques-uns dont la preuve est peu significative pour la compréhension de
l’enchaînement du raisonnement, verront leur preuve exposée à l’annexe B.
Etant donné que la présentation de l’encyclopédie [LN97] est exemplaire, un même
cheminement des idées sera présenté.
4.1
Fondements algébriques
On commence par la base de cette théorie qui est celle des groupes :
4-1
CHAPITRE 4. THÉORIE DES DOMAINES FINIS
4.1.1
Théorie des groupes
Définition 4.1 Un groupe est un ensemble G avec une opération ∗ définie sur G telles
que les trois propriétés suivantes soient vérifiées :
1. ∗ est associative, au sens : ∀a,b,c ∈ G,
a ∗ (b ∗ c) = (a ∗ b) ∗ c.
2. Il existe un élément d’identité e ∈ G tel que ∀a ∈ G,
a ∗ e = e ∗ a = a.
3. ∀a ∈ G il existe un élément inverse a−1 ∈ G tel que :
a ∗ a−1 = a−1 ∗ a = e
En plus, si le groupe vérifie aussi :
4. ∀a,b ∈ G,
b∗a=a∗b
alors, il est dit abélien (ou commutatif ).
Définition 4.2 Un groupe multiplicatif (dont l’opération interne est la multiplication) G
est dit cyclique s’il existe un élément a ∈ G tel que ∀b ∈ G, ∃j un certain entier vérifiant
b = aj . Un tel élément a est dit générateur du groupe cyclique, et on écrit G =< a >.
Définition 4.3 Un groupe est un ensemble G avec une opération ∗ définie sur G telle
que les trois propriétés suivantes sont vérifiées :
(a) ∀s ∈ S, (s,s) ∈ R (réflexivité).
(b) Si (s,t) ∈ R alors (t,s) ∈ R (symétrie).
(c) Si (s,t),(t,u) ∈ R, alors (s,u) ∈ R (transitivité).
Pour s ∈ S fixé on obtient une classe d’équivalence dénotée par :
[s] = {t ∈ S : (s,t) ∈ R}
La collection des différentes classes d’équivalence forme une partition de S induite par
R. En effet, puisque [s] = [t] ⇔ (s,t) ∈ R.
Définition 4.4 Pour des entiers arbitraires a,b et un entier positif n, on dit que a est
congruent à b modulo n, et on écrit a ≡ b mod n, si la différence a − b est multiple de
n (∃k entier tel que a = b + kn).
Proposition 4.1 On peut facilement vérifier les propriétés suivantes :
– La relation de congruence est une relation d’équivalence.
– L’ensemble {[0],[1],...,[n − 1]} formé par la relation de congruence avec l’addition,
définie par ∀a,b ∈ Z, [a] + [b] = [a + b], forment un groupe dit groupe des entiers
modulo n et dénoté par Zn .
Définition 4.5 Un groupe G est dit fini (resp. infini) s’il contient un nombre fini (resp.
infini) d’éléments. Le nombre de ces éléments dans un groupe fini est dit son ordre et
noté |G|.
4-2
CHAPITRE 4. THÉORIE DES DOMAINES FINIS
Définition 4.6
– Un sous-ensemble H d’un groupe G est dit sous-groupe si H est
lui même un groupe pour l’opération de G.
– Les sous-groupes de G contenant les puissances d’un élément a de G est dit sousgroupe généré par a et noté < a >. Ce groupe est cyclique.
– Si < a > est fini, alors son ordre est dit l’ordre de l’élément a. Sinon, a est dit
d’ordre infini.
a ≡ b mod n ⇔ a − b ∈< n > et de ce fait < n > définit une relation d’équivalence
sur Z. Plus généralement :
Théorème 4.1 Si H est un sous-groupe de G, alors la relation RH sur G définie par
((a,b) ∈ RH ) ⇔ (∃h ∈ H, a = bh), est une relation d’équivalence. Les classes d’équivalence induites par RH sont dites coensembles gauches. Si H entraïne un nombre fini
de coensembles gauches, alors le nombre de ces coensembles gauches est dit index de H
sur G.
Théorème 4.2 L’ordre d’un groupe fini G est égal au produit de l’ordre d’un de ses
sous-groupes H et l’index de H dans G.
Théorème 4.3 (i) Chaque sous-groupe d’un groupe cyclique est cyclique.
(ii) Dans un groupe cyclique fini < a > d’ordre m, l’élément ak génère un sous-groupe
d’ordre m/pgcd(k,m).
(iii) Si d est un diviseur positif de m l’odre de < a >, alors < a > contient un et un
seul sous-groupe d’index d. Pour tout diviseur positif f de m, < a > contient un
sous-groupe d’ordre f .
(iv) Soit f un diviseur positif de l’odre de < a >, alors < a > contient φ(f ) 1 éléments
d’ordre f .
(v) Un groupe cyclique fini < a > d’ordre m contient φ(m) générateurs, c’est-à-dire,
pour pgcd(r,m) = 1 on a < ar >=< a >.
Définition 4.7 Une application f : G → H du groupe G dans le groupe H est dite
homomorphisme de G dans H si f préserve les opérations, dans le sens : Soient ∗,⋆ les
opérations respectivement associées à G et à H : ∀a,b ∈ G, f (a ∗ b) = f (a) ⋆ f (b).
– Si H = G, l’homomorphisme f est endomorphisme.
– Si l’homomorphisme f est bijectif alors f est isomorphisme.
– Si l’endomorphisme f est bijectif alors f est automorphisme.
Définition 4.8 Le noyau de l’homomorphisme f : G → H, du groupe G dans le groupe
H, est l’ensemble :
kerf = {a ∈ G: f (a) = e′ }
où e′ est l’élément identité de H.
1. La fonction φ(f ) d’Euler, celle qui associe à f le nombre d’éléments positifs inférieurs ou égaux à f
et premiers avec f .
4-3
CHAPITRE 4. THÉORIE DES DOMAINES FINIS
Un exemple intuitif est celui de l’application f : Z → Zn donnée par f (a) = [a], donc
le noyau est l’ensemble des a ∈ Z tel que [a] = [0], en d’autres termes kerf =< n >.
On peut vérifier que kerf est toujours un sous-groupe de G. En plus, il est normal au
sens :
Définition 4.9 Un sous-groupe H du groupe G est dit normal sous-groupe de G si ∀a ∈
G, ∀h ∈ H : aha−1 ∈ H.
En définissant l’ensemble conjugué comme :
Définition 4.10 L’ensemble aSa−1 = {asa−1 : s ∈ S} est dit ensemble conjugué.
Proposition 4.2
– Le sous-groupe H de S est normal si et seulement si H est égal
à son conjugué.
– Le sous-groupe H de S est normal si et seulement si le coensemble gauche aH est
égal au coensemble droite Ha pour tout a ∈ G.
Théorème 4.4 Si H est sous-groupe normal de G, alors l’ensemble des coensembles
gauches de G modulo H forme un groupe avec l’opération définie par : (aH)(bH) = (ab)H.
Définition 4.11
– Pour un sous-groupe normal H de S, le groupe formé par les
coensembles gauches de G modulo H avec l’opération définie dans le théorème 4.4
est dit le groupe facteur de G modulo H et noté par G/H.
– Si G/H est fini, on peut relier les ordres par |G/H| = |G|/|H|.
Théorème 4.5 Soit f : G → f (G) = G1 l’homomorphisme défini du groupe G sur le
groupe G1 . Alors kerf est un sous-groupe de G, et le groupe G1 est isomorphique au
groupe G/kerf .
Corollaire 4.1 Si H est un quelconque sous-groupe de G, alors l’application ψ : G →
G/H définie par ψ(a) = aH pour a ∈ G est un isomorphisme de G dans G/H avec
kerψ = H.
Définition 4.12
– On appelle normaliseur d’un sous-ensemble S d’un groupe G,
l’ensemble N (S) = {a ∈ G : aSa−1 = S}.
– Pour tout groupe G, le centre de G est défini comme l’ensemble C = {c ∈ G :
ac = ca pour tout a ∈ G}.
4.1.2
Les anneaux et les domaines
Définition 4.13 Un anneau (R,+,·) est un ensemble R avec deux opérations + et · telles
que les trois propriétés suivantes sont vérifiées :
1. (R,+) est un groupe abélien.
2. · est associative, au sens : ∀a,b,c ∈ R,
a · (b · c) = (a · b) · c.
4-4
CHAPITRE 4. THÉORIE DES DOMAINES FINIS
3. Les distributions sont vérifiées, c’est-à-dire ∀a,b,c ∈ R on a : a · (b + c) = a · b + a · c
et (b + c) · a = b · a + c · a.
Les propriétés supplémentaires sur l’opération · donnent lieu à de nouvelles structures.
(i) Un anneau est dit anneau avec identité si · possède un élément identité.
(ii) Un anneau est dit commutatif si · est commutative.
(iii) Un anneau est dit domaine intégral s’il est commutatif et avec une identité e 6= 0
tel que (ab = 0) ⇒ (a = 0 ou b = 0) (on utilise · pour la multiplication usuelle)
(iv) Un anneau est dit anneau division si les éléments non-nuls de R forment un groupe
pour l’opération ·.
(v) Un anneau division commutatif est dit domaine.
Théorème 4.6 Chaque domaine intégral fini est un domaine.
Preuve Théorème 4.6:
Soit (a1 ,a2 ,...,an ) l’ensemble des éléments du domaine intégral fini R. Pour un élément
fixè a ∈ R, on considère le produit aa1 ,aa2 ,...,aan , tous distincts, puisque si aai = aaj ,
alors a(ai − aj ) = 0 et puisque a 6= 0 alors ai = aj . Ainsi, tout élément de R s’écrit sous
la forme aai , en particulier, ∃i ∈ [1,n] tel que e = aai = ai a où e est l’élément identité.
Ainsi les éléments non nuls de R forment un groupe commutatif pour la multiplication.
¥
Définition 4.14
– Un sous-ensemble S de l’anneau R est dit sous-anneau de R
pourvu que S soit fermé sous les opérations +, · et forme un anneau avec ces opérations.
– Un sous-ensemble J de l’anneau R est dit idéal pourvu que J soit un sous-anneau
de R et que ∀a ∈ J et ∀r ∈ R on a ar ∈ J et ra ∈ J.
– Un idéal J de R est dit principal si ∃a ∈ R tel que J = (a) = {ra + na : r ∈ R,
n ∈ Z}. Ici, on dit aussi que a est l’élément générateur.
– Un idéal M 6= R de R est dit maximal si, pour tout idéal J de R, la propriété
M ⊆ J implique J = M ou J = R.
– On appelle classe résidue modulo J, dénotée par [a] = a + J, l’ensemble des
coensembles qui définie une partition de R (puisque tout idéal d’un anneau définit
un sous-groupe normal du groupe additif de l’anneau).
– Pour un idéal J, les éléments a,b ∈ R sont dits congruents modulo J, on écrit
a ≡ b mod J (a − b ∈ J) s’ils appartiennent à la même classe résidue modulo J.
Proposition 4.3 On peut simplement vérifier que les classes résidues modulo J, notées
R/J forment un anneau par rapport aux opérations :
(a + J) + (b + J) = (a + b) + J.
(a + J)(b + J) = ab + J.
Théorème 4.7 L’anneau des classes résidues d’un entier modulo l’idéal généré par le
nombre premier p, Z/(p), est un domaine.
4-5
CHAPITRE 4. THÉORIE DES DOMAINES FINIS
Preuve Théorème 4.7:
Considérant le Théorème 4.6, il nous suffit de demontrer que Z/(p) est un domaine intégral. On a [1] comme l’élément d’identité de Z/(p), et [a][b] = [ab] = [0] si et seulement si
pour un certain entier k, ab = kp. Or p est premier, alors p dévise ab si et seulement si p
divise, au moins, l’un des facteurs. Ainsi, soit [a] = [0], soit [b] = [0]. De ce fait Z/(p) ne
contient pas de diviseur nul.
¥
Définition 4.15 Extension de la Définition 4.7 Une application ϕ : R → S définie
de l’anneau R à l’anneau S est dite homomorphisme si ∀a,b ∈ R on a :
ϕ(a + b) = ϕ(a) + ϕ(b) et ϕ(ab) = ϕ(a)ϕ(b)
Les autres définitions : endomorphisme... peuvent être étendues de la même manière.
Théorème 4.8 Si ϕ est un homomorphisme de l’anneau R à l’anneau S, alors kerϕ est
un idéal de R et S est isomorphique à l’anneau facteur R/ker(ϕ).
Inversement, si J est un idéal de l’anneau R, alors l’application ψ : R → R/J définie par
ψ(a) = a + J avec a ∈ R, est un homomorphisme de R dans R/J avec J comme noyau.
Remarque:
Une application peut être utilisée pour transférer une structure d’un système algébrique
vers un système sans structure, d’où la définition suivante :
Définition 4.16 Soit p un nombre premier et soit Fp = {0,1,...,p − 1}. Pour une application ϕ : Z/(p) → Fp définie par ϕ([a]) = a où a = 0,1,...,p − 1 (ϕ a la bonne propriété
d’être un isomorphisme), Fp possède une structure de domaine induite par ϕ, et est un
domaine fini appelé domaine de Galois d’ordre p.
Définition 4.17 Soit R un anneau arbitraire et soit un entier positif n tel que ∀r ∈ R
nr = 0, alors le plus petit entier positif vérifiant cette propriété est dit caractéristique
de R.
Théorème 4.9 Un anneau R 6= {0} possédant un élément identité et un diviseur non
nul 2 , doit avoir un entier premier pour caractéristique.
Preuve Théorème 4.9:
Puisque R contient des éléments non-nuls, alors R possède un nombre caractéristique
n ≥ 2. Pour n non premier
(n = km avec k,m ∈ Z, 1 < k,m < n),
W
W alors 0 = ne = (km)e =
(ke)(me) ⇒ (ke = 0 me = 0). Ainsi ∀r ∈ R kr = (ke)r = 0 mr = (me)r = 0 ce qui
contredit la définition de la caractéristique.
¥
Corollaire 4.2 Un domaine fini possède une caractéristique première.
2. propriété du domaine intégral
4-6
CHAPITRE 4. THÉORIE DES DOMAINES FINIS
Preuve Corollaire 4.2:
Avec la preuve précédente, il suffit de prouver qu’un domaine fini F possède une caractéristique non-nulle. Considérant les multiples de l’identité e,2e,3e,.... Puisque F possède un
nombre fini d’éléments distincts, alors ∃(k,m) avec 1 ≤ k < m et ke = me ⇒ (m−k)e = 0,
donc F possède une caractéristique non-nulle.
¥
Théorème 4.10 Soit R un anneau commutatif avec une caractéristique première p. Alors :
n
n
n
n
n
n
(a + b)p = ap + bp et (a − b)p = ap − bp
4.1.3
Les polynômes
Définition 4.18 Soit R un anneau arbitraire. Un polynôme sur R est une expression
de la forme :
f (x) =
n
X
ai x i
i=0
où n est un entier non-négatif et les coefficients ai , 0 ≤ i ≤ n, sont des éléments de R.
Le polynôme f peut être donné sous une forme équivalente :
f (x) =
n
X
ai xi + 0xn+1 + ... + 0xn+h
i=0
avec h un entier positif. De ce fait, lorsqu’on compare deux polynômes f (x) et g(x) de
R, il est possible d’assumer qu’ils font intervenir les mêmes puissances de x. Ainsi les
polynômes :
f (x) =
n
X
ai x
i
et g(x) =
i=0
n
X
bi xi
i=0
sont égaux si et seulement si : ∀i = 1,2,..,n, ai = bi .
La plupart des théorèmes suivants possèdent des preuves élémentaires.
Théorème 4.11 L’ensemble des polynômes définis sur R forme un anneau, noté R[x],
avec les opérations d’addition et de multiplication suivantes :
f (x) + g(x) =
n
X
ai x +
i=0
et
f (x) ∗ g(x) =
avec :
à n
X
i=0
ck =
i
n
X
i=0
n
X
(ai + bi )xi
bi x =
i
i=0
! Ã m
! n+m
X
X
ai x i ∗
bj xj =
c k xk
j=0
X
i+j=k,0≤i≤n,0≤j≤m
4-7
k=0
ai b j
CHAPITRE 4. THÉORIE DES DOMAINES FINIS
Avec la définition usuelle du degré d’un polynôme, on a :
Théorème 4.12 Soient f,g ∈ R[x], alors :
deg(f + g) ≤ max(deg(f ),deg(g))
deg(f g) ≤ deg(f ) + deg(g)
Théorème 4.13 Soit l’anneau R, alors:
(i) R[x] est commutatif si et seulement si R est commutatif.
(ii) R[x] possède un élément identité si et seulement si R possède un élément identité.
(iii) R[x] est un domaine intégral si et seulement si R est un domaine intégral.
Corollaire 4.3 Il en resulte du théorème précédent que l’ensemble F [x], des polynômes
définis sur l’anneau de Galois, constitue un anneau.
Théorème 4.14 Soit g 6= 0 un polynôme de F [x]. ALors pour chaque f ∈ F [x] il existe
un doublé de polynômes q,r ∈ F [x] tel que :
f = qg + r,
avec deg(r) ≤ deg(g)
Définition 4.19 Un polynôme p ∈ F [x] est dit irréductible sur F , si p est de degré
positif et p = bc avec b,c ∈ F [x], alors soit b soit c est un polynôme constant.
Théorème 4.15 Soit f ∈ F [x], la classe résidue de F [x]/(f ) est un domaine si et seulement si f est irréductible sur F .
Définition 4.20 Un polynôme g est dit monique si son coefficient de plus grand degré
est égal à 1.
4.1.4
L’extension des domaines
Définition 4.21 Soit K un sous-domaine de F et θ ∈ F . Si θ satisfait une équation
polynômiale non-triviale sur K, de sorte que an θn + ... + a1 θ + a0 = 0 avec ai ∈ K non
tous nuls, alors θ est dit algébrique sur K. Une extension 3 L de K est dite algébrique sur
K si tout élément de L est algébrique sur K.
Définition 4.22 Si θ ∈ F est algébrique sur K, alors le monique g ∈ K[x] générant
l’idéal J = {f ∈ K[x]: f (θ) = 0} de K[x] est dit polynôme minimal (ou polynôme
irréductible) de θ sur K.
3. Un domaine L est dit extension de K si et seulement si K est un sous-domaine de L. Pour avoir une
vision plus claire de cette définition, soient le domaine L et le sous-domaine K et soit un sous-ensemble
quelconque M de F , alors on définit K(M ) comme l’intersection de tous les sous-domaines de F contenant
K et M . On appelle K(M ) extension et on peut monter jusqu’à L avec une construction d’extensions
successives.
4-8
CHAPITRE 4. THÉORIE DES DOMAINES FINIS
Théorème 4.16 Si θ ∈ F est algébrique sur K, alors le polynôme g minimal sur K
possède les propriétés suivantes :
(i) g est irréductible sur K[x].
(ii) Pour f ∈ K[x] on a f (x) = 0 si et seulement si g divise f .
(iii) g est monique dans K[x] de degré le moindre et ayant θ pour racine.
Preuve Théorème 4.16:
(i) et (ii) découlent de la définition même de g. Pour (iii), il suffit de noter que tout
monique dans K[x] ayant θ comme racine doit être un multiple de g, et c’est bien le cas
pour des polynômes de degré plus grand ou égal à celui de g
¥
.
Remarque:
Si L est une extension du domaine K, alors L peut être vu comme un espace vectoriel
sur K. Les éléments de L (= des vecteurs) forment un groupe abélien pour l’addition. De
plus, tout vecteur α ∈ L peut être multiplié par un scalaire r ∈ K de sorte que rα ∈ L,
et les propriétés de multiplication par un scalaire sont aussi vérifiés.
Définition 4.23 Soit L une extension de K. Si L, considéré comme un K − ev, est de
dimension finie, alors L est dit une extension finie de K. La dimension de L sur K est
dite le degré de L sur K et est notée [L : K].
Théorème 4.17 Si L est une extension finie de K et M est une extension finie de L,
alors M est une extension finie de K avec :
[M : K] = [M : L][L : K]
4.2
4.2.1
La structure d’un domaine fini
Caractérisation du domaine fini
Lemme 4.1 Soit F un domaine fini contenant un sous-domaine K comportant q éléments. Alors F possède q m éléments, avec m = [F : K].
Preuve Lemme 4.1:
F est un espace véctoriel sur K, puisque F est fini, il est de dimension finie sur K. Si
[F : K] = m, alors F possède une base sur K contenant m éléments, soit b1 ,b2 ,...,bm
cette base. Ainsi chaque élément de F peut être représenté d’une manière unique sous la
forme a1 b1 + a2 b2 + ... + am bm avec a1 ,a2 ,...,am ∈ K. Enfin, les ai peuvent avoir q valeurs
différentes, de ce fait F possède exactement q m éléments différents.
¥
Théorème 4.18 Soit F un domaine fini. Alors F possède pn éléments, où le nombre
premier p est la caractéristique de F et n est le degré de F sur son sous-domaine premier.
4-9
CHAPITRE 4. THÉORIE DES DOMAINES FINIS
Preuve Théorème 4.18:
F est fini, sa caractéristique est p (voir le corollaire 4.2). Alors le sous-domaine premier
K de F est isomérphique à Fp et contient p éléments. On achève la preuve en utilisant le
lemme précédent.
¥
Lemme 4.2 Si F est un domaine fini possédant q éléments alors chaque a ∈ F satisfait
aq = a.
Preuve Lemme 4.2:
L’identité aq = a pour a = 0 est triviale. D’autre part, les éléments non-nuls de F forment
un groupe d’ordre q − 1 pour la multiplication. Ainsi 4 aq−1 = 1 pour tout a ∈ F , et la
multiplication par a donne le résultat voulu.
¥
Lemme 4.3 Si F est un domaine fini possédant q éléments, et K est un sous-domaine
de F , alors le polynôme xq − x dans K[x] se factorise dans F [x] comme :
xq − x =
Y
a∈F
(x − a)
et F est dit domaine de séparation de xq − x sur K.
Preuve Lemme 4.3:
Le polynôme xq − x de degré q, possède, au maximum, q racines sur F . Par ce lemme, on
connait ces q racines. Ainsi, le polynôme se sépare dans F de la manière indiquée (dans
le lemme) et ne peut pas être séparé d’une manière plus petite.
¥
Définition 4.24 Pour un domaine fini Fq , on note par F∗q le groupe multiplicatif des
éléments non-nuls de Fq .
Théorème 4.19 Pour tout domaine fini Fq , le groupe multiplicatif F∗q des éléments nonnuls de Fq est cyclique.
Définition 4.25
4.2.2
5
Un générateur du groupe cyclique F∗q est dit élément primitif de Fq .
La trace
Lemme 4.4 Soit f ∈ Fq [x] un polynôme irréductible sur le domaine fini Fq et soit α une
racine de f dans une extension de Fq . Alors un polynôme h ∈ Fq [x] avec h(α) = 0 si et
seulement si f divise h.
4. on rappelle que l’ordre d’un groupe multiplicatif est le plus petit entier positif k 6= 0 vérifiant ak = 1
5. Cette définition de l’élément primitif est plus rigoureuse que celle présentée antérieurement, dans le
chapitre sur les générateurs de nombres aléatoires
4-10
CHAPITRE 4. THÉORIE DES DOMAINES FINIS
Preuve Lemme 4.4:
Soit a le coefficient leader 6 de g et posons g(x) = a−1 f (x). Alors g(x) est un polynôme
monique irréductible dans Fq [x] avec g(α) = 0 et, de ce fait, il est le polynôme minimal
de α sur Fq dans le sens de la définition 4.22, le reste de la preuve découle du théorème
4.16.
¥
Lemme 4.5 Soit f ∈ Fq [x] un polynôme irréductible sur le domaine fini Fq de degré m.
n
Alors f (x) divise xq − x si et seulement si m divise n.
Preuve Lemme 4.5:
n
(⇒) Supposons que f (x) divise xq − x. Soit α une racine de f dans le domaine de sépan
ration de f sur Fq . Alors aq = a, de telle sorte que α ∈ Fqn . Il en découle que Fq (α) est
un sous-domaine de Fqn . Or [Fq (α) : Fq ] = m et [Fqn : Fq ] = n, le théorème 4.17 montre
que m divise n.
(⇐) Supposons que m divise n. En utilisant le lemme 4.1, on peut démontrer directement que Fqn contient Fqm comme sous-groupe. Alors [Fq (α) : Fq ] = m et ainsi
n
Fq (α) = Fqm . Par conséquent, on obtient α ∈ Fqn , soit donc αq = α et α est donc racine
n
de xq − x ∈ Fq . Le lemme précédent permet d’achever la démonstration.
¥
Définition 4.26 Pour α ∈ F = Fqm et K = Fq , définissons la trace T rF/K (α), de α sur
K par :
T rF/K (α) = α + αq + ... + αq
m−1
Si K est un sous-domaine premier 7 de F , alors T rF/K (α) est dite trace absolue de α,
notée par T rF (α).
Théorème 4.20 Soient F = Fqm et K = Fq . Alors la fonction trace T rF/K vérifie les
propriétés suivantes :
(i) ∀α,β ∈ F : T rF/K (α + β) = T rF/K (α) + T rF/K (β)
(ii) ∀α ∈ F et ∀c ∈ K: T rF/K (cα) = cT rF/K (α)
(iii) T rF/K est une transformation linéaire de F à K, où F et K sont considérés comme
des espaces vectoriels sur K.
(iv) ∀a ∈ K: T rF/K (a) = ma
(v) ∀α ∈ F : T rF/K (αq ) = T rF/K (α)
4.2.3
Racines de l’unité
Définition 4.27 Soit n un entier positif. Le domaine de séparation de xn − 1 sur le
domaine K est appelé nime cyclotomique domaine sur K et noté K (n) . Les racines de
xn − 1 sur K (n) sont appelés les nimes racines de l’unité sur K et l’ensemble de toutes
ces racines est noté E (n) .
6. associé à la plus grande puissance
7. qui ne contient pas de sous-groupe propre
4-11
CHAPITRE 4. THÉORIE DES DOMAINES FINIS
Théorème 4.21 Soit n un entier positif et K un domaine ayant p pour caractéristique.
Si p ne divise pas n, alors E (n) est un groupe cyclique d’ordre n, pour la multiplication
dans K (n) .
4.3
Les sommes exponentielles
Cette partie et la suivante représentent l’aboutissement de toute la théorie construite
dans les sections précédentes. Elle va servir, à justifier non seulement la validité séquentielle de notre générateur, mais aussi sa validité parallèle.
Dans une première partie, on exposera les outils qui servent à calculer les sommes
exponentielles. Puis, la seconde partie traîtera les sommes d’arguments polynômiaux (dites
parfois sommes de Weil).
4.3.1
Les caractères
Soit G un groupe abélien fini, d’odre |G| et d’identité 1G . Un caractère χ de G est
un homomorphisme de G dans un groupe multiplicatif d’éléments complexes de valeurs
absolues unitaires. χ vérifie :
∀g1 ,g2 ∈ G, χ(g1 g2 ) = χ(g1 )χ(g2 ).
Puisque χ(1G ) = χ(1G )χ(1G ), on doit avoir χ(1G ) = 1. De plus, ∀g ∈ G
(χ(g))|G| = χ(g |G| ) = χ(1G ) = 1.
De ce fait, les valeurs de χ sont les |G|iem racines de l’unité. L’application χ possède les
propriétés suivantes :
∀g ∈ G, χ(g)χ(g −1 ) = χ(gg −1 ) = χ(1G ) = 1
∀g ∈ G, χ(g −1 ) = (χ(g))−1 = χ(g)
Il existe un caractère trivial (χ0 ) vérifiant : ∀g ∈ G, χ0 (g) = 1
Il existe un seul caractère conjugué (χ) vérifiant : ∀g ∈ G, χ(g) = χ(g)
Pour la suite finie de caractère χ1 ,χ2 ,...,χn définie sur G, On définit le produit
caractère par : (χ1 ...χn )(g) = χ1 (g)...χn (g). Ainsi l’ensemble des caractères, noté G
ˆ, forme un groupe abélien multiplicatif.
(vi) Le groupe G ˆ défini ci-dessus est fini, puisque les valeurs prises par les caractères
sont les |G|iem racines de l’unité .
(i)
(ii)
(iii)
(iv)
(v)
Exemple:
Soient G un groupe cyclique d’ordre n et g un générateur de G. Pour un entier fixé j,
0 ≤ j ≤ n − 1, la fonction 8 :
χj (g k ) = e2πijk/n , k = 0,1,...,n − 1,
définie un caractère de G. D’autre part, si χ est un caractère quelconque de G, alors χ(g)
doit être la niem racine de l’unité, disons χ(g) = e2πij/n pour certain j, 0 ≤ j ≤ n − 1, et
8. Ici comme dans toute la suite : i =
√
−1
4-12
CHAPITRE 4. THÉORIE DES DOMAINES FINIS
il s’en suit que χ = χj . De ce fait, Gˆest constitué exactement des caractères χ0 ,χ1 ,...,χn−1 .
Théorème 4.22 Soit H un sous-groupe du groupe abélien fini G et soit ψ un caractère
de H. Alors ψ peut être étendu à un caractère de G; en définissant le caractère χ de G
par ∀h ∈ H, χ(h) = ψ(h).
Corollaire 4.4 Pour tout doublet d’éléments distincts (g1 ,g2 ) ∈ G × G, il existe un caractère χ de G avec χ(g1 ) 6= χ(g2 ).
Preuve Corollaire 4.4:
Il suffit de montrer que pour h = g1 g2−1 6= 1G , il existe un caractère χ de G avec χ(h) 6= 1.
Ceci est néanmoins impliqué par l’exemple et le théorème précédents.
¥
Théorème 4.23 Soit χ un caractère non-trivial du groupe abélien fini G, alors :
X
χ(g) = 0
(4.1)
g∈G
Si g ∈ G avec g 6= 1G , alors :
X
(4.2)
χ(g) = 0
χ∈Gˆ
Preuve Théorème 4.23:
Puisque χ est non trivial, il existe h ∈ G avec χ(h) 6= 1. Alors :
X
X
X
χ(h)
χ(g) =
χ(hg) =
χ(g)
g∈G
g∈G
g∈G
puisque g parcourt G, alors il en va de même pour hg. Ainsi :
X
(χ(h) − 1)
χ(g) = 0
g∈G
Pour prouver la seconde partie du théorème, on note ĝ la fonction définie par ĝ(χ) = χ(g)
avec χ ∈ Gˆ. Ce caractère est non-trivial grâce au corollaire précédent ∃χ ∈ Gˆvérifiant
χ(g) 6= χ(1G ) = 1. De ce fait, à partir de (4.1) appliquée à Gˆ,
X
X
χ(g) =
ĝ(χ) = 0
χ∈Gˆ
χ∈Gˆ
¥
Théorème 4.24 Le nombre de caractères d’un groupe abélien fini G est égal à |G|.
Preuve Théorème 4.24:
Ceci découle de :
|Gˆ| =
XX
χ(g) =
g∈G χ∈Gˆ
XX
χ∈Gˆg∈G
χ(g) = |G|,
où on a utilisé (4.2) dans la première identité et (4.1) dans la deuxième
¥
4-13
CHAPITRE 4. THÉORIE DES DOMAINES FINIS
Proposition 4.4 Cette proposition, dite d’orthogonalité, peut-être prouvée directement
en utilisant les deux théorèmes précédents et quatres lignes de développement :
(i) Soient χ et ψ deux caractères de G. Alors :
½
1 X
0 si χ 6= ψ
χ(g)ψ(g) =
(4.3)
1 si χ = ψ
|G|
g∈G
(ii) Soient deux éléments g et h de G. Alors :
½
1 X
0 si g =
6 h
χ(g)χ(h) =
1 si g = h
|G| χ∈Gˆ
(4.4)
Théorème 4.25 Soit H un sous-groupe d’un groupe fini abélien G. Alors l’annihilateur 9
de H dans G ˆ est un sous-groupe de G ˆ d’ordre |G|/|H|.
La définition suivante concerne un caractère important du groupe additif :
Définition 4.28 Soit le groupe additif Fq . Soit p la caractéristique de Fq ; alors le domaine
premier contenu dans Fq est Fp , que l’on identifie avec Z/(q). Soit T r : Fq → Fp la fonction
trace absolue. Alors la fonction χ1 défini par :
χ1 (c) = e2πiT r(c)/p
∀c ∈ Fq
(4.5)
est un caractère du groupe additf (découle de T r(c1 + c2 ) = T r(c1 ) + T r(c2 ))
Le théorème suivant montre l’importance de ce caractère.
Théorème 4.26 Pour b ∈ Fq . La fonction χb avec ∀c ∈ Fq , χb (c) = χ1 (bc) est un
caractère additif et tout caractère additif peut être obtenu de cette manière.
Preuve Théorème 4.26:
La première partie du théorème, concernant l’additivité de χb est triviale. Pour la deuxième
partie, il suffit d’énumérer les caractères. L’une des propriétés de l’application trace
4.20(iii), implique que χ1 est non trivial. De ce fait, si deux éléments différents a,b ∈ Fq ,
on a pour un c bien choisi :
χa (c)
χ1 (ac)
=
= χ1 ((a − b)c) 6= 1
χb (c)
χ1 (bc)
De ce fait χa est différent de χb . D’autre part, d’après le Théorème 4.24 Fq contient
exactement q caractères additifs, ce qui construit les caractères de notre groupe et achève
la démonstration.
¥
9. L’annihilateur d’un sous-groupe H de G est l’ensemble des caractères χ qui vérifient ∀h ∈ H,
χ(h) = 1.
4-14
CHAPITRE 4. THÉORIE DES DOMAINES FINIS
Remarque:
Pour obtenir le caractère trivial, il suffit de remplacer dans le théorème précédent b = 0.
Et voilà que l’on commence à espérer trouver l’existence d’un caractère, aussi séduisant
que celui défini pour le groupe additif, mais cette fois pour le groupe multiplicatif.
Théorème 4.27 Soit g un élément de Fq . ∀j = 0,1,...,q − 2, la fonction ψj définie par :
ψj (g k ) = e2πijk/(q−1)
pour k = 0,1,...,q − 2
définie un caractère multiplicatif de Fq , et tout autre caractère multiplicatif est obtenu de
la même manière.
Preuve Théorème 4.27:
Pour s’en convaincre, il suffit de consulter le premier exemple de cette section.
¥
Corollaire 4.5 Le groupe des caractères multiplicatfs Fq est cyclique d’ordre q − 1 et
l’élément trivial ψ0 est son identité.
Preuve Corollaire 4.5:
Il suffit de voir que le caractère ψj défini dans le théorème précédent est générateur si
pgcd(q − 1,j) = 1.
¥
Dans cette section, on a vu deux points importants : (i) Les caractères additifs et multiplicatifs, et (ii) La relation d’orthogonalité. Avant de finir, il serait, de ce fait, intéressant
de voir la relation d’orthogonalité pour nos caractères additifs et multiplicatifs.
Proposition 4.5 Soient deux caractères additifs χa et χb et pour c,d ∈ Fq , on a les
relations suivantes :
½
X
0 si a 6= b
(4.6)
χa (c)χb (c) =
q si a = b
c∈Fq
en particulier,
X
c∈Fq
X
b∈Fq
χa (c) = 0 si a 6= 0
(4.7)
½
(4.8)
χb (c)χb (d) =
0 si c 6= d
q si c = d
Proposition 4.6 Soient deux caractères multiplicatifs ψ et τ et pour c,d ∈ Fq , on a les
relations suivantes :
½
X
0 si τ 6= ψ
(4.9)
ψ(c)τ (c) =
q
−
1 si τ = ψ
∗
c∈Fq
4-15
CHAPITRE 4. THÉORIE DES DOMAINES FINIS
en particulier,
X
c∈F∗q
X
ψ(c)ψ(d) =
ψ∈Fq
4.3.2
(4.10)
ψ(c) = 0 si ψ 6= ψ0
½
0 si c 6= d
q − 1 si c = d
(4.11)
Sommes de caractères d’arguments polynômiaux
Comme le titre l’indique, cette section abordera les résultats les plus importants
concernant la somme de caractères d’arguments polynômiaux. Cependant, certains théorèmes et propriétés, relatifs aux sommes gaussienes, sont incontournables pour apporter
une preuve aux résultats dont on a besoin.
De ce fait, commençons par définir la somme gaussienne et donner certaines de ses
propriétés.
Définition 4.29 Soient ψ et χ respectivement, les caractères multiplicatif et additif de
Fq , alors la somme gausienne G(ψ,χ) est définie comme :
G(ψ,χ) =
X
(4.12)
ψ(c)χ(c)
c∈F∗q
Théorème 4.28 Soient ψ et χ respectivement, les caractères multiplicatif et additif de
Fq , alors la somme gausienne G(ψ,χ) vérifie :

 q − 1 pour ψ = ψ0 ,χ = χ0
−1 pour ψ = ψ0 ,χ 6= χ0
(4.13)
G(ψ,χ) =

0
pour ψ 6= ψ0 ,χ = χ0
Et si ψ 6= ψ0 et χ 6= χ0 , alors :
|G(ψ,χ)| = q 1/2
(4.14)
Preuve Théorème 4.28:
Le premier cas dans (4.13) est trivial, le troisième découle de (4.11) et alors que le second
est obtenu puisque :
X
X
χ(c) − χ(0) = −1
χ(c) =
G(ψ0 ,χ) =
c∈F∗q
c∈Fq
Il reste à prouver (4.14)
|G(ψ,χ)|2 = G(ψ,χ)G(ψ,χ) =
X X
ψ(c)χ(c)ψ(c1 )χ(c1 ) =
c∈F∗q c1 ∈F∗q
X X
c∈F∗q c1 ∈F∗q
4-16
ψ(c−1 c1 )χ(c1 − c)
CHAPITRE 4. THÉORIE DES DOMAINES FINIS
Par substitution c−1 c1 = d, on obtient :
|G(ψ,χ)|2 = G(ψ,χ)G(ψ,χ) =
XX
c∈F∗q
d∈F∗q
⇒ |G(ψ,χ)|2 =
ψ(d)χ(c(d − 1)) =
X
ψ(d)
X
c∈Fq
d∈F∗q
X
d∈F∗q

ψ(d) 
X
c∈Fq

χ(c(d − 1)) − χ(0)
χ(c(d − 1)) = q
la dernière égalité provient de (4.10) et de (4.7)
¥
Les deux formules suivantes sont intuitives, en utilisant l’analogie avec la transformée
de Fourier ou, d’une manière plus rigoureuse, en travaillant avec les formules d’othogonalité 10
Proposition 4.7 ∀c ∈ F∗q on a :
ψ(c) =
χ(c) =
1X
G(ψ,χ)χ(c)
q χ
1 X
G(ψ,χ)ψ(c)
q−1 ψ
(4.15)
(4.16)
Maintenant, définissons les sommes à arguments polynômiaux, souvent appelées sommes
de Weil.
Définition 4.30 Soit χ ∈ Fq un caractère additif non-trivial et soit f ∈ Fq [x] un polynôme de degré positif. Une somme d’arguments polynômiaux s’écrit sous la forme
X
χ(f (c)).
c∈Fq
Théorème 4.29 Soit χ ∈ Fq un caractère additif non-trivial, n ∈ N, et λ un caractère
multiplicatif de Fq d’ordre d = pgcd(n,q − 1). Alors ∀a,b ∈ Fq avec a 6= 0, on a :
X
n
χ(ac + b) = χ(b)
d−1
X
j
λ (a)G(λj ,χ)
j=1
c∈Fq
Corollaire 4.6 Soit χ ∈ Fq un caractère additif non-trivial et pgcd(n,q − 1) = 1, alors
∀a,b ∈ Fq avec a 6= 0, on a :
X
χ(acn + b) = 0
c∈Fq
10. de ce fait, on ne donnera pas de démonstration pour la proposition 4.7 .
4-17
CHAPITRE 4. THÉORIE DES DOMAINES FINIS
Théorème 4.30 Soit χ ∈ Fq un caractère additif non-trivial, n ∈ N, et λ un caractère
multiplicatif de Fq d’ordre d = pgcd(n,q − 1). Alors ∀a,b ∈ Fq avec a 6= 0, on a :
¯
¯
¯X
¯
¯
¯
n
¯
χ(ac + b)¯¯ ≤ (d − 1)q 1/2
¯
¯c∈Fq
¯
Preuve Théorème 4.30:
La preuve de ce théorème résulte directement du théorème 4.29.
¥
4.4
Les polynômes de permutation
Cette partie exposera des résultats qui pourront être explorés dans le futur, pour
améliorer la génération de nombres aléatoires. Ces améliorations sont fondées sur les
polynômes de permutation. Ces derniers induisent des pemutations sur Fq et font correspondre à chaque élément de Fq un élément du domaine symétrique Sq , qui contient les
mêmes éléments que Fq mais disposés de manière différente.
On peut définir cette classe de polynômes de plusieurs manières. La plus facile à
concevoir est la suivante :
Définition 4.31 Un polynôme f ∈ Fq [x] est un polynôme de permutation de Fq si et
seulement si ∀a ∈ Fq l’équation f (x) = a possède une unique solution dans Fq .
Théorème 4.31 Le polynôme f ∈ Fq [x] est un polynôme de permutation de Fq si et
seulement si, pour tout caractère χ non-trivial de Fq :
X
X
χ(f (c)) =
χ(c) = 0
(4.17)
c∈Fq
c∈Fq
Preuve Théorème 4.31:
La preuve est comprise dans la première égalité du théorème.
¥
Remarque:
A partir du théorème précédent, une application linéaire est un polynôme de permutation.
Pour conclure ce chapitre, on donne encore deux polynômes de permutation communs
à tout domaine.
Théorème 4.32 (i) Le monôme xn est un polynôme de permutation de Fq si et seulement si pgcd(n,q − 1) = 1
(ii) Le polynôme x(q+1)/2 + ax ∈ Fq [x] est un polynôme de permutation de Fq si et
seulement si η(a2 − 1) = 1 11 .
11. η est une fonction définie sur F∗q , avec η(c) = 1 si c est le carré d’un élément de F∗q , sinon η(c) = −1.
4-18
Chapitre 5
Tester le générateur
" If we were to give some man a pencil and paper and ask him to write down 100
random decimal digits, chances are slim that he will give a satisfactory result... And if
we would show someone a table of truly random digits, he would quite probably tell us
they are not random at all... "
Donald E. Knuth
Sommaire
5.1
5.2
5.3
5.4
5.5
Procédures générales de test
Tests empiriques . . . . . . .
Test théorique . . . . . . . .
Test spectral . . . . . . . . .
Relation entre tests . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5-2
5-5
5-9
5-11
5-15
La citation, ci-dessus, nous informe de deux principes fondamentaux dans le domaine
de génération de nombres aléatoires :
– La première est une information de totale liberté. En effet, il est possible de
proposer toute sorte de séquences de nombres (même écrites à la main) et dire,
jusqu’à preuve du contraire, que c’est une séquence aléatoire.
– La deuxième est une information de contrainte. Puisque, en vérité, toute séquence
supposée aléatoire ne l’est pas pour tout type de test.
Certains scientifiques qui se sont imposés dans le pseudo-aléatoire, comme le professeur
L’Ecuyer, refusent les générateurs qui ne possèdent pas de fondements mathématiques justifiant leur caractère aléatoire. Pour expliquer ce point de vue en quelques mots : "Plus
rigoureuse est la construction d’un générateur, moins faillible ce dernier le sera, une fois
soumis à des tests".
Reste une question fondamentale : "Sur quelle base théorique pouvons-nous
construire une source aléatoire ?". La réponse à cette question est liée d’une part
5-1
CHAPITRE 5. TESTER LE GÉNÉRATEUR
à nos besoins et, d’autre part, aux limitations théoriques et techniques.
Dans leur histoire, les premiers générateurs, très limités 1 , ont été largement désavantagés par l’outil informatique développé à ce moment. Ceux qui sont arrivés par la suite
ont été parfois catastrophiques, à cause d’un développement théorique très modeste 2 . En
effet, certains auteurs ont parfois négligé des epsilons significatifs !
Maintenant, pour avoir une bonne séquence aléatoire, on commence donc à proposer
des générateurs qui vérifient par construction un certain type de tests. Ainsi, la réponse
à la question que l’on s’est posée, c’est-à-dire la base théorique de la construction d’un
générateur, est celle qui lui permet de valider certains tests. D’autre part, une bonne
base théorique est celle qui vérifie, en plus des tests élémentaires, le maximum de tests
possibles.
Ce chapitre contient cinq sections. Comme cela est présenté dans le livre référence de
Knuth [Knu81], la première partie rappelle les principes des tests alors que la deuxième
établit une liste non exhaustive des tests empiriques les plus utilisés. La troisième dresse
les bases des tests théoriques du générateur le plus utilisé, c’est-à-dire le LCG. Ensuite,
la quatrième traite le test spectral. Puis, on termine enfin par comparer différents tests et
voir comment ils peuvent introduire ensemble un bon générateur. De ce fait, la dernière
partie, implique l’élaboration même de notre générateur parallèle construit dans le dernier
chapitre de ce mémoire.
5.1
Procédures générales de test
Pour introduire les tests empiriques, il faut rappeler les fondements statistiques de ce
type de tests.
Le principe d’un test statistique est que, à partir d’une expérience donnant lieu à
plusieurs événenments, on teste à quel point celle-ci représente ce que l’on doit obtenir
en théorie 3 . Les résultats d’une expérience très différents 4 de la théorie empèchent son
acceptation de cette expérience pour simuler la théorie en question.
Ainsi, pour situer ce chapitre dans la génération de nombres aléatoires, il suffit de remplacer, dans le paragraphe précédent, une expérience par un générateur de nombres
aléatoires équidistribués et la théorie par distribution uniforme.
1. relativement aux générateurs actuels
2. Cette période est décrite par Knuth comme les plus tristes chapitres de l’histoire des sciences informatiques
3. En statistique, on commence par faire une hypothèse sur la distribution d’une population, puis on
vérifie l’hypthèse à travers des tests. Ici le cas est différent, on veut avoir une population qui a une cetaine
distribution théorique puis on vérifie que l’expérience l’approuve. Ainsi, une fois cette petite différence
comprise, on peut confondre la notion de théorie et celle d’hypothèse.
4. une différence quantifiée
5-2
CHAPITRE 5. TESTER LE GÉNÉRATEUR
5.1.1
Test du χ2
Ce test est certainement le plus connu de tous : Il compare, intuitivement par soustraction, l’occurrence théorique d’un événement avec son occurrence par expérience. Enfin,
pour évaluer, d’une manière équitable les événements pouvant se produire, il est nécessaire
de normaliser. En d’autres termes, il faut que les événements les plus probables ne soient
pas ceux qui déterminent la concordance entre expérience et théorie, mais plutôt tous les
événements d’une manière équitable. Soit donc l’expression de notre statistique 5 V :
V =
X (Ys − nps )2
nps
1≤s≤k
(5.1)
avec :
Ys Le nombre d’occurrences d’un événement pour une expérience.
ps La probabilité théorique d’occurrence de l’événement.
n Le nombre de tirages (ou, si l’on veut, le nombre de simulations).
k Le nombre d’événements pouvant se produire.
En utilisant les identités :
X
X
Ys = n et
ps = 1
1≤s≤k
1≤s≤k
dans (5.1) on obtient ;
V =
1
n
Ã
X Y2
s
ps
1≤s≤k
!
−n
(5.2)
Dans l’article [Coc52] William G. Cochran prouve que pour n assez grand, V suit une
distribution χ2 (k − 1) où (k − 1) détermine les degrés de liberté.
Le principe de ce test s’effectue en lisant une table de distribution χ2 (k − 1), comme
celle présentée à la figure 5.1.1, les colonnes représentent le (1 − α)−ième centile et les
lignes représentent les degrés de liberté. L’exemple suivant donne une idée sur l’utilisation
de cette table.
Exemple:
Considérons l’expérience du lancer de deux dés, possédant chacun six faces où sont affichées les chiffres 1 à 6. A chaque lancer, l’événement est la somme des faces apparentes.
On a donc 11 P
événements différents. D’autre part, le problème possède 10 degrés de liberté puisque 1≤s≤k Ys = n (Ys est le nombre d’occurrences d’un événement) supprime
1 degré. La lecture sur le tableau s’effectuera donc sur la ligne 10. Maintenant, pour une
valeur V > 23.2, on dira que V possède environ une probabilité de 1% pour prendre cette
valeur.
5. la variable qui sert à effectuer le test
5-3
CHAPITRE 5. TESTER LE GÉNÉRATEUR
La règle :
Une hypothèse est refusée si la probabilité d’obtention de la valeur de la statistique est
très faible 6 , car le résultat est ainsi très loin de la théorie 7 . L’hypothèse est aussi refusée
si le résultat est proche de la théorie, ce qui est traduit par une très forte 8 probabilité
d’occurrence.
K
P
Fig. 5.1.1 – Table du χ2 .
Il reste cependant une petite difficulté concernant le nombre de tirages n, ou nombre
d’expériences effectuées. Pour ce test, il n’existe pas de règle générale mais celle utilisée
habituellement est un n vérifiant ∀ps , nps ≥ 5.
5.1.2
Test de Kolmogorov-Smirnov (KS)
Dans le cas d’un espace d’événements infini, le test du χ2 devient impraticable. Un
autre test prenant en compte la taille de l’espace d’événements est celui de KolmogorovSmirnov. L’idée est qu’au lieu de travailler sur l’occurrence d’un événement, on travaille
sur la distribution des occurrences. Sans avoir à introduire beaucoup de détails mathématiques, une fonction de distribution F (X) peut être assimilée en 1D à :
F (x) = P roba(X ≤ x)
(5.3)
Donc la fonction de distribution empirique Fn (X), associée à une expérience simulant
n tirages X1 ,...,Xn est définie comme :
Fn (x) =
le nombre de X1 ,...,Xn ≤ x
n
6. en général autour de 5%
7. ce qui est le cas de l’exemple précédent
8. en général autour de 95%
5-4
(5.4)
CHAPITRE 5. TESTER LE GÉNÉRATEUR
p
Etant donné que Fn (X) suit une loi binômiale d’écart√type F (x)(1 − F (x))/n, alors on
multiplie la comparaison entre Fn (X) et F (X) par n, histoire de lever la dépendance
de l’écart type en n.
Sans perte de généralité, on arrange nos observations par ordre croissant : X1 ≤ X2 ≤
X3 ≤ ... ≤ Xn , pour définir les statistiques :
¶
¶
µ
µ
√
√
j−1
j
−
+
(5.5)
− F (Xj )
et Kn = n max F (Xj ) −
Kn = n max
1≤j≤n
1≤j≤n
n
n
La distribution de ces statistiques est donnée, pour tout n, dans l’article [BT51].
De la même manière que le test du χ2 , à partir de la lecture des centiles, on rejette ou
on accepte selon que l’on est très proche des bornes ou loin.
Néanmoins, la détermination de n est beaucoup moins empirique. En effet, puisqu’il
y a comparaison entre fonctions de distributions, un n petit induit une différence importante entre la distribution théorique et la distribution empirique. Mais un n grand tend
à moyenner le caractère aléatoire. En général n = 1000 constitue un bon compromis.
5.2
Tests empiriques
Après construction d’un générateur, on trouvera toujours une façon de lui faire passer
un test empirique qu’il ne pourra pas valider. Par exemple, un test sensible au caractère
aléatoire de chaque bit d’un nombre aléatoire, rejettera à coup sûr les générateurs modulo
une puissance de 2, alors que certains d’entre eux sont relativement bons.
Par conséquent, les sous-sections qui suivent ne contiendront que les standards en
tests empiriques 9 . Pour beaucoup plus de détails sur les tests, en particulier les algorithmes d’implémentation, le lecteur pourra se rapporter aux références [Knu81] [LS07]
et [SMC03].
5.2.1
Tests de Knuth
Le livre de cet auteur [Knu81] demeure une référence dans le calcul scientifique et
constitue, pour la plupart des informaticiens, une bible dont la connaissance est incontournable pour pratiquer de l’informatique fondamental. Il en est de même pour les tests
statistiques repris dans ce livre. On essayera ici d’exposer les principaux tests et leurs
esprits puis de déterminer les plus importants pour la suite.
Avant de commencer notre exposé sur les tests, une précision sur le type de séquence
utilisée s’impose. En effet, certains tests utilisent des représentations réelles. Mais, d’autres
doivent employer impérativement des séquences entières. Par conséquent, selon le test
9. qui sont utilisés presque par défaut
5-5
CHAPITRE 5. TESTER LE GÉNÉRATEUR
traité, on utilisera soit la séquence réelle distribué entre 0 et 1 :
U0 ,U1 ,U2 ,...
(5.6)
soit la séquence d’entiers génératrice de la séquence précédente 10 et qui appartient à
l’intervalle [0,d[ :
Y0 ,Y1 ,Y2 ,...
5.2.1.1
(5.7)
Test d’équidisribution
Ce test est une application d’un test de χ2 ou un test de Kolmogorov-Smirnov directement sur la séquence des nombres générés. D’une part, on peut envisager un test KS sur
la suite (5.6) avec une fonction de distribution F (x) = x. D’autre part, utilisant la suite
(5.7) on partage l’intervalle des valeurs en sous-intervalles ayant une même longueur, puis
on réalise un test χ2 sur les valeurs classées dans les sous-intervalles.
5.2.1.2
Test de séries
Ce test n’est qu’une généralisation du test précédent. Ici ce n’est plus la suite qui entre
en compte, mais une série extraite de (5.7) s’écrivant sous la forme (Ytj ,Ytj+1 ,...,Ytj+t−1 )
avec t ≥ 0. Pour comprendre le principe général, sans entrer dans les détails, supposons
t = 2, on compte donc le nombre de (Y2j ,Y2j+1 ) = (q,r) avec 0 ≤ q,r ≤ d, puis on réalise
un test du χ2 pour ces k = d2 catégories dont la probabilité de chacune est 1/d2 .
Remarque:
Dès maintenant, j’invite le lecteur à réfléchir au fait qu’en réalisant une trajectoire sur
cent pas de temps, pour une simulation de Monte Carlo, on demande implicitement à
notre générateur de vérifier le test de séries pour t = 100, résultat qui n’est vérifié par
aucun des générateurs ordinaires. Avec un peu de chance il n’y a que le Mersenne Twister
qui vérifie cette hypothèse. C’est là encore une raison pour paralléliser la simultion de
Monte Carlo.
5.2.1.3
Test de l’écart (ou intervalle)
Ici, le but est de tester la longueur de l’intervalle séparant deux réalisations appartenant
à un même sous-intervalle de la séquence complète.
5.2.1.4
Test du poker
Ce test résulte du célèbre jeu de cartes. Néanmoins pour le comprendre, nous exposerons une version simplifiée : Un joueur possède dans sa main cinq cartes, autrement dit
cinq nombres aléatoires. Il y aura ainsi cinq possibilités de mains, pour cette version de
test :
5 cartes différentes = tous différents;
10. puisque un générateur de nombres aléatoires manipule des entiers
5-6
CHAPITRE 5. TESTER LE GÉNÉRATEUR
4 cartes différentes = une paire;
3 cartes différentes = deux paires ou trois identiques;
2 cartes différentes = trois identiques et deux autres identiques 11 , sinon quatre
identiques;
1 carte différente = cartes identiques = 5 identiques.
Supposons maintenant n mains, chacune a 5 cartes (Y5j ,Y5j+1 ,...,Y5j+4 )0≤j<n et soit r
le nombre de cartes différentes dans une main. On réalise un test du χ2 utilisant la
probabilité :
d(d − 1)...(d − r + 1)
pr =
dk
½
k
r
¾
où
½
k
r
¾
=
X
k1 k2 ...kn−m
1≤k1 ≤k2 ≤...≤kn−m ≤m
reprèsente le nombre de Stirling de la seconde espèce.
5.2.1.5
Test du ramasseur de coupon
Ce test est relié au test du poker comme l’est le test d’écart au test d’équidistribution.
Dans ce test, ce sont les segments Yj+1 ,Yj+2 ,...,Yj+r requis pour obtenir un ensemble
complet d’entiers de [0,d − 1], qui sont observés.
5.2.1.6
Test de permutation
Il est effectué sur la façon dont une séquence est ordonnée. En partageant séquentiellement la séquence complète en sous-séquences de mêmes longueurs, par exemple t, on
sait alors que la probabilité d’avoir un ordre donné est de p = 1/t!. Par exemple, pour
t = 3, il y aura six cas à traiter, selon que U3j < U3j+1 < U3j+2 ou U3j < U3j+2 < U3j+1
ou ... ou U3j+2 < U3j+1 < U3j .
5.2.1.7
Test de monotonie
Le titre est suffisant pour décrire ce test. En effet, ce n’est pas plus qu’un test sur les
séquences monotones de la suite (5.7).
5.2.1.8
Test du t-maximum
Ici on prend les maximums des sous-séquences de (5.6) pour leur faire passer un test
de Kolmogorov-Smirnov.
11. Full house
5-7
CHAPITRE 5. TESTER LE GÉNÉRATEUR
5.2.1.9
Test de collision
Afin d’expliquer ce test, je cite l’exemple donné par Knuth :
Soient deux entiers m et n avec m > n. Supposons que l’on possède m urnes et que l’on
répartisse n balles, d’une manière aléatoire sur ces urnes. La majorité des balles se déposeront dans les urnes vides. Autrement, si une balle tombe dans une urne remplie par au
moins une balle, on dira qu’il y a collision.
En remplaçant balles par nombres aléatoires et urnes par intervalles, une collision suit
une certaine loi et de ce fait, un test peut être effectué sur l’occurrence de ces collisions.
5.2.1.10
Test de corrélation
Cela consiste à calculer les estimateurs de corrélation de deux échantillons successifs.
Ces estimateurs sont supposés appartenir à l’intervalle [−1,1] avec une valeur absolue
proche de 0. Une bonne valeur de ces coefficients sera comprise dans l’intervalle [µn −
2σn ,µn + 2σn ] avec :
−1
1
µn =
, σn =
n−1
n−1
5.2.1.11
r
n(n − 3)
, n > 2.
n+1
Test de sous-séquences
Au lieu de travailler sur toute la séquence générée 12 , on la divise en sous-séquences
qui seront soumises à des tests. Puis on décide que le mauvais générateur est celui qui
l’est en moyenne sur toutes ses sous-séquences.
5.2.1.12
Les tests empiriques, les plus importants
Ceux considérés comme les plus valables sont le test de collision et surtout celui de
séries 13 . Les autres tests empiriques sont moins pratiqués, surtout après l’importance prise
par le test spectral 14 .
5.2.2
Tests DIEHARD
C’est une librairie de tests prédéfinis et prêts à être utiliser. Les tests qu’elle contient
ont le même esprit de ceux exposés dans la sous-section précédente et leur utilisation est
presque directe 15 puisque, pour une séquence en entrée, cette librairie donne les résultats
des statistiques en sortie 16 .
12. ou la période du générateur
13. le test de collision utilise le même concept que le test de séries, mais avec une formulation différente
et donc une probabilité différente de la probabilité uniforme.
14. La définition de ce test sera présentée à la section 5.4
15. boîte noire
16. c’est d’ailleurs sa facilité d’utilisation qui l’a rendue célèbre.
5-8
CHAPITRE 5. TESTER LE GÉNÉRATEUR
5.2.3
Tests SPRNG
En plus des tests empiriques proposés dans [Knu81], et ceux utilisés dans DIEHARD,
cette librairie utilise des résultats d’expériences physiques 17 pour les comparer à ceux que
l’on obtient par simulation.
5.3
Test théorique
Dans cette partie, il n’y aura que les tests théoriques concernant un seul générateur
qui est le LCG. En effet, étant le plus ancien et le plus rigoureux dans sa construction
mathématique, il est le plus utilisé et le plus étudié.
Le principe ici est d’assurer une certaine indépendance d’un échantillon, en vérifiant
sa décorrélation, à travers des coefficients de corrélation faible.
Avant de commencer notre étude, nous définissons trois fonctions intermédiaires :
δ(z) = ⌊z⌋ + 1 − ⌈z⌉ =
((z)) = z − ⌊z⌋ −
½
1 si z est un entier
0
sinon
1
1
+ δ(z) = z − ⌈z⌉ + − δ(z) = z − (⌈z⌉ + ⌊z⌋)/2
2
2
(5.8)
(5.9)
La fonction exprimée dans (5.9) est la fonction sawtooth, elle est très utilisée dans les
transformées de Fourier. Voir figure (5.3.1).
Fig. 5.3.1 – La fonction sawtooth ((z)).
17. faisant intervenir des nombres aléatoires, comme les modèles d’Ising que l’on simule via des algorithmes comme Metropolis.
5-9
CHAPITRE 5. TESTER LE GÉNÉRATEUR
Enfin, on introduit une dernière fonction, dite somme généralisée de Dedekind
σ(h,k,c) :
X µµ j ¶¶ µµ hj + c ¶¶
σ(h,k,c) = 12
(5.10)
k
k
0≤j<k
Soit maintenant l’estimateur du coefficient de corrélation suivant :
³ P
¡P
¢2 ´
m 0≤x<m xs(x) −
0≤x<m x
C= ³ P
¡P
¢2 ´
2
m 0≤x<m x −
0≤x<m x
(5.11)
Ici s(x) représente la récurrence du LCG, c’est-à-dire :
s(x) = (ax + c) mod m
On peut montrer que sachant un x′ tel que s(x′ ) = 0, alors :
µµ
¶¶
ax + c
m
s(x) = m
si x 6= x′
+
m
2
(5.12)
(5.13)
Utilisant (5.10), (5.13) et les fomules suivantes :
X
0≤x<m
x=
m(m − 1)
2
et
X
x2 =
0≤x<m
m(m − 1)(2m − 1)
6
(5.11) devient :
C=
mσ(a,m,c) − 3 + 6(m − x′ − c)
m2 − 1
(5.14)
σ(a,m,c)
m
(5.15)
donc :
C≈
A partir de (5.10) et (5.15), on est rassuré par des coefficients de corrélation ≪ 1.
Remarque:
Plusieurs remarques intéressantes doivent être faites :
– A ma connaissance, les livres et les articles ne précisent pas que, malgré des corrélations très peu significatives, le fait d’utiliser une large
séquence, comme c’est le cas pour une simulation de Monte Carlo, risque
d’amplifier ce problème de corrélation.
– Un autre problème, aussi, concerne la corrélation entre deux nombres
séparés par n échantillons, avec n ≥ 2. Certes, celle-ci sera moins gênante
mais restera une difficulté importante 18 .
18. elle sera traité dans la dernière section de ce chapitre.
5-10
CHAPITRE 5. TESTER LE GÉNÉRATEUR
Pour finir, Knuth donne dans son article [Knu77] les bornes suivantes aux sommes de
Dedekind :
j impair
j impair
j pair
j pair
X
X
1 X
1 X
1
1
−
aj +
aj −
aj −
aj + ≤ σ(a,m,c) ≤
2 1≤j≤t
2
2 1≤j≤t
2
1≤j≤t
1≤j≤t
(5.16)
avec ici les aj sont les coefficients partiels du tableau d’Euclid dressé pour les
deux entiers premiers a et m.
Remarque:
– Les résultats (5.16) et (5.14) seront utilisés dans l’élaboration du générateur parallèle. D’autre part, ils seront aussi abordés dans la dernière section de ce chapitre.
– Les auteurs de l’article [LSCK00] commencent la justification de leur
générateur par un refus des LCG modulo m = 231 −1. Ils prouvent que pour
un multiplicateur a = 16807, largement utilisé, un des tests de DIEHARD
démontre que le résultat est biaisé. Personnellement je pense 19 que c’est
le multiplicateur 20 qui fait défaut. Il suffit de voir l’expression (5.16)
pour comprendre que c’est un très mauvais multiplicateur. D’autre part,
la corrélation est grande entre tous les points, même ceux séparés par 20
échantillons.
5.4
Test spectral
Sans doute, il est devenu, le plus important. D’une part parce que tous les mauvais
générateurs y échouent et, d’autre part, un générateur qui répond à ce test répondra au
plus important des tests empiriques, c’est-à-dire le test de séries.
Dans cette section, on expose les idées principales de ce test. Pour plus de détails, je
renvoie le lecteur aux références de H. Neiderreiter [Nei85] [Nei76] [Nie92], la section 3.3.4
du livre de Knuth [Knu81], puis le très bon article [FI86] de George S. Fishman et Louis
R. Moore III.
Comme pour le test de séries 21 , le test spectral analyse la distribution jointe de t
éléments consécutifs. Néanmoins, ce test s’effectuera obligatoirement sur toute la période
du générateur. On utilisera la séquence suivante :
{(Un ,Un+1 ,...,Un+t−1 )}
(5.17)
dans un espace à t dimensions. Avec :
s(x) = (ax + c) mod m
19. cette impression est justifiée par d’autres auteurs utilisant le test spectral.
20. même si largement utilisé
21. de ce fait, la même remarque faite pour le test de séries, peut être reprise ici.
5-11
(5.18)
CHAPITRE 5. TESTER LE GÉNÉRATEUR
(5.17) devient :
½
1
(x,s(x),s(s(x)),...,st−1 (x)) | 0 ≤ x ≤ m
m
¾
(5.19)
Pour un LCG de mauvaise période et de mauvais multiplicateur, on obtient en 3 dimensions la distribution de la figure 5.4.1 .
Fig. 5.4.1 – Test spectral en trois dimensions.
On observe, à travers la figure 5.4.1, que les nombres aléatoires occupent les hyperplans. Même si ce comportement est très mauvais pour t = 3, les meilleurs générateurs
linéaires obtiennent aussi une même allure mais pour des valeurs de t plus grandes 22 .
Introduisons la grandeur 1/ν t comme distance entre les hyperplans 23 . La remarque
qui peut être faite est qu’en augmentant la valeur de t, la distance entre les hyperplans
croît aussi. En effet, contrairement à de vrais nombres aléatoires, les nombres pseudoaléatoires sont répartis sur une séquence fini, disons de longueur m. On ne peut pas avoir
une précision supérieure à m1/t , c’est-à-dire qu’en général νt ≤ m1/t .
Maintenant, le problème vient dans l’élaboration du test spectral. Autrement dit :
Comment pouvons-nous juger de la bonne qualité d’un générateur, via le test spectral ?
Pour cela, plusieurs méthodes ont été traitées 24 dans la littérature. L’article [FI86] résume
bien l’ensemble des mises en forme du test spectral. Dans la présente section, seules celles
fondées sur dicrépance et la distance entre deux hyperplans adjacents seront
présentées. Nous commençons par la description de cette dernière méthode.
22. ce qui fait d’eux meilleurs que celui représenté.
23. par exemple : la distance entre les plans dans la figure 5.4.1 est notée par 1/ν 2
24. qui généralement n’utilisent pas le mot "test spectral" pour califier ce test. On cite, par exemple
lattice test qui est fondé sur un même concept mais utilisant d’autres outils.
5-12
CHAPITRE 5. TESTER LE GÉNÉRATEUR
5.4.1
Distance maximale séparant les hyperplans adjacents
Nous pouvons nous contenter, seulement du titre pour décrire cette méthode. Cependant, si l’on veut être plus formel, on va devoir analyser l’ensemble décrit par (5.19). Pour
simplifier 25 , on considère c = 0 dans l’expression (5.18), on remarque que :
1 j
aj x
s (x) =
mod 1
m
m
(5.20)
Afin de supprimer le mod 1, on réalise une extension de notre ensemble de départ, pour obtenir un nouvel ensemble périodique qui sera ainsi 26 une copie, dans toutes les directions,
de l’hypercube t-dimensionel et qui s’écrira comme :
¶¾
½µ
ax
at−1 x
x
+ k1 , + k2 ,...,
+ kt | pour x,k1 ,k2 ,...,kt entiers
(5.21)
L=
m
m
m
Le lecteur comprend que k = (k1 ,k2 ,...,kt ) est le vecteur de reproduction de l’hypercube
t-dimensionel. D’autre part, on remplace sans perte de généralité (x,k1 ,k2 ,...,kt ) par (x +
k1 m,0,k2 − ak1 ,...,kt − at−1 k1 ), d’où une redondance en k1 . Donc, (5.21) se met aussi sous
la forme :
L = {(y1 V1 + y2 V2 + ... + yt Vt | pour y1 ,y2 ,...,yt entiers)}
(5.22)
où
V1 =
1
(1,a,a2 ,...,at−1 )
m
(5.23)
et
V2 = (0,1,0,...,0), V3 = (0,0,1,...,0), ..., Vt = (0,0,0,...,1)
(5.24)
Avec cette méthode de test spectral, le but est donc d’étudier les distances entre ceux qui
sont adjacents, dans la famille des hyperplans qui décrivent L.
Cependant, une famille d’hyperplans peut être définie par un vecteur U = (u1 ,u2 ,...,ut )
normal et une constante paramétrique q telle que :
{(x1 ,...,xt ) | x1 u1 + x2 u2 + ... + xt ut = q}
(5.25)
Donc, les hyperplans sont séparés par une même distance et l’un d’eux passe par 0. On
ajuste alors la magnitude de U de sorte que les valeurs entières de q décrivent toute la
famille, ce qui permet de définir la distance entre hyperplans adjacents comme la distance
minimale entre l’origine (0,0,...,0) et l’hyperplan défini par q = 1. Cette distance est
déterminée par :
¾
½q
2
2
x1 + ... + xt | x1 u1 + x2 u2 + ... + xt ut = 1
(5.26)
min
x1 ,...,xt ∈R
25. puisque, de toute manière, le générateur que l’on va utiliser aura une constante c = 0
26. à cause de la supression de mod 1
5-13
CHAPITRE 5. TESTER LE GÉNÉRATEUR
D’autre part, par l’inégalité de Cauchy :
(x1 u1 + x2 u2 + ... + xt ut )2 ≤ (x21 + ... + x2t )(u21 + ... + u2t )
(5.27)
De ce fait, le minimum de la formule (5.26) est atteint pour tout xj = uj /(u21 + ... + u2t )
et vaut :
1
p
u21 + ... + u2t
(5.28)
En outre, la paramétrisation (5.25) appliquée aux vecteurs (5.24) impose que les coordonnées de U soient toutes entières. Aussi (5.25) appliquée au vecteur (5.23) implique la
relation :
u1 + au2 + ... + at−1 ut ≡ 0 (mod m).
A partir de (5.26), (5.28) et (5.29), l’inverse 27 de la distance 1/νt est donc :
¾
½q
t−1
2
2
νt = min
u1 + ... + ut | u1 + au2 + ... + a ut ≡ 0 (mod m)
u1 ,...,ut ∈Z
(5.29)
(5.30)
Avec cette méthode, le test spectral est positif lorsque νt est de faible valeur. Cependant,
pour distinguer un bon générateur d’un mauvais, le seuil reste qualitatif. Les auteurs de
l’article [FI86] font une recherche exhaustive des bons multiplicateurs, pour un LCG, avec
des seuils assez restrictifs.
5.4.2
Dicrépance
Pour caractériser un générateur de nombres aléatoires, l’utilisation de cette grandeur
est tout simplement ingénieuse. L’origine de ce concept est l’étude de l’échantillonnage
uniforme de l’espace et comment ce dernier pouvait approximer un volume. Niederreiter
a donc adapté ce concept pour caractériser un générateur. L’esprit de ce test vient du fait
que, si l’on veut intégrer sur un volume donné utilisant une séquence pseudo-aléatoire, les
résultats doivent ressembler au cas où l’on utilise une séquence purement aléatoire. Pour
couronner le tout, la discrépance, à une dimension, n’est pas plus que la statistique de
Kolmogorov définie par :
max(Kn+ ,Kn− )
(5.31)
avec Kn+ et Kn− définies dans (5.5).
En d’autres termes 28 , nous pouvons caractériser un test spectral par un test de série.
En fait, le premier est plus restrictif que le second mais, dans la logique de test, si un
générateur ne vérifie pas l’hypothèse H0 pour un test moyen, il ne la vérifiera pas pour
un test plus fort. Dans le cas où notre générateur est bon pour une certaine dimension du
27. l’inverse de la distance entre hyperplans peut être assimilée à la fréquence d’un hyperplan dans
l’hypercube t-dimensionnel
28. et c’est que l’on va revoir dans la dernière partie de ce chapitre
5-14
CHAPITRE 5. TESTER LE GÉNÉRATEUR
test de séries il suffit, pour être plus exigeant, d’augmenter la dimension de la discrépance
et refaire le test de séries.
Nous donnons alors l’expression de cette grandeur à t dimensions par :
DN (s0 ,s1 ,...,sN−1 ) = sup|FN (J) − V ol(J)|
(5.32)
Dans l’expression (5.32), le supremum est cherché sur les sous-intervalles J de [0,1)s .
V ol(J) représente naturellement le volume de J et s0 ,s1 ,...,sN−1 des points dans Rt , chacun de ces points s’écrit sous une forme semblable à (5.17). Comme pour le cas à une
dimension, FN (J) = (le nombre de s1 ,...,sN−1 ∈ J)/N .
Dans l’article [Nei85], les auteurs donnent des bornes efficaces pour la discrépance.
D’autre part, dans l’article [BN83], les auteurs proposent un bon algorithme pour estimer
numériquement les bornes pour une discrépance de dimension 2, afin de chercher des
multiplicateurs optimaux au sens qu’ils minimisent les bornes de cette discrépance en 2
dimensions.
5.5
Relation entre tests
Une fois que le lecteur est arrivé à cette partie du mémoire, il doit savoir qu’à travers la
discrépance 29 , nous pouvons relier les résultats du test spectral et ceux du test de séries.
Une approche due à U. Dieter relie le test théorique au test de séries via les densités de
probabilité.
5.5.1
Relation entre test théorique et test de séries
On traite le cas simple à deux dimensions qui peut être généralisé selon la même
procédure. On cherche à estimer la densité de probabilité d’avoir : α ≤ Xn ≤ β et α′ ≤
Xn+1 ≤ β ′ avec 0 ≤ α < β ≤ m et 0 ≤ α′ < β ′ ≤ m. Sachant qu’une distribution
parfaitement uniforme, pour un LCG modulo m donne une densité égale à :
β − α β ′ − α′
(5.33)
Phyp =
m
m
nous estimons cette probabilité empiriquement en utilisant :
X µ¹ x − α º ¹ x − β º¶ µ¹ s(x) − α′ º ¹ s(x) − β ′ º¶
Pemp =
−
−
(5.34)
m
m
m
m
0≤x<m
A partir des fonctions (5.8), (5.9), (5.10) et (5.13) déjà définies nous retrouvons:
1
[σ(a,m,c + aα − α′ ) − σ(a,m,c + aα − β ′ )
Pemp = Phyp + 12m
+σ(a,m,c + aβ − β ′ ) − σ(a,m,c + aβ − α′ )] + ǫ
29. qui n’est rien d’autre que la statistique de Kolmogorov utilisant la fonction de distribution.
5-15
(5.35)
CHAPITRE 5. TESTER LE GÉNÉRATEUR
avec : |ǫ| ≤ 2.5/m De ce fait, pour avoir un bon comportement global 30 de séries pour
un LCG, il suffit de choisir les bons multiplicateurs qui minimisent la fonction σ au sens
de (5.16).
D’autre part, le bon comportement local est analysé en utilisant le bon comportement
global du générateur via la discrépance qu’on analysera d’avantage dans la section suivante.
Ainsi, la méthode de choix de multiplicateur, que l’on va utiliser, va être celle qui
minimise la corrélation et vérifie un bon comportement de séries, au moins en deux dimensions.
5.5.2
Relation entre test spectral et test de séries
Cette relation a été longuement étudiée par Niederreiter dans plusieurs de ses ouvrages
et publications. C’est maintenant qu’intervient la théorie développée au chapitre 4 pour
étudier cette relation. Mais avant d’entamer la théorie, nous illustrons à la figure 5.5.1
les deux tests. En effet, le test de séries, tel qu’il est défini en utilisant la statistique de
Kolmogorov, correspond parfaitement, en deux dimensions, à la figure 5.5.1.(a). Le test
spectral, qui estime la distance entre hyperplans adjacents, peut être lui aussi représenté
à 5.5.1.(b) par un test de séries suivant l’orientation la plus défavorable.
(a)
(b)
Fig. 5.5.1 – Relation entre test spectral et test de séries : (a)Test de séries, (b)Test spectral.
La relation décrite à la figure précédente est traduite par une borne supérieure sur la
discrépance, cette même borne caractérise le test spectral.
pour prouver la relation en question, j’ai préféré les démarches de Neiderreiter dans [Nei85]
à celles de knuth dans le paragraphe 3.3.4 de [Knu81], pour deux raisons : (i) puisque
30. sur toute la période
5-16
CHAPITRE 5. TESTER LE GÉNÉRATEUR
l’utilisation de la théorie des domaines finis est plus distincte dans [Nei85], (ii) ces mêmes
démarches permettent de généraliser cette relation pour le cas de générateurs en parallèle.
5.5.2.1
Justification du générateur séquentiel
Théorème 5.1 Pour un générateur LCG ( yn = ayn−1 mod m ), de module m premier
et de période maximale égale à τ = m − 1, la discrépance (5.32) de toute la séquence
vérifie :
µ
¶s
s
2
1
7
s
Dτ =m−1 <
+
ln(m) +
+ Rs (a,m,m)
(5.36)
m m−1 π
5
avec :
Rs (a,m,n) =
X
h∈C(m), h·a≡modn
1
r(h,m)
(5.37)
C(m) ⊂ Zs l’ensemble des points h = (h1 ,...,hs ) non-nuls qui constituent le treillis, yn =
(yn ,yn+1 ,...,yn+s−1 ), 0 ≤ n ≤ N − 1. La fonction r(h,m) = r(h1 ,m)...r(hs ,m) avec pour
tout i tq 1 ≤ i ≤ s :
½
1 si hi = 0
(5.38)
r(hi ,m) =
m sin π|h/m| si 0 < |hi | ≤ m/2
Preuve Théorème 5.1:
Niederreiter prouve dans [Nie77] que :
¯
¯ N −1
¯
¯1 X
X
s
1
¯
¯
s
DN
<
+
e(h · yn /m)¯
¯
¯
m
r(h,m) ¯ N n=0
(5.39)
h∈C(m)
Néanmoins la somme, à l’intérieur de la valeur absolue, n’est pas plus qu’une somme
exponentielle, telle que celles vues dans le chapitre 4, multipliée par 1/N . En effet, puisque
s’il on pose :
un = h · yn avec "·" comme le produit scalaire usuelle. Alors :
un+1 = h1 yn+1 + h2 yn+2 + ... + hs yn+s
⇒ un+1 ≡ h1 (ayn ) + h2 (ayn+1 ) + ... + hs (ayn+s−1 )
⇒ un+1 ≡ aun mod m
Puisque le corollaire 4.6, pour n = 1 a = b = 1, donne :
X
χ(c) = −χ(0) = −1
c∈F∗m
¯
¯ 1 Pm−2
¯
ainsi : ¯ m−1
n=0 e(h · yn /m) = 1/(m−1) (c’est tout simplement la somme exponentielle
sur toute la période du LCG de module premier, puisque là c’est la discrépance sur toute
la période N = m − 1 dont on veut borner.) donc, à partir de (5.39) :
s
<
Dm−1
1
s
+
Rs (a,m,n 6= m) + Rs (a,m,m)
m m−1
5-17
(5.40)
CHAPITRE 5. TESTER LE GÉNÉRATEUR
Enfin, Niederreiter prouve dans [Nie77] que : Rs (a,m,n) <
ce qui achève la démonstration.
¡2
ln(m) +
π
¢
7 s
5
¥
Remarque:
– Le théorème 5.1 affirme des propriétés pour une somme exponentielle sur toute la
période du générateur. Néanmoins, nous obtenons le même ordre de grandeur des
bornes (5.36) pour une discrépance sur N < m − 1.
– Dans l’article [Nie78], l’auteur compare des variables aléatoires à des variables
pseudo-aléatoires. Il affirme que puisque la méthode de Monte Carlo converge en
O(N −1/2 ) (c’est ce qu’on a vu dans le premier chapitre), alors la discrépance nous
permet une convergence plus rapide. En effet, pour du Quasi-Monte Carlo sur une
fonction assez régulière, la convergence de (5.36) est plus rapide que O(N −1/2 ), cela
peut être vu facilement en une dimension s = 1 dans (5.36)(intégration simple).
– Enfin, la relation entre le test de séries et le test spectral est traduite par le fait que
la somme exponentielle, sur une tranche de la période, est faible seulement si (5.29)
est vérifiée. De plus, Niederreiter a prouvé que Rs (a,m,n) est de faible valeur pour
n = m c’est à dire si (5.29) est vérifiée.
5.5.2.2
Justification du générateur parallèle
Cette justification, que l’on va exposer, est fondée sur l’article [Mas97] et est moins
rigoureuse 31 . En effet, ici il n’est pas question de borner la discrépance, le seul effort sera
de trouver un ordre de grandeur de la somme exponentielle.
Le théorème 4.3 permet de définir deux générateurs pour le même groupe cyclique,
soient :
xn = axn−1 mod m
et
yn = ar yn−1 mod m
puisqu’ils peuvent passer par un même point à un instant donné, on suppose sans perte
de généralité que : x0 = y0 = z. De ce fait, la somme exponentielle sur toute la période
d’argument xn − yn 32 s’écrit :
m−2
X
1
1 X 2πi f (n)
em
χ(xn − yn ) =
m − 1 0≤n≤m−1
m − 1 n=0
avec f (n) = z(an − arn ).
(5.41)
p
P
√
2πi
f (n)
m
| ≤ 1/(m − 1) × (r − 1) m = O( 1/m),
Puisque : 1/(m − 1) × | m−2
n=0 e
alors, pour obtenir la rapidité de la convergence du Monte Carlo il faut que :
√
r − 1 << m
(5.42)
31. La période courte de mon stage ne m’a pas permis de développer d’avantage ce point.
32. appelée somme exponentielle de l’intercorrélation
5-18
CHAPITRE 5. TESTER LE GÉNÉRATEUR
Remarque:
Ainsi on a trouvé notre méthode de paramétrisation. Il suffit de chercher les r du théorème
4.3, qui vérifient (5.42) et dont le multiplicateur ar = b mod m bénéficie de faibles bornes
au sens de (5.16).
5-19
Chapitre 6
Solution trouvée
" If you can solve it, it is an exercice; otherwise it is a research problem. "
Richard Ernest Bellman
Sommaire
6.1
6.2
6.3
Solution trouvée . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1
Résultat, Tests et améliorations . . . . . . . . . . . . . . . . . . 6-2
Avantages et liberté . . . . . . . . . . . . . . . . . . . . . . . . . 6-4
Dans ce chapitre, on arrive enfin à une solution qui semble satisfaisante et adaptée.
Certainement, face à un tel problème, un lecteur intéressé par ce domaine peut suggérer
d’autres solutions qui peuvent être de nature complètement différente. Néanmoins, l’approche de résolution proposée lors de ce stage est intéressante car elle est simple à exécuter
et possède un fondement mathématique qui la rend reproductible. En effet, même si on
élaborait un bon générateur par construction, il serait inconcevable que la rigueur de
construction soit au détriment la rapidité de calcul et la simplicité de réalisation et d’extension.
Afin de détailler et approuver la solution proposée, ce chapitre expose en premier lieu,
la solution trouvée, puis dans une autre section, le résultat, les tests et les améliorations
éventuelles. Enfin, il présente les extensions possibles de notre approche, non seulement,
pour résoudre des problèmes plus complexes, mais aussi pour son adéquation à une architecture cluster.
6.1
Solution trouvée
Afin de présenter l’approche retenue, il est nécessaire d’arborer tout d’abord le choix
de multiplicateurs, puis, donner les points les plus importants de l’implémentation.
6-1
CHAPITRE 6. SOLUTION TROUVÉE
6.1.1
Choix des multiplicateurs
A partir du chapitre 5, le lecteur peut certainement déduire les multiplicateurs choisis
pour le paramétrage. La procédure de recherche de multiplicateurs peut être résumée par
les points suivants:
(1◦ ) Nous commençons par prendre le meilleur multiplicateur connu dans la littérature [FI86] pour un LCG(m = 231 − 1), c’est-à-dire a = 62089911;
(2◦ ) puis nous cherchons ∼ 3000 nombres premiers avec m − 1 = 2 ∗ (230 − 1);
(3◦ ) on garde seulement les nombres premiers r qui donnent de bons multiplicateurs au
sens (5.16), cependant ici on prend en considération les corrélations entre Xk et
Xk+j avec j = 1,2,...,50. Cette étape supprime ∼ 2/3 multiplicateurs.
Remarque:
Nous attirons l’attention du lecteur sur les points suivant qui doivent être précisés concernant notre construction ;
– Dans le point (2◦ ), nous ne pouvons pas chercher beaucoup plus de nombres premiers
car les multiplicateurs les plus distants mutuellement doivent vérifier (5.42).
– Dans le point (3◦ ), la corrélation entre Xk et Xk+j est reliée à la somme générale de
Dedekind σ(aj (mod m),m,c) comme l’est celle de Xk et Xk+1 à σ(a,m,c). Le calcul
de (5.16) est réalisé avec l’algorithme A présenté dans page 320 du livre [Knu81].
6.1.2
Implémentation
Nous utilisons 1024 générateurs. Afin d’avoir une simulation de Monte Carlo sur ∼ 106 ,
chacun de ces générateurs va donner lieu 1024 trajectoires. Ces trajéctoires sont réalisées
par un jeu de racines fixées dès le départ dans la texture initiale. De ce fait, tout au long
du progamme, nous manipulerons des textures 1024 × 1024 1 .
La multiplication modulo, appliquée dans le LCG, est réalisée de façon efficace, en
utilisant l’algorithme de multiplication exposé à la page 272 dans le livre [Knu81]. Quant
au modulo, cette opération est réalisée naturellement par la limitaton de l’allocation mémoire pour des entier à 32 bits.
Le passage int/float est fondé sur l’approximation scientifique d’un nombre donné.
Par exemple si nous avons le nombre 2421532345 et nous voulons garder que 4 chiffres
significatifs, nous allons écrire 2422 × 106 . Par contre si nous voulons garder 5 chiffres
significatifs, nous allons écrire 24215 × 105 . Ainsi, le même principe est appliqué dans
notre programme, cependant nous utilisons la base binaire à la place de la base décimale.
6.2
Résultat, Tests et améliorations
Commençons par présenter les performances.
1. la taille est égale au nombre de générateurs disponibles
6-2
CHAPITRE 6. SOLUTION TROUVÉE
6.2.1
Résultat
Les performances de calculs sont au rendez-vous. En effet, la simulation
d’une option vanille sur 1048576 trajectoires est ∼ 30 fois plus rapide sur GPU 2
que sur CPU 3 , puisque sur GPU cela prend moins de 4 secondes au lieu de ∼
110 secondes sur CPU. Etant donné que le chargement et le déchargement des
données prend chacun ∼ 1 seconde, la vitesse peut être d’avantage amplifiée
pour les options sur panier, là où la simulation sur CPU est beaucoup plus
lente 4 .
6.2.2
Tests
Parmi les raisons principales qui nous a incités à l’élaboration en amont d’un bon générateur parallèle est la difficulté de le tester en aval. Le problème qui s’oppose à l’étape
de test est un problème d’échelle. En fait, tester les générateurs séquentiellement et parallèlement, deux par deux, donne lieu à un nombre très important et impraticable de tests.
Dans la suite nous expliquons deux procédures de test qui peuvent être appliquées en
guise de continuité du stage 5 . Ici il est question de traîter le générateur parallèle tel un
générateur séquentiel. Le meilleur test empirique que nous pouvons faire passer à notre
générateur est le test de séries. On formalise, dans les points suivants, deux tests fondés
sur le test de séries :
1. Ce premier test est celui de la comparaison de performances. A travers la simulation
de toute une période T = m − 1 du LCG (a = 6209911), nous mesurons les performances de ce générateur par rapport à nos 1024 générateurs en parallèle produisant
chacun ⌊m − 1/1024⌋.
2. Le second test est un test d’évaluation de la qualité glabale du générateur. De ce
fait, on utilise toute la période pour tous les générateurs et on essaie d’augmenter
au maximum les dimension du test de séries.
6.2.3
Améliorations
Des améliorations peuvent-être apportées en utilisant les polynômes de permutation
exposés dans le chapitre 4. Pour mettre en évidence ces améliorations, nous prenons le
cas simple du polynôme linéaire 6 . L’utilisation d’un LCG :
Xn+1 = aXn (mod m)
(6.1)
2. Carte graphique NVIDIA 8800 : 520 GFlops et 500 Mo de RAM
3. Duo Process Xeon avec 2.33 Ghz pour chaque processeur et 2 Go de RAM
4. la simulation sur CPU de ces options prend un temps beaucoup plus long que celui du déchargement
et chargement
5. Ce test n’a pas été mis en oeuvre pour des contraintes de temps.
6. qui est un polynôme de permutation selon le chapitre 4
6-3
CHAPITRE 6. SOLUTION TROUVÉE
et du polynôme de permutation :
Xk+1 = bXk+1 (mod m)
(6.2)
donnent lieu à un double LCG. En d’autres termes nous pouvons implémenter notre LCG
ordinaire (6.1) et transiter sur les différentes sous-séquences du LCG (6.1) selon le LCG
(6.2).
L’avantage de ce type d’opérations présente plusieurs avantages. En effet, elles sont
faciles à mettre en oeuvre, rapides à exécution et peuvent être totalement mises en parallèles.
6.3
Avantages et liberté
Comme cela est discuté antérieurement, l’avantage principal de ce type de solution est
qu’elle nous permette de se rapprocher de l’optimum en calcul. Cet optimum peut être
aussi atteint avec d’autres actifs dérivés.
L’autre point intéressant de cette construction vient de sa convenance avec une architecture cluster. En effet, nous pouvons facilement imaginer un générateur parllélisé par
dévision sur un cluster. Plus précisément, une fois le multiplicateur de chaque générateur
fixé, nous divisons la période de chaque générateur en sous-séquences, via le bon choix de
la racine de chaque générateur. Puis, nous consacrons une séquence pour chaque machine.
Afin de donner une illustration numérique, supposons que nous avons à notre disposition les 1024 générateurs de période T = 231 − 2 = 2147483646. Chaque générateur
donne lieu à 1024 autes générateurs, soit une réduction par 1024 de la période, c’est-à-dire
T = 2097151. Chaque générateur produit une trajectoire sur 100 pas de temps, soit donc
une réduction par 100 de la période, c’est-à-dire T = 20971. Si nous voulons que chaque
machine traite 200 actifs, nous pouvons donc faire travailler une centaine de machines en
parallèle dans un cluster.
Il va de soit que l’architecture cluster peut être d’avantage étendue, une fois les GPU
sauront manipuler 64 bits.
6-4
Conclusion générale
Ce travail se situe entre l’informatique, les finances et les mathématiques pures. Le
déroulement de son contenu commence par une motivation d’accélérer la simulation de
Monte Carlo, puis s’étale sur la théorie des domaines finis, afin de comprendre les fondements du générateur LCG, et, enfin, construit un générateur parallèle vérifiant un ensemble de tests.
Le plus attirant dans la solution trouvée est certainement sa simplicité et surtout sa
convenance avec, d’une part, la simulation de Monte Carlo et, d’autre part, l’architecture en pipe-line de la GPU. De ce fait, les performances de calculs sont convaincantes
puisqu’elles sont proches de la théorie.
Contributions
La contribution apportée à travers ce stage est double :
– La première est une contribution dans le domaine de la parallélisation via la paramétrisation. En effet, la librairie SPRNG ne donne pas une méthode systématique
de choix des bons multiplicateurs 7 .
– La deuxième participation est celle qui ppropose, relativement à la nature d’une
GPU, une bonne méthode parallèle et très efficace pour la génération des nombres
aléatoires.
Perspectives
Relativement au travail fourni, on résume les perspectives dans les points suivants :
1◦ ) Bien que notre générateur soit construit de façon à avoir de bonnes propriétés,
l’étape suivante, qu’il faut valider, est celle qui approuve le générateur proposé à
travers les tests de séries formalisés à la section 6.2.
◦
2 ) Des améliorations sont à envisager, à travers l’utilisation des polynômes de permutations susceptibles de rendre notre génération encore plus aléatoire via des opérations
faciles, rapides et parfaitement parallèles.
7. Ils disent seulement comment retrouver des multiplicateurs
7-1
3◦ ) La solution proposée peut être exploitée, dans le cadre du projet ANR, pour tous
les actifs dérivés utilisant la simulation de Monte Carlo. Dans un cadre scientifique,
il est aussi possible d’utiliser cette méthode pour toute simulation physique fondée
sur la méthode de Monte Carlo. Sans oublier, bien sûr, le domaine des jeux vidéo
et des applications graphiques qui peuvent employent directement cette méthode.
◦
4 ) La simulation présentée est très simple pour une implémentation sur cluster, puisqu’il suffit de fixer la racine utilisée pour chaque machine et de lancer les machines
en parallèle. Il est de même pour une machine multiprocesseur exécutant un Monte
Carlo où la solution proposée peut être très facilement implémentée.
◦
5 ) Une fois les cartes graphiques manipulant des entiers de 64 bits, les générateurs
deviendront beaucoup plus performants. On sera aussi capable de paralléliser un
nombre plus important de générateurs.
7-2
Annexe A
Exemple de programme sur CG
Dans le programme suivant, nous aurons en entrée d’une part, une texture int contenant deux nombres aléatoires affectés aux deux coordonnées rg 1 de chaque pixel. D’autre
part, une texture float qui contient la valeur de l’actif sur une coordonnée de chaque pixel.
La sortie ne sera que la valeur de l’actif, selon l’équation (1.14) 2 à un instant donné, qui
remplie une texture float semblable à celle en entrée.
float main (
in float2 coords : TEXCOORD0, // coordnnees de la texture en sortie
uniform float div,
// dividende
uniform float mu,
// taux sans risque
uniform float dt,
// pas de temps
uniform float sigma,
// ecart type
uniform float pi,
uniform usamplerRECT UIn,
uniform samplerRECT FIn
// texture des nombres aleatoires
// texture de l'actif en entree
) : COLOR
{
1. couleurs rouge et verte
2. simulée deux fois
A-1
ANNEXE A. EXEMPLE DE PROGRAMME SUR CG
// La valeur de l'actif a l'instant t_{k-1}
float input = f1texRECT(FIn,coords);
// Les valeurs aleatoires
unsigned int2 aleat = texRECT(UIn, coords).rg;
// Choix de bits comme cela est explique au chapitre 6
aleat.r = bitChoice(aleat.r);
aleat.g = bitChoice(aleat.g);
// Le module aprys choix de bits et reduction
float m = 8388607;
// Reduction
aleat.r>>=8;
aleat.g>>=8;
// Gaussienne via Box-Muller
float2 gaush;
gaush.r = sqrt(-2*log(((float) aleat.r)/m))*cos(2*pi*(((float) aleat.g)/m));
gaush.g = sqrt(-2*log(((float) aleat.g)/m))*cos(2*pi*(((float) aleat.r)/m));
A-2
ANNEXE A. EXEMPLE DE PROGRAMME SUR CG
L’initialisation des arguments de notre shader et le retour du résultat s’effectue via
une communication CPU/GPU spécifiée dans un code C++ ordinaire.
A-3
Annexe B
Preuves des théorèmes du chapitre 4
Preuve Théorème 4.10:
Il suffit d’utiliser le fait que ∀i ∈ Z avec 0 < i < p :
µ ¶
p(p − 1) · · · (p − i + 1)
p
=
≡ 0 mod p
i
1·2···i
puis un développement binômial.
¥
Preuve Théorème 4.17:
Posons [M : L] = m, [L : K] = n, et soit {α1 ,...,αm } une base de M sur L et {β1 ,...,βn } une
base de L sur K. Alors chaque α ∈ M est une combinaison linéaire α = γ1 α1 + ... + γm αm
avec γi ∈ L pour 1 ≤ i ≤ m, et en écrivant les γi dans la base des éléments βi on obtient :
!
à n
n
m X
m
m
X
X
X
X
rij βj αi
rij βj αi =
γi αi =
α=
i=1
i=1
i=1 j=1
j=1
avec rij ∈ K. Si on démontre que les mn éléments βj αi , 1 ≤ i ≤ m, 1 ≤ j ≤ n, sont
linéairement indépendants sur K, alors on achève la démonstration. Supposons que pour
sij ∈ K :
n
m X
X
sij βj αi = 0
i=1 j=1
alors :
à n
m
X
X
i=1
j=1
sij βj
!
αi = 0
et l’indépendance des αi sur L induit :
n
X
j=1
sij βj = 0 pour 1 ≤ i ≤ m
Or les βj sont linéairement indépendants sur K, on conclut que les sij sont nuls.
¥
B-1
ANNEXE B. PREUVES DES THÉORÈMES DU CHAPITRE 4
Preuve Théorème 4.19:
On doit supposer que q ≥ 3. Soit h = pr11 pr22 ...prmm la décomposition en éléments premiers
de l’ordre h = q −1 du groupe F∗q . Pour chaque i, 1 ≤ i ≤ m, le polynôme xh/pi −1 possède
au plus h/pi racines dans Fq . Puisque h/pi < h, il en résulte l’existence d’éléments nonnuls dans Fq qui ne sont pas racines du polynôme précédent. Soit ai un tel élément. Puis
h/p
ri
p
ri
posant bi = ai i , on obtient bi i = 1 et l’ordre de bi divise pri i , de ce fait, il est sous la
forme psi i avec 0 ≤ si ≤ ri . D’autre part :
p
ri −1
bi i
h/pi
= ai
6= 1
donc bi est d’ordre pri i . On a affirmé que b = b1 b2 ...bm est d’ordre h. Supposons, au
contraire, que l’ordre de b est un diviseur propre de h, et ainsi un diviseur d’au moins un
des entiers h/pi , 1 ≤ i ≤ m, disons h/pi . Alors on a :
h/pi h/pi
i
b2 ...bh/p
m
1 = bh/pi = b1
h/p
Maintenant, si 2 ≤ i ≤ m, alors pri i divise h/pi et ce qui donne bi i = 1. Ce résultat
implique que l’ordre de b1 doit diviser h/pi , ce qui est impossible puisque l’ordre de b1 est
pr11 . Donc, F∗q est bien un groupe cyclique avec b comme générateur.
¥
Preuve Théorème 4.20:
(i) Le résultat découle directement du théorème 4.10
j
(ii) Pour c ∈ K nous avons du lemme 4.2 la propriété ∀j ≥ 0 cq = c et le résultat en
découle directement.
(iii) La propriété (i) et (ii) avec le fait que ∀α ∈ F T rF/K (α) ∈ K prouve la linéarité
de la transformation. Il reste à vérifier que l’espace d’arrivée est bien K. Il suffit de
montrer l’existence d’un α avec T rF/K (α) 6= 0. Supposons donc que T rF/K (α) =
m−1
0 ⇔ (α est une racine du polynôme xq
+ ... + xq + x ∈ K[x] dans F ). Mais,
puisque ce polynôme possède au plus q m−1 racines dans F et que F possède q m
éléments, la preuve est achevée.
(iv) Découle de la définition de la fonction trace et du lemme 4.2.
(v) La preuve est semblable à celle de (ii).
¥
Preuve Théorème 4.21:
Le cas de n = 1 est trivial. Pour n ≥ 2, xn − 1 et sa dérivée nxn−1 ne possèdent pas des
racines communes. De ce fait, xn − 1 ne peut pas avoir une racine multiple. Ainsi, E (n)
possède n éléments. Maintenant, soient ξ,η ∈ E (n) , alors (ξη −1 )n = ξ n (η n )−1 = 1, ce qui
implique ξη −1 ∈ E (n) . Donc E (n) est bien un groupe multiplicatif. Posons n = pe11 pe22 ...pet t
la décomposition en éléments premiers de n. On peut montrer par les mêmes arguments
présentés dans la preuve du théorème 4.19 que pour tout
i, 1 ≤ i ≤ t : ∃αi ∈ E (n) qui
ei
n/p
n’est pas une racine de xn/pi − 1, de sorte que βi = αi i , et E (n) est un groupe cyclique
avec β = β1 β2 ...βt comme générateur.
¥
B-2
ANNEXE B. PREUVES DES THÉORÈMES DU CHAPITRE 4
Preuve Théorème 4.22:
On suppose que H est un sous-groupe propre (sous-groupe et sous-ensemble propre) de
G. On choisit a ∈ G et n’appartenant pas à H, et soit H1 le sous-groupe de G constitué
de H et a. Prenons un entier m comme le plus petit entier positif pour qui am ∈ H,
alors tout élément g ∈ H1 peut s’écrire sous une forme unique g = aj h avec 0 ≤ j < m
et h ∈ H. On définie une fonction ψ1 sur H1 par ψ1 (g) = ω j ψ(h), où ω est un nombre
complexe fixé satisfaisant ω m = ψ(am ). Pour vérifier que la fonction ψ1 est bien caractère
de H1 , on pose g1 = ak h1 , 0 ≤ k < m, h1 ∈ H, un autre élément de H1 . Si j + k < m,
alors ψ1 (gg1 ) = ω j+k ψ(hh1 ) = ψ1 (g)ψ1 (g1 ). Si j + k ≥ m, alors gg1 = aj+k−m (am hh1 ), et
ainsi :
ψ(gg1 ) = ω j+k−m ψ(am hh1 ) = ω j+k−m ψ(am )ψ(hh1 ) = ω j+k ψ(hh1 ) = ψ1 (g)ψ1 (g1 )
Il est évident que ψ1 (h) = ψ(h) pour h ∈ H. Si H1 = G, alors la preuve termine. Sinon,
on continue le processus précédent jusqu’à, après un nombre fini d’étapes, obtenir une
extension de ψ à G.
¥
Preuve Théorème 4.25:
Soit A l’annihilateur en question. Alors, il est évident d’après la définition que A est un
sous-groupe de Gˆ. Soit χ ∈ A; alors µ(gH) = χ(g), g ∈ G, est un caractère bien défini du
groupe facteur G/H. Inversement, si µ est un caractère de G/H, alors χ(g) = µ(gH), g ∈
G, définie un caractère de G qui annihilie H. Des éléments distincts de A correspondent
à des caractères distinct de G/H. De ce fait, A est en correspondance bijective avec le
groupe des caractères (G/H)ˆ, ce qui implique leur égalité d’ordre, c’est-à-dire :
|A| = |(G/H)ˆ| = |G/H| = |G|/|H| (d’après le théorème précédent).
¥
Preuve Théorème 4.29:
Soit τ ∈ Fq un caractère additif non-trivial défini par ∀c ∈ Fq : τ (c) = χ(ac). Alors :
X
χ(acn + b) = χ(b)
c∈Fq
X
χ(acn ) = χ(b)
c∈Fq
X
τ (cn )
c∈Fq
Par (4.15), on a ∀c ∈ F∗q
τ (cn ) =
1 X
G(ψ,τ )ψ(cn )
q−1 ψ
alors :
X
c∈Fq
τ (cn ) = τ (0) +
X
τ (cn ) = 1 +
c∈F∗q
X
1 X
ψ n (c)
G(ψ,τ )
q−1 ψ
c∈F∗
q
La dernière somme dans l’expression précédente est égale à q − 1 si ψ n est trivial, sinon
elle est nulle (voir (4.10)). Dans le cas où ψ n est trivial alors l’ordre de ψ divise d.
B-3
ANNEXE B. PREUVES DES THÉORÈMES DU CHAPITRE 4
Puisque l’ordre de λ est d, le caractère ψ s’écrit obligatoirement sous la forme ψ = λ
avec j = 0,1,...,d − 1. Ainsi :
n
τ (c ) = 1 +
d−1
X
j
G(λ ,τ ) =
j=0
d−1
X
j
G(λj ,τ )
j=1
On obtient donc :
X
n
χ(ac + b) = χ(b)
d−1 X
X
G(λj ,τ )
j=1 c∈Fq
c∈Fq
D’autre part :
X
XX
X
X
X j
G(λj ,χa ) =
λj (a−1 d)χ(d) =
λj (a−1 )
λj (d)χ(d) =
λ (a)G(λj ,χ)
c∈Fq
c∈Fq d∈F∗q
c∈Fq
d∈F∗q
c∈Fq
¥
Preuve Théorème 4.32:
(i) Découle directement du théorème 4.2(ii).
(ii) Posons f (x) = x(q+1)/2 +ax, on montre que f (x) n’est pas bijective si et seulement si
η(a2 −1) 6= 1. Si f (c) = f (0) = 0 pour c ∈ F∗q , alors a = −c(q−1)/2 alors η(a2 −1) = 0.
Si f (b) = f (c) 6= 0 pour b,c ∈ F∗q , b 6= c, alors :
bc−1 = (a + c(q−1)/2 )(a + b(q−1)/2 )−1 .
Si on avait η(b) = η(c) alors b(q−1)/2 = c(q−1)/2 et donc b = c, contradiction.
Si on avait η(b) 6= η(c), sans perte de généralité η(b) = −1 η(c) = 1, alors : b(q−1)/2 =
−1, c(q−1)/2 = 1, soit alors :
−1 = η(bc−1 ) = η((a + 1)(a − 1)−1 ) = η((a + 1)(a − 1)) = η(a2 − 1).
Inversement, supposons η(a2 −1) 6= 1, donc soit a2 −1 = 0 soit η(a2 −1) = −1. Dans
le premier cas a = ±1 et alors ∃c ∈ F∗q qui satisfait c(q−1)/2 = −a, d’où f (c) = f (0).
Si η(a2 − 1) = −1, posons b = (a + 1)(a − 1)−1 , donc η(b) = −1, ainsi b(q−1)/2 = −1,
et de ce fait :
f (b) = (a + b(q−1)/2 )b = (a − 1)b = a + 1 = f (1)
avec b 6= 1, dans les deux cas f n’est pas bijective.
¥
B-4
Bibliographie
[BN83]
Itshak Borosh and Harald Niederreiter. Optimal multipliers for pseudorandom number generation by the linear congruential method. BIT, 23:65–74,
1983.
[BT51]
Z. W. Birnbaum and Fred H. Tingey. One-sided confidence contours for
probability distributions functions. The Annals of Mathematical Statistics,
22(4):592–596, December 1951.
[Coc52]
William G. Cochran. The χ2 test of goodness of fit. The Annals of Mathematical Statistics, 23(3):315–345, September 1952.
[Dag88]
J. Dagpunar. Principales of Random Variate Generation. Oxford, Clarendon
press, 1988.
[FI86]
George S. Fishman and Louis R. Moore III. An exhaustive analysis of multiplicative congruential random number generators with modulus 231 −1. SIAM
J. SCI. STAT. COMPUT., 7:24–45, 1986.
[FK]
Randima Fernando and Mark J Kilgard. The CG Tutorial : The Definitive
Guide To Programmable Real-Time Graphics. NVIDIA, Addison-Wesley.
[Gir01]
Pierre-Noël Giraud. Le Commerce des Promesses. Seuil, 2001.
[HUL04] John HULL. Options, futures et autres actifs dérivés. Pearson Education, 5
edition, 2004.
[Jou07]
Benjamin Jourdain. Méthodes de Monte Carlo pour les Processus Financier.
ENPC, 2007.
[Knu77]
Donald E. Knuth. Notes on generalized dedekind sums. Acta Arithmetica,
33:297–325, 1977.
[Knu81]
Donald Erwin Knuth. The Art Of Computer Programming, volume 2.
Addison-Wesley Publishing Company, 2 edition, 1981.
[L’E90]
Pierre L’Ecuyer. Random numbers for simulation. Communications Of ACM,
33, 1990.
[LN97]
Rudolf Lidl and Harald Niederreiter. Enceclopedia Of Mathematics And Its
Applications : Finite Fields, volume 20. Cambridge, 2 edition, 1997.
[LS07]
Pierre L’Ecuyer and Richard Simard. A software library in ainsi c for empirical
testing of random number generators. User’s guide, 2007.
[LSCK00] Pierre L’Ecuyer, Richard Simard, E. Jack Chen, and W. David Kelton. An
object-oriented random number package with many long streams and substreams. December 2000.
[LST]
Bernard Lapeyre, Agnès Sulem, and Denis Talay. Understanding Numerical
Analysis for Financial Models. Cambridge. March 2003 draft version.
i
[Mas97]
[MCPR95]
[MCS00]
[MN98]
[MRPC90]
[MSHN06]
[Nei76]
[Nei85]
[Nie77]
[Nie78]
[Nie92]
[PCMR94]
[SMC03]
Michael Mascagni. Parallel linear congruential generators with prime moduli.
Parallel Computing, 24:923–936, 1997.
Michael Mascagni, Steven A. Cuccado, Daniel V. Pryor, and M. L. Robinson.
A fast, high quality, and reproducible parallel lagged-fibonacci pseudorandom
number generator. Journal Of Computational Physics, 119:211–219, 1995.
Michael Mascagni, David Ceperley, and Ashok Srinivasan. Sprng: A scalable
library for pseudorandom number generation. ACM Transactions on Mathematical Software, 26:436–461, 2000.
Makato Matsumoto and Takuji Nishimura. Mersenne twister: A 623dimensionally equidistributed uniform pseudorandom number generation.
ACM Trans. on Modeling And Computer Simulation, 8(1):3–30, 1998.
Michael Mascagni, M. L. Robinson, Daniel V. Pryor, and Steven A. Cuccado.
Parallel pseudorandom number generation using additive lagged-fibonacci recursions. Supercomputing Research Center, I.D.A., 33, 1990.
Makato Matsumoto, Mutsuo Saito, Hiroshi Haramoto, and Takuji Nishimura.
Pseudorandom number generation : Impossibility and compromise. Journal
Of Universal Computer Science, 12(6):672–690, 2006.
Harald Neiderreiter. On the destribution of pseudo-random numbers generated by the linear congruential method. iii. Mathematics of Computation,
30:571–597, 1976.
Harald Neiderreiter. The serial test for pseudo-random numbers generated by
the linear congruential method. Numerische Mathematik, 45:51–68, 1985.
Harald Niederreiter. Pseudo-random numbers and optimal coefficients. Adv.
Math., 26:99–181, 1977.
Harald Niederreiter. Quasi-monte carlo methods and pseudo-random numbers. Bulletin of The American Mathematical Society, 84:957–1041, 1978.
Harald Niederreiter. Random Number Generation And Quasi-Monte Carlo
Methods, volume 63. SIAM, 1992.
Daniel V. Pryor, Steven A. Cuccado, Michael Mascagni, and M. L. Robinson.
Implementation and usage of portable and reproducible parallel pseudorandom number generation. Supercomputing Research Center, I.D.A., 1994.
Ashok Srinivasan, Michael Mascagni, and David Ceperley. Testing parallel
random number generators. Parallel Computing, 29:69–94, 2003.
ii
Téléchargement