La complexité d'un nombre entier est le nombre minimal de 1 nécessaires pour écrire ce nombre en n'utilisant que :

Quelques exemples

modifier
  • Il est évident que 1+1=2 est l'écriture la plus simple, donc la complexité de 2 est 2.
  • 4 = 1+1+1+1, mais aussi 4=(1+1)×(1+1). Cependant, aucune écriture de 4 n'est possible avec moins de quatre 1.
  • 6 = 3×2 = (1+1+1)×(1+1) donc la complexité de 6 est 3+2=5.

Propriétés

modifier

On déduit assez simplement de la définition un premier résultat, en notant C(n) la complexité d'un entier n.

Propriété — Si a, b et c sont des entiers naturels tels que a = b×c, alors C(a)C(b)+C(c)

Cette propriété peut être combinée avec la décomposition en produit de facteurs premiers : la complexité d'un nombre est inférieure ou égale à la somme des complexités de ses facteurs premiers. Par exemple, 9 = 32 donc C(9) ≤ C(3)+C(3), donc C(9)≤6. Seule une analyse plus poussée permet de conclure que C(9) = 6.

Cependant, ce dernier résultat n'est pas optimal : la complexité de 23 est 11, celle de 2 est 2. Or 46 = (1+1+1)×(1+1+1)×((1+1)×(1+1)+1)+1 : la complexité de 46 est 12.

Un algorithme

modifier

En utilisant les propriétés ci-dessus et la remarque que chaque nombre premier est égal au nombre précédent+1, on peut s'approcher de la complexité en suivant l'algorithme récursif ci-dessous :

  • si n est premier, on applique l'algorithme à n-1 (la complexité de n étant inférieure ou égale à celle de n, moins 1);
  • si n n'est pas premier, on l'applique à chacun de ses facteurs premiers.

Jusqu'à obtenir des nombres dont on connaît la complexité. Ensuite, on additionne les résultats trouvés.

Cet algorithme donne un majorant de la complexité. Appliqué à 235, il donne 19 alors que la complexité de 235 est 17.

Algorithme parfait ?

modifier

Il est bien sûr possible, en théorie, de trouver un algorithme pour calculer la complexité d'un nombre n : il suffit de tester toutes les combinaisons possibles de n (ou moins) signes 1 avec + , × et parenthèses. Mais la complexité (de l'algorithme, cette fois) est exponentielle. On peut réduire la complexité de l'algorithme en décomposant n en facteurs premiers, mais cela revient à résoudre le problème de la décomposition en produit de facteurs premiers d'un nombre, qui est tout aussi complexe. Et cela ne résout pas le problème du calcul de la complexité d'un nombre premier.

Bibliographie

modifier

📚 Artikel Terkait di Wikipedia

Optimisation linéaire en nombres entiers

(ou programmation linéaire en nombres entiers (PLNE) ou integer programming (IP) ou Integer Linear Programming (ILP)) est un domaine des mathématiques

21 problèmes NP-complets de Karp

hamiltonien UNDIRECTED HAMILTONIAN CIRCUIT : voir graphe hamiltonien 0-1 INTEGER PROGRAMMING : voir optimisation linéaire en nombres entiers 3-SAT : voir

Yves Frégnac

Computationelles (UNIC) (plus tard appelée Unit of Neuroscience Information and Complexity) au sein du CNRS. L'UNIC a rapidement été reconnue pour son approche interdisciplinaire

Gestionnaire de dépôt d'objets binaires

logiciel Licence de logiciel Intégration continue (en) Johnny Biggert, « SUSTAINABLE SOFTWARE DEVELOPMENT, PART 2: MANAGING COMPLEXITY », sur Developers Dilemma

Système intelligent hybride

 « arXiv:2105.03354 [cs] », 2021 Linda S. Gottfredson, « Why g matters: The complexity of everyday life », Intelligence, vol. 24, no 1,‎ janvier 1997, p. 79–132

Biais d'automatisation

(en) Lyell, David et Coiera, Enrico, « Automation bias and verification complexity: a systematic review », Journal of the American Medical Informatics Association

Prix Fulkerson

the discrepancy of integer sequences is nearly sharp », Combinatorica, vol. 1, no 4,‎ 1981, p. 319–325. Hendrik W. Lenstra, « Integer programming with a

NP-difficile

Karp, « Reducibility Among Combinatorial Problems », dans 50 Years of Integer Programming 1958-2008, Springer Berlin Heidelberg, 2010, 219–241 p.