Algorithmique : recherche dichotomique, fin + debut / 2
Résolu/Fermé
Rollover
Messages postés
3
Date d'inscription
mardi 26 novembre 2013
Statut
Membre
Dernière intervention
27 novembre 2013
-
Modifié par Rollover le 26/11/2013 à 16:57
Rollover Messages postés 3 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 27 novembre 2013 - 27 nov. 2013 à 10:04
Rollover Messages postés 3 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 27 novembre 2013 - 27 nov. 2013 à 10:04
A voir également:
- Algorithmique : recherche dichotomique, fin + debut / 2
- Videosurveillance algorithmique - Accueil - Protection
- Arbre algorithmique HELP !!! - Forum Programmation
- Comment résoudre un problème algorithmique - Forum Pascal
- Exercice simple d'algorithmique ✓ - Forum Algorithmes / Méthodes
- Exercice en Algorithmique (Boucles) ✓ - Forum Algorithmes / Méthodes
2 réponses
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
Modifié par KX le 26/11/2013 à 19:31
Modifié par KX le 26/11/2013 à 19:31
mil ← partie entière( (début + fin) / 2)
Ici c'est la moyenne de début et fin qui est utilisé, donc ça donne bien le milieu.
mil ← partie entière( (fin - début) / 2 + debut)
Là tu réfléchis un peu différemment (et tu n'es pas le seul), mais c'est aussi le milieu.
À la partie entière près, les deux calculs sont mathématiquement équivalents.
Attention :
En faisant
Ici c'est la moyenne de début et fin qui est utilisé, donc ça donne bien le milieu.
mil ← partie entière( (fin - début) / 2 + debut)
Là tu réfléchis un peu différemment (et tu n'es pas le seul), mais c'est aussi le milieu.
À la partie entière près, les deux calculs sont mathématiquement équivalents.
(x+y)/2 = x/2 + y/2 = (x - x/2) + y/2 = x + y/2 - x/2 = x + (y-x)/2En terme d'optimisation,
(début+fin)/2fait deux opérations (une addition, une division), alors que
(fin-début)/2+débuten fait trois (une soustraction, une division, une addition), donc le premier calcul est moins lourd.
Attention :
(début+fin)étant plus grand que début et fin, il peut y avoir un dépassement numérique (c'est à dire qu'on peut obtenir un nombre qui est trop grand pour être représenté dans le type de donnée qu'on a attribué à début et fin), du coup le résultat peut devenir faux.
En faisant
(fin-début)/2+debuton est sûr de rester dans l'intervalle de valeurs debut → fin, et donc d'avoir des résultats numériques corrects. Mais c'est un cas assez particulier vu que ce problème ne peux se poser que pour des données extrêmes et uniquement à la première itération de ton algorithme de dichotomie.La confiance n'exclut pas le contrôle
Rollover
Messages postés
3
Date d'inscription
mardi 26 novembre 2013
Statut
Membre
Dernière intervention
27 novembre 2013
26 nov. 2013 à 18:28
26 nov. 2013 à 18:28
EDIT : A la place du " mil ? partie entière (...) ", il s'agit de " mil = partie entière (...) "
27 nov. 2013 à 10:04
Je ferais plus attention à ce type de structure dorénavant.
Je te remercie de ton aide KX.
Concernant un moyen de m'améliorer, j'imagine que me remettre à niveau en mathématique m'aiderait pas mal à trouver des optimisations naturellement (en retrouvant des schéma de bases) et puis qu'avec l'expérience...
Bonne continuation !