Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
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
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.