• Aucun résultat trouvé

4 tests : comparaison de 4 billes avec le pivot 9.

N/A
N/A
Protected

Academic year: 2022

Partager " 4 tests : comparaison de 4 billes avec le pivot 9. "

Copied!
3
0
0

Texte intégral

(1)

A731. Le classement des billes ***** Problème suggéré par Augustin Genoud

Jules possède des billes d’apparence identique. Il sait qu’elles sont toutes de masses légèrement différentes. Il aimerait les classer, dans l’ordre, de la plus lourde à la plus légère. Pour cela, il ne dispose que d’une petite balance à plateaux sur laquelle il ne peut mettre qu’une bille de chaque côté. Chaque utilisation de la balance constitue un test.

Q1 Combien de tests doit-il effectuer, au minimum, pour classer 5 billes, dans le pire des cas et en appliquant la meilleure stratégie ? [***]

Q2 Combien de tests doit-il effectuer, au minimum, pour classer 8 billes, dans le pire des cas et en appliquant la meilleure stratégie ? [****]

Q3 Pour les plus courageux : combien de billes, au maximum, peut-il classer en 34 tests, dans le pire des cas et en appliquant la meilleure stratégie ? [*****]

PROPOSITION Th Eveilleau

Première tentative avec l’algorithme quicksort (un des meilleurs dans mes anciens (trop anciens) souvenirs, ci-dessous.

Le quicksort…

Les billes sont donc comparées deux à deux. On considère le tableau constitué des masses inconnues des billes.

Un test indique simplement si une bille est plus grande ou plus petite que l’autre.

Ce problème revient à utiliser l’algorithme de tri le plus rapide d’un tableau de nombres.

Un test correspond à une comparaison simple de deux nombres.

On choisit l’algorithme par dichotomie réputé comme le plus rapide. (*)

STRATÉGIE : on choisit une bille quelconque comme PIVOT, nptée en noir.

Ensuite on place à sa droite toutes les billes plus légères.

De même on place à sa gauche toutes les billes plus lourdes.

Le pivot se trouve ainsi correctement placé à chaque étape. On recommence de façon récursive, avec les nouveaux tas de gauche et de droite jusqu’à la dernière bille, jusqu’à ce tas ne contienne qu’une bille au maximum.

Q1

Maximum : 10 tests.

Exemple

En noir et en gras le pivot,

en rouge ce qui est plus lourd et vat à gauche, en vert ce qui est plus léger et va à droite,

en bleu et en gras ce qui est bien placé définitivement.

On prévoit un nombre de cases plus grand que le nombre de billes pour pouvoir les placer correctement à gauche ou à droite d’une bille choisie arbitrairement comme pivot : à droite les plus petits, à gauche les plus grands.

Les billes notées en vert ou rouge seront comparées à la bille pivot notée en noir.

Il est évident qu’on ne connaît pas les masses a priori. Elles sont notées pour que l’on puisse comprendre l’évolution et les résultats des tests. Je choisis, peu importe, comme PIVOT, la bille la plus à droite de la liste.

7, 6, 8, 5, 9  Pivot 9.

9,

7, 6, 8, 5

4 tests : comparaison de 4 billes avec le pivot 9.

Nouvelle liste à étudier : 7, 6, 8, 5

Nouveau Pivot : 5

9,

7, 6, 8,

5

3 tests : comparaison avec le pivot 5.

Nouvelle liste à étudier : 7, 6, 8  Nouveau Pivot : 8

9 , 8,

7, 6,

5

2 tests : comparaison avec le pivot 8.

Nouvelle liste à étudier : 7, 6

Nouveau Pivot : 6

9, 8,

7, 6,

5

1 test : comparaison avec le pivot 6.

9, 8, 7, 6, 5

Tout est en ordre avec 10 comparaisons.

Exemple n°2

5, 9, 6, 7,

8

donnant un résultat de 7 comparaisons sur la balance.

(2)

5, 9, 6, 7,

8

 Pivot 8.

 9, 8, 5, 6, 7

4 tests : comparaison de 4 billes avec le pivot 8.

Nouvelle liste à étudier : 5, 6, 7  Nouveau Pivot : 7

9, 8, 7,

5, 6

2 tests : comparaison avec le pivot 7.

Nouvelles listes à étudier : 5, 6 ET 9 (terminé)  Nouveau Pivot : 6

9, 8, 7, 6,

5 1 test : comparaison avec le pivot 6.

Nouvelle liste à étudier : 5 (terminé)

9, 8, 7, 6, 5

Tout est en ordre avec 7 comparaisons.

Exemple n°3

8, 9, 7, 6,

5

donnant un résultat de 10 comparaisons sur la balance.

 Pivot 5 .

 8, 9, 7, 6,

5

4 tests : comparaison de 4 billes avec le pivot 5.

Nouvelle liste à étudier : 8, 9, 7, 6  Nouveau Pivot : 6

 8, 9, 7,

6,

5

3 tests : comparaison avec le pivot 6.

Nouvelle liste à étudier : 8, 9, 7  Nouveau Pivot : 7

 8, 9, 7,

6,

5

2 tests : comparaison avec le pivot 8.

Nouvelle liste à étudier : 8, 9,  Nouveau Pivot : 9

9, 8, 7, 6, 5

1 test : comparaison avec le pivot 6.

9, 8, 7, 6, 5

Tout est en ordre avec 10 comparaisons.

Maximum : 4+3+2+1=10

Pour 6 billes, nous aurons un maximum de 15.

Exemple avec la liste 5,6,7,4,8,9 donnant 15 tests.

Pivot 9

5, 6, 7, 4, 8, 9 5 tests.

Pivot 8  9, 8 , 5, 6, 7, 4 4 tests.

Pivot 4  9, 8

, 5, 6, 7,

4 3 tests.

Pivot 7

9, 8 , 7 , 5, 6, 4 2 tests.

Pivot 6

9, 8, 7 , 6, 5, 4 1 test.

9, 8, 7, 6, 5

Tout est en ordre avec 15 comparaisons.

Pour 7 billes, nous aurons un maximum de 21.

Q2

Maximum : Pour 8 billes, nous aurons un maximum de 28 tests.

C’est : 7+6+5+4+3+2+1=7*8/2=28

De façon générale pour n billes, le maximum est n(n-1)/2

Q3

Réponse : avec 9 billes, on trouve un maximum de 36 tests avec une bonne stratégie.

36 = 8+7+6+5+4+3+2+1=8*9/2

On doit donc se contenter de

8 billes. Bien entendu selon les cas, il y aura moins de tests mais on demande le

maximum…

On ne peut donc aller au-delà.

Pour 10 billes, on trouve 45 tests.

9+8+7+6+5+4+3+2+1=45

(3)

(*)

Parmi les trois algorithmes de tri classiques : tri à bulles, tri par insertion et tri par dichotomie, le plus rapide est l’algorithme par dichotomie appelé aussi QUICKSORT.

Le nombre moyen d’opérations est O(n*log2(n) ), le maximum est O(n²).

Voici l’algorithme récursif utilisé.

var n_it=0;

function tri_rapide(tab) { var lg=tab.length;

//Terminé si longueur du tableau est 1 if (lg<2) {

return tab;

} var tab_inf:Array=new Array();

var tab_sup:Array=new Array();

//On prend pour pivot le dernier élément, c'est un exemple //On pourrait prendre n'importe quel élément

var ind_pivot=lg-1;

var pivot=tab[ind_pivot];

for (var i=0; i<lg; i++) {

//Seulement si l’élément n’est pas le pivot if (i!=ind_pivot) {

var v=tab[i];

n_it=n_it+1;

if (v<pivot) {

tab_inf.push(v);

} else {

tab_sup.push(v);

} }

}

return (tri_rapide(tab_sup).concat([pivot])).concat(tri_rapide(tab_inf));

}

//////////////////////////////

trace(tri_rapide([9,6,8,7,5]));

trace("nombre de tests "+n_it);

Il s’avère que je n’obtiens pas et de loin les performances attendues car selon l'OEIS http://oeis.org/A036604

Les résultats sont bien meilleurs avec la séquence précédente : .pour 3 billes  3 pesées. (OK)

.pour 4 billes  5 pesées.

Q1

Pour 5 billes  7 pesées.

(J’en ai 10 avec le quicksort).

.pour 6 billes  13 pesées.

Q1

Pour 8 billes  16 pesées.

(J’en ai 28 avec le quicksort).

.pour 9 billes  19 pesées.

.pour 10 billes  22 pesées.

.pour 11 billes  26 pesées.

.pour 12 billes  30 pesées.

Q1

Pour

13

billes  34 pesées.

Références

Documents relatifs

Pour obtenir le plus grande nombre possible au sommet, il faut placer les plus grands nombres dans les deuxièmes et troisièmes cases de la première ligne.. Il y a plusieurs

Dans chaque groupe, le professeur demande à un des élèves de placer cinq billes (noires et blanches) dans un gant. L’autre élève qui ne connaît pas la répartition «

Dans chaque groupe, le professeur demande à un des élèves de placer cinq billes (noires et blanches) dans un gant. L’autre élève qui ne connaît pas la répartition «

Les nombres qui seryent â compter par exemple le nombre d'élèves, le nombre de billes sont les nombres entiers nafurels.. Donner deux exemples où on utilise les

Note sur une équation aux différences finies, Journal de Mathématiques Pures et Appliquées, 3

  Trois routes R₁,R₂ et R₃ des Platanes, des Séquoïas et des Merisiers se rencontrent au carrefour H du Hêtre pourpre tandis que la route R₂ et le chemin des Matheux

Démontrer que lorsque le point M parcourt le cercle (Γ), la droite PQ pivote autour d’un point fixe. Les deux points S et T de (Γ) ont les mêmes coordonnées, ils sont

Nous allons démontrer que cette droite (RS) est confondue avec la droite (PQ) définie dans l’énoncé.. II) Montrons que [MS) est bissectrice de l’angle BSA et que W et