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

99
Cours d'algorithmique 1 - Cours d'algorithmique 1 - Intranet Intranet 1 6 novembre 2006 6 novembre 2006 Cours d’Algorithmique Cours d’Algorithmique Marc Gengler Marc Gengler [email protected] [email protected] mrs.fr mrs.fr Alexandra Bac - Henry Kanoui - Alain Alexandra Bac - Henry Kanoui - Alain Samuel Samuel 24h de cours 24h de cours 24h de TD 24h de TD des devoirs des devoirs un projet un projet et un et un examen examen

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

Page 1: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Cours d’AlgorithmiqueCours d’AlgorithmiqueMarc GenglerMarc Gengler

[email protected]@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

Page 2: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 3: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 4: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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 ;-)

Page 5: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 6: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 7: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 8: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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 ». ».

Page 9: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 10: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 11: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 12: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 13: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 14: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 15: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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 ?

Page 16: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 17: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 18: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 19: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 20: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 21: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 22: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 23: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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 ::

Page 24: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 25: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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 ->>

Page 26: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 27: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 28: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 29: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 30: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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;

}

Page 31: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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 !!

Page 32: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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 !!

Page 33: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 34: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 35: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 36: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 37: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 38: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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 ::

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

Page 39: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

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

Page 40: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 41: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 42: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 43: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 44: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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 ??????????????????

Page 45: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 46: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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--; } }

Page 47: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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 …

Page 48: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 49: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 50: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 51: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 52: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 53: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 54: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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 :

Page 55: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 56: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 57: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 58: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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 !

Page 59: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 60: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 61: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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).

Page 62: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 63: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 64: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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 ?

Page 65: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 66: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 67: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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).

Page 68: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 69: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 70: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 71: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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 ).

Page 72: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 73: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 74: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 75: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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 ]

Page 76: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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 ]

Page 77: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 78: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 79: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 80: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 81: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 82: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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 ! ! !

Page 83: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 84: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 85: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 86: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

Page 87: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 88: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 89: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 90: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

/

Page 91: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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 !

Page 92: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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 ?????

Page 93: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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 ?????

Page 94: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

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

XX

XX //

Page 95: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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

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

XX

XX

YY

YY //

Page 96: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 97: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

– ……

Page 98: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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.

Page 99: Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Marc.Gengler@esil.univ-mrs.fr Alexandra Bac - Henry Kanoui - Alain.

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 ! ! !