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

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

Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Alexandra Bac - Henry Kanoui - Alain.

Présentations similaires


Présentation au sujet: "Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Alexandra Bac - Henry Kanoui - Alain."— Transcription de la présentation:

1 Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Alexandra Bac - Henry Kanoui - Alain Samuel 24h de cours 24h de TD des devoirs un projet … et un examen

2 6 novembre 2006Cours d'algorithmique 1 - Intranet2 Trier et chercher Trier et chercher Listes et arbres Listes et arbres Le back-track Le back-track Arbres équilibrés Arbres équilibrés Récursivité et induction sur la structure Récursivité et induction sur la structure Divide and conquer Divide and conquer Minimax Minimax Dérécursion Dérécursion Divers problèmes particuliers Divers problèmes particuliers Logique de Hoare Logique de Hoare Programmation dynamique Programmation dynamique Complexité et calculabilité Complexité et calculabilité Les grandes lignes du cours

3 6 novembre 2006Cours d'algorithmique 1 - Intranet3 Bibliographie Tout ce qui contient Tout ce qui contient – algorithmes, algorithms. Internet Internet – souvent, cest très (trop) simplifié, – et pas toujours correct.

4 6 novembre 2006Cours d'algorithmique 1 - Intranet4 Bibliographie Tout ce qui contient Tout ce qui contient – algorithmes, algorithms. Internet Internet – souvent, cest très (trop) simplifié, – et pas toujours correct. Mes choix Mes choix – Introduction to Algorithms, Leiserson et al. – Algorithms, Sedgewick. – Fundamental Algorithms, Knuth. – des anciens cours ;-)

5 6 novembre 2006Cours d'algorithmique 1 - Intranet5 Bibliographie Tout ce qui contient Tout ce qui contient – algorithmes, algorithms. Internet Internet – souvent, cest très (trop) simplifié, – et pas toujours correct. Dautres choix Dautres choix – Introduction à lalgorithmique, Leiserson et al. chez Dunod. chez Dunod. – Initiation à lalgorithmique et aux structures de données, Courtin et Kowarski.

6 6 novembre 2006Cours d'algorithmique 1 - Intranet6 L O R I G I N E D U M O T A L G O R I T H M E

7 6 novembre 2006Cours d'algorithmique 1 - Intranet7 Al Khwarizmi Célèbre mathématicien à Bagdad, Célèbre mathématicien à Bagdad, vers vers

8 6 novembre 2006Cours d'algorithmique 1 - Intranet8 Al Khwarizmi Célèbre mathématicien à Bagdad, Célèbre mathématicien à Bagdad, vers vers « 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é. « 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 12 e siècle par Gherardo di Cremona sous le titre « Dixit Algorismi ». Traduit en latin au 12 e siècle par Gherardo di Cremona sous le titre « Dixit Algorismi ».

9 6 novembre 2006Cours d'algorithmique 1 - Intranet9 Al Khwarizmi Célèbre mathématicien à Bagdad, Célèbre mathématicien à Bagdad, vers vers « 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é. « 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 12 e siècle par Gherardo di Cremona sous le titre « Dixit Algorismi ». Traduit en latin au 12 e 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. 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 ://trucsmaths.free.fr/alkhwarizmi.htm

10 6 novembre 2006Cours d'algorithmique 1 - Intranet10 Al Khwarizmi X^2 + 8 * x = 33 X^2 2 * X

11 6 novembre 2006Cours d'algorithmique 1 - Intranet11 Al Khwarizmi 16 + X^2 + 8 * X = X^2 2 * X 4 ( X + 4 )^2 = 7^2

12 6 novembre 2006Cours d'algorithmique 1 - Intranet12 D I V E R S A L G O R I T H M E S D E T R I

13 6 novembre 2006Cours d'algorithmique 1 - Intranet13 Les tris sur tableaux Tableau dentrées 0 à n-1. Tableau dentrées 0 à n-1. Entiers naturels, mais nimporte quel ensemble ordonné peut convenir. Entiers naturels, mais nimporte quel ensemble ordonné peut convenir. Les répétitions sont possibles. Les répétitions sont possibles. Les hypothèses : Le but : Ordonner le tableau par valeurs non décroissantes. Ordonner le tableau par valeurs non décroissantes.

14 6 novembre 2006Cours d'algorithmique 1 - Intranet14 Les tris sur tableaux Tableau dentrées 0 à n-1. Tableau dentrées 0 à n-1. Entiers naturels, mais nimporte quel ensemble ordonné peut convenir. Entiers naturels, mais nimporte quel ensemble ordonné peut convenir. Les répétitions sont possibles. Les répétitions sont possibles. Les hypothèses : Le but : Ordonner le tableau par valeurs non décroissantes. Ordonner le tableau par valeurs non décroissantes.

15 6 novembre 2006Cours d'algorithmique 1 - Intranet15 Les tris sur tableaux En général, lordre est imposé par le monde extérieur. En général, lordre est imposé par le monde extérieur. Je peux trier des personnes : Je peux trier des personnes : – daprès lâge, – daprès le poids, – daprès la taille, – daprès lordre lexicographique des patronymes, –... Quelle relation dordre ?

16 6 novembre 2006Cours d'algorithmique 1 - Intranet16 Les tris sur tableaux Situation initiale Valeurs … n-1

17 6 novembre 2006Cours d'algorithmique 1 - Intranet17 Les tris sur tableaux Situation initiale Valeurs … n-1

18 6 novembre 2006Cours d'algorithmique 1 - Intranet18 Les tris sur tableaux Situation finale Valeurs … n-1

19 6 novembre 2006Cours d'algorithmique 1 - Intranet19 Les tris sur tableaux Situation finale Valeurs … n-1

20 6 novembre 2006Cours d'algorithmique 1 - Intranet20 Les tris sur tableaux Les tris que nous 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. Dautres tris en TD.

21 6 novembre 2006Cours d'algorithmique 1 - Intranet21 T R I P A R E C H A N G E S

22 6 novembre 2006Cours d'algorithmique 1 - Intranet22 Les tris sur tableaux Tri par échange --- situation intermédiaire Valeurs … n-1 Triées Non triées et plus grandes i-1

23 6 novembre 2006Cours d'algorithmique 1 - Intranet23 Les tris sur tableaux Tri 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 lindice i ne sont pas triées. Les entrées à partir de lindice i ne sont pas triées. Les hypothèses :

24 6 novembre 2006Cours d'algorithmique 1 - Intranet24 Les tris sur tableaux Tri 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 lindice i ne sont pas triées. Les entrées à partir de lindice i ne sont pas triées. Les hypothèses : A faire pour mettre en place lentrée i : Chercher lindice j du minimum à partir de i. Chercher lindice j du minimum à partir de i. Echanger les éléments i et j. Echanger les éléments i et j.

25 6 novembre 2006Cours d'algorithmique 1 - Intranet25 Les tris sur tableaux Tri par échange --- situation intermédiaire Valeurs … n-1 Triées Non triées et plus grandes i j

26 6 novembre 2006Cours d'algorithmique 1 - Intranet26 Les tris sur tableaux Tri par échange --- situation intermédiaire Valeurs … n-1 Triées Non triées et plus grandes i j

27 6 novembre 2006Cours d'algorithmique 1 - Intranet27 Les tris sur tableaux Tri par échange --- propriété invariante Nous avions une certaine situation sur lintervalle [ 0.. i-1 ] : Nous avions une certaine situation sur lintervalle [ 0.. i-1 ] : – les éléments jusquà i-1 sont triés, – ceux qui suivent sont plus grands, mais pas triés.

28 6 novembre 2006Cours d'algorithmique 1 - Intranet28 Les tris sur tableaux Tri par échange --- propriété invariante Nous avions une certaine situation sur lintervalle [ 0.. i-1 ] : Nous avions une certaine situation sur lintervalle [ 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 lintervalle [ 0.. i ] : Nous retrouvons la même situation sur lintervalle [ 0.. i ] : – les éléments jusquà i sont triés, – ceux qui suivent sont plus grands, mais pas triés.

29 6 novembre 2006Cours d'algorithmique 1 - Intranet29 Les tris sur tableaux Tri par échange --- propriété invariante Nous avions une certaine situation sur lintervalle [ 0.. i-1 ] : Nous avions une certaine situation sur lintervalle [ 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 lintervalle [ 0.. i ] : Nous retrouvons la même situation sur lintervalle [ 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 lappelle Cette propriété est donc invariante avec i, on lappelle

30 6 novembre 2006Cours d'algorithmique 1 - Intranet30 Les tris sur tableaux Tri par échange --- le code for ( i=0 ; i

31 6 novembre 2006Cours d'algorithmique 1 - Intranet31 Les tris sur tableaux Tri par échange --- le code for ( i=0 ; i

32 6 novembre 2006Cours d'algorithmique 1 - Intranet32 Les tris sur tableaux Tri par échange --- le code for ( i=0 ; i

33 6 novembre 2006Cours d'algorithmique 1 - Intranet33 Les tris sur tableaux Tri par échange --- le code for ( i=0 ; i

34 6 novembre 2006Cours d'algorithmique 1 - Intranet34 Les tris sur tableaux Tri par échange --- le code for ( i=0 ; i

35 6 novembre 2006Cours d'algorithmique 1 - Intranet35 Les tris sur tableaux 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^2) (n-i) = 0 (n^2)i=0..n-2 Tri en complexité quadratique.

36 6 novembre 2006Cours d'algorithmique 1 - Intranet36 T R I P A R I N S E R T I O N

37 6 novembre 2006Cours d'algorithmique 1 - Intranet37 Les tris sur tableaux Tri par insertion --- situation intermédiaire Valeurs … n-1 Triées Non triées et quelconques i-1

38 6 novembre 2006Cours d'algorithmique 1 - Intranet38 Les tris sur tableaux Tri 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 lindice i ne sont pas triées. Les entrées à partir de lindice i ne sont pas triées. Les hypothèses : ////////////////////////////////////////////

39 6 novembre 2006Cours d'algorithmique 1 - Intranet39 Les tris sur tableaux Tri 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 lindice i ne sont pas triées. Les entrées à partir de lindice i ne sont pas triées. Les hypothèses : A faire pour mettre en place lentré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 : linsérer plus à gauche en décalant dautres entrées. Si elle est plus petite que certaines précédentes : linsérer plus à gauche en décalant dautres entrées. ////////////////////////////////////////////

40 6 novembre 2006Cours d'algorithmique 1 - Intranet40 Les tris sur tableaux Tri par insertion --- situation intermédiaire Valeurs … n-1 Triées i-1 Plus grande : Rien à faire ! Non triées et quelconques

41 6 novembre 2006Cours d'algorithmique 1 - Intranet41 Les tris sur tableaux Tri par insertion --- situation intermédiaire Valeurs … n-1 Triées i-1 Plus grande : Rien à faire ! Non triées et quelconques

42 6 novembre 2006Cours d'algorithmique 1 - Intranet42 Les tris sur tableaux Tri par insertion --- situation intermédiaire Valeurs … n-1 Triées i-1 Non triées et quelconques Plus petit : Linsérer à gauche.

43 6 novembre 2006Cours d'algorithmique 1 - Intranet43 Les tris sur tableaux Tri par insertion --- situation intermédiaire Valeurs … n-1 Triées i Non triées et quelconques Plus petit : Linsérer à gauche.

44 6 novembre 2006Cours d'algorithmique 1 - Intranet44 Les tris sur tableaux Tri par insertion --- situation intermédiaire Vous avez vu quil y a à nouveau un INVARIANT ? Vous avez vu quil y a à nouveau un INVARIANT ? Lequel est-ce ?????????????????? Lequel est-ce ??????????????????

45 6 novembre 2006Cours d'algorithmique 1 - Intranet45 Les tris sur tableaux Tri par insertion --- situation intermédiaire Vous avez vu quil y a à nouveau un INVARIANT ? Vous avez vu quil 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 rapport particulier (ni plus grands, ni plus petits) aux premiers. les autres sont dans le désordre et sans rapport particulier (ni plus grands, ni plus petits) aux premiers.

46 6 novembre 2006Cours d'algorithmique 1 - Intranet46 Les tris sur tableaux Tri par insertion --- le code for ( i=1 ; i0 && cont ) {if ( t[j] < t[j-1] ) echange(t, j-1, j); else cont = 0; j--; } }

47 6 novembre 2006Cours d'algorithmique 1 - Intranet47 Les tris sur tableaux Tri par insertion --- le code for ( i=1 ; i0 && cont ) {if ( t[j] < t[j-1] ) echange(t, j-1, j); else cont = 0; j--; } } Pour tous, sauf le premier qui est forcément à sa place …

48 6 novembre 2006Cours d'algorithmique 1 - Intranet48 Les tris sur tableaux Tri par insertion --- le code for ( i=1 ; i0 && cont ) {if ( t[j] < t[j-1] ) echange(t, j-1, j); else cont = 0; j--; } } On échange aussi longtemps que le prédécesseur existe et quil est plus grand que lélément en question.

49 6 novembre 2006Cours d'algorithmique 1 - Intranet49 Les tris sur tableaux Tri par insertion --- le code for ( i=1 ; i0 && cont ) {if ( t[j] < t[j-1] ) echange(t, j-1, j); else cont = 0; j--; } } On arrête les échanges dès que le prédécesseur est au plus aussi grand que lélément en question.

50 6 novembre 2006Cours d'algorithmique 1 - Intranet50 Les tris sur tableaux 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 (n^2) i = 0 (n^2)i=1..n-1 Tri en complexité quadratique.

51 6 novembre 2006Cours d'algorithmique 1 - Intranet51 T R I P A R B U L L E S

52 6 novembre 2006Cours d'algorithmique 1 - Intranet52 Les tris sur tableaux Tri bulle Valeurs … n-1 Situationnormale Situation anormale : Une bulle

53 6 novembre 2006Cours d'algorithmique 1 - Intranet53 Les tris sur tableaux Tri bulle : on échange lordre dans la bulle Valeurs … n-1 Situationnormale La bulle a disparu par échange

54 6 novembre 2006Cours d'algorithmique 1 - Intranet54 Les tris sur tableaux Tri bulle - principe des algorithmes Tant quil y a des bulles, Tant quil y a des bulles, on en choisit une et on la fait monter. on en choisit une et on la fait monter. Lidée :

55 6 novembre 2006Cours d'algorithmique 1 - Intranet55 Les tris sur tableaux Tri bulle : évolution des bulles Valeurs … n-1

56 6 novembre 2006Cours d'algorithmique 1 - Intranet56 Les tris sur tableaux Tri bulle - principe des algorithmes Tant quil y a des bulles, Tant quil y a des bulles, on en choisit une et on la fait monter. on en choisit une et on la fait monter. Lidée : 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 peut y avoir de bulle avant ( i-1, i ) au passage courant. 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.

57 6 novembre 2006Cours d'algorithmique 1 - Intranet57 Les tris sur tableaux Tri bulle : évolution des bulles Valeurs … n-1 Régions qui peuvent être ignorées lors du prochain passage.

58 6 novembre 2006Cours d'algorithmique 1 - Intranet58 Les tris sur tableaux Tri bulle - principe des algorithmes Tant quil y a des bulles, Tant quil y a des bulles, on en choisit une et on la fait monter. on en choisit une et on la fait monter. Lidée : 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 peut y avoir de bulle avant ( i-1, i ) au passage courant. 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. Faire alternativement monter et descendre des bulles. … et puis dautres trucs ! … et puis dautres trucs !

59 6 novembre 2006Cours d'algorithmique 1 - Intranet59 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. Le tri bulle a une complexité quadratique, car il existe des instances pour lesquels il faut 0 (n^2) échanges.

60 6 novembre 2006Cours d'algorithmique 1 - Intranet60 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. 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. Par contre, pour de nombreuses instances, le nombre des échanges est bien plus petit.

61 6 novembre 2006Cours d'algorithmique 1 - Intranet61 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. 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. Par contre, pour de nombreuses instances, le nombre des échanges est bien plus petit. Le tri bulle est bien adapté, comme dautres tris, pour rétablir lordre dans un tableau presque trié (léger désordre produit par quelques insertions déléments par exemple). Le tri bulle est bien adapté, comme dautres tris, pour rétablir lordre dans un tableau presque trié (léger désordre produit par quelques insertions déléments par exemple).

62 6 novembre 2006Cours d'algorithmique 1 - Intranet62 D I F F E R E N T E S N O T I O N S D E C O M P L E X I T E

63 6 novembre 2006Cours d'algorithmique 1 - Intranet63 Les tris sur tableaux Différentes notions de complexité Complexité du meilleur cas : Complexité du meilleur cas : – inintéressante, car ce nest pas le cas typique.

64 6 novembre 2006Cours d'algorithmique 1 - Intranet64 Les tris sur tableaux Différentes notions de complexité Complexité du meilleur cas : Complexité du meilleur cas : – inintéressante, car ce nest pas le cas typique. Complexité du cas moyen : Complexité du cas moyen : – intéressante, mais difficile à établir, – est-ce que mes instances du problème sont dans la moyenne ?

65 6 novembre 2006Cours d'algorithmique 1 - Intranet65 Les tris sur tableaux Différentes notions de complexité Complexité du meilleur cas : Complexité du meilleur cas : – inintéressante, car ce nest pas le cas typique. Complexité du cas moyen : 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 : Complexité du pire cas : – donne une limite supérieure pour le nombre dopérations, – celle-ci peut être atypique, – souvent assez facile à calculer, – mais, cest la COMPLEXITE utilisée PAR DEFAUT.

66 6 novembre 2006Cours d'algorithmique 1 - Intranet66 T R I P A R F U S I O N

67 6 novembre 2006Cours d'algorithmique 1 - Intranet67 Les tris sur tableaux Principe du tri par fusion Couper le tableau en deux (mentalement et de façon non violente), Couper le tableau en deux (mentalement et de façon non violente), trier récursivement chaque partie trier récursivement chaque partie et fusionner les deux parties triées (cf. cours dIntroduction à la programmation). et fusionner les deux parties triées (cf. cours dIntroduction à la programmation).

68 6 novembre 2006Cours d'algorithmique 1 - Intranet68 Les tris sur tableaux Principe du tri par fusion

69 6 novembre 2006Cours d'algorithmique 1 - Intranet69 Les tris sur tableaux Principe du tri par fusion Tri récursif des deux moitiés.

70 6 novembre 2006Cours d'algorithmique 1 - Intranet70 Les tris sur tableaux Principe du tri par fusion Tri récursif des deux moitiés. Fusion des deux suites.

71 6 novembre 2006Cours d'algorithmique 1 - Intranet71 Les tris sur tableaux Complexité 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 ), sil y a copie. Le découpage se fait en temps constant ou 0( n ), sil 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 ).

72 6 novembre 2006Cours d'algorithmique 1 - Intranet72 Les tris sur tableaux Complexité 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 ), sil y a copie. Le découpage se fait en temps constant ou 0( n ), sil 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.

73 6 novembre 2006Cours d'algorithmique 1 - Intranet73 R E C H E R C H E D A N S D E S T A B L E A U X T R I E S

74 6 novembre 2006Cours d'algorithmique 1 - Intranet74 Recherche dans des tableaux triés On utilise lordre pour On utilise lordre pour – anticiper labandon dans une recherche linéaire, – guider la recherche : recherche par dichotomie. petit grand moyen 0 n-1(n-1)/2 X X < moyen

75 6 novembre 2006Cours d'algorithmique 1 - Intranet75 Recherche dans des tableaux triés On utilise lordre pour On utilise lordre pour – anticiper labandon dans une recherche linéaire, – guider la recherche : recherche par dichotomie. petit grand moyen 0 n-1(n-1)/2 X X < moyen Oui ! Chercher X dans [ 0.. (n-1)/2- 1 ]

76 6 novembre 2006Cours d'algorithmique 1 - Intranet76 Recherche dans des tableaux triés On utilise lordre pour On utilise lordre pour – anticiper labandon dans une recherche linéaire, – guider la recherche : recherche par dichotomie. petit grand moyen 0 n-1(n-1)/2 X X < moyen Oui ! Chercher X dans [ 0.. (n-1)/2- 1 ] Non ! Chercher X dans [ (n-1)/2.. n-1 ]

77 6 novembre 2006Cours d'algorithmique 1 - Intranet77 Recherche dans des tableaux triés Recherche par dichotomie - 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 linformation) qui montrent que lon ne peut pas faire mieux. Il existe des arguments théoriques (théorie de linformation) qui montrent que lon ne peut pas faire mieux.

78 6 novembre 2006Cours d'algorithmique 1 - Intranet78 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] ); Résultat. Cas général. Intervalle de 2 éléments. Initialisation.

79 6 novembre 2006Cours d'algorithmique 1 - Intranet79 Recherche dans des tableaux triés Di-chotomie - Tri-chotomie - etc. Di-chotomie : Di-chotomie : – 1 test -> 2 intervalles de n/2 éléments. – Donc, 1 * log_2 (n) + 1 tests.

80 6 novembre 2006Cours d'algorithmique 1 - Intranet80 Recherche dans des tableaux triés Di-chotomie - Tri-chotomie - etc. Di-chotomie : Di-chotomie : – 1 test -> 2 intervalles de n/2 éléments. – Donc, 1 * log_2 (n) + 1 tests. Tri-chotomie : Tri-chotomie : – 2 tests -> 3 intervalles de n/3 éléments. – Donc, 2 * log_3(n) + 1 tests.

81 6 novembre 2006Cours d'algorithmique 1 - Intranet81 Recherche dans des tableaux triés Di-chotomie - Tri-chotomie - etc. Di-chotomie : Di-chotomie : – 1 test -> 2 intervalles de n/2 éléments. – Donc, 1 * log_2 (n) + 1 tests. Tri-chotomie : Tri-chotomie : – 2 tests -> 3 intervalles de n/3 éléments. – Donc, 2 * log_3(n) + 1 tests. K-chotomie : K-chotomie : – k-1 tests -> k intervalles de n/k éléments. – Donc, (k-1) * log_k(n) + 1 tests.

82 6 novembre 2006Cours d'algorithmique 1 - Intranet82 Recherche dans des tableaux triés Di-chotomie - Tri-chotomie - etc. Di-chotomie : Di-chotomie : – 1 test -> 2 intervalles de n/2 éléments. – Donc, 1 * log_2 (n) + 1 tests. Tri-chotomie : Tri-chotomie : – 2 tests -> 3 intervalles de n/3 éléments. – Donc, 2 * log_3(n) + 1 tests. K-chotomie : K-chotomie : – k-1 tests -> k intervalles de n/k éléments. – Donc, (k-1) * log_k(n) + 1 tests. Optimal si k = 2 ! ! !

83 6 novembre 2006Cours d'algorithmique 1 - Intranet83 Soyons critiques ! Tableau trié : Tableau trié : – Recherche efficace – Recherche efficace – Insertions et suppressions pénibles – Insertions et suppressions pénibles

84 6 novembre 2006Cours d'algorithmique 1 - Intranet84 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

85 6 novembre 2006Cours d'algorithmique 1 - Intranet85 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

86 6 novembre 2006Cours d'algorithmique 1 - Intranet86 H A S H A G E

87 6 novembre 2006Cours d'algorithmique 1 - Intranet87 Hashage H : Eléments à stocker Indices dun tableau INSEE(Marc Gengler) … … MG Attention, certaines cases du tableau contiennent des valeurs alors que dautres sont vides.

88 6 novembre 2006Cours d'algorithmique 1 - Intranet88 Hashage Parfait, si H est injective Parfait, si H est injective – Si H(x) = H(y) alors x = y.

89 6 novembre 2006Cours d'algorithmique 1 - Intranet89 Hashage Parfait, si H est injective Parfait, si H est injective – Si H(x) = H(y) alors x = y.

90 6 novembre 2006Cours d'algorithmique 1 - Intranet90 Hashage Parfait, si H est injective Parfait, si H est injective – Si H(x) = H(y) alors x = y. Souvent, H ne lest pas : Souvent, H ne lest 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. /

91 6 novembre 2006Cours d'algorithmique 1 - Intranet91 Hashage Résolution locale des collisions : 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 dune collision viennent à disparaître !

92 6 novembre 2006Cours d'algorithmique 1 - Intranet92 Hashage Résolution locale des collisions : 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 dune collision viennent à disparaître ! Re-hashage : Re-hashage : – Si H(x) est déjà occupé on calcule H(x) ou H(x+ ), etc. jusquà trouver une place. – Et si on peut supprimer des éléments ?????

93 6 novembre 2006Cours d'algorithmique 1 - Intranet93 Hashage Résolution locale des collisions : 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 dune collision viennent à disparaître ! Re-hashage : Re-hashage : – Si H(x) est déjà occupé on calcule H(x) ou H(x+ ), etc. jusquà trouver une place. – Et si on peut supprimer des éléments ?????

94 6 novembre 2006Cours d'algorithmique 1 - Intranet94 Hashage X X/

95 6 novembre 2006Cours d'algorithmique 1 - Intranet95 Hashage X X Y Y/

96 6 novembre 2006Cours d'algorithmique 1 - Intranet96 Hashage Faits : 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.

97 6 novembre 2006Cours d'algorithmique 1 - Intranet97 Hashage Faits : 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 : – 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. – …

98 6 novembre 2006Cours d'algorithmique 1 - Intranet98 Synthè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 : dautres alternatives comme les A venir : dautres alternatives comme les arbres de recherche équilibrés. arbres de recherche équilibrés.

99 6 novembre 2006Cours d'algorithmique 1 - Intranet99 m E r C i e T b O n N e J o U r N é E ! ! ! n O u B l I e Z p A s D e p R é P a R e R v O s T D ! ! !


Télécharger ppt "Cours d'algorithmique 1 - Intranet 1 6 novembre 2006 Cours dAlgorithmique Marc Gengler Alexandra Bac - Henry Kanoui - Alain."

Présentations similaires


Annonces Google