Cours d algorithmique
This presentation is the property of its rightful owner.
Sponsored Links
1 / 42

Cours d’Algorithmique PowerPoint PPT Presentation


  • 83 Views
  • Uploaded on
  • Presentation posted in: General

Cours d’Algorithmique. Alexandra Bac - Henry Kanoui - Alain Samuel. Marc Gengler [email protected] 24h de cours 24h de TD des devoirs un projet … et un examen. Les grandes lignes du cours. Trier et chercher Listes et arbres Le back-track Arbres équilibrés

Download Presentation

Cours d’Algorithmique

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Cours d algorithmique

Cours d’Algorithmique

Alexandra Bac - Henry Kanoui - Alain Samuel

Marc Gengler

[email protected]

24h de cours

24h de TD

des devoirs

un projet

… et un examen

Cours d'algorithmique 1 - Intranet


Cours d algorithmique

Les grandes lignes du cours

  • Trier et chercher

  • Listes et arbres

  • Le back-track

  • Arbres équilibrés

  • Récursivité et induction sur la structure

  • Divide and conquer

  • Minimax

  • Dérécursion

  • Divers problèmes particuliers

  • Logique de Hoare

  • Programmation dynamique

  • Complexité et calculabilité

Cours d'algorithmique 1 - Intranet


Bibliographie

Bibliographie

  • Tout ce qui contient

    • algorithmes, algorithms.

  • Internet

    • souvent, c’est très (trop) simplifié,

    • et pas toujours correct.

  • Mes choix

    • Introduction to Algorithms, Leiserson et al.

    • Algorithms, Sedgewick.

    • Fundamental Algorithms, Knuth.

    • des anciens cours ;-)

  • D’autres choix

    • Introduction à l’algorithmique, Leiserson et al.

      chez Dunod.

    • Initiation à l’algorithmique et aux structures de données, Courtin et Kowarski.

Cours d'algorithmique 1 - Intranet


Al khwarizmi

Al Khwarizmi

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

    vers 780-850.

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

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

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

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

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

Cours d'algorithmique 1 - Intranet


Al khwarizmi1

Al Khwarizmi

16 + X^2 + 8 * X = 33 + 16

( X + 4 )^2 = 7^2

4

2 * X

X^2

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux

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

Les hypothèses :

  • Tableau d’entrées 0 à n-1.

  • Entiers naturels, mais n’importe quel ensemble ordonné peut convenir.

  • Les répétitions sont possibles.

Le but :

Nous trions pour

accélérer les recherches !

  • Ordonner le tableau par valeurs non décroissantes.

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux1

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

Quelle relation d’ordre ?

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

  • Je peux trier des personnes :

    • d’après l’âge,

    • d’après le poids,

    • d’après la taille,

    • d’après l’ordre lexicographique des patronymes,

    • . . .

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux2

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

Situation initiale

Valeurs

Pas de relation entre

les indices et les valeurs !

n-1

0 1 2 3 …

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux3

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

Situation finale

Valeurs

Une relation claire entre

les indices et les valeurs !

n-1

0 1 2 3 …

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux4

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

Tri par échange --- situation intermédiaire

Valeurs

Non triées et

plus grandes

Triées

i-1

n-1

0 1 2 3 …

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux5

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

Tri par échange - suite

Les hypothèses :

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

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

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

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

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

  • Echanger les éléments i et j.

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux6

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

Tri par échange --- situation intermédiaire

Valeurs

Non triées et

plus grandes

Triées

<- échange ->

j

n-1

0 1 2 3 …

i

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux7

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

Tri par échange --- situation intermédiaire

Valeurs

Non triées et

plus grandes

Triées

j

n-1

0 1 2 3 …

i

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux8

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

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

  • Nous avions une certaine situation sur l’intervalle [ 0 .. i-1 ] :

    • les éléments jusqu’à i-1 sont triés,

    • ceux qui suivent sont plus grands, mais pas triés.

  • Nous retrouvons la même situation sur l’intervalle [ 0 .. i ] :

    • les éléments jusqu’à i sont triés,

    • ceux qui suivent sont plus grands, mais pas triés.

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

un invariant

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux9

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

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

}

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux10

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

Tri par échange --- la complexité

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

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

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

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

i=0..n-2

Tri en complexité quadratique.

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux11

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

Tri par insertion --- situation intermédiaire

Valeurs

Non triées et

quelconques

Triées

i-1

n-1

0 1 2 3 …

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux12

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

Tri par insertion - suite

Les hypothèses :

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

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

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

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

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 petite que certaines précédentes : l’insérer plus à gauche en décalant d’autres entrées.

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux13

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

Tri par insertion --- situation intermédiaire

Valeurs

Non triées et

quelconques

Plus grande :

Rien à faire !

Triées

i-1

n-1

0 1 2 3 …

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux14

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

Tri par insertion --- situation intermédiaire

Valeurs

Non triées et

quelconques

Triées

i-1

n-1

0 1 2 3 …

Plus petit :

L’insérer à gauche.

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux15

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

Tri par insertion --- situation intermédiaire

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

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

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

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

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux16

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

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

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux17

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

Tri par insertion --- la complexité

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

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

  • Le nombre d’échanges peut donc atteindre :

S i = 0 (n^2)

i=1..n-1

Tri en complexité quadratique.

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux18

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

Tri bulle

Valeurs

Situation

anormale :

Une bulle

Situation

normale

n-1

0 1 2 3 …

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux19

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

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

Valeurs

La bulle

a disparu

par échange

Situation

normale

n-1

0 1 2 3 …

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux20

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

Tri bulle : évolution des bulles

Valeurs

Régions qui peuvent

être ignorées lors

du prochain passage.

n-1

0 1 2 3 …

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux21

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

Tri bulle - principe des algorithmes

L’idée :

  • Tant qu’il y a des bulles,

  • on en choisit une et on la fait monter.

De nombreuses optimisations :

  • 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 peut y avoir de bulle avant ( i-1 , i ) au passage courant.

  • Faire alternativement monter et descendre des bulles.

  • … et puis d’autres trucs !

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux22

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

Tri bulle - complexité

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

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

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

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux23

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

Différentes notions de complexité

  • Complexité du meilleur cas :

    • inintéressante, car ce n’est pas le cas typique.

  • Complexité du cas moyen :

    • intéressante, mais difficile à établir,

    • est-ce que mes instances du problème sont dans la moyenne ?

  • Complexité du pire cas :

    • donne une limite supérieure pour le nombre d’opérations,

    • celle-ci peut être atypique,

    • souvent assez facile à calculer,

    • mais, c’est la COMPLEXITE utilisée PAR DEFAUT.

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux24

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

Principe du tri par fusion

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

  • trier récursivement chaque partie

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

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux25

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

Principe du tri par fusion

Tri récursif

des deux

moitiés.

Fusion des

deux suites.

Cours d'algorithmique 1 - Intranet


Les tris sur tableaux26

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

Complexité du tri par fusion

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

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

  • La fusion se fait en 0( n ).

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

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

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

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

    = 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) car f(n/(2^(log n))) = f(1) = 0

Tri en complexité n log n.

Cours d'algorithmique 1 - Intranet


Recherche dans des tableaux tri s

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

  • On utilise l’ordre pour

    • anticiper l’abandon dans une recherche linéaire,

    • guider la recherche : recherche par dichotomie.

(n-1)/2

n-1

0

petit

moyen

grand

X < moyen

Non !

Chercher X dans

[ (n-1)/2 .. n-1 ]

Oui !

Chercher X dans

[ 0 .. (n-1)/2- 1 ]

X

Cours d'algorithmique 1 - Intranet


Recherche dans des tableaux tri s1

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

Recherche par dichotomie - complexité

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

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

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

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

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

Cours d'algorithmique 1 - Intranet


Recherche dans des tableaux tri s2

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

Initialisation.

Intervalle de 2 éléments.

Cas général.

Résultat.

Cours d'algorithmique 1 - Intranet


Recherche dans des tableaux tri s3

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

Di-chotomie - Tri-chotomie - etc.

  • Di-chotomie :

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

    • Donc, 1 * log_2 (n) + 1 tests.

  • Tri-chotomie :

    • 2 tests -> 3 intervalles de n/3 éléments.

    • Donc, 2 * log_3(n) + 1 tests.

  • K-chotomie :

    • k-1 tests -> k intervalles de n/k éléments.

    • Donc, (k-1) * log_k(n) + 1 tests.

Optimal si k = 2 ! ! !

Cours d'algorithmique 1 - Intranet


Soyons critiques

Soyons critiques !-----------------------------------------------------------------

  • Tableau trié :

    • Recherche efficace 

    • Insertions et suppressions pénibles 

  • Liste triée :

    • Insertions et suppressions efficaces 

    • Recherche pénible 

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

    • Toutes les opérations sont efficaces  

Cours d'algorithmique 1 - Intranet


Hashage

Hashage-----------------------------------------------------------------

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

INSEE(Marc Gengler) 1.61.01 …

Attention, certaines cases

du tableau contiennent

des valeurs alors que

d’autres sont vides.

1.61.01 …

MG

Cours d'algorithmique 1 - Intranet


Hashage1

  • Parfait, si H est injective

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

  • Souvent, H ne l’est pas :

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

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

/

Hashage-----------------------------------------------------------------

Une seule valeur

par entrée

du tableau ! ! !

Cours d'algorithmique 1 - Intranet


Hashage2

Hashage-----------------------------------------------------------------

  • Résolution locale des collisions :

    • Petite recherche séquentielle dans une liste chainée.

    • Prendre la première case libre en séquence dans le tableau.

    • Et si on peut supprimer des éléments ????? Des éléments qui étaient responsables d’une collision viennent à disparaître !

  • Re-hashage :

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

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

La solution la plus fréquente :

chainage des collisions !

Cours d'algorithmique 1 - Intranet


Hashage3

Hashage-----------------------------------------------------------------

X

X

Y

/

Y

Cours d'algorithmique 1 - Intranet


Hashage4

Hashage-----------------------------------------------------------------

  • Faits :

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

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

  • Coût :

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

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

Cours d'algorithmique 1 - Intranet


  • Login