« Complexité pratique contre complexité théorique » : différence entre les versions

De Wiki du LAMA (UMR 5127)
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 2 : Ligne 2 :


== Principe de la complexité ==
== Principe de la complexité ==
La complexité en algorithmique sert à montrer l'efficacité d'un algorithme, en fonction de plusieurs facteurs comme son temps d'exécution, l'espace qu'il occupe dans la mémoire... (ces facteurs sont en générale induits par le nombre d'opérations qu'effectue l'algorithme).
Afin de mesurer et de représenter cette complexité, on représente l'évolution du temps d'exécution d'une même fonction en fonction de la taille de ses argument.
On va donc, la plupart du temps utiliser des tableaux en entrée des fonctions et faire évoluer leurs taille



à déterminer son comportement général
pratique

theorique
== Etudes d'algorithmes ==
== Etudes d'algorithmes ==
<pre>
<pre>

Version du 5 mai 2021 à 13:52


Principe de la complexité

La complexité en algorithmique sert à montrer l'efficacité d'un algorithme, en fonction de plusieurs facteurs comme son temps d'exécution, l'espace qu'il occupe dans la mémoire... (ces facteurs sont en générale induits par le nombre d'opérations qu'effectue l'algorithme). Afin de mesurer et de représenter cette complexité, on représente l'évolution du temps d'exécution d'une même fonction en fonction de la taille de ses argument. On va donc, la plupart du temps utiliser des tableaux en entrée des fonctions et faire évoluer leurs taille


à déterminer son comportement général pratique

theorique

Etudes d'algorithmes

import timeit
def chronoquick(tab,nessais):
    '''Entrées: un tableau et un entier, Sortie: un entier''' 
    res = timeit.timeit("quickselectmed("+ str (tab)+")","from __main__ import quickselectmed" , number= nessais)
    return res

dichotomie

tri de tableau: main/python

Bulle500.PNG Python500.PNG

mediane

medianes des medianes, quickselect

Multiplication naive / Karatsuba