LinBox : Alge bre line aire exacte sur les corps finis et applications

Documents pareils
Polynômes à plusieurs variables. Résultant

Résolution de systèmes linéaires par des méthodes directes

Introduction à l étude des Corps Finis

Calculer avec Sage. Revision : 417 du 1 er juillet 2010

Fonction inverse Fonctions homographiques

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Quelques tests de primalité

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Calculabilité Cours 3 : Problèmes non-calculables.

Limitations of the Playstation 3 for High Performance Cluster Computing

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA

La plate-forme DIMA. Master 1 IMA COLI23 - Université de La Rochelle

Nombres premiers. Comment reconnaître un nombre premier? Mais...

Rencontre sur la thématique du Calcul Haute Performance - 13 juin Better Match, Faster Innovation

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Partie 1 - Séquence 3 Original d une fonction

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Table des matières. I Mise à niveau 11. Préface

Optimisation, traitement d image et éclipse de Soleil

Exemple d implantation de fonction mathématique sur ST240

Système binaire. Algèbre booléenne

ÉdIteur officiel et fournisseur de ServIceS professionnels du LogIcIeL open Source ScILab

Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin.

Raisonnement par récurrence Suites numériques

I Stabilité, Commandabilité et Observabilité Introduction Un exemple emprunté à la robotique Le plan Problème...

Cours 7 : Utilisation de modules sous python

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé

Méthodes de quadrature. Polytech Paris-UPMC. - p. 1/48

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

Optimisation Discrète

Enseignement secondaire technique

Calcul de développements de Puiseux et application au calcul du groupe de monodromie d'une courbe algébrique plane

DOCM Solutions officielles = n 2 10.

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Qualité du logiciel: Méthodes de test

as Architecture des Systèmes d Information

Continuité en un point

Plan du cours. Historique du langage Nouveautés de Java 7

C f tracée ci- contre est la représentation graphique d une

FICHE UE Licence/Master Sciences, Technologies, Santé Mention Informatique

Plan Pédagogique du cours

Simulation de variables aléatoires

FONDEMENTS DES MATHÉMATIQUES

Rappels sur les suites - Algorithme

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours 02 : Problème général de la programmation linéaire

Chapitre 2. Matrices

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

Cours d Analyse. Fonctions de plusieurs variables

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Chapitre VI- La validation de la composition.

Présentation du PL/SQL

Correction de l examen de la première session

ALGORITHMIQUE ET PROGRAMMATION En C

Saisie des chauffe-eau thermodynamiques à compression électrique

Pour l épreuve d algèbre, les calculatrices sont interdites.

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Programmation linéaire

Journées Nationales de Calcul Formel

Équations d amorçage d intégrales premières formelles

Continuité et dérivabilité d une fonction

Solution logicielle pour le pilotage et l ERM. Journées d études IARD 26 mars mars 2010

Résolution d équations non linéaires

Réalisabilité et extraction de programmes

Architecture matérielle des systèmes informatiques

I - PUISSANCE D UN POINT PAR RAPPORT A UN CERCLE CERCLES ORTHOGONAUX POLES ET POLAIRES

Représentation des Nombres

Enoncé et corrigé du brevet des collèges dans les académies d Aix- Marseille, Montpellier, Nice Corse et Toulouse en Énoncé.

Cours d analyse numérique SMI-S4

4D v11 SQL Release 5 (11.5) ADDENDUM

La Licence Mathématiques et Economie-MASS Université de Sciences Sociales de Toulouse 1

Entraînement au concours ACM-ICPC

Resolution limit in community detection

Formes quadratiques. 1 Formes quadratiques et formes polaires associées. Imen BHOURI. 1.1 Définitions

Héritage presque multiple en Java (1/2)

Algorithmes pour la planification de mouvements en robotique non-holonome

Journées Télécom-UPS «Le numérique pour tous» David A. Madore. 29 mai 2015

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Présentation du langage et premières fonctions

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme?

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme?

EXERCICE 4 (7 points ) (Commun à tous les candidats)

Problèmes arithmétiques issus de la cryptographie reposant sur les réseaux

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

TP1 : Initiation à Java et Eclipse

Chapitre 3. Quelques fonctions usuelles. 1 Fonctions logarithme et exponentielle. 1.1 La fonction logarithme

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Echantillonnage Non uniforme

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

Exercices sur les équations du premier degré

Projet de traitement d'image - SI 381 reconstitution 3D d'intérieur à partir de photographies

Chapitre 10 Arithmétique réelle

Notes du cours MTH1101 Calcul I Partie II: fonctions de plusieurs variables

Disponibilité et fiabilité des services et des systèmes

Transcription:

LinBox : Alge bre line aire exacte sur les corps finis et applications Pascal Giorgi Laboratoire LIP - E cole Normale Supe rieure de Lyon LIP - ENS Lyon - CNRS ECOLE NORMALE SUPERIEURE DE LYON - INRIA - UCBL

Projet LinBox Projet international USA-Canada-France, fincancement NSF/CNRS 31 chercheurs = algébre linéaire exacte Site web: www.linalg.org Bibliothèque générique C++, licence GPL, (80000 lignes de code) Principaux développements: - algorithmes (rang, systémes linéaire,...) - matrices (boîtes noires, conteneurs) - domaines de calcul (corps finis, entiers, rationnels) - généricité (plug&play) P. Giorgi 2

Plan de l exposé Strucure et généricité de LinBox corps finis, Boîte noire, Matrice Algorithmes sur un corps fini méthode d élimination, méthode itérative (Krylov/Lanczoz) Extension des problèmes sur Z Méthodes d approximation et interpolation Systèmes linéaires diophantiens P. Giorgi 3

Structure et généricité de LinBox P. Giorgi 4

Structure de LinBox Trois niveaux d implantation (permettant la réutilisation et la reconfiguration) Blackbox Algorithmes Vecteurs Domaine de Calcul Matrices Matrices, Blackbox, Domaines de calcul respectent des interfaces. Interface= classe C++ virtuelle, template archetype: - définit l interface commune aux objets. - fournit une instance de code compilé. - contrôle l explosion de code. - utilisation optionnelle. P. Giorgi 5

Structure des corps finis (domaine des coefficients) Encapsulation des types : eléments, générateur aléatoire d éléments. Eléments: aucune information sur le corps d appartenance. Corps: méthodes affectation, égalité, arithmétique, IO pour les éléments: x = y : F.assign(x,y) x == y : F.areEqual(x,y) x = y + z : F.add(x,y,z) cout<< x : F.write(cout,x) Implantation : directe, plug-ins (au travers de wrappers). P. Giorgi 6

Interfaces des Corps Finis Timings for different LinBox field levels (arith. op) Library Z/pZ loop Directly Wrapper NTL::ZZ p 1978146594666 100.000 0.24 s 0.24 s // // 1.000.000 2.45 s 2.45 s NTL::zz p 553 300.000 0.16 s 0.17 s Interface: objet à part entière validations des corps finis évite la réécriture (template) Wrappers Bibliothèques Externes objet compilable Interface des corps finis Respect Corps finis Instanciation Directement LinBox P. Giorgi 7

Wrappers et arithmétiques NTL (www.shoup.net/ntl) entiers simple-multi précision, polynômes & arithmétique modulaire multiplication flottante (a b mod p = a b a b p p) Givaro (www-apache.imag.fr/software/givaro/) entiers simple precision (16,32,64 bits) arithmétique modulaire, tabulée, générateur, Montgomery LiDIA (www.informatik.tu-darmstadt.de/ti/lidia/) polynômes, entiers simple-multi précision arithmétique modulaire, générateur LinBox (www.linalg.org) classe générique (+,-,*,/) & arithmétique modulaire spécialisation (entiers 16,32,64 bits, flottants double précision) P. Giorgi 8

Structure des matrices boîtes noires (Blackbox) y m F Black Box Ay F n F n xm A Modèle des Blackbox paramétré par une classe de vecteurs (domaine d application). Domaine de calcul passé comme paramètre ou specifié comme attribut. Seule l application à un vecteur est autorisée : x = Ay : A.apply(x,y) x = A T y : A.applyTranspose(x,y) Récupération des dimensions de la matrice: A.rowdim() A.coldim() P. Giorgi 9

Interfaces des BlackBox Interface: purement virtuelle Paramétrée par un type de vecteur (compatible STL) Vecteurs: définis sur un type d élément LinBox fournit 3 types de vecteurs : - Dense vector - Sparse sequence vector - Sparse map vector Wrappers Respect Type Corps Bibliothèques Externes objet virtuel Interface des Blackbox Type Vecteurs Blackbox Héritage Type Vecteurs Directement LinBox P. Giorgi 10

Opérations arithmétiques sur les matrices Opération hybride (exacte-numérique): Approche FFLAS package [Dumas-Gautier-Pernet 2002] conversions éléments flottants opération numérique (BLAS) conversions flottants éléments Interêt: Minimise le nombre de réductions modulaires Avantage des routines numériques BLAS (bloc, optimisation de cache) 67.58s pour une multiplication d ordre 5000 sur GF(101) LinBox: domaine générique au travers d une interface matrice BLAS P. Giorgi 11

Algorithmes sur les corps finis P. Giorgi 12

Algèbre linéaire sur un corps Depuis 1969, multiplication matrices d ordre n en moins que O(n 3 ) [Strassen 1969]: O(n 2.81 )... Meilleurs algorithmes = multiplication matrices (complexité O(n ω )) [Strassen 1969]: inversion, systèmes linéaires, determinant [Bunch-Hopcroft 1974]: généralisation matrices non génériques [Ibarra-Moran-Hui 1982]: cas singulier: rang, noyaux Cas creux [Wiedemann 1986], systéme linéaire en O(n 2 ), probabiliste P. Giorgi 13

Méthode à base d élimination Elimination de Gauss simplification de la matrice Gauss Décomposition LUP Algorithme de décomposition LSP [Ibarra-Moran-Hui 1982] { multiplication matrices Algorithme par bloc en O(n ω ) = résolution systèmes triangulaires - pivot = matrice triangulaire - elimination = multiplication et addition matrices P. Giorgi 14

Implantation via les bibliothèques numériques BLAS Multiplication matrice: FFLAS package Systèmes linéaires triangulaires: algorithme bloc récursif Résolution hybride (exacte-numérique): recursif solution représentable exactement sur les flottants résolution numérique via BLAS et conversion FFPACK package [Dumas-Giorgi-Pernet 2004] implantation efficace (en-place) LSP/LQUP Intégration à LinBox (interface avec Maple) P. Giorgi 15

Décomposition LQUP sur GF(101) Performance FFPACK package n 400 700 1000 2000 3000 5000 LQUP 0.05s 0.18s 0.46s 2.80s 7.79s 32.9s Fgemm 0.04s 0.23s 0.62s 4.28s 14.72s 67.58s Ratio 1.25 0.78 0.74 0.65 0.53 0.48 Complexité arithmétique pour ω = 3: LQUP = 2/3 * Multiplication matrices Inversion sur GF(101) n 400 700 1000 2000 3000 5000 Inv 0.18s 0.70s 1.79s 10.84s 32.33s 139.5s Fgemm 0.04s 0.23s 0.62s 4.28s 14.72s 67.58s Ratio 4.50 3.04 2.89 2.53 2.20 2.07 Complexité arithmétique pour ω = 3: Inverse = 4/3 * Multiplication matrices P. Giorgi 16

Méthode itérative (Krylov) Conservation de la structure des matrice (ex: creuse) Algorithmes basés sur le produit matrice-vecteur ex: [Wiedemann 1986] A 1 b =... i=0 c i.a i b, c i K P. Giorgi 17

Systèmes linéaires creux Algorithme proposé par [Wiedeman 1986] Soient A K n n, b K n et Π A,b (λ) polynome minimal {A i b} i=0. Π A,b (A)b = c 0.b + c 1.Ab + +.. + c d.a d b = 0, c 0 0 K b = A. 1 c 0 (c 1.b + c 2.Ab +... + c d.a d 1 b) = A.y Lemme: [Wiedemann 1986] Soit u K n aléatoire: (forte probabilité) Polynôme minimal {A i b} i=0 = Polynôme minimal {uai b} i=0 Calcul générateur: algorithme théorie des codes [Berlekamp-Massey 1969] Algorithme par blocs [Coppersmith 1994,Giorgi-Jeannerod-Villard 2003] parallélisme, petit corps P. Giorgi 18

Matrices à coefficients sur Z P. Giorgi 19

Problématique différente: taille des données la complexité Transposition des méthodes (corps finis entiers): pas satisfaisante Approche classique : théorème des restes chinois (O(n 1+ɛ ) coût algébrique) Cas des systémes linéaires: restes chinois : O(n ω+1+ɛ ) approximation p-adique : O(n 3+ɛ ) high order lifting [Storjohan 2002]:O(n ω+ɛ ) P. Giorgi 20

Systèmes linéaires sur Z Algorithme p-adique[moenck et Carter 1979, Dixon 1982]: soient A Z n n, b Z n trouver x Q n / Ax = b idée: calculer Ay b mod p k+1, p premier y = x [0] + x [1] p + x [2] p 2 +... + x [k] p k k choisi assez grand (Hadamard, Cramers: k n log n) reconstruction de x (fractions continus y/p k+1 ) P. Giorgi 21

calcul des chiffres p-adiques : systèmes linéaire sur Z p j=0: A.x [0] b mod p j=1: A.(x [0] + px [1] ) b mod p 2, b [0] = b A.x [0] p A.x [1] b [0] mod p j=2: A.(x [0] + px [1] + p 2 x [2] ) b mod p 3, b [1] = b [0] A.x [1] p A.x [2] b [1] mod p j=i+1: A.(x [0] + x [1] p +... + x [i+1] p i+1 ) b mod p i+2, b [i] = b[i 1] A.x [i] p A.x [i+1] b [i] mod p P. Giorgi 22

implantation dans LinBox définition d interface pour l approximation (conteneur/itérateur) Résolution des systèmes sur Z p via : Wiedemann Inversion + produit matrice-vecteur optimisations : utilisation maximale: FFLAS et FFPACK construction approximation: pas de bébé / pas de géant reconstruction rationnelle: seulement les facteurs inconnus Comparaison avec la bibliothèque NTL P. Giorgi 23

Performances: méthode d elimination Systèmes avec coefficients 32bits n 50 150 350 500 650 1000 LinBox 0.08s 0.96s 7.47s 18.57s 36.65s 115.43s NTL 0.06s 1.92s 24.07s 72.49s 159.88s 688.57s Systèmes avec coefficients 128bits n 50 150 350 500 650 1000 LinBox 1.67s 18.18s 126.78s 311.56s 602.5s 1870.85s NTL 0.39s 11.69s 141.86s 448.3s 922.59s 4124.55s P. Giorgi 24

Systèmes linéaires diophantiens idée : [Giesbrecht 1997] En combinant 2 solutions rationnelles y 1, y 2 de dénominateur d 1, d 2 on obtient une nouvelle solution rationnelle y 3 de dénominateur d 3 = gcd(d 1, d 2 ) exemple: A.y 1 = A.( 1 2.x 1) = b, A.y 2 = A.( 1 3.x 2) = b, x 1 Z n x 2 Z n gcd(2, 3) = 1 = 2 2 1 3 A.(2 x 1 x 2 ) = 4b 3b = b P. Giorgi 25

Lemme: soient y 1, y 2 Q n 2 solutions de Ax = b soient d, s 1, s 2 tels que: d = gcd(d(y 1 ), d(y 2 )) = s 1 d(y 1 ) + s 2 d(y 2 ) alors: y 3 = s 1d(y 1 )y 1 +s 2 d(y 2 )y 2 d est une solution de Ax = b Algorithme (solutions diophantiennes): combiner plusieurs solutions rationnelles dénominateur=1 Problème: pas de solutions diophantiennes certificat d inconsistence sur Z [Giesbrecht-Lobo-Saunders 1998] u Z n, ua 0 mod d, ub 0 mod d P. Giorgi 26

Algorithme: (mise en place) Solutions rationnelles aléatoires ([Kaltofen-Saunders 1991]) perturbation du système Certifier l inconsistence [Giesbrecht-Lobo-Saunders 1998] vecteur aléatoire du noyau Certifier la minimalité du dénominateur [Mulder-Storjohann 2004] z Q 1 n /za Z, d(zb) est un facteur du dénominateur Convergence (extension anneau, préconditionnement) O(1) solutions rationnelles Complexité: O (n ω ) P. Giorgi 27

LinBox: conclusion Boîtes à outil: Corps finis, Blackbox, Matrices, Vecteurs Plug-ins (BLAS, Maple, NTL) Méthodes itératives: efficace pour les matrices creuses Implantations efficaces (corps finis, entiers) Combinaison solutions rationnelles solution diophantienne P. Giorgi 28

Perspectives Développer: outils pour les entiers (interface d anneaux, CRT) Implanter: systèmes linéaires diophantiens Généraliser: interaction entre logiciels de calcul formel (ROXANE,Maple) Questions: en pratique: approche classique (p-adic, CRT) sc vs high order lifting? Peut-on résoudre un système linéaire singulier directement? P. Giorgi 29