HAL Id: hal-01645164
https://hal.inria.fr/hal-01645164
Submitted on 23 Nov 2017
HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-entific research documents, whether they are pub-lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.
L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.
Posters de médiation scientifique III : Réseaux de Tri
Nicolas Nisse
To cite this version:
Posters de m´ediation scientifique III : R´eseaux de Tri
Nicolas Nisse?,??
Universit´e Cˆote d’Azur, Inria, CNRS, I3S, France
Abstract. Ces posters font partie d’une s´erie de posters que nous pr´esentons lors de divers interven-tions de m´ediation (vulgarisation) scientifique (Fˆete de la Science, intervention dans des ´ecoles, etc.). Nous essayons d’y pr´esenter des bases th´eoriques (math´ematiques) de l’algorithmique (Un algorithme est une suite finie et non ambigu¨e d’op´erations ou d’instructions permettant de r´esoudre un probl`eme ou d’obtenir un r´esultat) et structures de donn´ees (comment “coder” un nombre, une image, etc.).. Ici, nous pr´esentons une fa¸con (un algorithme) de trier des ´el´ements (par exemple, des nombres) grˆace aux r´eseaux de tri. Pour les plus curieux d’entre vous, nous d´ecrivons bri`evement certains constituants ´el´ementaires d’un ordinateur et comment ceux-ci permettent de faire des calculs (comment ils peuvent ˆetre assembl´es pour trier).
Ces posters sont accessibles d`es l’´ecole primaire (except´ee, peut-ˆetre, la partie relative `a l’architecture des ordinateurs).
?nicolas.nisse@inria.fr
Institut Esope 21
Maison des sciences
Règle du jeu
:
Six joueurs (de tailles différentes) se présentent à l’entrée (DEPART) duréseau. Ils progressent (de bas en haut) de cercle blanc en cercle blanc (qu’on appelera un trieur) en suivant la règle simple suivante : lorsque 2 joueurs sont dans un cercle, le plus grand suit le chemin bleu et le plus petit suit le chemin rouge (interdit d’avancer tant qu’on n’est pas deux dans un cercle).
Pour commencer, chaque joueur fait un pas en avant (flèches jaunes) pour atteindre un premier
cercle blanc.
Que s’est il passé ?
Les joueurs sont TRIÉS par ordre CROISSANT de taille !! JCela fonctionne-t-il quel que soit l’ordre initial ? OUI !!
nicolas.nisse@inria.fr DEPART ARRIVEE DEPART ARRIVEE DEPART ARRIVEE DEPART ARRIVEE
Réseau de Tri pour 6 éléments
https://www.smurf.com/fr/
http://www.dreamworksanimation.com/ shrek/
movies.disney.com/the-bfg
0) Les joueurs sont au départ 1) Premières comparaisons 2) Deuxièmes comparaisons
DEPART ARRIVEE DEPART ARRIVEE DEPART ARRIVEE DEPART ARRIVEE
3) Encore des comparaisons... 4) Et encore... 5) Et encore... 6) Et finalement...
5 2 14 4 80 6 42 63 2 5 80 14 42 4 63 6 DEPART 5 80 42 2 14 63 4 6
Quand ?
Vous triez (ou utilisez des choses triées) tout le temps !! (si, si…)dictionnaire moteurs de recherche partir en voyage ? mettre de l’ordre ?
Pourquoi ?
Permet de trouver PLUS RAPIDEMENT !!Un ordinateur passe également son temps à trier des choses (nombres, mots, images…)...
Pour cela, il existe de nombreux algorithmes (= méthode systématique ``expliquable” à un ordinateur) qui comparent ces choses deux-à-deux.
jouer
Pour aller plus vite, il faut faire des comparaisons simultanées (parallélisme). C’est ce que permettent les réseaux de tri !! (utilisés, par exemple, dans certaines cartes graphiques des ordinateurs)
Comment ?
Les réseaux de tri permettent de trier autant de nombres que l’on veut !!Mais ça demande de la place (nombre de trieurs) et du temps (« hauteur » du réseau) …
Essayons de trier 8 nombres.
Combien de fois faut il parcourir (répéter) le
« morceau » de réseau ci-dessous pour les trier ? (Essayez !!)
Réponse :
Adapter le réseau ci-dessus permet (en le répétant) de trier autant de nombres que l’on veut.
Par exemple, répéter cinq fois (45 trieurs) le réseau de droite permet de trier 10 nombres.
Cependant,
on peut faire mieux !!!
c’est-à-dire utiliser
MOINS de trieurs, MOINS d’étapes !!
nicolas.nisse@inria.fr
DEPART
Voyons (illustration à droite) ce qui se passe si on le répète 2 fois.
DEPART 2 il f aut le ré pét er 4 fo is, so it 2 8 tri eurs !
DEPART B A C D min(A,B) Max(A,B) min(C,D) Max(C,D) min(A,B,C,D) ARIVEE 3e min 2e max Max(A,B,C,D) DEPART
B
A
C
D
min(A,B) Max(A,B) min(C,D) Max(C,D) min(A,B,C,D) Max(A,B,C,D) DEPARTB
A
C
D
min(A,B) Max(A,B) min(C,D) Max(C,D) min(A,B,C,D) DEPART B A C D Minimum de A et B min(A,B) Maximum de A et B Max(A,B) Minimum de C et D min(C,D) Maximum de C et D Max(C,D)Essayons de trier 4 éléments !
DEPART B
A C D
Intuitivement, on compare d’une part A et B, et d’autre part C et D.
L’expérience montre que l’on est tenté de comparer la flèche bleue de gauche (Max(A,B)) et celle rouge de droite (Min(C,D)). Pourtant, on peut faire mieux (construire un réseau de tri avec moins de trieurs)
Comparer les deux plus petits (flèches rouges) permet de déterminer « le plus petit des plus petits », donc le plus petit de tous.
Comparer 4 éléments n é c e s s i t e a u p l u s 5 trieurs.
(essayez de faire mieux, i.e., d’utiliser moins de trieurs…)
De même, comparer les deux plus grands (flèches bleues)
permet de
déterminer « le plus grand des plus
grands », donc le
plus grand de tous.
1
2
3
4
5
Il ne reste qu’à comparer les 2 derniers éléments.Pour trier 8 éléments, le réseau ci-dessus à droite (avec 19 trieurs) est optimal (on ne peut pas faire moins).
Pour trier 10 éléments, le réseau ci-dessus à gauche (avec 29 trieurs) est optimal.
Pour trier 16 éléments, il faut 60 trieurs ! (on ne sait que c’est optimal que depuis 2017 !!)
Pour plus que 16 éléments, on ne connaît pas le plus petit réseau de tri
(pour trier 17 éléments il faut au moins 60 trieurs et au plus 71)
[D.E. Knuth. The Art of Computer Programming, Vol. III: SorEng and Searching. Addison-Wesley, 1973.]
[D.Bundala, M.Codish, L. Cruz-Filipe,P.Schneider-Kamp, J. Zavodny. OpEmal-depth SorEng Networks, hZps://arxiv.org/abs/1412.5302, 2017]
Pour trier jusqu’à 16 nombres, on connaît des réseaux de tri optimaux (utilisant le moins de trieurs)
nicolas.nisse@inria.fr DEPART ARRIVEE DEPART ARRIVEE ARRIVEE DEPART DEPART ARRIVEE ARRIVEE DEPART 4
Rappel :
Un ordinateur ne comprend que 2 symboles (binaire) : 1 (signal) et 0 (pas de signal). Un ordinateur est une combinaison d’interrupteurs (signal/pas de signal)John VON NEUMANN (1903-1957) invente l’ordinateur. L’invenEon du TRANSISTOR (= interrupteur
« commandé ») par J.BARDEEN,W.BRATTAIN,W.SHOCKLEY (Nobel de physique 1956) est une REVOLUTION !!
Opérations binaires :
Combiner des signaux binaires a et b (qui valent 0 ou 1)Comparateur (binaire)
Avec ces 3 portes
(en fait 2 suffisent)
, on peut tout faire !!
ET
OU
NON
La sor1e vaut 1 si (et seulement si) les 2 entrées (a ET b) valent 1 La sor1e vaut 1 si (et seulement si) au moins une des 2 entrées (a OU b) vaut 1 La sor1e vaut 1 si (et seulement si) l’entrée vaut 0Par exemple, étant donnés deux signaux a et b binaires (0 ou 1) on peut :
Déterminer lequel est le plus grand,
ou s’il y a égalité
:
(a>b ? a<b ? a=b ?)nicolas.nisse@inria.fr
Implicitement, on interprète
le signal de sortie :
Déterminer le minimum et le maximum
:(quelle est la « taille » du plus grand/petit ?)
0 = FAUX
1 = VRAI
5
Entrée 1 Entrée 2 Sor1e
a b s
0 0 0
0 1 0
1 0 0
1 1 1
Entrée 1 Entrée 2 Sor1e
a b s 0 0 0 0 1 1 1 0 1 1 1 1 Table de vérité OU (OR) Table de vérité ET (AND) Entrée 1 Sor1e a s 0 1 1 0 Table de vérité NON (NOT)
Entrée 1 Entrée 2 Sor1e 1 Sor1e 2 Sor1e 3
a b a < b a = b a > b
0 0 0 1 0 0 1 1 0 0 1 0 0 0 1 1 1 0 1 0 ET a b min(a,b) Max(a,b) OU
Entrée 1 Entrée 2 Sor1e 1 Sor1e 2
a b min Max
0 0 0 0
0 1 0 1
1 0 0 1
Comparer 2 nombres de plusieurs bits
est à peine plus compliqué.
À droite, un
multiplexeur
(binaire) pouvant choisir
(en fonction du signal binaire x) entre 2 signaux
(binaires) a et b.
«Habituellement», pour comparer 2 nombres (décimaux), par exemple 20123 et 20115, on
compare d’abord les dizaines de milliers (2 et 2), puis les milliers (0 et 0), puis les centaines (1 et 1), puis les dizaines (ici 2 et 1). On en déduit que le premier nombre est plus grand que le second.
Pour comparer 2 nombres binaires, c’est la «même chose» !!
Finalement, pour déterminer les maximum et minimum de 2 entrées A et B :
Pour 2 nombres binaires, on compare les bits 2 à 2, en partant des bits de poids fort :
Le circuit de gauche est une
façon « d’implémenter »
les trieurs (les « ronds
blancs » des réseaux de tri)
On peut facilement généraliser à des entrées
avec n’importe quel nombre de bits.
A (n bits) Comparateur (n bits) Multiplexeur (n bits) min(A,B) Max(A,B) B (n bits) B A B A ? nicolas.nisse@inria.fr 6