La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Chapitre III. Algorithmique élémentaire des tableaux (recherche, tri) Définition Recherche séquentielle Recherche dichotomique Tri (insertion, sélection,

Présentations similaires


Présentation au sujet: "Chapitre III. Algorithmique élémentaire des tableaux (recherche, tri) Définition Recherche séquentielle Recherche dichotomique Tri (insertion, sélection,"— Transcription de la présentation:

1 Chapitre III. Algorithmique élémentaire des tableaux (recherche, tri) Définition Recherche séquentielle Recherche dichotomique Tri (insertion, sélection, à bulles, fusion, Dijkstra) Utilisation des tableaux de nombres : histogrammes, matrices

2 Définition des tableaux Tableau : collection dobjets de même type Type Element = Enregistrement Debut clé : entier; inf1 : chaîne de caractères; inf2 : réel; …. Fin Enregistrement; Var Tab[1..N] Tableau des Element; Problèmes : –Recherche des éléments (par clé) –Tri (une relation dordre est définie sur lensemble des clés)

3 Recherche séquentielle La recherche ne porte que sur la valeur de la clé – « recherche associative » Lorsqu'on recherche une clé qui est présente on parle de recherche positive (variétés des algorithmes : plusieurs occurrences, - première, dernière, toutes) Sil nexiste pas de solution, la recherche se termine sur un échec et ne rend pas de résultat. On parle de recherche négative

4 Recherche séquentielle dans un tableau non trié (1) Var L: tableau[1…n] des entiers X: entier j: entier Début j:=1 TQ (j<=n et L[j]!=X) faire j:=j+1; FTQ Si j>n alors j:=0 Fsi Complexité Moy?

5 Recherche séquentielle dans un tableau non trié (2) Opération fondamentale : comparaison Probabilités quun élément se trouve à la ième place : Probabilité quun élément ne se trouve pas dans le tableau : Coût moyen (nombre de comparaisons)

6 Recherche séquentielle dans un tableau non trié (3) Recherche positive (on sait que la clé recherchée se trouve dans le tableau), places équiprobables : Coût moyen minimal : Si lorsque les éléments les plus recherchés sont au début du tableau Si plusieurs recherches, il est possible de faire évoluer le tableau de sorte que les éléments les plus recherchés se trouvent au début – recherche autoadaptative –M1. Après chaque recherche, placer lélément recherché en tête (début) –M2. Faire progresser lélément recherchée dune place vers le début. –M1 est meilleure pour les listes chaînées, M2 pour les tableaux.

7 Recherche séquentielle dans un tableau trié (1) (1) Dénotons probabilités que lélément recherché X se trouve à la i-ème place (2) Probabilités que X soit strictement compris entre j-ème et j+1-ème, j=1,..,n-1 Probabilités que X soit strictement inférieur (resp. supérieur) au premier (resp. au dernier) (3)

8 Recherche séquentielle dans un tableau trié(2) Cas particulier : recherche positive (p j =0), toutes les places sont équiprobables (q j =1/n) : Comme cest le cas de recherche dans un tableau non-trié Complexité

9 Recherche dichotomique Recherche dun élément X dans un tableau trié (on supposera lordre croissant) Principe : comparer avec lélément du milieu m du tableau (tab[m]) Si X=tab[m], la solution est trouvée, arrêt Si X>tab[m], il est impossible que X se trouve avant m dans le tableau et il ne reste à traiter que la moitié droite du tableau Si X

10 Recherche dichotomique. Version récursive Procédure dichot(val X : élément; tab : tableau[1..n] des entiers, g,d : entiers, ref res : entier) {cette procédure renvoie soit lindice de X dans le tableau soit 0. A lappel g=1 et d=n} var m : entier Début Si g

11 Version récursive. Eléments danalyse Une procédure(fonction) récursive sappelle récursive terminale si il ny a aucun traitement à exécuter après chacun des appels à elle- même quelle contient Transformation en version itérative Procédure P(U) Debut Si C alors traite; P(a(U)); sinon Terminaison; Fin P Procédure P(V) Var U; Debut Tant que C faire traite; U=a(U); FinTq Terminaison; Fin P

12 Version Récursive. Complexité Opération fondamentale : comparaison Litération atteint 1 quand donc i = (ou dépasse) Ainsi : la recherche dichotomique représente une amélioration importante par rapport à la recherche séquentielle

13 Tri (insertion, sélection, à bulles, fusion, Dijkstra) (1) Tri par sélection Principe : on recherche le minimum dans la partie restante du tableau et on léchange avec lélément qui suit la partie déjà triée. Après k placements les k plus petits éléments du tableau sont déjà à leur place définitive G

14 Tri par sélection avec recherche séquentielle du minimum (1) Algorithme itératif Procédure tri-select-iter(ref tab: tableau [1..n] des entiers) Var i,j,k : entiers Début i:=1; Tant que i

15 Tri par sélection avec recherche séquentielle du minimum (2) Version récursive Procédure tri-select(ref tab: tableau [1..n] des entiers, val i : entier) { appel avec i=1} Var i,j,k : entiers Début Si i

16 Analyse de complexité Opération fondamentale : comparaison. Pour tout tableau de taille n le nombre de comparaisons pour trouver le minimum est n-1 Max c (n)=n-1+Max c (n-1) pour n>1 et Max c (1)=0 En itérant Le nombre de comparaisons ne dépend pas de la valeur des éléments

17 Tri (insertion, sélection, à bulles, fusion, Dijkstra) (2) Tri par insertion Principe : à la i-ème étape on insère le i-ème élément à son rang parmi les i-1 éléments précédents qui sont déjà triés entre eux. Après la i-ème étape les i plus petits éléments du tableau ne sont pas forcément à leur place Tri de « joueur des cartes » G

18 Tri par insertion: version récursive Procédure tri-insert(réf tab: tableau [1..n] des entiers, val i : entier) Var k,x : entiers Début Si i>1 alors tri-insert(tab,i-1) {tri du début de la liste} {recherche de la place de tab[i]} k:=i-1; x:=tab[i]; Tant que k>0 et tab[k]>x faire tab[k+1]=tab[k]; {décalage des éléments} k:=k-1; FinTantQue {on a tab[k] < x; la place de x est k+1} t[k+1]:=x; FinSi Fintri-insert

19 Analyse La procédure nest pas récursive terminale (transformer en itérative est une tâche plus complexe) Complexité dans le pire des cas : le tableau est trié dans lordre décroissant Pour un tableau de n éléments on doit faire n-1 comparaisons après lappel de tri-insert(tab,i-1) (sans compter la comparaison de k avec 0) Max c (n)=n-1+Max c (n-1) pour n>1 et Max c (1)=0 ou si on compte le test de dépassement de la borne* * Sinon on peut utiliser la technique de sentinelle et insérer un élément inférieur à tous les éléments du tableau à tab [0]

20 Tri (insertion, sélection, à bulles, fusion, Dijkstra) (3) Tri à bulles Principe : on parcourt le tableau en effectuant un échange à chaque fois que lon trouve deux éléments successifs qui ne sont pas dans le bon ordre. Il existe plusieurs versions –tri à bulles avec parcours du début à la fin avec 2 boucles Pour imbriquées; –tri à bulles amélioré (on retient lindice de la dernière permutation); –tri « shaker » - deux parcours du début à la fin, et inversement; –tri avec parcours de la fin au début;

21 Tri à bulles Procédure tri-bulles(réf tab : tableau[1..n] dentiers); Var i,j : entiers; Début i:=1; Tant que i

22 Analyse Après k pas, les k plus petits éléments du tableau sont à leur place définitive. Le nombre de comparaisons Max c (n)=n-1+Max c (n-1) pour n>1 et Max c (1)=0 Max c (n)=Moy c (n)

23 Tri (insertion, sélection, à bulles, fusion, Dijkstra) (4) Tri par fusion ….

24 Algorithme de tri par fusion (2) Procédure Tri-Fusion(val A,p,r) Var q:entier Début Si p

25 Fusion de deux tableaux ordonnés Interclassement des deux tableaux : étant donnés un tableau tab1 de n éléments et un tableau tab2 de m éléments, il sagit de construire un tableau tab3 trié, qui contient la réunion des éléments de tab1 et tab2 en conservant les répétitions. On utilisera la technique de sentinelle : dans la dernière case des tableaux augmentés (n+1) et (m+1) on insérera un élément maxelt demblée plus grand que les autres.

26 Fusion de deux tableaux ordonnés Procédure fusion-tab(réf tab1: tableau [1…n+1] déléments; réf tab2: tableau [1…m+1] déléments; réf tab3: tableau [1…n+m] déléments) Var i,j,k: entiers; Début i:=1;j=1;k:=1; tab1[n+1]:=maxelt; tab2[m+1]:=maxelt; Tant que k< m+n faire Si tab1[i]

27 Analyse de complexité du tri-fusion 1.Fusion: MaxNbr de tours de la boucle Tq = n+m Lors de chaque tour on a une comparaison et 2 affectations. Donc Max(n+m)= 2.Tri-fusion: avec a=b=2 Daprès le théorème général, cas 2 (cf. chap. 1)

28 Tri (insertion, sélection, à bulles, fusion, Dijkstra) (5) Algorithme de Dijkstra à deux couleurs Supposons que dans un tableau nous avons des nombres pairs et impairs (ou des objets de deux couleurs) Problème : placer les nombres pairs au début du tableau et les nombres impairs à la fin.

29 Tri de Dijkstra à deux couleurs P1: A gauche de lindice G tous les objets sont rouges P2: A droite de lindice D tous les objets sont bleus Problème : combler la zone dincertitude G D

30 Tri de Dijkstra à deux couleurs(2) Faire décroitre la zone dincertitude en conservant la validité des conditions G:=0;D:=N Tant que GG&& T[D] bleu) D:=D-1; FTQ Si (G

31 Utilisation des tableaux de nombres : histogrammes matrices Tableau Hist [1…n] : permet de stocker les occurrences des valeurs dune variable aléatoire X(t) : a i-1

32 Matrices Une matrice peut être représentée par un tableau rectangulaire de nombres Ex: A : tableau[1…3][1..2] des entiers La transposée dun matrice A est la matrice A t en échangeant les lignes et les colonnes de A:

33 Matrices et vecteurs Vecteur est un tableau de nombres à une dimension Vect : tableau des entiers [1..n]. Vecteur colonne est équivalent à une matrice nx1, vecteur ligne est sa transposée. Vecteur unité e i est le vecteur dont la i-ème composante est égale à 1 et toutes les autres composantes sont égales à 0;

34 Opérations sur les matrices 1. Addition 2. Multiplication scalaire 3. Soustraction opposé de : 4. Multiplication

35 Algorithme direct de multiplication de matrices Fonction Multiplier_Matrices(réf A: tableau [1..m][1..n] dentiers; ref B: tableau[1..n][1..p] dentiers): tableau [1..m][1..p] dentiers Var C: tableau [1..m][1..p] dentiers; i,j,k: entiers; Début Pour i allant de 1 à m faire Pour j allant de 1 à p faire C[i][j]:=0; Pour k allant de 1 à n faire C[i][j]:= C[i][k]+A[i][k]*B[k][j]; FinPour retourner C; FinMultiplier_Matrices Complexité si A,B sont NxN

36 Calcul du déterminant Soit une matrice de taille nxn. Le ij-ème mineur est la matrice de taille (n- 1)x(n-1) obtenue en supprimant la i-ème ligne et la j-ème colonne de A. Définition récursive du déterminant :


Télécharger ppt "Chapitre III. Algorithmique élémentaire des tableaux (recherche, tri) Définition Recherche séquentielle Recherche dichotomique Tri (insertion, sélection,"

Présentations similaires


Annonces Google