Structures de données IFT-10541

Slides:



Advertisements
Présentations similaires
Tris.
Advertisements

Connexité.
Arbre-B+ Hypothèse initiale : clé simple et unique Nœud = bloc.
Introduction à l’Algorithmique
Calculs de complexité d'algorithmes
1 UMLV Optimalité des tris par comparaisons : O(n logn) Classements linéaires Tris lexicographiques Tri lexicographique.
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
ALGORITHMES RECURSIFS
Les structures de données arborescentes
Les algorithmes: complexité et notation asymptotique
Programme de baccalauréat en informatique Algorithmique et programmation IFT-1001 Thierry EUDE Hatem Mahbouli Laboratoire #12 Département dinformatique.
Les tris.
Structures de données IFT-2000
Les fichiers indexés (Les B-arbres)
LES ARBRES IUP 2 Génie Informatique
Abder Alikacem Semaine 13 La récursivité
Structures de données IFT Abder Alikacem La classe string Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
Structures de données IFT Abder Alikacem Espace de nommage Département d’informatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT-10541
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Sous-séquence de somme maximale (Algo#4). Algorithme retour arrière. Département dinformatique et de génie.
Structures de données IFT-2000
Structures de données IFT-2000
IFT Structures de données
Indexes à Arbres et Indexes à Hachage

IFT-2000: Structures de données Piles et files Dominic Genest, 2009.
Tutorat en bio-informatique Le 21 novembre Exercices 2 et 3 (MAT1400) - solutions Chapitre 11.7, Analyse - concepts et contextes vol. 2 27) Cherchez.
Structures de données IFT-2000
IFT Structures de données Abder Alikacem Département dinformatique et de génie logiciel.
Structures de données IFT-10541
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-2000
Structures de données IFT Abder Alikacem Linéarisation des matrices Département dinformatique et de génie logiciel Édition septembre 2009.
Structures de données IFT-2000 Abder Alikacem Semaine 12 (2 ième partie) Les B-arbres Département d’informatique et de génie logiciel Édition septembre.
Structures de données IFT Abder Alikacem Semaine 10 Les arbres SPLAY Département dinformatique et de génie logiciel Édition septembre
Pour le chemin le plus court pour tous les couples
Structures de données IFT-2000 Abder Alikacem Semaine 11 Gestion des arbres binaires de tri et de recherche. Les arbres cousus. Les arbres n-aires Département.
Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK.
Structures de données IFT-2000 Abder Alikacem La récursivité Département d’informatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-10541

201 UMLV  Type « dictionnaire » sous-ensembles finis de E (ordonné) avec les opérations : Ens_vide :  Ens Ajouter : Ens x Elément  Ens Enlever.
Structures de données IFT-10541
Structures de données IFT-2000

Structures de données IFT-2000
Structures de données IFT Abder Alikacem Semaine 2 Tests sur les pointeurs Département d’informatique et de génie logiciel Édition Janvier 2009.
Structures de données IFT-2000
Le langage C Structures de données
ALGORITHME DE TRI Le tri par insertion.
ALGORITHMIQUE Recherches : Tris : séquentielle, dichotomique
LES PILES ET FILES.
Chapitre 6 Les traitements avancés
Arbres binaires et tables de hachage
Cours 4 - Trois algorithmes de recherche dans un tableau
1 UMLV  FICHIERS Mémoire de masse découpée en blocs Fichier :liste chaînée de blocs, ou arbre de blocs (répertoires - fichiers)‏ Bloc d’éléments Bloc.
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem La STL du C++. La récursivité Semaine 9 Département d’informatique et de génie logiciel Édition Septembre.
Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département d’informatique et de génie logiciel Édition septembre 2009.
Structures de données IFT-2000 Abder Alikacem Laboratoire #1 Département d’informatique et de génie logiciel Édition Septembre 2009.
Structures de données IFT-2000 Abder Alikacem Semaine 10 Les algorithmes de recherche Les structures arborescentes Département d’informatique et de génie.
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département d’informatique et de génie logiciel Édition Septembre 2009.
CSI25101 Tri Plus efficace. CSI25102 Tri récursif Le tri récursif divise les données de grande taille en deux presque moitiés et est appelé récursivement.
Transcription de la présentation:

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

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

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 =

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 =

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 =

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 =

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 =

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 =

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 =

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 =

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)

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 =

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 =

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 =

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 =

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 =

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 =

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 =

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 =

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)

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 !

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 ?

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]

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]

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

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

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.

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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