Département d’Informatique
Master Big Data Analytics & Smart Systems
Realisé par :
Encadré par :
Salma Largo
Pr.Meknassi
Khalid El masry
Année universitaire 2016/2017
Table des matières :
Table des matières ........................................................................................................................................................... 1
Introduction ...................................................................................................................................................................... 2
Sélection Séquentielle ..................................................................................................................................................... 2
Principe de la méthode .......................................................................................................................................... 2
Pseudo code ............................................................................................................................................................. 3
Jeu d’essai ................................................................................................................................................................ 5
Sélection Parallèle………………………………………………………………………………………………………………………………………………6
Principe de la méthode .......................................................................................................................................... 6
Pseudo code ............................................................................................................................................................. 7
Environnement de travail………………………………………………………………………………………………………………………………..…8
Références…………………………………………………………………………………………………………………………………………………………8
Annexe………………………………………………………………………………………………………………………………………………………………8
LARGO & ELMASRY
Page 2
Introduction :
En algorithmique, un algorithme de sélection est une méthode ayant pour but de trouver le k-ième
plus petit élément d'un ensemble d'objets (étant donné un ordre et un entier k).
La question de la sélection est un problème essentiel en algorithmique, notamment dans la
recherche du maximum, du minimum et de la médiane. Plusieurs algorithmes ont été proposés et
plusieurs contextes ont été étudiés : algorithmes en ligne, complexité amortie, complexité en
moyenne, ensemble d'objet particuliers etc.
Le problème de la sélection est très lié aux algorithmes de tri : l'un des algorithmes
classiques, Quickselect, utilise d'ailleurs le même principe que l'algorithme de tri Quicksort.
Dans ce rapport on va essayer d’implémenter 2 algorithmes le premier est un séquentiel de
sélection, le deuxième est un algorithme parallèle de sélection. Notre programme va etre
développer en langage C en utilisant le Dev C++.
1) Sélection séquentielle :
Principe de la méthode :
L’algorithme consiste à trouver le k-ième plus petit élement dans une suit d’entier S avec k compris
entre 1 et n. on pose n la dimension de S et Q une petite constante.
La structure de l’algorithme est la suivante :
 Si n < Q donc on sort du programme et on retourne le k-ième élement directement. Sinon on
divise S on n/Q sous sequences de Q élement.
 Après on détermine la médiane de chaque sous séquences.
 On appel la fonction selection_sequentielde manière récursive pour trouver m, la médiane
de n/Q médianes trouvées dans l’étape précédente.
 On va créer 3 sous séquences S1,S2 et S3 d’élements de S inférieur, égale et supérieur de m
respictivement.
 Si le nombre d’élements de S1 est supérieure ou égal à k alors le k-ième élement est
nécessairement dans S1. On appel selection_sequentielde manière récursive pour trouver
le k-ième élement de S1.
Sinon si le nombre d’élements de S1 + le nombre d’élement de S2 est supérieure ou égal à k,
On retourne le k-ième élement de S1
Sinon on appel selection_sequentiel de manière récursive pour trouver le
2 )-ième élement de S3.
LARGO & ELMASRY
( k - 1 -
Page 3
Pseudo code :
/* Fonction qui tri un tableau */
Fonction tri_tableau(Tableau S() en Entier,taille en Entier) en
void
Variables i,j,elem en Entier
Pour i allant de 1 à taille
elem <- S(j-1)
Pour j allant de i à taille
S(j)=S(j-1)
S(j)=elem
Fin Pour
Fin Pour
/* Fonction qui calcule la mediane d’un tableau*/
Fonction MedianeTab (Tableau S() en Entier,taille en Entier) en
Entier
Variable m en Entier
Si n%2 = 0
m=n/2
Renvoyer S(m+1)
Sinon
m=(n+1)/2
Renvoyer S(m)
/* Fonction de selection sequentielle*/
Fonction selection_sequentiel (Tableau S() en Entier,k en Entier) en
Entier
Variables Q,n,tableau tab1(10), tableau tab2(10), tableau tab3(10),
tableau tab4(10),i, tableau S1(50), tableau S2(50), tableau
S3(10),n1,n2,n3, tableau tab_m(4),M en Entier
/* Step 1 */
Si n < Q
Tri_tableau(S,n)
Renvoyer S(k)
Sinon
LARGO & ELMASRY
Page 4
/* diviser S en plusieurs sous tableaux */
Pour i allant de 0 à 10
Tab1(i)=S(i)
Fin Pour
Pour i allant de 10 à 20
Tab2(i-10)=S(i)
Fin Pour
Pour i allant de 20 à 30
Tab3(i-20)=S(i)
Fin Pour
Pour i allant de 30 à 40
Tab4(i-30)=S(i)
Fin Pour
/* Step 2 */
Tri_tableau(tab1,10)
Tab_m(0)=MedianeTab(tab1,10)
Tri_tableau(tab2,10)
Tab_m(1)=MedianeTab(tab2,10)
Tri_tableau(tab3,10)
Tab_m(2)=MedianeTab(tab3,10)
Tri_tableau(tab4,10)
Tab_m(3)=MedianeTab(tab4,10)
/* Step 3 */
Tri_tableau(tab_m,4)
M=selection_sequentiel(tab_m,3)
/* Step 4 */
LARGO & ELMASRY
Page 5
S2(0) = M
Pour I allant de 0 à n
Si S(i) < M
S1(n1)=S(i)
n1=n1+1
Sinon Si S(i)>M
S3(n3)=S(i)
n3=n3+1
FinSi
/* Step 5 */
Si n1 >= k
Selection_sequentiel(S1,k)
Sinon Si n1+n2 >= k
Renvoyer M
Sinon
Selection_sequentiel(S,k-n1-n2)
FinSinon
Jeu d’essai :
On va saisir un tableau de 40 variables de manière aléatoire à l’aide de la fonction rand() et on
cherche le 3éme plus petit élement .
LARGO & ELMASRY
Page 6
2) Sélection parallèle :
Principe de la méthode :
L’algorithme consiste aussi à trouver le k-ième plus petit élement dans une suit d’entier
S avec k compris entre 1 et n en se basant sur les propositions suivants :
 Définition d’une série d’entiers S contenant n élements et un entier k.
 L’ordinateur parallèle possède n processeur P1 à PN.
 Chaque processeur reçoit n et calcul x selon la relation N= 1− .
 Chaque processeur est capable de stocker   élements.
 Chaque processeur est capable d’exécuter la procédure selection_sequentiel.
LARGO & ELMASRY
Page 7
 Soit M un tableau de longueur N situé en mémoire partagée.
Pseudo code :
Procedure PARALLEL SELECT (S,k)
Step 1 :
Si n <= 4 alors P1 utilise au maximum 5 comparaisons pour retourner
le k-ième élement.
Sinon S est subdivisé en 1− sous séries  de longueur   chacune
S[0]
S[1]
S[2]
1
S[3]
S[4]
………
……..
……..
2
S[n]

 <-   est affectée au processeur  .
FinSi
Step 2 :
Pour i = 1 à − faire en parallèle
 obtient la médiane  de  , on fait appel à la fonction selection_sequentiel ( , /).
 stock  dans M(i)
M[0]
M[1]
1
2
M[2]
M[3]
M[4]
………
……..
……..
M[n]

FinPour
Step 3 :
On appel la procédure de manière récurssive pour obtenir la médiane m de M
PARALLEL SELECT (M,  /2).
Step 4 :
La série S est subdivisée en 3 sous séquences.
LARGO & ELMASRY
Page 8
Environnement de travail :
Références :
Cours Pr.Meknassi (Selection dans un tableau)
https://openclassrooms.com/courses/le-tri-par-selection
https://en.wikipedia.org/wiki/Selection_algorithm?oldid=628838562
https://fr.wikipedia.org/wiki/Algorithme_de_s%C3%A9lection#Liens_externes
Annexe :
fonction
Code source en langage C
trie_tableau
MedianeTab
LARGO & ELMASRY
Page 9
selection_sequentiel
LARGO & ELMASRY
Page 10
LARGO & ELMASRY
Page 11