• Aucun résultat trouvé

Ecole Internationale des Sciences du Traitement de l Information

N/A
N/A
Protected

Academic year: 2022

Partager "Ecole Internationale des Sciences du Traitement de l Information"

Copied!
13
0
0

Texte intégral

(1)

Cours d’algorithmique

Tris simples - EISTI - ING 1

en´eralit´es Tri insertion Notions de complexit´e algorithmique

Cours d’algorithmique Tris simples - EISTI - ING 1

Ecole Internationale des Sciences du Traitement de l’Information

(2)

Cours d’algorithmique

Tris simples - EISTI - ING 1

en´eralit´es

Tri insertion Notions de complexit´e algorithmique

Probl` eme du tri

Description

Entr´ee : s´equence den nombres a1,a2,· · · ,an

Sortie : permutation a1,a2,· · · ,an de la s´equence d’entr´ee

telle quea1 ≤a2 ≤ · · · ≤an

(3)

Cours d’algorithmique

Tris simples - EISTI - ING 1

en´eralit´es

Tri insertion Notions de complexit´e algorithmique

Probl` eme du tri

Pourquoi trier ?

Tris inh´erents aux probl`emes `a traiter (classement des donn´ees)

Tris utilis´es comme sous-routines vitales (affichage et profondeur)

Int´erˆet historique (m´ethodes identiques pour d’autres algorithmes)

Permet des comparaisons asymptotiques pour d´eterminer les complexit´es

Liens entre tris et probl`emes techniques (r´esolus algorithmiquement)

(4)

Cours d’algorithmique

Tris simples - EISTI - ING 1

en´eralit´es Tri insertion Notions de complexit´e algorithmique

Tri par insertion

Description

Illustration de la mani`ere dont les gens tiennent les cartes `a jouer : choix des cartes une `a une et placement en fonction des cartes d´ej`a class´ees.

Choisir le premier ´el´ement non tri´e

L’ins´erer `a sa place parmi les ´el´ements tri´es Temps d’execution : c1 n2 pour trier n´el´ements (c1 : constante ind´ependante de n)

(5)

Cours d’algorithmique

Tris simples - EISTI - ING 1

en´eralit´es Tri insertion Notions de complexit´e algorithmique

Tri par insertion

Algorithme

p r o c e d u r e t r i I n s e r t i o n (ES

t a b l e a u t a b (N) : e n t i e r , t a i l l e : e n t i e r )

v a r i a b l e s i : e n t i e r j : e n t i e r c l e : e n t i e r

pour j2 a t a i l l e pas 1 c l e t a b ( j )

i j1

t a n t que i>0 e t t a b ( i ) > c l e f a i r e

t a b ( i +1) t a b ( i )

i i−1

f t q

t a b ( i +1) c l e f p o u r

f i n p r o c e d u r e

5 2 4 6 1 3

2 5 4 6 1 3

2 4 5 6 1 3

2 4 5 6 1 3

1 2 4 5 6 3

1 2 3 4 5 6

(6)

Cours d’algorithmique

Tris simples - EISTI - ING 1

en´eralit´es Tri insertion Notions de complexit´e algorithmique

Tri par insertion

Invariant de boucle

p r o c e d u r e t r i I n s e r t i o n (ES t a b l e a u t a b (N) : e n t i e r , t a i l l e : e n t i e r ) v a r i a b l e s

i : e n t i e r j : e n t i e r c l e : e n t i e r

p o u r j←2 a t a i l l e p a s 1 c l e t a b ( j )

i j−1

t a n t que i>0 e t t a b ( i )>

c l e f a i r e t a b ( i +1) t a b ( i )

i i−1

f t q

t a b ( i +1) c l e f p o u r

f i n p r o c e d u r e

Invariant de boucle :

{tab(1)<=...<=tab(j-1)} // le tableau est tri´e entre les indices 1 et j −1

Preuve :

Initialisation : Si j = 2 le sous tableau d’une seule case est tri´e.

Conservation : l’insertion pr´eserve l’ordre donc tab(1)<=... <=tab(j)

Terminaison : si j =taille on obtient bien

tab(1)<=... <=tab(taille)

(7)

Cours d’algorithmique

Tris simples - EISTI - ING 1

en´eralit´es Tri insertion Notions de complexit´e algorithmique

Tri par insertion

Coˆut de l’algorithme

p r o c e d u r e t r i I n s e r t i o n (ES t a b l e a u t a b (N) : e n t i e r , t a i l l e : e n t i e r ) v a r i a b l e s

i : e n t i e r j : e n t i e r c l e : e n t i e r

p o u r j←2 a t a i l l e p a s 1 //2 i n s t r u c t i o n s c l e t a b ( j ) //1

i j−1 //2

t a n t que i>0 e t t a b ( i )>

c l e f a i r e //2 t a b ( i +1) t a b ( i ) //2 i i−1 //2

f t q //Ptaille

j=2(j1) f o i s t a b ( i +1) c l e //2 f p o u r //n1 f o i s f i n p r o c e d u r e

Coˆut de l’algorithme dans le cas le plus d´efavorable (n=taille) : C(n) =n−1∗7 + (Pn

j=2(j−1))∗6) C(n) = 7∗n−7 + (n∗(n−1)/2)∗6) C(n) = 7∗n−7 + 3∗n2−3∗n C(n) = 3∗n2+ 4∗n−7

Le temps d’ex´ecution s’exprime sous la formean2+bn+c, aveca,b,c constants. Il s’agit d’une fonction quadratique den.

(8)

Cours d’algorithmique

Tris simples - EISTI - ING 1

en´eralit´es Tri insertion Notions de complexit´e algorithmique

Notions de complexit´ e algorithmique

Pourquoi

Comme nous venons de le voir sur les exemples pr´ec´edents, il est souvent difficile d’´evaluer exactement le coˆut d’un algorithme :

constantes multiplicatives n´egligeables pour grandes donn´ees

se contenter de d´eterminer l’ordre de grandeur

notion de complexit´e asymptotique (`a la limite)

(9)

Cours d’algorithmique

Tris simples - EISTI - ING 1

en´eralit´es Tri insertion Notions de complexit´e algorithmique

Croissance de fonctions

Notation asymptotique

Notation Θ

Θ(g(n)) ={f(n) il existe des constantes positives c1,c2etn0telles que 0c1g(n)f(n) c2g(n) pour toutnn0}

On noteraf(n) = Θ(g(n))

g(n) est une borne asymptotiquement approch´ee de f(n)

NotationO : borne sup´erieure asymptotique

Notation Ω : borne inf´erieure asymptotique

(10)

Cours d’algorithmique

Tris simples - EISTI - ING 1

en´eralit´es Tri insertion Notions de complexit´e algorithmique

Fonctions classiques

Notations standard

Monotonie def : si m≤(resp.≥)n alors f(m)≤(resp.≥)f(n)

Parties enti`eres :

∀x ∈R, x−1<⌊x⌋ ≤x ≤ ⌈x⌉<x+ 1

Congruences :∀a∈N,n∈N+, a mod n=a− ⌊a/n⌋n a≡b modn :a est congru `ab

Polynˆomes :

p(n) = Xd i=0

aini

est un polynˆome enn de degr´ed (d entier)

(11)

Cours d’algorithmique

Tris simples - EISTI - ING 1

en´eralit´es Tri insertion Notions de complexit´e algorithmique

Propri´ et´ es des fonctions

Exponentielles

a0 = 1 a1 = a a−1 = 1/a (am)n = amn (am)n = (an)m

aman = am+n

(12)

Cours d’algorithmique

Tris simples - EISTI - ING 1

en´eralit´es Tri insertion Notions de complexit´e algorithmique

Propri´ et´ es des fonctions

Logarithmes

a = blogba

logc(ab) = logca+ logcb logban = nlogba

logba = logca logcb logb(1/a) = −logba

logba = 1 logab alogbc = clogba

(13)

Cours d’algorithmique

Tris simples - EISTI - ING 1

en´eralit´es Tri insertion Notions de complexit´e algorithmique

Complexit´ es usuelles

Par ordre croissant

Θ(1) : complexit´e constante

Θ(log(n)) : complexit´e logarithmique (recherche dichotomique)

Θ(n) : complexit´e lin´eaire (recherche classique)

Θ(n∗log(n)) : (tris rapides)

Θ(n2) : complexit´e quadratique (tris simples)

Θ(nk) : complexit´e polynomiale (k constant)

Limite th´eorique des algorithmes utilisables

En pratique, inutilisable pourk >5

Complexit´e exponenetielles :

Θ(2n)

Θ(nn)

Inutilisables en pratique, utilisation de m´ethodes approch´ees (cf ING2) : probl`emes d’emploi du temps, du voyageur de commerce, ...

Références

Documents relatifs

Fais &#34;impression / imprimer la page en cours&#34; autant de fois que tu veux imprimer de planches. • Option plus économique pour

Ainsi, chaque fois que nous nous reportons à une région, pour une raison très précise, nous nous trouvons retrempés dans la région avec ses aspects multiples,

Nous avons le plaisir de vous compter parmi les utilisateurs d’un ou plusieurs produits mentionnés ci-dessous et nous vous remercions de votre fidélité... Par conséquent, nous

Mais d’autres services existent : Baidu Maps, Bing Cartes, Mappy (pour l’Europe), Here, Qwant Maps offrent des services quasi-identiques (l’accès pour certains usages est gratuit,

Le relâchement du. poussoir va être L'étude de ce montage sera rapide- enregistré par l'étage « retard au re- ment faite, et c'est pourquoi nous en tour à l'état

« Et pour ce » ,' le Roi établissait un droit d'un sol parisis pour chaque paire de cartes, créait un moule officiel et prescrivait, pour empaqueter les jeux, la fabri- cation de

En cas d’achat dans un golf : 1er green-fee offert le jour d’achat de la carte sur le golf-même, 2e green-fee ajouté à votre carte Golfy, valable 6 mois dans le golf Golfy de

Nous (dormir) dans de luxueuses cabines. dormons dormez