• Aucun résultat trouvé

II. Représentations de poids minimal

N/A
N/A
Protected

Academic year: 2021

Partager "II. Représentations de poids minimal"

Copied!
4
0
0

Texte intégral

(1)

c Éditions H&K Publié dans lesAnnales des Concours 1/16

Centrale Informatique MP 2002 — Corrigé

Ce corrigé est proposé par Vincent Puyhaubert (Professeur en CPGE) ; il a été relu par Samuel Mimram (ENS Lyon) et Jean-Baptiste Rouquier (ENS Lyon).

Ce sujet traite d’un problème de formulation très simple qui consiste à déter- miner comment rendre la monnaie en utilisant le plus petit nombre de pièces. Les valeurs possibles des pièces sont représentées par une liste ordonnéecappelée système.

On définit une représentation d’un entierxdans un système comme un ensemble de pièces dont la somme vautx. Le problème se compose de quatre parties :

• La première partie ne comporte qu’une question. Il s’agit d’écrire un programme qui teste si une liste représente bien un système.

• La deuxième partie étudie la fonction qui, pour un système c et un entierx, donne le nombre de pièces minimum que doit comporter une représentation de xdansc. On établit une formule de récurrence pour cette fonction, ce qui permet d’implémenter un algorithme calculant ses valeurs.

• La troisième partie introduit un algorithme glouton qui, pour un entier x et un système c, donne une représentation de x dans c. On introduit alors la notion de système canonique, pour lequel cet algorithme fournit toujours une représentation minimale, et on détermine si quelques exemples sont ou non canoniques.

• Enfin, la quatrième partie amène par quelques questions purement mathéma- tiques à implémenter un algorithme qui décide si un système donné est cano- nique.

Une grande partie de ce sujet est commune à l’épreuve d’informatique de la même année de l’École Polytechnique (qui est d’ailleurs plus détaillé).

Dans l’ensemble, il y a relativement peu de programmes à écrire et ils ne sont pas compliqués une fois les questions théoriques résolues (voire admises). Les rai- sonnements mathématiques demandés sont très hétérogènes. Certaines questions se résolvent très simplement, d’autres sont bien plus difficiles et nécessitent une très bonne intuition et une certaine aisance dans les manipulations de sommes d’entiers.

On utilise principalement des raisonnements par l’absurde et des doubles inégalités pour montrer les résultats. Dans l’ensemble, les parties et les questions sont relative- ment indépendantes les unes des autres.

Pour conclure, il s’agit d’un sujet atypique qui ne nécessite quasiment aucune connaissance de cours et seulement une expérience de la programmation. Il est en grande partie abordable, quitte à sauter les questions difficiles.

Téléchargé gratuitement surwww.Doc-Solus.fr.

(2)

c Éditions H&K Publié dans lesAnnales des Concours 2/16

Indications

Première partie

I.A Écrire une fonction qui teste si le premier élément de la liste est inférieur au second et fait de même, récursivement, sur la suite de la liste.

Deuxième partie

II.A Considérer une représentation minimale(k1, . . . , kn)de l’entierx, dont le poids vaut doncM(x). Écrire que la valeur dexest la somme des valeurs des pièces de sa représentation et utiliser deux majorations grossières.

II.B N’importe quel système à deux pièces convient.

II.C Construire à partir d’une représentation minimale deM(x−cj)une représen- tation dex.

II.D Réciproquement, construire une représentation dex−cj à partir d’une repré- sentation minimale dexfaisant intervenircj.

II.E Utiliser le résultat des deux questions précédentes en notant qu’une représen- tation minimale dexfait forcément intervenir au moins un élémentcj. II.F Introduire un algorithme qui construit par récurrence, en utilisant le résultat

de la question précédente, la suite des valeursMc(0),Mc(1),Mc(2), . . . ,Mc(x).

II.G Implémenter directement l’algorithme de la question précédente. Utiliser de préférence un vecteur dont toutes les coordonnées sont à0initialement. Une fois les valeurs de la fonctionMc calculées, utiliser la fonctionlist_of_vect.

Troisième partie

III.A Construire un algorithme récursif en utilisant les indications de l’énoncé.

III.C Déterminer toutes les réprésentations d’un entierxdans ce système et chercher celle de poids minimum.

III.D Considérer le système (6,5,1) (qui est proposé par l’énoncé lui-même à la questionIV.H).

III.E Considérer une représentation minimale d’un entierxet montrer en raisonnant par l’absurde que tous les coefficients de la représentation (sauf éventuellement le premier) sont inférieurs ou égaux à q−1. En déduire une majoration de x−k1c1 et la valeur dek1. Déterminer ensuite la valeur de k2, k3 et ainsi de suite pour en déduire que la représentation minimale est forcément celle donnée par l’algorithme glouton.

III.F Utiliser un raisonnement similaire à celui de la question précédente après avoir démontré ce que suggère l’énoncé.

III.G Montrer que48est un contre-exemple.

Quatrième partie

IV.A Pour la minoration, utiliser le résultat de la questionIII.C. La majoration est plus difficile à montrer. Dans un premier temps, montrer que six est le plus petit contre-exemple de c, toute représentation minimale de x ne comporte aucune pièce de valeurc1. Considérer ensuite la représentation gloutonne d’un élément de la formex−ci bien choisi.

Téléchargé gratuitement surwww.Doc-Solus.fr.

(3)

c Éditions H&K Publié dans lesAnnales des Concours 3/16

IV.B Montrer que2qest un contre-exemple et que c’est le plus petit.

IV.C Montrer queα(q) = 2q−2convient.

IV.D Établir le lien entre les deux questions précédentes et le résultat de la question IV.A.

IV.E Sixest témoin, construire une représentation dexde poids strictement inférieur à G(x).

IV.F Montrer que12est un contre-exemple qui n’est pas témoin.

IV.G Sixest le plus petit contre-exemple alors pour tout entieryinférieur àx, on a M(y) = G(y). Raisonner alors par l’absurde et utiliser le résultat de la question II.E.

IV.H Appliquer le principe de l’algorithme en calculant G(x) ainsi que les valeurs G(x−ci)

i∈[[ 1 ;m]]pourxallant decm−2+ 2à c1+c2−1.

IV.I Implémenter un algorithme qui détermine si un entierxdonné est témoin pour un système c donné (en utilisant la fonction glouton de la question III.A).

Utiliser alors une boucle for pour tester si l’un des entiers de l’intervalle [[cm−3+ 2 ;c1+c2]]est témoin.

IV.K Considérer l’exemple de la questionIII.E. Il suffit alors d’ajouter une pièce au système pour qu’il ne soit plus canonique (s’inspirer des exemples de systèmes non canoniques déjà connus).

Téléchargé gratuitement surwww.Doc-Solus.fr.

(4)

c Éditions H&K Publié dans lesAnnales des Concours 4/16

I. Systèmes de pièces

I.A Il suffit d’écrire un programme qui teste si les éléments sont en ordre décroissant, et si le dernier est égal à1. Pour cela, on teste si le premier élément est plus grand que le second. Si oui, on continue le test sur la liste privée de son premier élément, sinon on renvoiefalse.

Le programme se termine lorsque la liste ne contient plus qu’un élément. Il ne reste alors plus qu’à tester si ce dernier élément est bien égal à1. Le code du programme est donc le suivant.

let rec est_un_systeme l = match l with

|[] -> false

|[a] -> a = 1

|a::b::q -> if a > b then est_un_systeme (b::q) else false

;;

II. Représentations de poids minimal

II.A Soient xun entier, c un système de pièces etk une représentation de poids minimal dex. Notons d’une part

c= (c1, . . . , cm) avec c1> c2>· · ·> cm= 1 et d’autre part

k= (k1, . . . , km) avec k1+· · ·+km= M(x) Puisquekest une représentation dex,

k1c1+· · ·+kmcm=x

Par ailleurs, la suite (ci)i∈[[ 1 ;m]] étant une suite décroissante dont le premier terme estc1et le dernier termecmest1, il vient les deux inégalités :

k1+· · ·+km6x6c1(k1+· · ·+km) soit, commekest de poids minimal

M(x)6x6c1M(x)

L’inégalité de droite assure queM(x)est supérieur àx/c1et, puisqu’il s’agit d’un entier, on a bien

∀x∈N

x

c1

6M(x)6x.

II.B Prenons le systèmec= (2,1)et x= 2. Alors l’entierxadmet deux représen- tations puisque

x= 1×2 + 0×1 et x= 0×2 + 2×1

D’une manière générale, dès qu’un système a au moins deux éléments et que xa une valeur supérieure à celle de l’avant dernière pièce, il admet plusieurs représentations.

Téléchargé gratuitement surwww.Doc-Solus.fr.

Références

Documents relatifs

En fait tous ses coecients sont imaginaires purs, on s'en aperçoit en considérant P. Cette création est mise à disposition selon

Préciser l'ensemble des racines de Q et la multiplicité pour chacune.. Montrer qu'il existe un unique élément

Lorsque x est un nombre réel, on désigne par bxc la partie entière de x et par {x} sa partie fractionnaire de sorte que bxc ∈ Z, {x} ∈ [0, 1[ et4. x = bxc

On dira qu'il est positif lorsqu'il est réel, non nul et que tous ses coecients sont positifs ou nuls.. Soit m un entier

[r]

Toute forme de plagiat et de communi- cation est interdite et entraˆıne la note Z ´ ERO. Une r´ eponse, mˆ eme si elle est bonne, sans justification vaut Z

Th´ eorie des Nombres, Maˆıtrise Math´ ematiques Paris VI Michel Waldschmidt. Exercices - Feuille G ` A rendre le 28

On peut présenter une fonction sous trois formes différentes : algébrique (expression algébrique), numérique (tableau de valeurs) ou graphique