1 Recherche en table par balayage



Documents pareils
Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

TP 1. Prise en main du langage Python

Initiation à la programmation en Python

Recherche dans un tableau

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Architecture des Systèmes d Information Architecture des Systèmes d Information

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Définitions. Numéro à préciser. (Durée : )

BACCALAURÉAT GÉNÉRAL SESSION 2012 OBLIGATOIRE MATHÉMATIQUES. Série S. Durée de l épreuve : 4 heures Coefficient : 7 ENSEIGNEMENT OBLIGATOIRE

Licence Sciences et Technologies Examen janvier 2010

V- Manipulations de nombres en binaire

Corrigé des TD 1 à 5

Image d un intervalle par une fonction continue

Découverte de Python

STAGE IREM 0- Premiers pas en Python

Représentation d un entier en base b

Introduction à MATLAB R

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Chapitre 7. Récurrences

Limites finies en un point

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

CONCOURS D ENTREE A L ECOLE DE 2007 CONCOURS EXTERNE. Cinquième épreuve d admissibilité STATISTIQUE. (durée : cinq heures)

Chaînes de Markov au lycée

LES TYPES DE DONNÉES DU LANGAGE PASCAL

TSTI 2D CH X : Exemples de lois à densité 1

Chp. 4. Minimisation d une fonction d une variable

Items étudiés dans le CHAPITRE N5. 7 et 9 p 129 D14 Déterminer par le calcul l'antécédent d'un nombre par une fonction linéaire

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Correction du baccalauréat ES/L Métropole 20 juin 2014

Bases de programmation. Cours 5. Structurer les données

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

Algorithmique et Programmation, IMA

DM 1 : Montre Autoquartz ETA

Cours 7 : Utilisation de modules sous python

Rappels sur les suites - Algorithme

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

Actuariat I ACT2121. septième séance. Arthur Charpentier. Automne charpentier.arthur@uqam.ca. http ://freakonometrics.blog.free.

Algorithmes récursifs

Raisonnement par récurrence Suites numériques

Programmes des classes préparatoires aux Grandes Ecoles

Algorithmes et mathématiques. 1. Premiers pas avec Python. Exo Hello world!

Initiation à l algorithmique

1. Introduction Création d'une requête...2

CHAPITRE V. Recherche et tri


Chapitre 2 Devine mon nombre!

Utilisation d objets : String et ArrayList

ASR1 TD7 : Un microprocesseur RISC 16 bits

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Initiation à LabView : Les exemples d applications :

Programmation linéaire

Probabilités sur un univers fini

Quelques Algorithmes simples

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Analyse stochastique de la CRM à ordre partiel dans le cadre des essais cliniques de phase I

Nombres, mesures et incertitudes en sciences physiques et chimiques. Groupe des Sciences physiques et chimiques de l IGEN

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Algorithme. Table des matières

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

SUJET ZÉRO Epreuve d'informatique et modélisation de systèmes physiques

Résolution de systèmes linéaires par des méthodes directes

Algorithmique I. Algorithmique I p.1/??

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

TS 35 Numériser. Activité introductive - Exercice et démarche expérimentale en fin d activité Notions et contenus du programme de Terminale S

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

CCP PSI Mathématiques 1 : un corrigé

Objets Combinatoires élementaires

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Exercices Corrigés Premières notions sur les espaces vectoriels

Probabilités conditionnelles Loi binomiale

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

L ALGORITHMIQUE. Algorithme

Chapitre 5 : Flot maximal dans un graphe

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Feuille TD n 1 Exercices d algorithmique éléments de correction

Représentation des Nombres

Python - introduction à la programmation et calcul scientifique

1 Lecture de fichiers

AWS avancé. Surveiller votre utilisation d EC2

MIS 102 Initiation à l Informatique

Université Paris-Dauphine DUMI2E 1ère année, Applications

La fonction exponentielle

Cours d Algorithmique et de Langage C v 3.0

INTRODUCTION A L ELECTRONIQUE NUMERIQUE ECHANTILLONNAGE ET QUANTIFICATION I. ARCHITECTURE DE L ELECRONIQUE NUMERIQUE

Cours d Analyse. Fonctions de plusieurs variables

Chapitre 2 Le problème de l unicité des solutions

Leçon 01 Exercices d'entraînement

données en connaissance et en actions?

Baccalauréat ES Amérique du Nord 4 juin 2008

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé

ARBRES BINAIRES DE RECHERCHE

Chap III : Les tableaux

Loi binomiale Lois normales

Transcription:

1 Recherche en table par balayage 1.1 Problème de la recherche en table Une table désigne une liste ou un tableau d éléments. Le problème de la recherche en table est celui de la recherche d un élément appelé clef dans la table. Avec le tri c est un problème majeur en informatique puisque les capacités de stockage actuelles permettent de conserver des grandes quantités dans lesquelles on besoin de rechercher rapidement des informations. 1.2 Recherche en table par balayage (ou séquentielle) Cet algorithme est simple : on parcourt le tableau du début à la fin en comparant chaque élément rencontré à la clef recherchée. On peut parcourir tout le tableau ou stopper la recherche dès que la clef est trouvée. Cet algorithme permet d effectuer une recherche dans un tableau ordonné ou non (relation d ordre sur les entiers, ordre alphabétique sur les chaînes de caractères... ). Si le tableau est ordonné, on peut stopper la recherche si la clef n a pas été trouvée et que l élément courant du tableau est supérieur (pour l ordre croissant) à la clef selon la relation d ordre considérée. Les algorithmes de tri étudiés dans le chapitre suivant permettront d ordonner les éléments d une liste selon une relation d ordre. Exercice 1 Les trois fonctions ci-dessous implémentent la recherche séquentielle d un caractère dans une chaîne de caractères. Ils fonctionnent aussi pour la recherche d un élément dans une liste. 1 def appartient1(caractere,chaine): 2 rep = False 3 for c in chaine: 4 if c==caractere: 5 rep=true 6 return rep 1 def appartient2(caractere,chaine): 2 for c in chaine: 3 if c==caractere: 4 return True 5 return False 1 def appartient3(caractere,chaine): 2 i = 0 3 rep = False 4 while i<len(chaine) and not rep: 5 if chaine[i]==caractere: 6 rep=true 7 i += 1 8 return rep 1. Combien de comparaisons sont effectuées par chaque fonction pour rechercher le caractère a dans la chaîne bbbba? dans la chaîne bbabb? dans la chaîne abbb? 2. Ecrire une fonction maximum(tab) qui retourne le maximum d un tableau d entiers (dans le désordre). Ecrire une fonction pos_maximum(tab) qui retourne le maximum d un tableau d entiers (dans le désordre) Page 1/10

et la liste des positions où il est atteint. Peut-on éviter de parcourir tout le tableau pour rechercher le maximum d un tableau d entiers non trié? Exercice 2 Recherche séquentielle dans un annuaire On pourra travailler avec le fichier annuairejunier.csv. 1. Avec LibreOffice, créer un annuaire dans une nouvelle feuille de tableur en saisissant à partir de la ligne 1 : une série de prénoms dans la colonne A associée à une série de numéros de téléphones dans la colonne B. Enregistrer ce fichier au format csv sous le nom annuaire.csv en choisissant, comme séparateur de champ et rien comme séparateur de texte. 2. Compléter la fonction extraire(fichier) qui retourne une liste (ou tableau) de prénoms et une liste (ou tableau) de numéros extraites d un fichier de type annuaire.csv. 3. Rajouter une fonction recherche_sequentielle(clef,liste1,liste2) au script précédent. Cette fonction prend pour paramètre une clef qu elle recherche dans liste1. Elle retourne le couple (clef,liste2[i]) si clef apparaît en position i dans liste1.si liste1 et liste2 sont respectivement la liste de prénoms et la liste de numéros extraites du fichier annuaire.csv, on peut ainsi faire une recherche dans l annuaire par prénoms (on suppose que tous les prénoms sont distincts quitte à les numéroter comme Fred1, Fred2 ). Tester cette fonction pour faire une recherche par prénom dans le fichier annuaire.csv. 4. Comment peut-on utiliser la fonction recherche_sequentielle(clef,liste1,liste2) pour faire une recherche inversée (par numéro) dans le fichier annuaire.csv. 5. Tester la fonction recherche_sequentielle pour rechercher les clefs Alphonse puis Zied dans le fichier annuairejunier.csv. Combien de comparaisons avec les éléments du tableau prenom sont effectuées dans chaque cas? 6. Si l annuaire comporte n prénoms, combien cet algorithme effectue-t-il de comparaisons si le prénom cherché n est pas dans l annuaire? est en première position (meilleur des cas)? est en dernière position (pire des cas)?. Combien de comparaisons sont-elles effectuées en moyenne si on choisit un prénom au hasard parmi les prénoms dans l annuaire? 7. Estimer le temps nécessaire pour une recherche séquentielle dans un annuaire de 30 000 prénoms : en moyenne et dans le pire des cas. Chaque tour de boucle de l algorithme s effectuant à coût constant en terme de comparaisons et d affectations on peut mesurer sa complexité (ou son coût) par le nombre d itérations de la boucle Tant Que. Expliquer pourquoi on peut qualifier la complexité (ou coût) moyenne de cet algorithme de linéaire. Page 2/10

1 def extraire(fichier): 2 """Extrait d un fichier texte annuaire avec des lignes du type 3 prenom,0478010101\n l la liste des prenoms et celle des numéros de 4 telephone""" 5 f = open(fichier, r ) 6 prenom,tel = [],[] #initialisation des listes de prenoms et de numeros 7 for ligne in f: 8 p,n =ligne.rstrip().split(, ) 9 #write your code here 10 11 def recherche_sequentielle(clef,liste1,liste2): 12 """recherche de façon séquentielle si clef appartient à la liste1 de 13 l annuaire constitué des deux listes liste1 et liste2. 14 Si clef est trouvée dans liste1 à la position i, 15 retourne le couple clef,liste2[i],sinon retourne None""" 16 #write your code here exo2_rechercheannuaire.py 2 Recherche en table par dichotomie 2.1 Principe de la recherche en table par dichotomie On considère désormais qu on effectue une recherche dans un annuaire dont les noms sont rangés dans l ordre alphabétique ou plus généralement une recherche dans une table triée. Le nom dichotomie provient du grec ancien tomia, couper et dikha, en deux. Pour chercher le numéro correspondant à un nom dans cet annuaire on peut appliquer l algorithme de recherche par dichotomie : si l annuaire est vide on arrête l algorithme sinon on ouvre l annuaire au milieu et on compare avec le nom médian : si le nom médian est égal au nom cherché on retourne le numéro de téléphone correspondant, la recherche est terminée ; si le nom médian est après le nom cherché, on élimine la seconde moitié de l annuaire et on applique la procédure de recherche dichotomique à la première moitié ; si le nom médian est avant le nom cherché, on élimine la première moitié de l annuaire et on applique la procédure de recherche dichotomique à la seconde moitié ; Exercice 3 Jeu du juste prix L algorithme ci-après modélise un jeu qui consiste à deviner un entier choisi au hasard par l ordinateur entre 0 et 100. 1. Programmer cet algorithme en Python puis le tester. Remarque : La fonction randrange(0,101) du module random retourne un entier au hasard entre 0 et 100 compris. (on peut aussi utiliser randint(0,100)). Page 3/10

2. Ecrire un nouveau programme où l ordinateur détermine tout seul l entier choisi au hasard en appliquant une recherche dichotomique. Que peut-on dire du nombre maximal d étapes nécessaires pour déterminer par dichotomie un entier choisi au hasard entre 0 et 100? Variables : S,N,Essai, TestFin Début Algorithme Initialisation : S = randrange(0,101) Essai = 1 TestFin = False Tant que Essai 6 ET TestFin==False Faire Saisir N Si N>S alors Affiche «C est moins» Si N<S alors Affiche «C est plus» Si N==S alors Affiche «C est gagné» TestFin prend la valeur True Essai prend la valeur Essai+1 Si TestFin==False alors Affiche «C est perdu» Fin Algorithme 2.2 Pseudo-code de l algorithme de recherche dichotomique (version itérative) On considère la recherche d une valeur dans une liste (ou tableau) de n éléments indexés de 0 à n 1, ces éléments étant rangés dans l ordre croissant pour une relation d ordre total. L algorithme de recherche dichotomique peut être codé sous la forme d une fonction de paramètres liste et clef. Dans le corps de la fonction on définit des variables locales : bas pour l indice du plus petit élément et haut pour l indice du plus grand élément de la sous-liste où s effectue la recherche en cours. La boucle Tant Que s arrête lorsque bas haut c est-à-dire lorsque la sous-liste de recherche est réduite à un élément ou vide. Ensuite l algorithme retourne l indice de l élément correspondant lorsque la valeur est trouvée (on peut retourner le numéro de téléphone associé si la valeur est un nom recherché dans un annuaire), sinon elle retourne None (objet vide) ou "inconnu". Voici le pseudo-code (les commentaires suivent les caractères #) : Page 4/10

Algorithme de recherche dichotomique Recherche_Dichotomique(liste,clef ) bas = 0 haut = longueur(liste)-1 # longueur(liste) est la longueur de la liste Tant Que bas < haut med = (bas + haut)/2 # c est la partie entière de (bas + haut)/2 Si clef == liste[med] bas = med haut = med Sinon Si clef > liste[med] bas = med + 1 Sinon haut = med - 1 Si clef == liste[bas] Retourner bas # ou Retourner la valeur d une variable globale associée Sinon Retourner "Inconnu" # ou Retourner None Exercice 4 Soit un tableau de 17 entiers triés dans l ordre croissant : tab = [10, 13, 19, 28, 29, 32, 34, 37, 39, 42, 48, 49, 72, 81, 86, 93, 96] 1. Appliquer à la main l algorithme de dichotomie pour rechercher l entier 19 dans ce tableau. On fera un tableau d évolution des variables bas, haut et med. Combien de tours de boucles ont-été effectués? 2. Faire de même pour rechercher l entier 20 dans ce tableau. 2.3 Preuve de terminaison et de correction de l algorithme de recherche dichotomique A chaque tour de boucle, on divise par 2 la longueur de la sous-liste où s effectuera la recherche au prochain tour. Donc en un nombre d itérations inférieur ou égal à log 2 (n), la longueur de la sous-liste de recherche devient inférieure à 1 et la boucle Tant Que s arrête puisque le test d arrêt impose que la sous-liste contienne au moins deux éléments. Par conséquent l algorithme se termine. Prouvons que l algorithme est correct. Pour cela, montrons que la propriété P i suivante est un invariant de la boucle Tant Que : P i : «Avant le tour de boucle i, si la clef recherchée appartient à la liste initiale alors elle appartient à la sous-liste comprise entre les positions bas et haut» Initialisation Avant la boucle Tant Que, la liste de recherche est la liste initiale complète donc il est évident que P 1 est vraie. Page 5/10

Hérédité Supposons que P i est vraie pour un entier naturel i : avant le tour de boucle i, si la clef est dans la liste, elle se trouve entre les positions bas et haut. Lors du tour de boucle i, on compare la clef avec la valeur en position médiane (bas + haut)/2 entre bas et haut. Si la valeur médiane est égale à la clef alors bas et haut prennent la valeur med et la clef se trouve bien entre les nouvelles valeurs de bas et haut. Sinon, puisque les valeurs entre les positions bas et haut sont rangées dans l ordre croissant, si la clef est dans la liste, sa comparaison avec la valeur médiane permet de changer les valeurs de bas ou de haut pour ne garder que la sous-liste susceptible de la contenir. Dans tous les cas, si la clef appartient à la liste initiale, elle appartiendra nécessairement à la sous-liste allant des nouvelles positions bas et haut choisies par le tour de boucle i. Ainsi avant le tour de boucle i + 1, la propriété P i+1 sera vraie, c est donc une propriété héréditaire. Terminaison Si on note r le numéro du dernier tout de boucle, la propriété P r +1 est vraie par hérédité et donc si la clef est dans la liste initiale elle se trouve entre les positions bas et haut. Lorsqu on sort de la boucle Tant Que on a bas haut c est-à-dire bas > haut ou bas == haut. Si bas > haut alors la dernière sous-liste de recherche susceptible de contenir la clef est vide et donc la clef n est pas dans la liste. Si bas == haut, la dernière sous-liste de recherche est réduite à un élément et la seule valeur susceptible d être la clef est liste[bas]. Après la boucle Tant Que, la comparaison de clef avec liste[bas] permet donc de déterminer si la clef est dans la liste. Ainsi la propriété P i est un invariant de boucle et l algorithme est correct. 2.4 Implémentation de l algorithme Exercice 5 1. Compléter le programme suivant avec une fonction recherche_sequentielle ainsi qu une fonction recherche_dichotomique qui prennent pour paramètres une liste d entiers et une clef (un entier) et qui retournent la position de la clef dans la liste si elle appartient à la liste ou un message d erreur sinon. En utilisant le décorateur timetest, comparer le temps d exécution des deux fonctions pour des listes d entiers aléatoires triées de tailles 2 p avec p {5;8;10;12;15;20;25}. 2. Rajouter au programme recherchenombre.py une fonction recherche_dichotomiquerec qui implémente de façon récursive l algorithme de rechercher dichotomique d une clef dans une liste d entiers triés. Page 6/10

1 import time,from random import randint 2 3 def timetest(fonction): 4 """exécute la fonction et affiche son temps d exécution """ 5 def fonction_modifiee(*args,**kargs): 6 tps_avant = time.time() 7 ret= fonction(*args,**kargs) 8 tps_apres = time.time() 9 print("le temps d exécution de la fonction est de {:10.3e} s" 10.format(tps_apres-tps_avant)) 11 return ret 12 return fonction_modifiee 13 14 @timetest 15 def recherche_sequentielle(liste,clef): 16... 17 18 @timetest 19 def recherche_dichotomique(liste,clef): 20... 21 22 n = eval(input( Entrez la taille souhaitée pour la liste d\ entiers aléatoires : \n )) 23 clef = eval(input( Entrez la clef qu\ il faut chercher : \n )) 24 liste = [randint(0,1000) for i in range(n)] #liste de test 25 liste.sort() #on trie dans l ordre croissant la liste de test 26 copieliste = liste[:] #copie physique de la liste de tests 27 print( Résultat de la recherche séquentielle : ) 28 print(recherche_sequentielle(liste,clef)) 29 print( Résultat de la recherche dichotomique : ) 30 print(recherche_dichotomique(copieliste,clef)) 2.5 Analyse de complexité de l algorithme de recherche dichotomique Exercice 6 Avec l algorithme de recherche dichotomique, on recherche un nom dans un annuaire de 30 000 noms qui sont rangés dans l ordre alphabétique. 1. Compléter l énumération suivante qui permet de déterminer le nombre d étapes nécessaires pour trouver le nom ou découvrir que le nom n est pas dans l annuaire : Après 1 comparaison, on le cherche dans un ensemble d au plus 15 000 mots. Après 2 comparaisons, on le cherche dans un ensemble d au plus 7 500 mots. Après 3 comparaison, on le cherche dans un ensemble d au plus 3 750 mots. Après 4 comparaisons, on le cherche dans un ensemble d au plus 1 875 mots... Page 7/10

2. Dans l algorithme de recherche dichotomique, quelle est la relation entre la taille de l ensemble de recherche à l étape i et à l étape i + 1? 3. Si la taille de l ensemble de recherche initial est 2 16 majorer le nombre d étapes nécessaire à l exécution de la recherche dichotomique. Même question si la taille de l ensemble est 1000 puis si elle est de 2 p, de n. 4. Le logarithme entier d un entier naturel n est le nombre de fois qu il faut diviser n par 2 pour obtenir un nombre inférieur ou égal à 1, c est log 2 (n) = ln(n) ln(2) c est-à-dire l arrondi à l entier supérieur de log 2 (n) le logarithme binaire de n. Chaque étape de l algorithme s effectuant à coût constant en terme de comparaisons et d affectations on peut mesurer sa complexité (ou son coût) par le nombre d étapes nécessaires. Expliquer pourquoi la complexité de l algorithme de recherche dichotomique est au pire logarithmique. 5. Ecrire un programme en Python affiche les valeurs de 10 p et log 2 (10 p ) pour p variant entre 0 et 20. En déduire une comparaison de l efficacité des algorithmes de rechercher séquentielle ou dichotomique. Complexite des recherches en table sequentielle et dichotomique 10 7 Nombre d'operations (echelle logarithmique) 10 6 10 5 10 4 10 3 10 2 10 1 Recherche Sequentielle Recherche Dichotomique 10 0 10 1 10 2 10 3 10 4 10 5 10 6 10 7 Taille de l'entree (echelle logarithmique) 3 D autres applications de la dichotomie 3.1 Conversion analogique-numérique Les signaux électriques sont analogiques, ce sont des fonctions continues. Pour être utilisé par un appareil numérique comme un ordinateur, un appareil photo numérique..., le signal analogique (par exemple une tension,) doit être discrétisé en une suite finie de bits représentant une valeur d une échelle prédéfinie. L appareil qui réalise une telle conversion est un convertisseur analogique-numérique. Pour déterminer une valeur Page 8/10

approchée de la tension analogique en la comparant aux valeurs de sa table de référence, le convertisseur peut utiliser un algorithme de recherche dichotomique. 3.2 Recherche d un encadrement du zéro d une fonction par dichotomie Soit f une fonction continue et strictement monotone sur un intervalle [a ; b]. Si f change de signe entre a et b, un corollaire du théorème des valeurs intermédiaires permet d affirmer que l équation f (x) = 0 possède une unique solution α dans [a ; b]. Exercice 7 Soit f une fonction fonction continue, strictement monotone et changeant de signe sur un intervalle [a ; b]. On peut choisir par exemple f définie sur [0; π] par f (x) = cos x x 1. Soit une fonction dichotomie qui prend en paramètre une fonction f,trois flottants a,b,précision. Ecrire en Python le corps de cette fonction pour qu elle détermine par dichotomie un encadrement d amplitude strictement inférieure à précision de l unique solution α de f (x) = 0 dans [a ; b]. Faire afficher également le nombre d étapes nécessaires. 2. Justifier que l équation cos x = x possède une unique solution α dans [0; 4]. Appliquer la fonction dichotomie précédente pour déterminer un encadrement de α d amplitude strictement inférieure 0.001. Algorithme Approximation par dichotomie de la solution de f (x) = 0 sur [a ;b] Entrée(s) a,b, pr eci si on tant que b a > precision faire a + b m 2 si f (a) f (m) < 0 alors m b sinon si f (a) f (m) > 0 alors m a sinon m a m b fin du si fin du tant que Sortie(s) a, b 4 Bibliographie J ai picoré des informations dans les ouvrages suivants pour préparer ce cours : Informatique et sciences du numérique de Gilles Dowek et Jean-Pierre Archambault aux éditions Eyrolles. Informatique pour tous en classes préparatoires scientifiques de Benjamin Wack, Gilles Dowek, Stéphane Gonnord et Judicael Courant aux éditions Eyrolles. Algorithmique de Cormen, Leiserson, Rivest, Stein aux éditions Dunod. Page 9/10

Table des matières 1 Recherche en table par balayage 1 1.1 Problème de la recherche en table..................................... 1 1.2 Recherche en table par balayage (ou séquentielle)............................ 1 2 Recherche en table par dichotomie 3 2.1 Principe de la recherche en table par dichotomie............................ 3 2.2 Pseudo-code de l algorithme de recherche dichotomique (version itérative)............ 4 2.3 Preuve de terminaison et de correction de l algorithme de recherche dichotomique....... 5 2.4 Implémentation de l algorithme...................................... 6 2.5 Analyse de complexité de l algorithme de recherche dichotomique................. 7 3 D autres applications de la dichotomie 8 3.1 Conversion analogique-numérique.................................... 8 3.2 Recherche d un encadrement du zéro d une fonction par dichotomie................ 9 4 Bibliographie 9 Page 10/10