Université de Nice Sophia Antipolis Préparation à l’ Agrégation de Mathématiques 2010-2011 Résolution de systèmes linéaires en entiers naturels On appelle poids d’un vecteur de Nq la somme de ses composantes. Deux remarques : • À chaque étape on construit une liste L0 de nouveaux vecteurs à tester tous de même poids et de poids un de plus que ceux des vecteurs en cours de test de L. • Dans le test il n’existe pas ν ∈ M ∪ [L\ {x}] tel que ν = x ou x >> ν l’ensemble [L\ {x}] est sans intérêt puisque x ∈ / [L\ {x}] car L est sans répétition, c’est un ensemble, et x ne peut pas dominer strictement un élément de [L\ {x}], ils sont tous de même poids. Sa suppression a l’avantage de simplifier la programmation et la compréhension de l’algorithme A. 1 1.1 L’algorithme A sans la contrainte géomètrique (C) Correction et Complétude par récurrence sur le poids Il est clair qu’au poids 1 l’algorithme est correct et complet : on examine tout le monde et si l’on trouve une solution elle est minimale. Supposons que ceci soit vrai au poids p : M contient toutes et seulement les solutions minimales de poids ≤ p. À l’étape suivante, en poids p + 1, si on ajoute une solution à M elle ne domine aucune solution minimale de poids ≤ p. Elle est donc minimale (correction). D’autre part si x est une solution de poids p + 1 non examinée par l’algorithme alors x est un successeur d’une solution minimale x0 de poids ≤ p, donc x n’est pas une solution minimale (complétude). 1.2 Terminaison ? Il est clair que cet algorithme sans contrainte ne termine pas sur un système qui n’a pas de solution minimale, par exemple (S3 ) ou tout système ayant une forme linéaire toujours > 0 ou toujours < 0 sur Nq \ {0}. On est lancé dans une quête désespérée et sans limite dans tout Nq \ {0}. La contrainte géomètrique est essentielle à la terminaison. 2 L’algorithme A avec la contrainte géomètrique (C) En ce qui concerne la correction le raisonnement précédent est toujours valable. Il faut examiner la complétude et la terminaison. La complétude : à partir d’un x qui n’est pas solution on explore moins de directions que précédemment, c’est l’intérêt de la contrainte. Il faut s’assurer qu’on ne manquera pas une solution minimale. Si a(x) < 0 etPx + x0 est une solution minimale alors a(x + x0 ) = a(x) + a(x0 ) = 0 donc a(x0 ) > 0. P q q Posons x0 = j=1 nj ej , on a j=1 nj a(ej ) > 0 donc il existe au moins un j tel que nj 6= 0 et a(ej ) > 0. En partant de x dans cette direction ej on peut arriver à x + x0 . La terminaison : à vous de jouer (euh, je sèche lamentablement) , ça n’a pas l’air facile : voir la remarque du paragraphe 8. Deux idées dans le cas d’une seule équation : • s’il n’y a pas de solution non nulle à l’équation, la famille génératrice minimale est vide, c’était un très mauvais cas pour la terminaison de l’algorithme sans la contrainte (C). On voit facilement qu’on a tous les a(ej ) de même signe donc, dans l’algorithme avec la contrainte (C), dès la deuxième étape on a L = ∅ et c’est terminé. • La stratégie de construction de L nous fait construire les vecteurs de L au plus près de l’hyperplan a1 x1 + · · · + aj xj + · · · + aq xq = 0. Au bout d’un certain nombre d’itérations on tombe sur une solution, si elle est minimale elle va dans M sinon on ne s’en occupe plus, de toute façon ce vecteur est éliminé de L. Faites un dessin avec q = 2.