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

Structures de données IFT-10541

Présentations similaires


Présentation au sujet: "Structures de données IFT-10541"— Transcription de la présentation:

1 Structures de données IFT-10541
Abder Alikacem Semaine 7 Les algorithmes de recherche Édition septembre 2009 Département d’informatique et de génie logiciel

2 Plan Les algorithmes de recherche
La recherche séquentielle La recherche dichotomique Complexité des algorithmes de recherche Recherche dichotomique et arborescence

3 La recherche séquentielle
Données pas triées 3 1 4 2 8 14 12 11 6 9 10 recherche(3) = recherche(10) = recherche(12) = recherche(13) = meilleur cas = pire cas = en moyenne = absences =

4 La recherche séquentielle
Données pas triées 3 1 4 2 8 14 12 11 6 9 10 recherche(3) = 1 comparaison recherche(10) = recherche(12) = recherche(13) = meilleur cas = pire cas = en moyenne = absences =

5 La recherche séquentielle
Données pas triées 3 1 4 2 8 14 12 11 6 9 10 recherche(3) = 1 comparaison recherche(10) = 11 comparaisons recherche(12) = recherche(13) = meilleur cas = pire cas = en moyenne = absences =

6 La recherche séquentielle
Données pas triées 3 1 4 2 8 14 12 11 6 9 10 recherche(3) = 1 comparaison recherche(10) = 11 comparaisons recherche(12) = 7 comparaisons recherche(13) = meilleur cas = pire cas = en moyenne = absences =

7 La recherche séquentielle
Données pas triées 3 1 4 2 8 14 12 11 6 9 10 recherche(3) = 1 comparaison recherche(10) = 11 comparaisons recherche(12) = 7 comparaisons recherche(13) = 11 comparaisons meilleur cas = pire cas = en moyenne = absences =

8 La recherche séquentielle
Données pas triées 3 1 4 2 8 14 12 11 6 9 10 recherche(3) = 1 comparaison recherche(10) = 11 comparaisons recherche(12) = 7 comparaisons recherche(13) = 11 comparaisons meilleur cas = O(1) pire cas = en moyenne = absences =

9 La recherche séquentielle
Données pas triées 3 1 4 2 8 14 12 11 6 9 10 recherche(3) = 1 comparaison recherche(10) = 11 comparaisons recherche(12) = 7 comparaisons recherche(13) = 11 comparaisons meilleur cas = O(1) pire cas = O(n) en moyenne = absences =

10 La recherche séquentielle
Données pas triées 3 1 4 2 8 14 12 11 6 9 10 recherche(3) = 1 comparaison recherche(10) = 11 comparaisons recherche(12) = 7 comparaisons recherche(13) = 11 comparaisons meilleur cas = O(1) pire cas = O(n) en moyenne = O(n/2) absences =

11 La recherche séquentielle
Données pas triées 3 1 4 2 8 14 12 11 6 9 10 recherche(3) = 1 comparaison recherche(10) = 11 comparaisons recherche(12) = 7 comparaisons recherche(13) = 11 comparaisons meilleur cas = O(1) pire cas = O(n) en moyenne = O(n/2) absences = O(n)

12 La recherche séquentielle
Données triées 1 2 3 4 6 8 9 10 11 12 14 recherche(1) = recherche(14) = recherche(8) = recherche(13) = meilleur cas = pire cas = en moyenne = absences =

13 La recherche séquentielle
Données triées 1 2 3 4 6 8 9 10 11 12 14 recherche(1) = 1 comparaison recherche(14) = recherche(8) = recherche(13) = meilleur cas = pire cas = en moyenne = absences =

14 La recherche séquentielle
Données triées 1 2 3 4 6 8 9 10 11 12 14 recherche(1) = 1 comparaison recherche(14) = 11 comparaisons recherche(8) = recherche(13) = meilleur cas = pire cas = en moyenne = absences =

15 La recherche séquentielle
Données triées 1 2 3 4 6 8 9 10 11 12 14 recherche(1) = 1 comparaison recherche(14) = 11 comparaisons recherche(8) = 6 comparaisons recherche(13) = meilleur cas = pire cas = en moyenne = absences =

16 La recherche séquentielle
Données triées 1 2 3 4 6 8 9 10 11 12 14 recherche(1) = 1 comparaison recherche(14) = 11 comparaisons recherche(8) = 6 comparaisons recherche(13) = 11 comparaisons meilleur cas = pire cas = en moyenne = absences =

17 La recherche séquentielle
Données triées 1 2 3 4 6 8 9 10 11 12 14 recherche(1) = 1 comparaison recherche(14) = 11 comparaisons recherche(8) = 6 comparaisons recherche(13) = 11 comparaisons meilleur cas = O(1) pire cas = en moyenne = absences =

18 La recherche séquentielle
Données triées 1 2 3 4 6 8 9 10 11 12 14 recherche(1) = 1 comparaison recherche(14) = 11 comparaisons recherche(8) = 6 comparaisons recherche(13) = 11 comparaisons meilleur cas = O(1) pire cas = O(n) en moyenne = absences =

19 La recherche séquentielle
Données triées 1 2 3 4 6 8 9 10 11 12 14 recherche(1) = 1 comparaison recherche(14) = 11 comparaisons recherche(8) = 6 comparaisons recherche(13) = 11 comparaisons meilleur cas = O(1) pire cas = O(n) en moyenne = O(n/2) absences =

20 La recherche séquentielle
Données triées 1 2 3 4 6 8 9 10 11 12 14 recherche(1) = 1 comparaison recherche(14) = 11 comparaisons recherche(8) = 6 comparaisons recherche(13) = 11 comparaisons meilleur cas = O(1) pire cas = O(n) en moyenne = O(n/2) absences = O(n/2)

21 La recherche séquentielle
données non triées : données présentes : O(n/2) données absentes : O(n) données triées : données absentes : O(n/2) coût pour trier et maintenir triées !

22 Modèles d’implantation
tableau : liste chaînée : 1 2 3 4 6 8 9 10 11 12 14 1 2 3 4 6 8 9 10 11 12 14

23 La recherche binaire 1 2 3 4 6 8 9 10 11 12 14 implantation en tableau = accès direct à n’importe quel élément en regardant tout de suite au milieu, on peut éliminer la moitié des données

24 La recherche binaire 1 2 3 4 6 8 9 10 11 12 14 10

25 La recherche binaire 1 2 3 4 6 8 9 10 11 12 14 5 10

26 La recherche binaire 1 2 3 4 6 8 9 10 11 12 14 5 10

27 La recherche binaire 1 2 3 4 6 8 9 10 11 12 14 5 10

28 La recherche binaire : 10 ? 1 2 3 4 6 8 9 10 11 12 14 5 10

29 La recherche binaire : 10 ? 1 2 3 4 6 8 9 10 11 12 14 5 10

30 La recherche binaire : 10 ? 1 2 3 4 6 8 9 10 11 12 14 5 10 1 2 3 4 6 8 9 10 11 12 14 6 10

31 La recherche binaire : 10 ? 1 2 3 4 6 8 9 10 11 12 14 5 10 1 2 3 4 6 8 9 10 11 12 14 6 8 10

32 La recherche binaire : 10 ? 1 2 3 4 6 8 9 10 11 12 14 5 10 1 2 3 4 6 8 9 10 11 12 14 6 8 10

33 La recherche binaire : 10 ? 1 2 3 4 6 8 9 10 11 12 14 5 10 1 2 3 4 6 8 9 10 11 12 14 6 8 10

34 La recherche binaire : 10 ? 1 2 3 4 6 8 9 10 11 12 14 5 10 1 2 3 4 6 8 9 10 11 12 14 6 8 10 1 2 3 4 6 8 9 10 11 12 14 6 7

35 La recherche binaire : 10 ? 1 2 3 4 6 8 9 10 11 12 14 5 10 1 2 3 4 6 8 9 10 11 12 14 6 8 10 1 2 3 4 6 8 9 10 11 12 14 6 7

36 La recherche binaire : 10 ? 1 2 3 4 6 8 9 10 11 12 14 5 10 1 2 3 4 6 8 9 10 11 12 14 6 8 10 1 2 3 4 6 8 9 10 11 12 14 6 7

37 La recherche binaire : 10 ? 1 2 3 4 6 8 9 10 11 12 14 5 10 1 2 3 4 6 8 9 10 11 12 14 6 8 10 1 2 3 4 6 8 9 10 11 12 14 6 7 1 2 3 4 6 8 9 10 11 12 14 7

38 La recherche binaire : 10 ? 1 2 3 4 6 8 9 10 11 12 14 5 10 1 2 3 4 6 8 9 10 11 12 14 6 8 10 1 2 3 4 6 8 9 10 11 12 14 6 7 1 2 3 4 6 8 9 10 11 12 14 7

39 La recherche binaire : 9.5 ? 1 2 3 4 6 8 9 10 11 12 14 5 10 1 2 3 4 6 8 9 10 11 12 14 6 8 10 1 2 3 4 6 8 9 10 11 12 14 6 7 1 2 3 4 6 8 9 10 11 12 14 7

40 La recherche binaire : 9.5 ? 1 2 3 4 6 8 9 10 11 12 14 11 5 10 1 2 3 4 6 8 9 10 11 12 14 5 6 8 10 2 1 2 3 4 6 8 9 10 11 12 14 6 7 1 2 3 4 6 8 9 10 11 12 14 1 7

41 La recherche binaire : 9.5 ? 11 n 5 n/2 2 n/4 1 n/8 1 2 3 4 6 8 9 10
12 14 11 n 5 10 1 2 3 4 6 8 9 10 11 12 14 5 n/2 6 8 10 2 n/4 1 2 3 4 6 8 9 10 11 12 14 6 7 1 2 3 4 6 8 9 10 11 12 14 1 n/8 7

42 Algorithme récursif récursion ? conditions d’arrêt ? convergence ? 1 2
3 4 6 8 9 10 11 12 14 5 10 récursion ? conditions d’arrêt ? convergence ?

43 Récursion si x = tab[milieu] (condition d’arrêt)
1 2 3 4 6 8 9 10 11 12 14 5 10 x  tab[debut..fin] si x = tab[milieu] (condition d’arrêt) si x < tab[milieu] et x  tab[debut..milieu-1] si x > tab[milieu] et x  tab[milieu+1..fin]

44 Conditions d’arrêt 1 2 3 4 6 8 9 10 11 12 14 5 10 x  tab[debut..fin] si debut > fin x  tab[debut..fin] si x = tab[milieu]

45 Convergence 1 2 3 4 6 8 9 10 11 12 14 5 10 1 2 3 4 6 8 9 10 11 12 14 6 8 10 1 2 3 4 6 8 9 10 11 12 14 6 7 1 2 3 4 6 8 9 10 11 12 14 7

46 Template <typename T>
int rechercheBinRec(T * tab, T val, int debut, int fin) { int milieu; /*A: tab est correctement initialisé*/ if (debut > fin) return -1; else { milieu= (debut + fin)/2; if( val == tab[milieu]) return milieu; { if( val < tab[milieu]) return(rechercheBinRec(tab,val,debut, milieu-1)); else return(rechercheBinRec(tab,val,milieu+1,fin)); }

47 Remarque sur les algorithmes récursifs
Il vaut bien mieux implanter cet algorithme de manière itérative, car la fonction se rappelle jusqu'à trouver la position désirée, puis seulement on effectue les dépilages, alors que l'on n'a plus besoin des états intermédiaires qui ont été mémorisés par la récursivité puisque le problème est résolu.

48 Tableau comparatif recherche séquentielle : (données triées)
données présentes : O(n/2) données absentes : O(n/2) recherche binaire : (données triées) données présentes : O(log n) données absentes : O(log n)

49 Modèles d’implantation
tableau : liste chaînée ? 1 2 3 4 6 8 9 10 11 12 14 10 1 2 3 4 6 8 9 10 11 12 14

50 Structures pointées 1 2 3 4 6 8 9 10 11 12 14 1 2 3 4 5 6 7 8 9 10

51 Structures pointées 1 2 3 4 6 8 9 10 11 12 14 1 2 3 4 5 6 7 8 9 10

52 Structures pointées 1 2 3 4 6 8 9 10 11 12 14 1 2 3 4 5 6 7 8 9 10

53 Structures pointées 8 1 2 3 4 6 9 10 11 12 14 1 2 3 4 6 7 8 9 10

54 Structures pointées 8 1 2 3 4 6 9 10 11 12 14 1 2 3 4 6 7 8 9 10

55 Structures pointées 8 1 2 3 4 6 9 10 11 12 14 1 2 3 4 6 7 8 9 10

56 Structures pointées 8 3 11 1 2 4 6 9 10 12 14 1 3 4 6 7 9 10

57 Structures pointées 8 3 11 1 2 4 6 9 10 12 14 1 3 4 6 7 9 10

58 Structures pointées 8 3 11 1 2 4 6 9 10 12 14 1 3 4 6 7 9 10

59 Structures pointées 8 3 11 2 4 10 12 1 6 9 14

60 Structures pointées 8 3 11 2 4 10 12 1 6 9 14

61 Structures pointées 8 3 11 2 4 10 12 1 6 9 14

62 Structures pointées 8 3 11 2 4 10 12 1 6 9 14

63 Arbre binaire ! 8 3 11 2 4 10 12 1 6 9 14

64 Arbre binaire ! 8 3 11 2 4 10 12 1 6 9 14

65 Arbre binaire racine nœuds internes feuilles sous-arbre de gauche
sous-arbre de droite

66 Arbre = graphe 8 3 11 2 4 10 12 1 6 9 14

67 Arbre = graphe 8 3 11 2 4 10 12 1 6 9 14

68 Arbre = graphe 8 3 11 2 4 10 12 1 6 9 14

69 Arbre = graphe graphe connexe, orienté, acyclique
1 seul nœud source = racine nœuds puits = feuilles ordre d ’entrée de tout nœud = 1, sauf racine un chemin de la racine à tout autre nœud

70 Arbre = index 8 3 11 2 4 10 12 1 6 9 14

71 Arbre = index 8 3 11 2 4 10 12 1 6 9 14

72 Index sur sommet d’un graphe
4 2 5 3 1 ... 1 1 2 1 1 3 4 1 1 5 1

73 Index sur sommet d’un graphe
4 2 5 3 1 3 2 5 1 4 ... 1 1 2 1 1 3 4 1 1 5 1


Télécharger ppt "Structures de données IFT-10541"

Présentations similaires


Annonces Google