TD n MIM 2 e année Algorithmique Parallèle 2 24 Réseaux de tri Résumé: Le premier exercice est facile. Le deuxième exercice sur le tri est un classique du domaine (voir par exemple [2] ou []). Le troisième exercice nous permet d aborder un réseau de tri plus sophistiqué; on trouvera de nombreux autres exemples difficiles dans []. Principe du - On démontre ici, une propriété des réseaux de tris particulièrement utile : le principe du -. Question Montrer qu un réseau de comparateurs implante correctement le tri si et seulement si il calcule bien cette fonction pour toutes suites de type - en entrée. 2 Réseau de tri Définition. On appelle une qui est soit croissante puis décroissante, soit décroissante puis croissante. Ainsi, les s 2,, 7, 7, 4, et 2, 5,,, 9 sont s. Les s binaires s sont de la forme i j k ou de la forme i j k. Définition 2. Un réseau de tri est un réseau de comparateurs triant toute binaire. Définition. On appelle séparateur un réseau à n entrées, avec n pair, composé d une colonne de comparateurs dans lequel chaque entrée i est comparée à l entrée i + n 2 pour i {, 2,..., n 2 }. Question 2 Comment construire un réseau de tri à partir de séparateurs? Quelle est sa profondeur et le nombre de comparateurs utilisés? Question En utilisant des s s, construire un réseau fusionnant deux listes s. En déduire la construction d un réseau général de tri dont on déterminera la profondeur et le nombre de comparateurs. Tri sur une grille 2D Cet exercice étend le tri par transposition pair-impair, déjà étudié sur un réseau linéaire, au cas d une grille à deux dimensions. Définition 4. Un tableau carré A = ((a i,j )) de taille n n, les éléments du tableau sont ordonnés comme suit : a 2i,j a 2i,j+, si j n, i n/2, a 2i,j+ a 2i,j, si j n, i n/2, a 2i,n a 2i,n, si i n/2, a 2i, a 2i+,, si i n/2. n = 2 m est ordonné en serpent si On peut noter que ce serpent induit un réseau linéaire à l intérieur de la grille (voir figure ). Définition 5. Un «shuffle» transforme la de n = 2p éléments z,..., z n en la z, z p+, z 2, z p+2,..., z p, z 2p. Par exemple le «shuffle» de (, 2,, 4, 5,, 7, ) est (, 5, 2,,, 7, 4, ). On se propose d étudier l algorithme suivant, qui réalise la fusion de 4 tableaux de taille 2 m 2 m ordonnés en serpent en un tableau de taille 2 m 2 m ordonné en serpent :. «shuffle» de chaque ligne du tableau (en utilisant des transpositions pair-impair sur les indices des éléments), ce qui revient à appliquer la transformation «shuffle» sur les colonnes.
TD n MIM 2 e année Algorithmique Parallèle 2 24 a, a,2 a, a,4 a 2, a 2,2 a 2, a 2,4 a, a,2 a, a,4 a 4, a 4,2 a 4, a 4,4 Fig. L ordre serpent sur une grille 4 4. 2. Trier les paires de colonnes, c est-à-dire les tableaux de taille n 2 en ordre serpent, en utilisant 2n étapes de transposition pair-impair sur le réseau linéaire induit sur chaque serpent de longueur 2n.. Appliquer 2n étapes de transposition pair-impair sur le réseau linéaire induit par le serpent de taille n 2. Question 4 Faire tourner l algorithme de tri induit avec n = 4 et a i,j = 2 4i j pour i, j 4. Question 5 Montrer que la première étape de l algorithme peut s effectuer en temps 2 m, l unité étant un échange entre voisins (plusieurs échanges entre voisins pouvant être effectués en parallèles pour le même coût). On pourra effectuer les transpositions pair-impair sur un ensemble d indices astucieusement choisis. En déduire que l algorithme global de fusion s effectue en temps 9 2 n. Question En supposant l algorithme de fusion correct, construire un algorithme qui trie une de longueur 2 2m sur une grille 2 m 2 m. Estimer sa complexité. Question 7 Montrer que le tri par transposition pair-impair sur une grille est correct (il s agit de montrer que 2n étapes de transposition pair-impair dans la troisième phase de l algorithme de fusion suffisent à obtenir un serpent correctement ordonné). Références [] T. H. Cormen, C. E. Leiserson, and R. L. Rivest. Introduction to Algorithms. The MIT Press, 2 edition, 99. Traduction française publiée chez Dunod, Introduction à l algorithmique, 22. [2] A. Gibbons and W. Rytter. Efficient Parallel Algorithms. Cambridge University Press, 9. [] F.T. Leighton. Introduction to parallel algorithms and architectures : arrays, trees, hypercubes. Morgan Kaufmann, 992.
TD n MIM 2 e année Algorithmique Parallèle 2 24 pure pure Fig. 2 Un séparateur de taille appliqué à deux s binaires s différentes. 4 s aux exercices Question, page Soit f une fonction monotone croissante. Un comparateur se comporte de la même manière sur (x, x 2 ) et sur (f(x ), f(x 2 )). On considère maintenant un réseau R fixé, appliqué à une suite donnée (x,..., x n ). La position finale de l entrée x i, c est-à-dire le fil de sortie du réseau où cet x i aboutit, ne dépend pas de la valeur de x i mais de sa position relative par rapport aux autres x j. Donc, si le réseau est appliqué à (f(x ),..., f(x n )), f(x i ) sort par le même fil de sortie que x i plus haut. Supposons maintenant que R ne calcule pas correctement la fonction de tri. Il existe donc une suite (x,..., x n ), et il existe i et i 2 tels que x i et x i2 sortent de R sur deux sorties consécutives avec x i > x i2. Il suffit de définir une fonction monotone f : {x,..., x n } {, } telle que f(x i ) = et f(x i2 ) =, par exemple : f(x) = { si x x i2 si x > x i2 Alors R ne calcule pas correctement le tri de (f(x ),..., f(x n )), puisqu on trouve et dans cet ordre sur deux sorties consécutives. Or (f(x ),..., f(x n )) est une suite de type -, d où la conclusion. Question 2, page L effet d un séparateur sur une est décrit figure 2. À la sortie du séparateur, on obtient deux s s de même taille dont une au moins est pure (c est-à-dire composée soit uniquement de, soit uniquement de ). Pour le montrer, supposons qu il y ait plus de que de dans la initiale. Supposons la initiale de la forme i j k. Si k n 2, alors la de sortie est i j k. Si i n 2, alors la de sortie est i n 2 j k n 2. Si i < n 2 et k < n 2 (mais i + k n 2 puisqu il y a plus de ), alors la de sortie est de la forme n 2 k n 2 j n 2 i n 2. Supposons la initiale de la forme i j k. Comme j n 2, la de sortie est de la forme Oi j n 2 k n 2. Dans tous les cas, on vérifie donc que la de sortie a bien la forme souhaitée. Enfin, la démonstration est tout à fait identique s il y a plus de que de. En utilisant ce résultat, il est facile de construire un réseau de tri en utilisant des séparateurs, comme indiqué figure. Soient t m et p m respectivement la profondeur et le nombre de comparateurs du réseau de tri pour une d entrée binaire de taille
TD n MIM 2 e année Algorithmique Parallèle 2 24 séparateur[n] [n/2] [n/2] Fig. Construction d un réseau d une de s de taille n à partir de séparateurs. [n/2] [n/2] Fig. 4 Construction d un réseau de fusion à l aide de s s. n = 2 m. On vérifie que : t =, t m = t m + ce qui implique que t m = m, p =, p m = t m 2 m ce qui implique que p m = m2 m. Le réseau de tri ainsi construit a donc pour profondeur O(log n) et comporte O(n log n) comparateurs. Question, page Pour construire un réseau de fusion à partir de s s, considérons la fusion de deux listes s de taille n, i n i et k n k respectivement. Si on inverse la deuxième liste (ce qui revient à échanger des câbles mais ne nécessite aucun comparateur supplémentaire), on obtient la i 2n i k k sur laquelle on peut appliquer la pour obtenir la fusion des deux listes initiales. Pour inverser la seconde liste, il suffit simplement de modifier le premier étage de la comme montré figure 4. Ensuite, on obtient le réseau général de tri en empilant les réseaux de fusion, comme pour le tri-fusion de Batcher. Le réseau obtenu trie correctement toutes les s binaires, et le principe du - permet de conclure. Soient t m et p m respectivement la profondeur et le nombre de comparateurs du réseau de tri ainsi construit pour une d entrée de taille n = 2 m. On vérifie que : t =, t m = t m + t m ce qui implique que t m = O(m 2 ), p =, p m = 2p m + p m ce qui implique que p m = O(m 2 2 m ). Le réseau de tri ainsi construit a donc pour profondeur O((log n) 2 ) et comporte O(n 2 (log n) 2 ) comparateurs.
TD n MIM 2 e année Algorithmique Parallèle 2 24 Question 4, page 2 Le dessin ci-dessous représente l évolution de la grille au cours des différentes étapes du tri serpent. 2 4 5 7 4 2 9 5 situation initiale 2 5 4 7 9 4 2 5 appel récursif grille 2 2 9 4 2 5 4 7 2 5 shuffle colonne grille 4 4 9 4 2 4 7 5 2 5 tri colonnes grille 4 4 2 4 7 5 9 2 5 4 2n pair-impair grille 4 4 Question 5, page 2 Pour i compris entre et n = 2p, on définit l indice c i de la colonne i comme l indice de son image par le «shuffle» : c i = 2i si i p et 2(i 2 m ) sinon. Ensuite, il suffit de trier cet ensemble d indices en utilisant des échanges entre voisins. Considérons le réseau primitif α à p étages dont le i-ème étage effectue les i comparaisons p i +, p i + 2, p i +, p i + 4,..., p + i, p + i. Par exemple pour n =, p = 4, il faut trier la (, 5, 2,,, 7, 4, ). Les trois étages sont composés des comparateurs 4, 5 (premier étage),, 4, 5, (deuxième étage), et 2,, 4, 5,, 7 (troisième étage). Une récurrence immédiate montre que le réseau de tri ainsi défini trie correctement la des c i, et peut donc être utilisé pour réaliser l opération de «shuffle» sur les colonnes. Le coût de cet étape est n 2 et le coût de chacune des deux autres étapes est 2n, on vérifie donc que le coût global de l algorithme de fusion est 9 2 n. Question, page 2 Soit t m le temps nécessaire pour trier sur une grille 2 m 2 m. D après la question précédente, t m t m + 9 2 2m, avec t = puisqu un tableau est toujours ordonné en serpent. En additionnant toutes les inégalités obtenues pour t m, t m, t m 2,... et en simplifiant : t m 9 2 m 2 k = 9 2 (2m+ 2) 9 2 m. k= Le temps nécessaire pour trier une de longueur N = 2 2m sur une grille 2D est donc de l ordre de N.
TD n MIM 2 e année Algorithmique Parallèle 2 24 i est impair i + i est ε impair i + ε Fig. 5 Les deux grilles en serpent possibles pour des s - : i est toujours impair et ε {, }. shuffle i i + ε i 2 i 2 + ε 2 i + i 2 i + i 2 + ε /2 i + i 2 + ε + ε 2 i i + ε i 4 + ε 4 i4 i + i 4 i + i 4 + ε /4 i + i 4 + ε + ε 4 les quatre blocs S S + ε S + ε + ε 2 S + ε + ε 2 + ε S + ε + ε 2 + ε + ε 4 { tri sur les couples de colonnes. au plus 2 lignes Fig. Fusion de deux serpents -. Question 7, page 2 Pour simplifier la démonstration, nous utilisons le principe du -, qui nous permettra d affirmer que le tri sur la grille est correct si et seulement si on peut réaliser la troisième phase de l algorithme avec seulement 2n transpositions pair-impair sur des s de -. Les deux seules possibilités pour des grilles de s - ordonnées en serpent sont illustrées figure 5. L indice i de la dernière ligne commençant par un est toujours impair, et il y a deux cas selon que le nombre de zéros restants n excède pas la taille d une ligne ou, au contraire, déborde sur la ligne suivante. En fait, il suffit de montrer qu à la fin de la deuxième étape de l algorithme (les tris sur les réseaux linéaires de tailles 2n), au plus deux lignes de la matrice ne sont pas exclusivement constituées de et de, comme indiqué figure. Avec les notations figure, i, i 2, i, i 4 sont des entiers naturels impairs et ε, ε 2, ε, ε 4 des entiers dans {, }. En effet, regardons le nombre de et de dans les couples de colonnes après l opération de «shuffle». Dans la moitié supérieure de la grille, il y a au plus trois types de paires de colonnes.
TD n MIM 2 e année Algorithmique Parallèle 2 24 Ces paires contiennent chacune i + i 2, i + i 2 + ε /2 (ε /2 valant ε ou ε 2 selon les cas) ou i + i 2 + ε + ε 2 zéros. On peut faire la même analyse dans la moitié inférieure et en déduire qu il existe au plus 5 types de paires de colonnes après le tri sur les paires de colonnes. Ces paires de colonnes contiennent donc S, S + ε, S + ε + ε 2, S + ε + ε 2 + ε ou S + ε + ε 2 + ε + ε zéros (où S = i + i 2 + i + i 4 et les ε, ε 2, ε, ε 4 sont des entiers dans {, }). En remarquant que S est pair (en tant que somme de quatre nombres impairs) on peut vérifier que, dans tous les cas, au plus deux lignes (de longueur n) ne sont pas exclusivement constituées de ou de, et donc que le réseau linéaire induit par le serpent de taille n 2 trie la globale en seulement 2n étapes.