• Aucun résultat trouvé

Pour illustrer les notions du cours nous allons considérer un problème réel, volon-tairement complexe.

Tchisla (du russe «Числа» qui veut dire « nombre ») est une application (voir la figure 1.1) que l’on peut trouver sur smartphone et tablette. La première version est sortie en . Le but du jeu est de trouver une expression arithmétique égale à un entier n >0 mais utilisant uniquement un chiffre c ∈ {1, . . . ,9} donné. L’expression ne peut comporter que des symboles parmi les dix suivants :

c + - * / ^

! ( )

Figure1.1 – Capture d’écran de l’applicationTchisla.

L’objectif est de trouver l’expression comportant le moins de fois le chiffre c, et on notefc(n) cette valeur. Par exemple, 10 =4 + 4 +

4ce qui fait quef4(10)63. En fait on ne peut pas faire mieux, si bien quef4(10) = 3. On en déduit alors par exemple que 11 = 10 + 1 =4 + 4 +

4 + 4/4et donc f4(11)65. Cependant, 11 = 44/4 ce qui est optimal2, et doncf4(11) = 3. La figure1.1montre que

2016 = (1 + 1)11− q

(1 + 1)111

et on ne peut pas faire mieux si bien quef1(2016) = 9, mais aussi elle montre les pre-mières valeurs defc(n) pourn= 1...10 (lignes) etc= 1...9 (colonnes).

Formule close ? Ce qui nous intéresse c’est donc de calculer fc(n) pour toutc etn, et bien sûr de trouver une expression correspondante avec le nombre optimal de chiffresc.

Il semble que les premières valeurs denne laissent pas apparaître de formule évidente.

La première colonne de la figure1.1de droite donne les dix premières valeurs pourc= 1 qui sont :

2. On peut trouver sur Internet les solutions optimales pour tous les entiers jusqu’à quelques milliers.

Dans un article scientifique [Tan15] donne les solutions optimales jusqu’à 1 000 mais sans les symboles

et!. On y apprend par exemple que 37 =ccc/(c+c+c)quel que soit le chiffrec.

1.1. TCHISLA 3

n 1 2 3 4 5 6 7 8 9 10

f1(n) 1 2 3 4 4 3 4 5 4 3

Et la table ci-après donne les dix premières valeurs denproduisant des valeurs crois-santes pourf1(n). Encore une fois elle ne laisse apparaître aucun paterne particulier.

f1(n) 1 2 3 4 5 6 7 8 9 10

n 1 2 3 4 8 15 28 41 95 173

En fait, comme le montre le graphique de la figure 1.2, les 200 premières valeurs def1(n) sont visiblement difficiles à prévoir. Même si les valeurs ont l’air « globalement croissantes » avecn, on remarque qu’à cause des expressions comme

11 11! 11!! 11!!! 11!!!! ...

il y a quand même une infinité de valeurs denpour lesquellesf1(n) = 2.

1 2 3 4 5 6 7 8 9 10

0 20 40 60 80 100 120 140 160 180 200

Figure1.2 – Les 200 premières valeurs pourf1(n).

La fameuse encyclopédie en ligne3 des suites d’entiers ne répertorie pas cette suite-là. Certaine valeur semble plus difficile à trouver que d’autre. Pour s’en convaincre, essayez de déterminer par exemple f4(64) ? On a facilement 64 = 4*4*4= 4^4/4, mais pouvez-vous trouver une expression avec seulement deux4? Ou encore une expression correspondant àf6(27) = 4 ?

Pour d’autres problèmes, parfois (et même très souvent) il n’y a pas non plus de formule directe, ou plus précisément deformule close.

Il s’agit d’une formule arithmétique comportant un nombre fini d’opérations (arithmétiques) liée aux paramètres (ici c et n). Une somme ou un produit infini ne constitue pas une formule close.

Par exemple, les solutions des équations polynomiales de degré 5 ou plus ne pos-sèdent pas de formules dans le cas général. C’est un résultat issu de la théorie de Galois.

3. https://oeis.org/

4 CHAPITRE 1. INTRODUCTION Pour les calculer, on a recours à d’autres techniques, comme l’approximation et le cal-cul numérique. Dans pas mal de cas on peut obtenir un nombre de chiffres significatifs aussi grand que l’on veut. Mais le temps de l’algorithme de résolution s’allonge avec le nombre de chiffres souhaités, c’est-à-dire avec la précision. Ce n’est pas le cas lorsqu’on dispose d’une formule directe.

Parenthèse. La définition de formule close n’est pas assez précise à ce qu’on entend par

« formule » dans le cas des racines d’un polynome. Dans ce dernier cas il s’agit d’exprimer les racines par une combinaison finie des coefficients, de la constant1et des quatre opérations de base+,−,×, /et de l’extraction de racinen-ème, soitn

pourn∈N. On parle de racines exprimables par radicaux et d’équations quintique.

Un résultat plus précis énonce que tout polynôme de degré premierp>5, à coefficients rationels et ayant au moins deux racines non réelles, n’a pas de racine exprimable par des radicaux. Donc les racines dex5−6x+ 3 ne peuvent être exprimées à l’aide de radicaux car il n’a pas trois racines réelles (et donc les deux autres ne le sont pas). Graphiquement (cf. figure1.3), on observe clairement que la courbe ne coupe que trois fois l’axey= 0, en x≈ −1.67, +0.49,+1.39. Notons quex5−6x+ 5, qui a pour racine évidente 1, a encore

Figure1.3 – Le polynômex5−6x+ 3n’a que trois racines réelles.

seulement trois racines réelles, enx≈ −1.72,+1,+1.08. On en déduit que(x5−6x+5)/(x−1) est un polynôme de degré4avec des coefficients irrationels.

Bien sûr, pour certaines équations polynomiales de degré>5 on peut exprimer les solutions de manière exacte comme pour (x+ 1)3·(x2x−2) = 0 ou x6 = 2. Dans le premier cas, il suffit de trouver les racines de (x+ 1)3 et de (x2x−2) ce qui est facile.

Dans le deuxième, il y a 21/6 comme solution mais pas seulement4.

Un algorithme ? S’il n’y a pas de formule close pour le calcul de fc(n), on peut alors rechercher unalgorithmequi peut utiliser des boucles de répétitions, des récurrences et, par exemple, calculer des sommes ou produits arbitrairement grands.

4. Dans C, elles sont en fait toutes de la forme 21/6·(cos(2kπ/6) +isin(2kπ/6)) où k N. On parle de racines de l’unité et elles peuvent être représentées par six points du cercle de rayon 21/6 centré à l’origine et régulièrement espacés. On observe alors que deux des six racines tombent sur la droite réelle : 21/6(k= 0) et21/6(pourk= 3).

1.1. TCHISLA 5 Un algorithme est un procédé automatique et systématique de calcul donnant un résultat, c’est-à-dire une sortie, à chaque entrée d’un problème donné.

Ce n’est donc pas une recette de cuisine, contrairement à ce qu’on entend dire souvent.

Car, si la sortie est clairement le plat ou le gâteau, quelles sont les entrées d’une recette ? Notons qu’une formule close n’est qu’un algorithme (particulièrement simple) parmi d’autres.

Parenthèse.On pourrait penser que pour une recette, le nombre de personnesnest l’entrée.

Cependant, dans toutes les recettes que j’ai lues, je n’ai jamais vu ce «n». La recette est donnée pour un nombre de personnes qui est une petite constante, typiquement4,6ou8. Le passage à l’échelle en extrapolant ànpersonnes, pourngrand, marche rarement en pratique car les ingrédients ne doivent pas tous être en proportion. Certes on pourrait dire qu’une recette pournpersonnes consiste à appliquer séquentiellementdn/6efois la recette pour6.

Mais cette technique qui effectivement manipule unnarbitraire, et que l’on peut toujours appliquer, ne dépend en rien de la recette. Quant aux ingrédients, ils font partie de la recette et ne forment pas l’entrée. Lorsque la recette dit « pétrir la pâte » ou « émincer les oignions », les ingrédients impliqués dans ces opérations sont très loin d’être des entréesx, yarbitraires.

Au mieuxx∈ {pâte}ouy∈ {oignions, poireaux, blancs de poulet}. On pourrait dire qu’une recette est un algorithme très très particulier où les entrées sont vides. L’inconvénient de voir un algorithme comme une recette est que beaucoup de notions liées aux algorithmes, comme la complexité, ne pourront pas être transposées.

Mais qu’entendons nous parproblème?

C’est la description des d’instances5et des sorties attendues, c’est-à-dire la relation entre entrées et sorties.

Cette description est partiellement6capturée par le prototype d’une fonctionCcomme int f(int c,int n)

Il est important de remarquer qu’un programme peut très bien boucler, c’est-à-dire ne jamais terminer, sur certaines entrées. Cependant un algorithme, d’après la défi-nition qu’on en a donnée, doit impérativement finir par donner un résultat à chaque instance du problème. Dit autrement, un programme qui bouclerait sur certaines ins-tances d’un problème n’est certainement pas un algorithme pour ce problème. Les pro-grammes peuvent boucler, pas les algorithmes !

Le problème présenté ici pourrait être formalisé ainsi, oùΣ={c,+,-,*,/,^,√

,!(,)}est l’alphabet des 10 symboles évoqués plus haut :

5. On réserve le termeinstancespour un problème. Pour un algorithme on parle plutôt d’entréeset de paramètrespour un programme. Mais il n’est pas faux d’utiliserentréesdans les trois situations.

6. C’est partiel car les paramètrescetnne sont pas desintquelconques. Il s’agit respectivement d’un chiffre non nul et d’un entier strictement positif. Ces types spécifiques n’existent pas enC, même sichar etunsigneds’en rapprochent.

6 CHAPITRE 1. INTRODUCTION Tchisla

Instance: Un entiern >0 et un chiffrec∈ {1, . . . ,9}.

Question: Trouver une expression arithmétique de valeur n composée des sym-boles deΣcomportant le moins de fois le chiffresc.

Malheureusement, trouver un algorithme pour le problème Tchisla, et donc pour le calcul defc(n), n’est pas si évident que cela. Et parfois la situation est plus grave que prévue. Pour certains problèmes, il n’y a ni formule ni algorithme !

On parle de problèmeindécidable— il serait plus juste de direincalculable— lors-qu’il n’y a pas d’algorithme permettant de le résoudre.