Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler...

Post on 03-Apr-2015

108 views 4 download

Transcript of Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler...

Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 116 novembre 20066 novembre 2006

Cours d’AlgorithmiqueCours d’AlgorithmiqueMarc GenglerMarc Gengler

Marc.Gengler@esil.univ-mrs.frMarc.Gengler@esil.univ-mrs.fr

Alexandra Bac - Henry Kanoui - Alain SamuelAlexandra Bac - Henry Kanoui - Alain Samuel

24h de cours24h de cours24h de TD24h de TDdes devoirsdes devoirsun projetun projet… … et un et un examenexamen

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 22

• Trier et chercherTrier et chercher• Listes et arbresListes et arbres• Le back-trackLe back-track• Arbres équilibrésArbres équilibrés• Récursivité et induction sur la structureRécursivité et induction sur la structure• Divide and conquerDivide and conquer• MinimaxMinimax• DérécursionDérécursion• Divers problèmes particuliersDivers problèmes particuliers• Logique de HoareLogique de Hoare• Programmation dynamiqueProgrammation dynamique• Complexité et calculabilitéComplexité et calculabilité

Les grandes lignes du coursLes grandes lignes du cours

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 33

BibliographieBibliographie

• Tout ce qui contientTout ce qui contient– algorithmes, algorithms.algorithmes, algorithms.

• InternetInternet– souvent, c’est très (trop) simplifié,souvent, c’est très (trop) simplifié,– et pas toujours correct.et pas toujours correct.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 44

BibliographieBibliographie

• Tout ce qui contientTout ce qui contient– algorithmes, algorithms.algorithmes, algorithms.

• InternetInternet– souvent, c’est très (trop) simplifié,souvent, c’est très (trop) simplifié,– et pas toujours correct.et pas toujours correct.

• Mes choixMes choix– Introduction to Algorithms, Leiserson et al.Introduction to Algorithms, Leiserson et al.– Algorithms, Sedgewick.Algorithms, Sedgewick.– Fundamental Algorithms, Knuth.Fundamental Algorithms, Knuth.– des anciens cours ;-)des anciens cours ;-)

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 55

BibliographieBibliographie

• Tout ce qui contientTout ce qui contient– algorithmes, algorithms.algorithmes, algorithms.

• InternetInternet– souvent, c’est très (trop) simplifié,souvent, c’est très (trop) simplifié,– et pas toujours correct.et pas toujours correct.

• D’autres choixD’autres choix– Introduction à l’algorithmique, Leiserson et al.Introduction à l’algorithmique, Leiserson et al.

chez Dunod.chez Dunod.– Initiation à l’algorithmique et aux structures de Initiation à l’algorithmique et aux structures de

données, Courtin et Kowarski.données, Courtin et Kowarski.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 66

L ‘ O R I G I N EL ‘ O R I G I N E

D U M O TD U M O T

A L G O R I T H M EA L G O R I T H M E

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 77

Al KhwarizmiAl Khwarizmi

• Célèbre mathématicien à Bagdad,Célèbre mathématicien à Bagdad,

vers 780-850.vers 780-850.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 88

Al KhwarizmiAl Khwarizmi

• Célèbre mathématicien à Bagdad,Célèbre mathématicien à Bagdad,

vers 780-850.vers 780-850.

• « Kitâb « Kitâb al-jabral-jabr wa al-muqâbala ». Livre sur la science de la wa al-muqâbala ». Livre sur la science de la transposition et de la réduction : résolution systématique de transposition et de la réduction : résolution systématique de l’équation du second degré.l’équation du second degré.

• Traduit en latin au 12Traduit en latin au 12ee siècle par Gherardo di Cremona sous siècle par Gherardo di Cremona sous le titre le titre « « Dixit Dixit AlgorismiAlgorismi ». ».

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 99

Al KhwarizmiAl Khwarizmi

• Célèbre mathématicien à Bagdad,Célèbre mathématicien à Bagdad,

vers 780-850.vers 780-850.

• « Kitâb « Kitâb al-jabral-jabr wa al-muqâbala ». Livre sur la science de la wa al-muqâbala ». Livre sur la science de la transposition et de la réduction : résolution systématique de transposition et de la réduction : résolution systématique de l’équation du second degré.l’équation du second degré.

• Traduit en latin au 12Traduit en latin au 12ee siècle par Gherardo di Cremona sous le siècle par Gherardo di Cremona sous le titre titre « « Dixit Dixit AlgorismiAlgorismi ». ».

• Aussi : « Kitâb al Jami wa al Tafriq bi Hisab al Hind ». Livre de Aussi : « Kitâb al Jami wa al Tafriq bi Hisab al Hind ». Livre de l'addition et de la soustraction d'après le calcul des indiens.l'addition et de la soustraction d'après le calcul des indiens.

• http ://trucsmaths.free.fr/alkhwarizmi.htmhttp ://trucsmaths.free.fr/alkhwarizmi.htm

• http://publimath.irem.univ-mrs.fr/glossaire/AL016.htmhttp://publimath.irem.univ-mrs.fr/glossaire/AL016.htm

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 1010

Al KhwarizmiAl Khwarizmi

X^2X^2 + + 8 * x8 * x = 33 = 33

X^2X^2

2 * X2 * X

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 1111

Al KhwarizmiAl Khwarizmi

1616 + + X^2 X^2 + + 8 * X8 * X = 33 + = 33 + 1616

X^2X^2

2 * X2 * X44

( X + 4 )^2 = 7^2( X + 4 )^2 = 7^2

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 1212

D I V E R SD I V E R S

A L G O R I T H M E SA L G O R I T H M E S

D ED E

T R IT R I

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 1313

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

• Tableau d’entrées 0 à n-1.Tableau d’entrées 0 à n-1.• Entiers naturels, mais n’importe quel Entiers naturels, mais n’importe quel

ensemble ordonné peut convenir.ensemble ordonné peut convenir.• Les répétitions sont possibles.Les répétitions sont possibles.

Les hypothèses :Les hypothèses :

Le but :Le but :

• Ordonner le tableau par valeurs non Ordonner le tableau par valeurs non décroissantes.décroissantes.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 1414

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

• Tableau d’entrées 0 à n-1.Tableau d’entrées 0 à n-1.• Entiers naturels, mais n’importe quel Entiers naturels, mais n’importe quel

ensemble ordonné peut convenir.ensemble ordonné peut convenir.• Les répétitions sont possibles.Les répétitions sont possibles.

Les hypothèses :Les hypothèses :

Le but :Le but :

• Ordonner le tableau par valeurs non Ordonner le tableau par valeurs non décroissantes.décroissantes.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 1515

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

• En général, l’ordre est imposé par le monde En général, l’ordre est imposé par le monde extérieur.extérieur.

• Je peux trier des personnes :Je peux trier des personnes :

– d’après l’âge,d’après l’âge,– d’après le poids,d’après le poids,– d’après la taille,d’après la taille,– d’après l’ordre lexicographique des patronymes,d’après l’ordre lexicographique des patronymes,– . . .. . .

Quelle relation d’ordre ?Quelle relation d’ordre ?

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 1616

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Situation initialeSituation initiale

ValeursValeurs

0 1 2 3 …0 1 2 3 … n-n-11

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 1717

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Situation initialeSituation initiale

ValeursValeurs

0 1 2 3 …0 1 2 3 … n-n-11

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 1818

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Situation finaleSituation finale

ValeursValeurs

0 1 2 3 …0 1 2 3 … n-n-11

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 1919

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Situation finaleSituation finale

ValeursValeurs

0 1 2 3 …0 1 2 3 … n-n-11

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 2020

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Les tris que nous Les tris que nous regardons en cours :regardons en cours :

• Tri par échanges.Tri par échanges.

• Tri par insertions.Tri par insertions.

• Tri bulles.Tri bulles.

• Tri par fusion.Tri par fusion.

D’autres tris en TD.D’autres tris en TD.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 2121

T R IT R I

P A RP A R

E C H A N G E SE C H A N G E S

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 2222

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par échange --- situation intermédiaireTri par échange --- situation intermédiaire

ValeursValeurs

0 1 2 3 …0 1 2 3 … n-n-11

TriéesTriées

Non triées etNon triées etplus grandesplus grandes

i-1i-1

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 2323

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par échange - suiteTri par échange - suite

• Les entrées de 0 à i-1 sont triées.Les entrées de 0 à i-1 sont triées.

• Elles sont plus petites que les entrées suivantes.Elles sont plus petites que les entrées suivantes.

• Les entrées à partir de l’indice i ne sont pas triées.Les entrées à partir de l’indice i ne sont pas triées.

Les hypothèses Les hypothèses ::

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 2424

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par échange - suiteTri par échange - suite

• Les entrées de 0 à i-1 sont triées.Les entrées de 0 à i-1 sont triées.

• Elles sont plus petites que les entrées suivantes.Elles sont plus petites que les entrées suivantes.

• Les entrées à partir de l’indice i ne sont pas triées.Les entrées à partir de l’indice i ne sont pas triées.

Les hypothèses Les hypothèses ::

A faire pour mettre en place l’entrée i :A faire pour mettre en place l’entrée i :

• Chercher l’indice j du minimum à partir de i.Chercher l’indice j du minimum à partir de i.

• Echanger les éléments i et j.Echanger les éléments i et j.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 2525

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par échange --- situation intermédiaireTri par échange --- situation intermédiaire

ValeursValeurs

0 1 2 3 …0 1 2 3 … n-n-11

TriéesTriées

Non triées etNon triées etplus grandesplus grandes

ii jj

<- échange -<- échange ->>

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 2626

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par échange --- situation intermédiaireTri par échange --- situation intermédiaire

ValeursValeurs

0 1 2 3 …0 1 2 3 … n-n-11

TriéesTriées

Non triées etNon triées etplus grandesplus grandes

ii jj

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 2727

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par échange --- propriété invarianteTri par échange --- propriété invariante

• Nous avions une certaine situation sur l’intervalle [ 0 .. i-1 ] :Nous avions une certaine situation sur l’intervalle [ 0 .. i-1 ] :– les éléments jusqu’à i-1 sont triés,les éléments jusqu’à i-1 sont triés,– ceux qui suivent sont plus grands, mais pas triés.ceux qui suivent sont plus grands, mais pas triés.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 2828

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par échange --- propriété invarianteTri par échange --- propriété invariante

• Nous avions une certaine situation sur l’intervalle [ 0 .. i-1 ] :Nous avions une certaine situation sur l’intervalle [ 0 .. i-1 ] :– les éléments jusqu’à i-1 sont triés,les éléments jusqu’à i-1 sont triés,– ceux qui suivent sont plus grands, mais pas triés.ceux qui suivent sont plus grands, mais pas triés.

• Nous retrouvons la même situation sur l’intervalle [ 0 .. i ] :Nous retrouvons la même situation sur l’intervalle [ 0 .. i ] :– les éléments jusqu’à i sont triés,les éléments jusqu’à i sont triés,– ceux qui suivent sont plus grands, mais pas triés.ceux qui suivent sont plus grands, mais pas triés.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 2929

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par échange --- propriété invarianteTri par échange --- propriété invariante

• Nous avions une certaine situation sur l’intervalle [ 0 .. i-1 ] :Nous avions une certaine situation sur l’intervalle [ 0 .. i-1 ] :– les éléments jusqu’à i-1 sont triés,les éléments jusqu’à i-1 sont triés,– ceux qui suivent sont plus grands, mais pas triés.ceux qui suivent sont plus grands, mais pas triés.

• Nous retrouvons la même situation sur l’intervalle [ 0 .. i ] :Nous retrouvons la même situation sur l’intervalle [ 0 .. i ] :– les éléments jusqu’à i sont triés,les éléments jusqu’à i sont triés,– ceux qui suivent sont plus grands, mais pas triés.ceux qui suivent sont plus grands, mais pas triés.

• Cette propriété est donc invariante avec i, on l’appelleCette propriété est donc invariante avec i, on l’appelle

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 3030

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par échange --- le codeTri par échange --- le code

for ( i=0 ; i<n-1 ; i++ )

{ind_min = i;

for ( j=i+1 ; j<n ; j++ )

if ( t[j] < t[ind_min] )

ind_min = j;

aux = t[i];

t[i] = t[ind_min];

t[ind_min] = aux;

}

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 3131

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par échange --- le codeTri par échange --- le code

for ( i=0 ; i<n-1 ; i++ )

{ind_min = i;

for ( j=i+1 ; j<n ; j++ )

if ( t[j] < t[ind_min] )

ind_min = j;

aux = t[i];

t[i] = t[ind_min];

t[ind_min] = aux;

}

Fini si i == n-1 Fini si i == n-1 !!

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 3232

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par échange --- le codeTri par échange --- le code

for ( i=0 ; i<n-1 ; i++ )

{ind_min = i;

for ( j=i+1 ; j<n ; j++ )

if ( t[j] < t[ind_min] )

ind_min = j;

aux = t[i];

t[i] = t[ind_min];

t[ind_min] = aux;

}

Fini si i == n-1 Fini si i == n-1 !!

En effet, il nousEn effet, il nousreste une seulereste une seule

valeur qui est plus valeur qui est plus grande que les grande que les

valeurs précédentes valeurs précédentes !!

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 3333

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par échange --- le codeTri par échange --- le code

for ( i=0 ; i<n-1 ; i++ )

{ind_min = i;

for ( j=i+1 ; j<n ; j++ )

if ( t[j] < t[ind_min] )

ind_min = j;

aux = t[i];

t[i] = t[ind_min];

t[ind_min] = aux;

}

Chercher Chercher l’indicel’indice

du plus petit.du plus petit.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 3434

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par échange --- le codeTri par échange --- le code

for ( i=0 ; i<n-1 ; i++ )

{ind_min = i;

for ( j=i+1 ; j<n ; j++ )

if ( t[j] < t[ind_min] )

ind_min = j;

aux = t[i];

t[i] = t[ind_min];

t[ind_min] = aux;

}

Echange, même si i == Echange, même si i == ind_min.ind_min.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 3535

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par échange --- la complexitéTri par échange --- la complexité

• Ont fait n-1 fois, pour i de 0 à n-2 :Ont fait n-1 fois, pour i de 0 à n-2 :

• Un parcours de [i..n-1].Un parcours de [i..n-1].

• Il y a donc un nombre de lectures qui vaut :Il y a donc un nombre de lectures qui vaut :

(n-i) = 0 (n-i) = 0 (n^2)(n^2)i=0..n-2i=0..n-2

Tri en complexité quadratique.Tri en complexité quadratique.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 3636

T R IT R I

P A RP A R

I N S E R T I O NI N S E R T I O N

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 3737

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par insertion --- situation intermédiaireTri par insertion --- situation intermédiaire

ValeursValeurs

0 1 2 3 …0 1 2 3 … n-n-11

TriéesTriées

Non triées etNon triées etquelconquesquelconques

i-1i-1

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 3838

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par insertion - suiteTri par insertion - suite

• Les entrées de 0 à i-1 sont triées.Les entrées de 0 à i-1 sont triées.

• Elles sont plus petites que les entrées suivantes.Elles sont plus petites que les entrées suivantes.

• Les entrées à partir de l’indice i ne sont pas triées.Les entrées à partir de l’indice i ne sont pas triées.

Les hypothèses Les hypothèses ::

////////////////////////////////////////////

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 3939

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par insertion - suiteTri par insertion - suite

• Les entrées de 0 à i-1 sont triées.Les entrées de 0 à i-1 sont triées.

• Elles sont plus petites que les entrées suivantes.Elles sont plus petites que les entrées suivantes.

• Les entrées à partir de l’indice i ne sont pas triées.Les entrées à partir de l’indice i ne sont pas triées.

Les hypothèses Les hypothèses ::

A faire pour mettre en place l’entrée i :A faire pour mettre en place l’entrée i :

• Si elle est plus grande que les précédentes : RIEN !Si elle est plus grande que les précédentes : RIEN !

• Si elle est plus petite que certaines précédentes : Si elle est plus petite que certaines précédentes : l’insérer plus à gauche en décalant d’autres entrées.l’insérer plus à gauche en décalant d’autres entrées.

////////////////////////////////////////////

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 4040

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par insertion --- situation intermédiaireTri par insertion --- situation intermédiaire

ValeursValeurs

0 1 2 3 …0 1 2 3 … n-n-11

TriéesTriées

i-1i-1

Plus Plus grande :grande :Rien à Rien à faire !faire !

Non triées etNon triées etquelconquesquelconques

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 4141

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par insertion --- situation intermédiaireTri par insertion --- situation intermédiaire

ValeursValeurs

0 1 2 3 …0 1 2 3 … n-n-11

TriéesTriées

i-1i-1

Plus Plus grande :grande :Rien à Rien à faire !faire !

Non triées etNon triées etquelconquesquelconques

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 4242

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par insertion --- situation intermédiaireTri par insertion --- situation intermédiaire

ValeursValeurs

0 1 2 3 …0 1 2 3 … n-n-11

TriéesTriées

i-1i-1

Non triées etNon triées etquelconquesquelconques

Plus petit :Plus petit :L’insérer à L’insérer à gauche.gauche.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 4343

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par insertion --- situation intermédiaireTri par insertion --- situation intermédiaire

ValeursValeurs

0 1 2 3 …0 1 2 3 … n-n-11

TriéesTriées

ii

Non triées etNon triées etquelconquesquelconques

Plus petit :Plus petit :L’insérer à L’insérer à gauche.gauche.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 4444

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par insertion --- situation intermédiaireTri par insertion --- situation intermédiaire

• Vous avez vu qu’il y a à nouveau un INVARIANT ?Vous avez vu qu’il y a à nouveau un INVARIANT ?

• Lequel est-ce ??????????????????Lequel est-ce ??????????????????

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 4545

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par insertion --- situation intermédiaireTri par insertion --- situation intermédiaire

• Vous avez vu qu’il y a à nouveau un INVARIANT ?Vous avez vu qu’il y a à nouveau un INVARIANT ?

• Lequel est-ce ??????????????????Lequel est-ce ??????????????????

• Les éléments déjà traités sont triés,Les éléments déjà traités sont triés,

• les autres sont dans le désordre et sans les autres sont dans le désordre et sans rapport particulier (ni plus grands, ni plus rapport particulier (ni plus grands, ni plus petits) aux premiers.petits) aux premiers.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 4646

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par insertion --- le codeTri par insertion --- le code

for ( i=1 ; i<n ; i++ )

{cont = 1;

j = i;

while ( j>0 && cont )

{if ( t[j] < t[j-1] )

echange(t, j-1, j);

else

cont = 0;

j--; } }

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 4747

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par insertion --- le codeTri par insertion --- le code

for ( i=1 ; i<n ; i++ )

{cont = 1;

j = i;

while ( j>0 && cont )

{if ( t[j] < t[j-1] )

echange(t, j-1, j);

else

cont = 0;

j--; } }

Pour tous, sauf le premier quiPour tous, sauf le premier quiest forcément à sa place …est forcément à sa place …

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 4848

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par insertion --- le codeTri par insertion --- le code

for ( i=1 ; i<n ; i++ )

{cont = 1;

j = i;

while ( j>0 && cont )

{if ( t[j] < t[j-1] )

echange(t, j-1, j);

else

cont = 0;

j--; } }

On échange aussi On échange aussi longtempslongtemps

que le prédécesseur existeque le prédécesseur existeet qu’il est plus grand queet qu’il est plus grand que

l’élément en question. l’élément en question.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 4949

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par insertion --- le codeTri par insertion --- le code

for ( i=1 ; i<n ; i++ )

{cont = 1;

j = i;

while ( j>0 && cont )

{if ( t[j] < t[j-1] )

echange(t, j-1, j);

else

cont = 0;

j--; } }

On arrête les échanges dès On arrête les échanges dès queque

le prédécesseur est au plus le prédécesseur est au plus aussi grand que l’élémentaussi grand que l’élément

en question.en question.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 5050

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri par insertion --- la complexitéTri par insertion --- la complexité

• Ont fait n-1 fois, pour i de 1 à n-1 :Ont fait n-1 fois, pour i de 1 à n-1 :

• Jusqu’à i échanges au maximum (peut-être moins).Jusqu’à i échanges au maximum (peut-être moins).

• Le nombre d’échanges peut donc atteindre :Le nombre d’échanges peut donc atteindre :

i = 0 i = 0 (n^2)(n^2)i=1..n-1i=1..n-1

Tri en complexité quadratique.Tri en complexité quadratique.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 5151

T R IT R I

P A RP A R

B U L L E SB U L L E S

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 5252

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri bulleTri bulle

ValeursValeurs

0 1 2 3 …0 1 2 3 … n-n-11

SituationSituationnormalenormale

SituationSituationanormale :anormale :Une bulleUne bulle

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 5353

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri bulle : on échange l’ordre dans la bulleTri bulle : on échange l’ordre dans la bulle

ValeursValeurs

0 1 2 3 …0 1 2 3 … n-n-11

SituationSituationnormalenormale

La bulleLa bullea disparua disparupar échangepar échange

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 5454

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri bulle - principe des Tri bulle - principe des algorithmesalgorithmes

• Tant qu’il y a des bulles,Tant qu’il y a des bulles,

• on en choisit une et on la fait monter.on en choisit une et on la fait monter.

L’idée :L’idée :

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 5555

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri bulle : évolution des bullesTri bulle : évolution des bulles

ValeursValeurs

0 1 2 3 …0 1 2 3 … n-n-11

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 5656

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri bulle - principe des Tri bulle - principe des algorithmesalgorithmes

• Tant qu’il y a des bulles,Tant qu’il y a des bulles,

• on en choisit une et on la fait monter.on en choisit une et on la fait monter.

L’idée :L’idée :

De nombreuses optimisations :De nombreuses optimisations :

• Suivre une bulle et la faire monter aussi haut que possible.Suivre une bulle et la faire monter aussi haut que possible.

• Si au dernier passage la première bulle était ( i , i+1 ) , il ne Si au dernier passage la première bulle était ( i , i+1 ) , il ne peut y avoir de bulle avant ( i-1 , i ) au passage courant.peut y avoir de bulle avant ( i-1 , i ) au passage courant.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 5757

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri bulle : évolution des bullesTri bulle : évolution des bulles

ValeursValeurs

0 1 2 3 …0 1 2 3 … n-n-11

Régions qui peuventRégions qui peuventêtre ignorées lorsêtre ignorées lorsdu prochain passage.du prochain passage.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 5858

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri bulle - principe des Tri bulle - principe des algorithmesalgorithmes

• Tant qu’il y a des bulles,Tant qu’il y a des bulles,

• on en choisit une et on la fait monter.on en choisit une et on la fait monter.

L’idée :L’idée :

De nombreuses optimisations :De nombreuses optimisations :

• Suivre une bulle et la faire monter aussi haut que possible.Suivre une bulle et la faire monter aussi haut que possible.

• Si au dernier passage la première bulle était ( i , i+1 ) , il ne Si au dernier passage la première bulle était ( i , i+1 ) , il ne peut y avoir de bulle avant ( i-1 , i ) au passage courant.peut y avoir de bulle avant ( i-1 , i ) au passage courant.

• Faire alternativement monter et descendre des bulles.Faire alternativement monter et descendre des bulles.

• … … et puis d’autres trucs !et puis d’autres trucs !

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 5959

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri bulle - complexitéTri bulle - complexité

• Le tri bulle a une complexité quadratique, car il existe des Le tri bulle a une complexité quadratique, car il existe des instances pour lesquels il faut 0 (n^2) échanges.instances pour lesquels il faut 0 (n^2) échanges.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 6060

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri bulle - complexitéTri bulle - complexité

• Le tri bulle a une complexité quadratique, car il existe des Le tri bulle a une complexité quadratique, car il existe des instances pour lesquels il faut 0 (n^2) échanges.instances pour lesquels il faut 0 (n^2) échanges.

• Par contre, pour de nombreuses instances, le nombre des Par contre, pour de nombreuses instances, le nombre des échanges est bien plus petit.échanges est bien plus petit.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 6161

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Tri bulle - complexitéTri bulle - complexité

• Le tri bulle a une complexité quadratique, car il existe des Le tri bulle a une complexité quadratique, car il existe des instances pour lesquels il faut 0 (n^2) échanges.instances pour lesquels il faut 0 (n^2) échanges.

• Par contre, pour de nombreuses instances, le nombre des Par contre, pour de nombreuses instances, le nombre des échanges est bien plus petit.échanges est bien plus petit.

• Le tri bulle est bien adapté, comme d’autres tris, pour Le tri bulle est bien adapté, comme d’autres tris, pour rétablir l’ordre dans un tableau presque trié (léger désordre rétablir l’ordre dans un tableau presque trié (léger désordre produit par quelques insertions d’éléments par exemple).produit par quelques insertions d’éléments par exemple).

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 6262

D I F F E R E N T E SD I F F E R E N T E S

N O T I O N SN O T I O N S

D ED E

C O M P L E X I T EC O M P L E X I T E

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 6363

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Différentes notions de complexitéDifférentes notions de complexité

• Complexité du meilleur cas :Complexité du meilleur cas :– inintéressante, car ce n’est pas le cas typique.inintéressante, car ce n’est pas le cas typique.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 6464

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Différentes notions de complexitéDifférentes notions de complexité

• Complexité du meilleur cas :Complexité du meilleur cas :– inintéressante, car ce n’est pas le cas typique.inintéressante, car ce n’est pas le cas typique.

• Complexité du cas moyen :Complexité du cas moyen :– intéressante, mais difficile à établir,intéressante, mais difficile à établir,– est-ce que mes instances du problème sont dans la moyenne ?est-ce que mes instances du problème sont dans la moyenne ?

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 6565

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Différentes notions de complexitéDifférentes notions de complexité

• Complexité du meilleur cas :Complexité du meilleur cas :– inintéressante, car ce n’est pas le cas typique.inintéressante, car ce n’est pas le cas typique.

• Complexité du cas moyen :Complexité du cas moyen :– intéressante, mais difficile à établir,intéressante, mais difficile à établir,– est-ce que mes instances du problème sont dans la moyenne ?est-ce que mes instances du problème sont dans la moyenne ?

• Complexité du pire cas :Complexité du pire cas :– donne une limite supérieure pour le nombre d’opérations,donne une limite supérieure pour le nombre d’opérations,– celle-ci peut être atypique,celle-ci peut être atypique,– souvent assez facile à calculer,souvent assez facile à calculer,– mais, c’est la COMPLEXITE utilisée PAR DEFAUT.mais, c’est la COMPLEXITE utilisée PAR DEFAUT.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 6666

T R IT R I

P A RP A R

F U S I O NF U S I O N

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 6767

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Principe du tri par fusionPrincipe du tri par fusion

• Couper le tableau en deux (mentalement et de Couper le tableau en deux (mentalement et de façon non violente),façon non violente),

• trier récursivement chaque partietrier récursivement chaque partie

• et fusionner les deux parties triées (cf. cours et fusionner les deux parties triées (cf. cours d’Introduction à la programmation).d’Introduction à la programmation).

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 6868

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Principe du tri par fusionPrincipe du tri par fusion

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 6969

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Principe du tri par fusionPrincipe du tri par fusion

Tri récursifTri récursifdes deuxdes deuxmoitiés.moitiés.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 7070

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Principe du tri par fusionPrincipe du tri par fusion

Tri récursifTri récursifdes deuxdes deuxmoitiés.moitiés.

Fusion desFusion desdeux suites.deux suites.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 7171

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Complexité du tri par fusionComplexité du tri par fusion• Soit f(n) la fonction de complexité pour trier n éléments.Soit f(n) la fonction de complexité pour trier n éléments.

• Le découpage se fait en temps constant ou 0( n ), s’il y a Le découpage se fait en temps constant ou 0( n ), s’il y a copie.copie.

• Les deux appels récursifs nécessitent 2 * f( n/2 ).Les deux appels récursifs nécessitent 2 * f( n/2 ).

• La fusion se fait en 0( n ).La fusion se fait en 0( n ).

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 7272

Les tris sur tableauxLes tris sur tableaux----------------------------------------------------------------------------------------------------------------------------------

Complexité du tri par fusionComplexité du tri par fusion• Soit f(n) la fonction de complexité pour trier n éléments.Soit f(n) la fonction de complexité pour trier n éléments.

• Le découpage se fait en temps constant ou 0( n ), s’il y a copie.Le découpage se fait en temps constant ou 0( n ), s’il y a copie.

• Les deux appels récursifs nécessitent 2 * f( n/2 ).Les deux appels récursifs nécessitent 2 * f( n/2 ).

• La fusion se fait en 0( n ).La fusion se fait en 0( n ).

• Donc f(n) = 0(n) + 2 * f(n/2)Donc f(n) = 0(n) + 2 * f(n/2)

= 0(n) + 2 * ( 0(n/2) + 2 * f(n/4) )= 0(n) + 2 * ( 0(n/2) + 2 * f(n/4) )

= 2 * 0(n) + 2^2 * f(n/2^2)= 2 * 0(n) + 2^2 * f(n/2^2)

= 3 * 0(n) + 2^3 * f(n/(2^3))= 3 * 0(n) + 2^3 * f(n/(2^3))

= k * O(n) + 2^k * f(n/(2^k))= k * O(n) + 2^k * f(n/(2^k))

= 0(n * log n) + 2^(log n) * f(n/(2^(log n)))= 0(n * log n) + 2^(log n) * f(n/(2^(log n)))

= 0(n * log n) car f(n/(2^(log n))) = f(1) = 0= 0(n * log n) car f(n/(2^(log n))) = f(1) = 0

Tri en complexité n log n.Tri en complexité n log n.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 7373

R E C H E R C H ER E C H E R C H E

D A N S D E SD A N S D E S

T A B L E A U XT A B L E A U X

T R I E ST R I E S

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 7474

Recherche dans des tableaux triésRecherche dans des tableaux triés----------------------------------------------------------------------------------------------------------------------------------

• On utilise l’ordre pourOn utilise l’ordre pour– anticiper l’abandon dans une recherche linéaire,anticiper l’abandon dans une recherche linéaire,– guider la recherche : recherche par dichotomie.guider la recherche : recherche par dichotomie.

petipetitt

grandgrandmoyenmoyen

00 n-1n-1(n-1)/2(n-1)/2

XX

X < moyenX < moyen

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 7575

Recherche dans des tableaux triésRecherche dans des tableaux triés----------------------------------------------------------------------------------------------------------------------------------

• On utilise l’ordre pourOn utilise l’ordre pour– anticiper l’abandon dans une recherche linéaire,anticiper l’abandon dans une recherche linéaire,– guider la recherche : recherche par dichotomie.guider la recherche : recherche par dichotomie.

petipetitt

grandgrandmoyenmoyen

00 n-1n-1(n-1)/2(n-1)/2

XX

X < moyenX < moyenOui !Oui !

Chercher X dansChercher X dans[ 0 .. (n-1)/2- 1 ][ 0 .. (n-1)/2- 1 ]

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 7676

Recherche dans des tableaux triésRecherche dans des tableaux triés----------------------------------------------------------------------------------------------------------------------------------

• On utilise l’ordre pourOn utilise l’ordre pour– anticiper l’abandon dans une recherche linéaire,anticiper l’abandon dans une recherche linéaire,– guider la recherche : recherche par dichotomie.guider la recherche : recherche par dichotomie.

petipetitt

grandgrandmoyenmoyen

00 n-1n-1(n-1)/2(n-1)/2

XX

X < moyenX < moyenOui !Oui !

Chercher X dansChercher X dans[ 0 .. (n-1)/2- 1 ][ 0 .. (n-1)/2- 1 ]

Non !Non !Chercher X dansChercher X dans[ (n-1)/2 .. n-1 ][ (n-1)/2 .. n-1 ]

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 7777

Recherche dans des tableaux triésRecherche dans des tableaux triés----------------------------------------------------------------------------------------------------------------------------------

Recherche par dichotomie - Recherche par dichotomie - complexitécomplexité

• 1 test -> n/2 éléments.1 test -> n/2 éléments.

• 2 tests -> n/4 éléments.2 tests -> n/4 éléments.

• 0( log n) tests -> 1 élément.0( log n) tests -> 1 élément.

• Est-ce bien lui ? Donc un test en plus.Est-ce bien lui ? Donc un test en plus.

• Il existe des arguments théoriques (théorie de Il existe des arguments théoriques (théorie de l’information) qui montrent que l’on ne peut l’information) qui montrent que l’on ne peut pas faire mieux.pas faire mieux.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 7878

Recherche dans des tableaux triésRecherche dans des tableaux triés----------------------------------------------------------------------------------------------------------------------------------

d = 0;

f = n-1;

While ( d < f )

if ( d == f-1 )

if ( x == t[d] )

f = d;

else

d = f;

else

{m = (d+f)/2;

if ( x < t[m] )

f = m-1;

else

d = m; }

Return ( x == t[d] ); Résultat.Résultat.

Cas général.Cas général.

Intervalle de 2 éléments.Intervalle de 2 éléments.

Initialisation.Initialisation.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 7979

Recherche dans des tableaux triésRecherche dans des tableaux triés----------------------------------------------------------------------------------------------------------------------------------

Di-chotomie - Tri-chotomie - etc.Di-chotomie - Tri-chotomie - etc.

• Di-chotomie :Di-chotomie :– 1 test -> 2 intervalles de n/2 éléments.1 test -> 2 intervalles de n/2 éléments.– Donc, 1 * log_2 (n) + 1 tests.Donc, 1 * log_2 (n) + 1 tests.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 8080

Recherche dans des tableaux triésRecherche dans des tableaux triés----------------------------------------------------------------------------------------------------------------------------------

Di-chotomie - Tri-chotomie - etc.Di-chotomie - Tri-chotomie - etc.

• Di-chotomie :Di-chotomie :– 1 test -> 2 intervalles de n/2 éléments.1 test -> 2 intervalles de n/2 éléments.– Donc, 1 * log_2 (n) + 1 tests.Donc, 1 * log_2 (n) + 1 tests.

• Tri-chotomie :Tri-chotomie :– 2 tests -> 3 intervalles de n/3 éléments.2 tests -> 3 intervalles de n/3 éléments.– Donc, 2 * log_3(n) + 1 tests.Donc, 2 * log_3(n) + 1 tests.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 8181

Recherche dans des tableaux triésRecherche dans des tableaux triés----------------------------------------------------------------------------------------------------------------------------------

Di-chotomie - Tri-chotomie - etc.Di-chotomie - Tri-chotomie - etc.

• Di-chotomie :Di-chotomie :– 1 test -> 2 intervalles de n/2 éléments.1 test -> 2 intervalles de n/2 éléments.– Donc, 1 * log_2 (n) + 1 tests.Donc, 1 * log_2 (n) + 1 tests.

• Tri-chotomie :Tri-chotomie :– 2 tests -> 3 intervalles de n/3 éléments.2 tests -> 3 intervalles de n/3 éléments.– Donc, 2 * log_3(n) + 1 tests.Donc, 2 * log_3(n) + 1 tests.

• K-chotomie :K-chotomie :– k-1 tests -> k intervalles de n/k éléments.k-1 tests -> k intervalles de n/k éléments.– Donc, (k-1) * log_k(n) + 1 tests.Donc, (k-1) * log_k(n) + 1 tests.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 8282

Recherche dans des tableaux triésRecherche dans des tableaux triés----------------------------------------------------------------------------------------------------------------------------------

Di-chotomie - Tri-chotomie - etc.Di-chotomie - Tri-chotomie - etc.

• Di-chotomie :Di-chotomie :– 1 test -> 2 intervalles de n/2 éléments.1 test -> 2 intervalles de n/2 éléments.– Donc, 1 * log_2 (n) + 1 tests.Donc, 1 * log_2 (n) + 1 tests.

• Tri-chotomie :Tri-chotomie :– 2 tests -> 3 intervalles de n/3 éléments.2 tests -> 3 intervalles de n/3 éléments.– Donc, 2 * log_3(n) + 1 tests.Donc, 2 * log_3(n) + 1 tests.

• K-chotomie :K-chotomie :– k-1 tests -> k intervalles de n/k éléments.k-1 tests -> k intervalles de n/k éléments.– Donc, (k-1) * log_k(n) + 1 tests.Donc, (k-1) * log_k(n) + 1 tests.

Optimal si k = 2 ! ! !Optimal si k = 2 ! ! !

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 8383

Soyons critiques !Soyons critiques !----------------------------------------------------------------------------------------------------------------------------------• Tableau trié :Tableau trié :

– Recherche efficace Recherche efficace – Insertions et suppressions pénibles Insertions et suppressions pénibles

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 8484

Soyons critiques !Soyons critiques !----------------------------------------------------------------------------------------------------------------------------------• Tableau trié :Tableau trié :

– Recherche efficace Recherche efficace – Insertions et suppressions pénibles Insertions et suppressions pénibles

• Liste triée :Liste triée :

– Insertions et suppressions efficaces Insertions et suppressions efficaces – Recherche pénible Recherche pénible

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 8585

Soyons critiques !Soyons critiques !----------------------------------------------------------------------------------------------------------------------------------• Tableau trié :Tableau trié :

– Recherche efficace Recherche efficace – Insertions et suppressions pénibles Insertions et suppressions pénibles

• Liste triée :Liste triée :

– Insertions et suppressions efficaces Insertions et suppressions efficaces – Recherche pénible Recherche pénible

• Hashage sur tableaux & arbres de recherche équilibrés :Hashage sur tableaux & arbres de recherche équilibrés :

– Toutes les opérations sont efficaces Toutes les opérations sont efficaces

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 8686

H A S H A G EH A S H A G E

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 8787

HashageHashage----------------------------------------------------------------------------------------------------------------------------------

H : Eléments à stocker Indices d’un H : Eléments à stocker Indices d’un tableautableau

INSEE(Marc Gengler) 1.61.01 …INSEE(Marc Gengler) 1.61.01 …

1.61.01 …1.61.01 … MGMG

Attention, certaines casesAttention, certaines casesdu tableau contiennentdu tableau contiennentdes valeurs alors quedes valeurs alors qued’autres sont vides.d’autres sont vides.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 8888

HashageHashage----------------------------------------------------------------------------------------------------------------------------------

• Parfait, si H est injectiveParfait, si H est injective

– Si H(x) = H(y) alors x = y.Si H(x) = H(y) alors x = y.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 8989

HashageHashage----------------------------------------------------------------------------------------------------------------------------------

• Parfait, si H est injectiveParfait, si H est injective

– Si H(x) = H(y) alors x = y.Si H(x) = H(y) alors x = y.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 9090

HashageHashage----------------------------------------------------------------------------------------------------------------------------------

• Parfait, si H est injectiveParfait, si H est injective

– Si H(x) = H(y) alors x = y.Si H(x) = H(y) alors x = y.

• Souvent, H ne l’est pas :Souvent, H ne l’est pas :

– x = y mais H(x) = H(y) - il y a donc collision !x = y mais H(x) = H(y) - il y a donc collision !

– Il y a différentes manières de gérer les collisions.Il y a différentes manières de gérer les collisions.

/

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 9191

HashageHashage----------------------------------------------------------------------------------------------------------------------------------

• Résolution locale des collisions :Résolution locale des collisions :

– Petite recherche séquentielle dans une liste chainée.Petite recherche séquentielle dans une liste chainée.– Prendre la première case libre en séquence dans le tableau.Prendre la première case libre en séquence dans le tableau.– Et si on peut supprimer des éléments ????? Des éléments Et si on peut supprimer des éléments ????? Des éléments

qui étaient responsables d’une collision viennent à qui étaient responsables d’une collision viennent à disparaître !disparaître !

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 9292

HashageHashage----------------------------------------------------------------------------------------------------------------------------------

• Résolution locale des collisions :Résolution locale des collisions :

– Petite recherche séquentielle dans une liste chainée.Petite recherche séquentielle dans une liste chainée.– Prendre la première case libre en séquence dans le tableau.Prendre la première case libre en séquence dans le tableau.– Et si on peut supprimer des éléments ????? Des éléments Et si on peut supprimer des éléments ????? Des éléments

qui étaient responsables d’une collision viennent à qui étaient responsables d’une collision viennent à disparaître !disparaître !

• Re-hashage :Re-hashage :

– Si H(x) est déjà occupé on calcule H’(x) ou H(x+Si H(x) est déjà occupé on calcule H’(x) ou H(x+), etc. ), etc. jusqu’à trouver une place.jusqu’à trouver une place.

– Et si on peut supprimer des éléments ?????Et si on peut supprimer des éléments ?????

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 9393

HashageHashage----------------------------------------------------------------------------------------------------------------------------------

• Résolution locale des collisions :Résolution locale des collisions :

– Petite recherche séquentielle dans une liste chainée.Petite recherche séquentielle dans une liste chainée.– Prendre la première case libre en séquence dans le tableau.Prendre la première case libre en séquence dans le tableau.– Et si on peut supprimer des éléments ????? Des éléments Et si on peut supprimer des éléments ????? Des éléments

qui étaient responsables d’une collision viennent à qui étaient responsables d’une collision viennent à disparaître !disparaître !

• Re-hashage :Re-hashage :

– Si H(x) est déjà occupé on calcule H’(x) ou H(x+Si H(x) est déjà occupé on calcule H’(x) ou H(x+), etc. ), etc. jusqu’à trouver une place.jusqu’à trouver une place.

– Et si on peut supprimer des éléments ?????Et si on peut supprimer des éléments ?????

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 9494

HashageHashage----------------------------------------------------------------------------------------------------------------------------------

XX

XX //

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 9595

HashageHashage----------------------------------------------------------------------------------------------------------------------------------

XX

XX

YY

YY //

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 9696

HashageHashage----------------------------------------------------------------------------------------------------------------------------------

• Faits :Faits :

– La fonction de hashage doit être « uniforme » : pour des La fonction de hashage doit être « uniforme » : pour des choix au hasard de données d , les indices H( d ) doivent choix au hasard de données d , les indices H( d ) doivent être répartis le plus uniformément possible.être répartis le plus uniformément possible.

– A ce moment, le taux de remplissage donne la proportion A ce moment, le taux de remplissage donne la proportion des collisions.des collisions.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 9797

HashageHashage----------------------------------------------------------------------------------------------------------------------------------

• Faits :Faits :

– La fonction de hashage doit être « uniforme » : pour des La fonction de hashage doit être « uniforme » : pour des choix au hasard de données d , les indices H( d ) doivent choix au hasard de données d , les indices H( d ) doivent être répartis le plus uniformément possible.être répartis le plus uniformément possible.

– A ce moment, le taux de remplissage donne la proportion A ce moment, le taux de remplissage donne la proportion des collisions.des collisions.

• Coût :Coût :

– Coût du calcul de H multiplié par le nombre moyen de Coût du calcul de H multiplié par le nombre moyen de collisions (re-hashage).collisions (re-hashage).

– Coût du calcul de H plus le coût de la recherche dans la Coût du calcul de H plus le coût de la recherche dans la liste chainée.liste chainée.

– ……

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 9898

SynthèseSynthèse----------------------------------------------------------------------------------------------------------------------------------

• Quelques tris sur tableaux.Quelques tris sur tableaux.

• Recherche dans un tableau trié.Recherche dans un tableau trié.

• Limites des tableaux et des listes triés.Limites des tableaux et des listes triés.

• Hashage comme solution alternative.Hashage comme solution alternative.

• A venir : d’autres alternatives comme lesA venir : d’autres alternatives comme les

arbres de recherche équilibrés.arbres de recherche équilibrés.

6 novembre 20066 novembre 2006 Cours d'algorithmique 1 - IntranetCours d'algorithmique 1 - Intranet 9999

m E r C i e Tm E r C i e Tb O n N e J o U r N é b O n N e J o U r N é

E ! ! !E ! ! !

n ‘ O u B l I e Z p A s D en ‘ O u B l I e Z p A s D ep R é P a R e R v O sp R é P a R e R v O s

T D ! ! !T D ! ! !