1 / 13

MATHÉMATIQUES DISCRÈTES Chapitre 2 (section 2)

MATHÉMATIQUES DISCRÈTES Chapitre 2 (section 2). François Meunier DMI. Complexité Algorithmique. Une mesure de la difficulté d’exécuter un programme. Permet d’évaluer le coût associé à l’exécution d’un programme. Ressources utilisées: temps CPU, mémoire. Mesures communes de la complexité:

rufin
Download Presentation

MATHÉMATIQUES DISCRÈTES Chapitre 2 (section 2)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MATHÉMATIQUES DISCRÈTES Chapitre 2 (section 2) François Meunier DMI

  2. Complexité Algorithmique • Une mesure de la difficulté d’exécuter un programme. • Permet d’évaluer le coût associé à l’exécution d’un programme. • Ressources utilisées: temps CPU, mémoire. • Mesures communes de la complexité: • “Temps” : # d’opérations ou # de cycles • “Espace”: # d’octets de mémoire utilisés

  3. Complexité dépendante des Input • Les algorithmes ont différentes complexités pour des nombres différents d’inputs. • La recherche dans une longue liste prendra généralement plus de temps qu’une recherche dans une liste plus courte. • La complexité est généralement exprimée comme une fonction du nombre d’inputs. • La fonction de complexité est souvent exprimée dans le pire cas pour une longueur donnée (# inputs).

  4. Exemple 1: Algorithme Max • Problème: Trouver l’ordre de grandeur de la complexité de l’algorithme MAX dans le pire cas, en tenant compte que chaque ligne de code est exécutée dans un temps constant et que différentes lignes de code peuvent être exécutées dans des temps différents.

  5. Analyse de complexité (suite ..) procéduremax(a1, a2, …, an: entiers) v:=a1 t1 pouri:= 2 àn t2 siai > valors v:=ai t3 retournerv t4 Pire cas: Temps pour l’exécution de chaque ligne

  6. Analyse de complexité (suite..) Ordre de complexité de t(n)?

  7. Exemple 2: Recherche linéaire procédurerecherche linéaire (x: entier, a1, a2, …, an: entiers distincts)i:= 1 t1TTQ (i n  x  ai) fairet2i:=i + 1 t3sii n alors position:=i t4sinonposition:= 0 t5retourner position t6

  8. Analyse de la recherche linéaire • L’ordre de complexité (pire cas): • Meilleur cas: • Cas moyen, si l’item est présent:

  9. Exemple 3: Recherche Binaire procédurerecherche binaire (x:entier, a1, a2, …, an: entiers distinc, triés du plus petit au plus grand)i:= 1 j:=nTTQ i<j fairem:=(i+j)/2six>amalorsi := m+1 sinon j := mfinsix = aialorsposition:=isinonposition:= 0retournerposition (1) Question importante:Combien d’iterations de la boucle? (1) (1)

  10. Analyse de la recherche Binaire • Supposons que n est une puissance 2, k:n=2k. • L’intervalle de départ de i=1 à j=n (n items). • Chaque itération: l’intervalle ji+1 est coupé en 2. • La boucle termine quand l’intervalle de recherche est 1=20 (i=j). • Donc, le nombre d’itérations est:k = log2n = (log2n)= (log n) • Même pour n2k (pas une puissance de 2),la complexité reste (log2n) = (log n).

  11. Quelques ordres de complexité • (1) Constant • (logcn)Logarithmique (même ordre c) • (logcn)Polylogarithmique • (n) Linéaire • (nc) Polynomiale ( pour divers c) • (cn) Exponentielle (pour c>1) • (n!) Factorielle (With c a constant.) NP Problems

  12. Analyse de complexité: points importants • Définitions de la complexité algorithmique, complexité temporelle, complexite temporelle du pire cas. • Identifier l’ordre de complexité. • Analyse de complexité: pire cas, meilleur cas, ou cas moyen de l’ordre de complexité temporelle d’algorithmes simples.

  13. Revue: Complexité • Complexité algorithmique = coût de l’exécution. • L’Accent est mis sur la complexité temporelle. • Même si l’espace et l’énergie est importante. • Caractériser la complexité en fonction de n la dimension des inputs: Pire-cas, Meilleur-case, ou Cas-moyen. • Utilisation de la notion d’ordre pour représenter de façon concise des propriétés de croissance des fonctions de complexité.

More Related