13.07.2015 Views

ENSAE Ecole Nationale de la Statistique et de l ... - xavierdupre.fr

ENSAE Ecole Nationale de la Statistique et de l ... - xavierdupre.fr

ENSAE Ecole Nationale de la Statistique et de l ... - xavierdupre.fr

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

1. Séances notées 146) Comme l’algorithme précé<strong>de</strong>nt ne fournit pas <strong>la</strong> bonne solution pour tous les montants, il faut imaginerune solution qui puisse traiter tous les jeux <strong>de</strong> pièces. On procè<strong>de</strong> par récurrence. Soit P = (p 1 , . . . , p n )l’ensemble <strong>de</strong>s pièces. On définit <strong>la</strong> fonction f(m, P ) comme étant le nombre <strong>de</strong> pièces nécessaire pourdécomposer le montant m. On vérifie tout d’abord que :1. La fonction f(m, P ) doit r<strong>et</strong>ourner 1 si le montant m est déjà une pièce.2. La fonction f(m, P ) vérifie <strong>la</strong> re<strong>la</strong>tion <strong>de</strong> récurrence suivante :f(m, P ) = min {f(m − p, P ) + 1 pour tout p ∈ P }C<strong>et</strong> algorithme perm<strong>et</strong> <strong>de</strong> construire <strong>la</strong> meilleure décomposition en pièces pour tout montant. La <strong>de</strong>rnièreexpression signifie que si le montant m est décomposé <strong>de</strong> façon optimale avec les pièces (p 1 , p 2 , p 3 , p 4 ) alorsle montant m − p 4 est aussi décomposé <strong>de</strong> façon optimale avec les mêmes pièces (p 1 , p 2 , p 3 ).Il ne reste plus qu’à implémenter <strong>la</strong> fonction 5 f(m, P ). (5 points)7) Qu’obtient-on avec le jeu <strong>de</strong> pièces pieces = [1, 2, 4, 5, 10, 20, 50] ? Prolongez le programme pour déterminertous les choix possibles du prési<strong>de</strong>nt parmi les pièces [3,4,6,7,8,9] ? (1 point)8) Quel est le coût <strong>de</strong> votre algorithme ? (facultatif)Correction# -*- coding: <strong>la</strong>tin-1 -*-#################################### question 1 : r<strong>et</strong>ourner un tableau################################### 5pieces = [1,2,5,10,20,50]pieces.reverse ()print pieces # affiche [50, 20, 10, 5, 2, 1]# il existait d’autres solutionspieces.sort (reverse = True)10# ou encore l’utilisation d’une fonction compare modifiée# qui s’inspire <strong>de</strong> l’exemple 15# http://www.<strong>xavierdupre</strong>.<strong>fr</strong>/enseignement/initiation/...# ...initiation_via_python_ellipse/chap2_type_tex_-_tri-_3.html# on encore un tri programmé# http://www.<strong>xavierdupre</strong>.<strong>fr</strong>/enseignement/initiation/... 20# ...initiation_via_python_ellipse/chap3_syntaxe_tex_-_tri-_27.html################################################################### question 2 : trouve <strong>la</strong> plus gran<strong>de</strong> pièce inférieure à un montant################################################################## 25<strong>de</strong>f plus_gran<strong>de</strong>_piece (montant, pieces) :# on suppose que les pièces sont triées par ordre décroissantfor p in pieces : 30if p le montant est négatif ou nul# on vérifie5. Même si l’algorithme est présenté <strong>de</strong> façon récurrente, il peut être implémenté <strong>de</strong> façon récurrente ou non. La métho<strong>de</strong>récurrente est toutefois déconseillée car beaucoup plus lente.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!