Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique...

141
Rappel 1 / 31

Transcript of Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique...

Page 1: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Rappel

ProblématiqueOn veut mesurer l’efficacité temporelle d’un algorithme.

Temps d’exécutionproportionnel au nombre d’opérations élementaires effectués.

Nombre d’opérations dépend de la taille de la donnéeet de la difficulté de l’instance ;

En général, on mesure la complexité asymptotique et dans le pire cas (notationsΩ,O,Θ).

1 / 31

Page 2: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Rappel

ProblématiqueOn veut mesurer l’efficacité temporelle d’un algorithme.

Temps d’exécutionproportionnel au nombre d’opérations élementaires effectués.

Nombre d’opérations dépend de la taille de la donnéeet de la difficulté de l’instance ;

En général, on mesure la complexité asymptotique et dans le pire cas (notationsΩ,O,Θ).

1 / 31

Page 3: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Rappel

ProblématiqueOn veut mesurer l’efficacité temporelle d’un algorithme.

Temps d’exécutionproportionnel au nombre d’opérations élementaires effectués.

Nombre d’opérations dépend de la taille de la donnéeet de la difficulté de l’instance ;

En général, on mesure la complexité asymptotique et dans le pire cas (notationsΩ,O,Θ).

1 / 31

Page 4: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Rappel

ProblématiqueOn veut mesurer l’efficacité temporelle d’un algorithme.

Temps d’exécutionproportionnel au nombre d’opérations élementaires effectués.

Nombre d’opérations dépend de la taille de la donnée

et de la difficulté de l’instance ;

En général, on mesure la complexité asymptotique et dans le pire cas (notationsΩ,O,Θ).

1 / 31

Page 5: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Rappel

ProblématiqueOn veut mesurer l’efficacité temporelle d’un algorithme.

Temps d’exécutionproportionnel au nombre d’opérations élementaires effectués.

Nombre d’opérations dépend de la taille de la donnéeet de la difficulté de l’instance ;

En général, on mesure la complexité asymptotique et dans le pire cas (notationsΩ,O,Θ).

1 / 31

Page 6: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Rappel

ProblématiqueOn veut mesurer l’efficacité temporelle d’un algorithme.

Temps d’exécutionproportionnel au nombre d’opérations élementaires effectués.

Nombre d’opérations dépend de la taille de la donnéeet de la difficulté de l’instance ;

En général, on mesure la complexité asymptotique et dans le pire cas (notationsΩ,O,Θ).

1 / 31

Page 7: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Programme d’aujourd’hui

Règles de réduction pour Ω,O,Θ

Technique de calcul de complexité pour les récurrencesI Méthode par substitutionI Théorème Maître

Taille de la donnée

Vers une définition de classes de complexitéI En fonction du temps, de l’espace mémoireI Réduction polynômiale

2 / 31

Page 8: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Programme d’aujourd’hui

Règles de réduction pour Ω,O,Θ

Technique de calcul de complexité pour les récurrencesI Méthode par substitutionI Théorème Maître

Taille de la donnée

Vers une définition de classes de complexitéI En fonction du temps, de l’espace mémoireI Réduction polynômiale

2 / 31

Page 9: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Programme d’aujourd’hui

Règles de réduction pour Ω,O,Θ

Technique de calcul de complexité pour les récurrencesI Méthode par substitutionI Théorème Maître

Taille de la donnée

Vers une définition de classes de complexitéI En fonction du temps, de l’espace mémoireI Réduction polynômiale

2 / 31

Page 10: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Programme d’aujourd’hui

Règles de réduction pour Ω,O,Θ

Technique de calcul de complexité pour les récurrencesI Méthode par substitutionI Théorème Maître

Taille de la donnée

Vers une définition de classes de complexitéI En fonction du temps, de l’espace mémoireI Réduction polynômiale

2 / 31

Page 11: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Algorithmes Récursifs

Algorithmes Récursifs 3 / 31

Page 12: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Règles de calculs : combinaisons des complexités

Les instructions de base prennent un temps constant, noté O(1) ;

On additionne les complexités d’opérations en séquence :

O(f (n)) +O(g(n)) = O(f (n) + g(n))

Même chose pour les branchements conditionnels :

max(O(f (n)),O(g(n))) = O(f (n)) + O(g(n))

Exemple

si <condition> alors#instructions (1);

sinon#instructions (2);

O(g(n))O(f1(n))

O(f2(n))

= O(g(n) + f1(n) + f2(n))

Algorithmes Récursifs 4 / 31

Page 13: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Règles de calculs : combinaisons des complexités

Les instructions de base prennent un temps constant, noté O(1) ;

On additionne les complexités d’opérations en séquence :

O(f (n)) +O(g(n)) = O(f (n) + g(n))

Même chose pour les branchements conditionnels :

max(O(f (n)),O(g(n))) = O(f (n)) + O(g(n))

Exemple

si <condition> alors#instructions (1);

sinon#instructions (2);

O(g(n))O(f1(n))

O(f2(n))

= O(g(n) + f1(n) + f2(n))

Algorithmes Récursifs 4 / 31

Page 14: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Règles de calculs : combinaisons des complexités

Les instructions de base prennent un temps constant, noté O(1) ;

On additionne les complexités d’opérations en séquence :

O(f (n)) +O(g(n)) = O(f (n) + g(n))

Même chose pour les branchements conditionnels :

max(O(f (n)),O(g(n))) = O(f (n)) + O(g(n))

Exemple

si <condition> alors#instructions (1);

sinon#instructions (2);

O(g(n))O(f1(n))

O(f2(n))

= O(g(n) + f1(n) + f2(n))

Algorithmes Récursifs 4 / 31

Page 15: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Règles de calculs : combinaisons des complexités

Les instructions de base prennent un temps constant, noté O(1) ;

On additionne les complexités d’opérations en séquence :

O(f (n)) +O(g(n)) = O(f (n) + g(n))

Même chose pour les branchements conditionnels :

max(O(f (n)),O(g(n))) = O(f (n)) + O(g(n))

Exemple

si <condition> alors#instructions (1);

sinon#instructions (2);

O(g(n))O(f1(n))

O(f2(n))

= O(g(n) + f1(n) + f2(n))

Algorithmes Récursifs 4 / 31

Page 16: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Règles de calculs : combinaisons des complexités

Les instructions de base prennent un temps constant, noté O(1) ;

On additionne les complexités d’opérations en séquence :

O(f (n)) +O(g(n)) = O(f (n) + g(n))

Même chose pour les branchements conditionnels :

max(O(f (n)),O(g(n))) = O(f (n)) + O(g(n))

Exemple

si <condition> alors#instructions (1);

sinon#instructions (2);

O(g(n))

O(f1(n))

O(f2(n))

= O(g(n) + f1(n) + f2(n))

Algorithmes Récursifs 4 / 31

Page 17: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Règles de calculs : combinaisons des complexités

Les instructions de base prennent un temps constant, noté O(1) ;

On additionne les complexités d’opérations en séquence :

O(f (n)) +O(g(n)) = O(f (n) + g(n))

Même chose pour les branchements conditionnels :

max(O(f (n)),O(g(n))) = O(f (n)) + O(g(n))

Exemple

si <condition> alors#instructions (1);

sinon#instructions (2);

O(g(n))O(f1(n))

O(f2(n))

= O(g(n) + f1(n) + f2(n))

Algorithmes Récursifs 4 / 31

Page 18: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Règles de calculs : combinaisons des complexités

Les instructions de base prennent un temps constant, noté O(1) ;

On additionne les complexités d’opérations en séquence :

O(f (n)) +O(g(n)) = O(f (n) + g(n))

Même chose pour les branchements conditionnels :

max(O(f (n)),O(g(n))) = O(f (n)) + O(g(n))

Exemple

si <condition> alors#instructions (1);

sinon#instructions (2);

O(g(n))O(f1(n))

O(f2(n))

= O(g(n) + f1(n) + f2(n))

Algorithmes Récursifs 4 / 31

Page 19: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Règles de calculs : combinaisons des complexités

Les instructions de base prennent un temps constant, noté O(1) ;

On additionne les complexités d’opérations en séquence :

O(f (n)) +O(g(n)) = O(f (n) + g(n))

Même chose pour les branchements conditionnels :

max(O(f (n)),O(g(n))) = O(f (n)) + O(g(n))

Exemple

si <condition> alors#instructions (1);

sinon#instructions (2);

O(g(n))O(f1(n))

O(f2(n))

= O(g(n) + f1(n) + f2(n))

Algorithmes Récursifs 4 / 31

Page 20: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Règles de calculs : combinaison des complexité

Dans les boucles, on multiplie la complexité du corps de la boucle par le nombred’itérations ;

Algorithmes Récursifs 5 / 31

Page 21: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Règles de calculs : combinaison des complexité

Dans les boucles, on multiplie la complexité du corps de la boucle par le nombred’itérations ;

Calcul de la complexité d’une boucle while :

Exempleen supposant qu’on a O(h(n)) itérationstant que <condition>faire

#instructions ;

O(g(n))O(f (n))

= O(h(n)× (g(n) + f (n)))

Algorithmes Récursifs 5 / 31

Page 22: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Règles de calculs : combinaison des complexité

Dans les boucles, on multiplie la complexité du corps de la boucle par le nombred’itérations ;

Calcul de la complexité d’une boucle for :

Exemple

en supposant qu’on a m itérations

pour i allant de a à b faire#instructions ; O(f (n))

= O((b − a + 1)× f (n))

Algorithmes Récursifs 5 / 31

Page 23: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Calcul de la complexité asymptotique d’unalgorithme

Pour calculer la complexité d’un algorithme :

1 on calcule la complexité de chaque “partie” de l’algorithme ;

2 on combine ces complexités conformément aux règles qu’on vient de voir ;

3 on simplifie le résultat grâce aux règles de simplifications qu’on a vues ;F élimination des constantes, etF conservation du (des) termes dominants

Algorithmes Récursifs 6 / 31

Page 24: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Calcul de la complexité asymptotique d’unalgorithme

Pour calculer la complexité d’un algorithme :

1 on calcule la complexité de chaque “partie” de l’algorithme ;

2 on combine ces complexités conformément aux règles qu’on vient de voir ;

3 on simplifie le résultat grâce aux règles de simplifications qu’on a vues ;F élimination des constantes, etF conservation du (des) termes dominants

Algorithmes Récursifs 6 / 31

Page 25: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Calcul de la complexité asymptotique d’unalgorithme

Pour calculer la complexité d’un algorithme :

1 on calcule la complexité de chaque “partie” de l’algorithme ;

2 on combine ces complexités conformément aux règles qu’on vient de voir ;

3 on simplifie le résultat grâce aux règles de simplifications qu’on a vues ;F élimination des constantes, etF conservation du (des) termes dominants

Algorithmes Récursifs 6 / 31

Page 26: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Calcul de la complexité asymptotique d’unalgorithme

Pour calculer la complexité d’un algorithme :

1 on calcule la complexité de chaque “partie” de l’algorithme ;

2 on combine ces complexités conformément aux règles qu’on vient de voir ;

3 on simplifie le résultat grâce aux règles de simplifications qu’on a vues ;F élimination des constantes, etF conservation du (des) termes dominants

Algorithmes Récursifs 6 / 31

Page 27: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Exemple : calcul de la factorielle de n ∈ N

Reprenons le calcul de la factorielle, qui nécessitait 3n opérations :

Algorithme : Factorielle(n)Données : un entier nRésultat : un entier valant n!

1 fact, i : entier;2 début3 fact ← 2;4 pour i allant de 3 à n faire5 fact ← fact ∗ i ;6 retourner fact;

nombre coût

initialisation : Θ(1)× Θ(1)itérations : Θ(n)× Θ(1)mult. + affect. : Θ(n)× Θ(1)retour fonction : Θ(1)× Θ(1)

Nombre total d’opérations :

Θ(1) + Θ(n) ∗Θ(1) + Θ(n) ∗Θ(1) + Θ(1) = Θ(n)

Algorithmes Récursifs 7 / 31

Page 28: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Exemple : calcul de la factorielle de n ∈ N

Reprenons le calcul de la factorielle, qui nécessitait 3n opérations :

Algorithme : Factorielle(n)Données : un entier nRésultat : un entier valant n!

1 fact, i : entier;2 début3 fact ← 2;4 pour i allant de 3 à n faire5 fact ← fact ∗ i ;6 retourner fact;

nombre coût

initialisation : Θ(1)× Θ(1)

itérations : Θ(n)× Θ(1)mult. + affect. : Θ(n)× Θ(1)retour fonction : Θ(1)× Θ(1)

Nombre total d’opérations :

Θ(1) + Θ(n) ∗Θ(1) + Θ(n) ∗Θ(1) + Θ(1) = Θ(n)

Algorithmes Récursifs 7 / 31

Page 29: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Exemple : calcul de la factorielle de n ∈ N

Reprenons le calcul de la factorielle, qui nécessitait 3n opérations :

Algorithme : Factorielle(n)Données : un entier nRésultat : un entier valant n!

1 fact, i : entier;2 début3 fact ← 2;4 pour i allant de 3 à n faire5 fact ← fact ∗ i ;6 retourner fact;

nombre coût

initialisation : Θ(1)× Θ(1)itérations : Θ(n)× Θ(1)

mult. + affect. : Θ(n)× Θ(1)retour fonction : Θ(1)× Θ(1)

Nombre total d’opérations :

Θ(1) + Θ(n) ∗Θ(1) + Θ(n) ∗Θ(1) + Θ(1) = Θ(n)

Algorithmes Récursifs 7 / 31

Page 30: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Exemple : calcul de la factorielle de n ∈ N

Reprenons le calcul de la factorielle, qui nécessitait 3n opérations :

Algorithme : Factorielle(n)Données : un entier nRésultat : un entier valant n!

1 fact, i : entier;2 début3 fact ← 2;4 pour i allant de 3 à n faire5 fact ← fact ∗ i ;6 retourner fact;

nombre coût

initialisation : Θ(1)× Θ(1)itérations : Θ(n)× Θ(1)mult. + affect. : Θ(n)× Θ(1)

retour fonction : Θ(1)× Θ(1)

Nombre total d’opérations :

Θ(1) + Θ(n) ∗Θ(1) + Θ(n) ∗Θ(1) + Θ(1) = Θ(n)

Algorithmes Récursifs 7 / 31

Page 31: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Exemple : calcul de la factorielle de n ∈ N

Reprenons le calcul de la factorielle, qui nécessitait 3n opérations :

Algorithme : Factorielle(n)Données : un entier nRésultat : un entier valant n!

1 fact, i : entier;2 début3 fact ← 2;4 pour i allant de 3 à n faire5 fact ← fact ∗ i ;6 retourner fact;

nombre coût

initialisation : Θ(1)× Θ(1)itérations : Θ(n)× Θ(1)mult. + affect. : Θ(n)× Θ(1)retour fonction : Θ(1)× Θ(1)

Nombre total d’opérations :

Θ(1) + Θ(n) ∗Θ(1) + Θ(n) ∗Θ(1) + Θ(1) = Θ(n)

Algorithmes Récursifs 7 / 31

Page 32: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Exemple : calcul de la factorielle de n ∈ N

Reprenons le calcul de la factorielle, qui nécessitait 3n opérations :

Algorithme : Factorielle(n)Données : un entier nRésultat : un entier valant n!

1 fact, i : entier;2 début3 fact ← 2;4 pour i allant de 3 à n faire5 fact ← fact ∗ i ;6 retourner fact;

nombre coût

initialisation : Θ(1)× Θ(1)itérations : Θ(n)× Θ(1)mult. + affect. : Θ(n)× Θ(1)retour fonction : Θ(1)× Θ(1)

Nombre total d’opérations :

Θ(1) + Θ(n) ∗Θ(1) + Θ(n) ∗Θ(1) + Θ(1) = Θ(n)

Algorithmes Récursifs 7 / 31

Page 33: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Exemple : Tri à bulles

La méthode de “comptage” n’est pas toujours applicable directement

Algorithme : TriBulles(T )

Données : un tableau TRésultat : le tableau T trié

1 début2 pour i allant de 2 à |T | faire3 pour j allant de 1 à i − 1 faire4 si T [j + 1] < T [j] alors5 échanger(T [j + 1],T [j]);

nombre coût

itérations : Θ(|T |)× Θ(1)itération : ?× Θ(1)1ère itération : 1 comparaison2ème itération : 2 comparaisons. . .

Séries arithmétiquesn∑

k=1

k = 1 + 2 + 3 + · · ·+ n =12n(n + 1) ∈ Θ(n2)

Nombre total d’opérations : Θ(|T |2)

Algorithmes Récursifs 8 / 31

Page 34: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Exemple : Tri à bulles

La méthode de “comptage” n’est pas toujours applicable directement

Algorithme : TriBulles(T )

Données : un tableau TRésultat : le tableau T trié

1 début2 pour i allant de 2 à |T | faire3 pour j allant de 1 à i − 1 faire4 si T [j + 1] < T [j] alors5 échanger(T [j + 1],T [j]);

nombre coût

itérations : Θ(|T |)× Θ(1)itération : ?× Θ(1)1ère itération : 1 comparaison2ème itération : 2 comparaisons. . .

Séries arithmétiquesn∑

k=1

k = 1 + 2 + 3 + · · ·+ n =12n(n + 1) ∈ Θ(n2)

Nombre total d’opérations : Θ(|T |2)

Algorithmes Récursifs 8 / 31

Page 35: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Exemple : Tri à bulles

La méthode de “comptage” n’est pas toujours applicable directement

Algorithme : TriBulles(T )

Données : un tableau TRésultat : le tableau T trié

1 début2 pour i allant de 2 à |T | faire3 pour j allant de 1 à i − 1 faire4 si T [j + 1] < T [j] alors5 échanger(T [j + 1],T [j]);

nombre coût

itérations : Θ(|T |)× Θ(1)

itération : ?× Θ(1)1ère itération : 1 comparaison2ème itération : 2 comparaisons. . .

Séries arithmétiquesn∑

k=1

k = 1 + 2 + 3 + · · ·+ n =12n(n + 1) ∈ Θ(n2)

Nombre total d’opérations : Θ(|T |2)

Algorithmes Récursifs 8 / 31

Page 36: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Exemple : Tri à bulles

La méthode de “comptage” n’est pas toujours applicable directement

Algorithme : TriBulles(T )

Données : un tableau TRésultat : le tableau T trié

1 début2 pour i allant de 2 à |T | faire3 pour j allant de 1 à i − 1 faire4 si T [j + 1] < T [j] alors5 échanger(T [j + 1],T [j]);

nombre coût

itérations : Θ(|T |)× Θ(1)itération : ?× Θ(1)

1ère itération : 1 comparaison2ème itération : 2 comparaisons. . .

Séries arithmétiquesn∑

k=1

k = 1 + 2 + 3 + · · ·+ n =12n(n + 1) ∈ Θ(n2)

Nombre total d’opérations : Θ(|T |2)

Algorithmes Récursifs 8 / 31

Page 37: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Exemple : Tri à bulles

La méthode de “comptage” n’est pas toujours applicable directement

Algorithme : TriBulles(T )

Données : un tableau TRésultat : le tableau T trié

1 début2 pour i allant de 2 à |T | faire3 pour j allant de 1 à i − 1 faire4 si T [j + 1] < T [j] alors5 échanger(T [j + 1],T [j]);

nombre coût

itérations : Θ(|T |)× Θ(1)itération : ?× Θ(1)1ère itération : 1 comparaison2ème itération : 2 comparaisons. . .

Séries arithmétiquesn∑

k=1

k = 1 + 2 + 3 + · · ·+ n =12n(n + 1) ∈ Θ(n2)

Nombre total d’opérations : Θ(|T |2)

Algorithmes Récursifs 8 / 31

Page 38: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Exemple : Tri à bulles

La méthode de “comptage” n’est pas toujours applicable directement

Algorithme : TriBulles(T )

Données : un tableau TRésultat : le tableau T trié

1 début2 pour i allant de 2 à |T | faire3 pour j allant de 1 à i − 1 faire4 si T [j + 1] < T [j] alors5 échanger(T [j + 1],T [j]);

nombre coût

itérations : Θ(|T |)× Θ(1)itération : ?× Θ(1)1ère itération : 1 comparaison2ème itération : 2 comparaisons. . .

Séries arithmétiquesn∑

k=1

k = 1 + 2 + 3 + · · ·+ n =12n(n + 1) ∈ Θ(n2)

Nombre total d’opérations : Θ(|T |2)

Algorithmes Récursifs 8 / 31

Page 39: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Exemple : Tri à bulles

La méthode de “comptage” n’est pas toujours applicable directement

Algorithme : TriBulles(T )

Données : un tableau TRésultat : le tableau T trié

1 début2 pour i allant de 2 à |T | faire3 pour j allant de 1 à i − 1 faire4 si T [j + 1] < T [j] alors5 échanger(T [j + 1],T [j]);

nombre coût

itérations : Θ(|T |)× Θ(1)itération : ?× Θ(1)1ère itération : 1 comparaison2ème itération : 2 comparaisons. . .

Séries arithmétiquesn∑

k=1

k = 1 + 2 + 3 + · · ·+ n =12n(n + 1) ∈ Θ(n2)

Nombre total d’opérations : Θ(|T |2)

Algorithmes Récursifs 8 / 31

Page 40: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Récurrences

Stratégie “diviser pour régner”

Algorithme : TriFusion(T )

Données : un tableau TRésultat : le tableau T triémil : entier;début

si |T | ≤ 1 alorsretourner T ;

sinonmilieu ← b |T |+1

2 c;retournerFusion(T [:mil ] , T [mil :]);

Algorithme : Fusion(T1,T2)Données : deux tableaux T1 et T2Résultat : un tableau T trié contenant les

éléments de T1 et de T2T : tableau de taille T1 + T2;début

si |T1| = 0 alorsT ← T2;

sinon si |T2| = 0 alorsT ← T1;

sinon si T1[1] < T2[1] alorsT [1]← T1[1];T [2:]← Fusion(T1[2:],T2[1:]);

sinonT [1]← T2[1];T [2:]← Fusion(T1[1:],T2[2:]);

retourner T

Algorithmes Récursifs 9 / 31

Page 41: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Récurrences

Stratégie “diviser pour régner”

Algorithme : TriFusion(T )

Données : un tableau TRésultat : le tableau T triémil : entier;début

si |T | ≤ 1 alorsretourner T ;

sinonmilieu ← b |T |+1

2 c;retournerFusion(T [:mil ] , T [mil :]);

Algorithme : Fusion(T1,T2)Données : deux tableaux T1 et T2Résultat : un tableau T trié contenant les

éléments de T1 et de T2T : tableau de taille T1 + T2;début

si |T1| = 0 alorsT ← T2;

sinon si |T2| = 0 alorsT ← T1;

sinon si T1[1] < T2[1] alorsT [1]← T1[1];T [2:]← Fusion(T1[2:],T2[1:]);

sinonT [1]← T2[1];T [2:]← Fusion(T1[1:],T2[2:]);

retourner T

Algorithmes Récursifs 9 / 31

Page 42: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Illustration du Tri Fusion

Algorithmes Récursifs 10 / 31

Page 43: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Récurrences

Temps d’exécution T dans le pire des cas du tri fusion pour trier un tableau de nentiers

T (n) =

Θ(1) si n = 12T (n/2) + Θ(n) si n > 1

Complexité du tri fusion : T (n) = Θ(n log n)

Comment passer de l’un à l’autre ?I Méthode par substitutionI Méthode générale (théorème maître)

Algorithmes Récursifs 11 / 31

Page 44: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Récurrences

Temps d’exécution T dans le pire des cas du tri fusion pour trier un tableau de nentiers

T (n) =

Θ(1) si n = 12T (n/2) + Θ(n) si n > 1

Complexité du tri fusion : T (n) = Θ(n log n)

Comment passer de l’un à l’autre ?I Méthode par substitutionI Méthode générale (théorème maître)

Algorithmes Récursifs 11 / 31

Page 45: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Récurrences

Temps d’exécution T dans le pire des cas du tri fusion pour trier un tableau de nentiers

T (n) =

Θ(1) si n = 12T (n/2) + Θ(n) si n > 1

Complexité du tri fusion : T (n) = Θ(n log n)

Comment passer de l’un à l’autre ?I Méthode par substitutionI Méthode générale (théorème maître)

Algorithmes Récursifs 11 / 31

Page 46: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Récurrences

Temps d’exécution T dans le pire des cas du tri fusion pour trier un tableau de nentiers

T (n) =

Θ(1) si n = 12T (n/2) + Θ(n) si n > 1

Complexité du tri fusion : T (n) = Θ(n log n)

Comment passer de l’un à l’autre ?I Méthode par substitutionI Méthode générale (théorème maître)

Algorithmes Récursifs 11 / 31

Page 47: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode par substitution

Il faut avoir une intuition sur la forme de la solution (ici : O(n log n))

On veut montrer que T (n) = 2T (bn/2c) + Θ(n) ∈ O(n log n)

On montre par induction qu’il existe f (n) t.q. ∀n T (n) ≤ f (n)

I On va en déduire a posteriori que T (n) ∈ O(f (n))

Attention !L’hypothèse d’induction est T (n) ≤ f (n), et non T (n) ∈ O(f (n))

L’argument inductif “pour tout x < n, T (x) ∈ O(f (x))” ne veut pas dire grand chosepuisque la notation O est définie pour n arbitrairement grand : on remplace tous lestermes en O,Ω,Θ par une fonction élément de l’ensemble

Algorithmes Récursifs 12 / 31

Page 48: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode par substitution

Il faut avoir une intuition sur la forme de la solution (ici : O(n log n))

On veut montrer que T (n) = 2T (bn/2c) + Θ(n) ∈ O(n log n)

On montre par induction qu’il existe f (n) t.q. ∀n T (n) ≤ f (n)

I On va en déduire a posteriori que T (n) ∈ O(f (n))

Attention !L’hypothèse d’induction est T (n) ≤ f (n), et non T (n) ∈ O(f (n))

L’argument inductif “pour tout x < n, T (x) ∈ O(f (x))” ne veut pas dire grand chosepuisque la notation O est définie pour n arbitrairement grand : on remplace tous lestermes en O,Ω,Θ par une fonction élément de l’ensemble

Algorithmes Récursifs 12 / 31

Page 49: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode par substitution

Il faut avoir une intuition sur la forme de la solution (ici : O(n log n))

On veut montrer que T (n) = 2T (bn/2c) + Θ(n) ∈ O(n log n)

On montre par induction qu’il existe f (n) t.q. ∀n T (n) ≤ f (n)

I On va en déduire a posteriori que T (n) ∈ O(f (n))

Attention !L’hypothèse d’induction est T (n) ≤ f (n), et non T (n) ∈ O(f (n))

L’argument inductif “pour tout x < n, T (x) ∈ O(f (x))” ne veut pas dire grand chosepuisque la notation O est définie pour n arbitrairement grand : on remplace tous lestermes en O,Ω,Θ par une fonction élément de l’ensemble

Algorithmes Récursifs 12 / 31

Page 50: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode par substitution

Il faut avoir une intuition sur la forme de la solution (ici : O(n log n))

On veut montrer que T (n) = 2T (bn/2c) + Θ(n) ∈ O(n log n)

On montre par induction qu’il existe f (n) t.q. ∀n T (n) ≤ f (n)

I On va en déduire a posteriori que T (n) ∈ O(f (n))

Attention !L’hypothèse d’induction est T (n) ≤ f (n), et non T (n) ∈ O(f (n))

L’argument inductif “pour tout x < n, T (x) ∈ O(f (x))” ne veut pas dire grand chosepuisque la notation O est définie pour n arbitrairement grand : on remplace tous lestermes en O,Ω,Θ par une fonction élément de l’ensemble

Algorithmes Récursifs 12 / 31

Page 51: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode par substitution (condition aux limites)

T (n) = 2T (bn/2c) + n ≤ cn log n

Il faut montrer que la formule est vraie pour les conditions limites de la récurrencepour des données de petite taille, i.e. n = 1

Problème : c’est faux pour n = 1 car c × 1× log 1 = 0 < T (1) = 1 ;

Mais on cherche à montrer la complexité pour des données de grande taille : n ≥ n0

et on a le choix pour n0 =⇒ vérifier pour T (2) (et T (3))

On peut aussi borner par f (n) = cn log n + b puisque cn log n + b ∈ O(n log n)

I Ou même f (n) = cn log n + an + b

Algorithmes Récursifs 13 / 31

Page 52: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode par substitution (condition aux limites)

T (n) = 2T (bn/2c) + n ≤ cn log n

Il faut montrer que la formule est vraie pour les conditions limites de la récurrencepour des données de petite taille, i.e. n = 1

Problème : c’est faux pour n = 1 car c × 1× log 1 = 0 < T (1) = 1 ;

Mais on cherche à montrer la complexité pour des données de grande taille : n ≥ n0

et on a le choix pour n0 =⇒ vérifier pour T (2) (et T (3))

On peut aussi borner par f (n) = cn log n + b puisque cn log n + b ∈ O(n log n)

I Ou même f (n) = cn log n + an + b

Algorithmes Récursifs 13 / 31

Page 53: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode par substitution (condition aux limites)

T (n) = 2T (bn/2c) + n ≤ cn log n

Il faut montrer que la formule est vraie pour les conditions limites de la récurrencepour des données de petite taille, i.e. n = 1

Problème : c’est faux pour n = 1 car c × 1× log 1 = 0 < T (1) = 1 ;

Mais on cherche à montrer la complexité pour des données de grande taille : n ≥ n0

et on a le choix pour n0 =⇒ vérifier pour T (2) (et T (3))

On peut aussi borner par f (n) = cn log n + b puisque cn log n + b ∈ O(n log n)

I Ou même f (n) = cn log n + an + b

Algorithmes Récursifs 13 / 31

Page 54: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode par substitution (condition aux limites)

T (n) = 2T (bn/2c) + n ≤ cn log n

Il faut montrer que la formule est vraie pour les conditions limites de la récurrencepour des données de petite taille, i.e. n = 1

Problème : c’est faux pour n = 1 car c × 1× log 1 = 0 < T (1) = 1 ;

Mais on cherche à montrer la complexité pour des données de grande taille : n ≥ n0

et on a le choix pour n0 =⇒ vérifier pour T (2) (et T (3))

On peut aussi borner par f (n) = cn log n + b puisque cn log n + b ∈ O(n log n)

I Ou même f (n) = cn log n + an + b

Algorithmes Récursifs 13 / 31

Page 55: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode par substitution (condition aux limites)

T (n) = 2T (bn/2c) + n ≤ cn log n

On vérifie que la formule tient pour T (2) et T (3)

T (2) = 2T (b2/2c) + 2

T (2) = 2T (1) + 2

T (2) = 2 ∗ 1 + 2 = 4 ≤ 2c log 2 = 2c

T (2) = 4 ≤ 2c

c ≥ 2

On fait la même chose pour T (3)...

... et on obtient que c doit être ≥ 2.

Algorithmes Récursifs 14 / 31

Page 56: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode par substitution (condition aux limites)

T (n) = 2T (bn/2c) + n ≤ cn log n

On vérifie que la formule tient pour T (2) et T (3)

T (2) = 2T (b2/2c) + 2

T (2) = 2T (1) + 2

T (2) = 2 ∗ 1 + 2 = 4 ≤ 2c log 2 = 2c

T (2) = 4 ≤ 2c

c ≥ 2

On fait la même chose pour T (3)...

... et on obtient que c doit être ≥ 2.

Algorithmes Récursifs 14 / 31

Page 57: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode par substitution (condition aux limites)

T (n) = 2T (bn/2c) + n ≤ cn log n

On vérifie que la formule tient pour T (2) et T (3)

T (2) = 2T (b2/2c) + 2

T (2) = 2T (1) + 2

T (2) = 2 ∗ 1 + 2 = 4 ≤ 2c log 2 = 2c

T (2) = 4 ≤ 2c

c ≥ 2

On fait la même chose pour T (3)...

... et on obtient que c doit être ≥ 2.

Algorithmes Récursifs 14 / 31

Page 58: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode par substitution (condition aux limites)

T (n) = 2T (bn/2c) + n ≤ cn log n

On vérifie que la formule tient pour T (2) et T (3)

T (2) = 2T (b2/2c) + 2

T (2) = 2T (1) + 2

T (2) = 2 ∗ 1 + 2 = 4 ≤ 2c log 2 = 2c

T (2) = 4 ≤ 2c

c ≥ 2

On fait la même chose pour T (3)...

... et on obtient que c doit être ≥ 2.

Algorithmes Récursifs 14 / 31

Page 59: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode par substitution (condition aux limites)

T (n) = 2T (bn/2c) + n ≤ cn log n

On vérifie que la formule tient pour T (2) et T (3)

T (2) = 2T (b2/2c) + 2

T (2) = 2T (1) + 2

T (2) = 2 ∗ 1 + 2 = 4 ≤ 2c log 2 = 2c

T (2) = 4 ≤ 2c

c ≥ 2

On fait la même chose pour T (3)...

... et on obtient que c doit être ≥ 2.

Algorithmes Récursifs 14 / 31

Page 60: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode par substitution (condition aux limites)

T (n) = 2T (bn/2c) + n ≤ cn log n

On vérifie que la formule tient pour T (2) et T (3)

T (2) = 2T (b2/2c) + 2

T (2) = 2T (1) + 2

T (2) = 2 ∗ 1 + 2 = 4 ≤ 2c log 2 = 2c

T (2) = 4 ≤ 2c

c ≥ 2

On fait la même chose pour T (3)...

... et on obtient que c doit être ≥ 2.

Algorithmes Récursifs 14 / 31

Page 61: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode par substitution (condition aux limites)

T (n) = 2T (bn/2c) + n ≤ cn log n

On vérifie que la formule tient pour T (2) et T (3)

T (2) = 2T (b2/2c) + 2

T (2) = 2T (1) + 2

T (2) = 2 ∗ 1 + 2 = 4 ≤ 2c log 2 = 2c

T (2) = 4 ≤ 2c

c ≥ 2

On fait la même chose pour T (3)...

... et on obtient que c doit être ≥ 2.

Algorithmes Récursifs 14 / 31

Page 62: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode par substitution (condition aux limites)

T (n) = 2T (bn/2c) + n ≤ cn log n

On vérifie que la formule tient pour T (2) et T (3)

T (2) = 2T (b2/2c) + 2

T (2) = 2T (1) + 2

T (2) = 2 ∗ 1 + 2 = 4 ≤ 2c log 2 = 2c

T (2) = 4 ≤ 2c

c ≥ 2

On fait la même chose pour T (3)...

... et on obtient que c doit être ≥ 2.

Algorithmes Récursifs 14 / 31

Page 63: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode par substitution (Induction)

T (n) = 2T (bn/2c) + n ≤ cn log n

On suppose maintenant que T (x) ≤ cx log x est vrai pour tout 2 ≤ x ≤ n − 1 ; et onvérifie que c’est aussi le cas pour x = n

T (bn/2c) ≤ cbn/2c logbn/2c

On substitue dans l’expression

T (n) = 2T (bn/2c) + n≤ 2cb n2c log(b n2c) + n≤ cn log(n/2) + n= cn log n − cn log 2 + n= cn log n − cn + n≤ cn log n

A condition que c ≥ 1 (on prendra c ≥ 2, à cause de T (2) et T (3))

Algorithmes Récursifs 15 / 31

Page 64: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode par substitution (Induction)

T (n) = 2T (bn/2c) + n ≤ cn log n

On suppose maintenant que T (x) ≤ cx log x est vrai pour tout 2 ≤ x ≤ n − 1 ; et onvérifie que c’est aussi le cas pour x = n

T (bn/2c) ≤ cbn/2c logbn/2c

On substitue dans l’expression

T (n) = 2T (bn/2c) + n

≤ 2cb n2c log(b n2c) + n≤ cn log(n/2) + n= cn log n − cn log 2 + n= cn log n − cn + n≤ cn log n

A condition que c ≥ 1 (on prendra c ≥ 2, à cause de T (2) et T (3))

Algorithmes Récursifs 15 / 31

Page 65: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode par substitution (Induction)

T (n) = 2T (bn/2c) + n ≤ cn log n

On suppose maintenant que T (x) ≤ cx log x est vrai pour tout 2 ≤ x ≤ n − 1 ; et onvérifie que c’est aussi le cas pour x = n

T (bn/2c) ≤ cbn/2c logbn/2c

On substitue dans l’expression

T (n) = 2T (bn/2c) + n≤ 2cb n2c log(b n2c) + n

≤ cn log(n/2) + n= cn log n − cn log 2 + n= cn log n − cn + n≤ cn log n

A condition que c ≥ 1 (on prendra c ≥ 2, à cause de T (2) et T (3))

Algorithmes Récursifs 15 / 31

Page 66: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode par substitution (Induction)

T (n) = 2T (bn/2c) + n ≤ cn log n

On suppose maintenant que T (x) ≤ cx log x est vrai pour tout 2 ≤ x ≤ n − 1 ; et onvérifie que c’est aussi le cas pour x = n

T (bn/2c) ≤ cbn/2c logbn/2c

On substitue dans l’expression

T (n) = 2T (bn/2c) + n≤ 2cb n2c log(b n2c) + n≤ cn log(n/2) + n

= cn log n − cn log 2 + n= cn log n − cn + n≤ cn log n

A condition que c ≥ 1 (on prendra c ≥ 2, à cause de T (2) et T (3))

Algorithmes Récursifs 15 / 31

Page 67: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode par substitution (Induction)

T (n) = 2T (bn/2c) + n ≤ cn log n

On suppose maintenant que T (x) ≤ cx log x est vrai pour tout 2 ≤ x ≤ n − 1 ; et onvérifie que c’est aussi le cas pour x = n

T (bn/2c) ≤ cbn/2c logbn/2c

On substitue dans l’expression

T (n) = 2T (bn/2c) + n≤ 2cb n2c log(b n2c) + n≤ cn log(n/2) + n= cn log n − cn log 2 + n

= cn log n − cn + n≤ cn log n

A condition que c ≥ 1 (on prendra c ≥ 2, à cause de T (2) et T (3))

Algorithmes Récursifs 15 / 31

Page 68: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode par substitution (Induction)

T (n) = 2T (bn/2c) + n ≤ cn log n

On suppose maintenant que T (x) ≤ cx log x est vrai pour tout 2 ≤ x ≤ n − 1 ; et onvérifie que c’est aussi le cas pour x = n

T (bn/2c) ≤ cbn/2c logbn/2c

On substitue dans l’expression

T (n) = 2T (bn/2c) + n≤ 2cb n2c log(b n2c) + n≤ cn log(n/2) + n= cn log n − cn log 2 + n= cn log n − cn + n

≤ cn log n

A condition que c ≥ 1 (on prendra c ≥ 2, à cause de T (2) et T (3))

Algorithmes Récursifs 15 / 31

Page 69: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode par substitution (Induction)

T (n) = 2T (bn/2c) + n ≤ cn log n

On suppose maintenant que T (x) ≤ cx log x est vrai pour tout 2 ≤ x ≤ n − 1 ; et onvérifie que c’est aussi le cas pour x = n

T (bn/2c) ≤ cbn/2c logbn/2c

On substitue dans l’expression

T (n) = 2T (bn/2c) + n≤ 2cb n2c log(b n2c) + n≤ cn log(n/2) + n= cn log n − cn log 2 + n= cn log n − cn + n≤ cn log n

A condition que c ≥ 1 (on prendra c ≥ 2, à cause de T (2) et T (3))

Algorithmes Récursifs 15 / 31

Page 70: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode par substitution (Induction)

T (n) = 2T (bn/2c) + n ≤ cn log n

On suppose maintenant que T (x) ≤ cx log x est vrai pour tout 2 ≤ x ≤ n − 1 ; et onvérifie que c’est aussi le cas pour x = n

T (bn/2c) ≤ cbn/2c logbn/2c

On substitue dans l’expression

T (n) = 2T (bn/2c) + n≤ 2cb n2c log(b n2c) + n≤ cn log(n/2) + n= cn log n − cn log 2 + n= cn log n − cn + n≤ cn log n

A condition que c ≥ 1 (on prendra c ≥ 2, à cause de T (2) et T (3))

Algorithmes Récursifs 15 / 31

Page 71: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode générale

Pour les récurrence de la forme T (n) = aT (n/b) + f (n) avec a ≥ 1 et b > 1

L’algorithme découpe la donnée en a sous-problèmes de taille n/b et les résoutrécursivementLa fonction f représente le coût de division et de « fusion » du problème.

Exemple pour le tri fusion : a = 2, b = 2 et f (n) = Θ(n)

Exemple pour la recherche binaire : a = 1, b = 2 et f (n) = Θ(1)

Il existe un théorème pour calculer la complexité : le théorème maître

Algorithmes Récursifs 16 / 31

Page 72: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode générale

Pour les récurrence de la forme T (n) = aT (n/b) + f (n) avec a ≥ 1 et b > 1

L’algorithme découpe la donnée en a sous-problèmes de taille n/b et les résoutrécursivementLa fonction f représente le coût de division et de « fusion » du problème.

Exemple pour le tri fusion : a = 2, b = 2 et f (n) = Θ(n)

Exemple pour la recherche binaire : a = 1, b = 2 et f (n) = Θ(1)

Il existe un théorème pour calculer la complexité : le théorème maître

Algorithmes Récursifs 16 / 31

Page 73: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode générale

Pour les récurrence de la forme T (n) = aT (n/b) + f (n) avec a ≥ 1 et b > 1

L’algorithme découpe la donnée en a sous-problèmes de taille n/b et les résoutrécursivementLa fonction f représente le coût de division et de « fusion » du problème.

Exemple pour le tri fusion : a = 2, b = 2 et f (n) = Θ(n)

Exemple pour la recherche binaire : a = 1, b = 2 et f (n) = Θ(1)

Il existe un théorème pour calculer la complexité : le théorème maître

Algorithmes Récursifs 16 / 31

Page 74: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode générale

Pour les récurrence de la forme T (n) = aT (n/b) + f (n) avec a ≥ 1 et b > 1

L’algorithme découpe la donnée en a sous-problèmes de taille n/b et les résoutrécursivementLa fonction f représente le coût de division et de « fusion » du problème.

Exemple pour le tri fusion : a = 2, b = 2 et f (n) = Θ(n)

Exemple pour la recherche binaire : a = 1, b = 2 et f (n) = Θ(1)

Il existe un théorème pour calculer la complexité : le théorème maître

Algorithmes Récursifs 16 / 31

Page 75: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Méthode générale

Pour les récurrence de la forme T (n) = aT (n/b) + f (n) avec a ≥ 1 et b > 1

L’algorithme découpe la donnée en a sous-problèmes de taille n/b et les résoutrécursivementLa fonction f représente le coût de division et de « fusion » du problème.

Exemple pour le tri fusion : a = 2, b = 2 et f (n) = Θ(n)

Exemple pour la recherche binaire : a = 1, b = 2 et f (n) = Θ(1)

Il existe un théorème pour calculer la complexité : le théorème maître

Algorithmes Récursifs 16 / 31

Page 76: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Théorème maître (général) - version simplifiée

On ne considère que les récurrences T (n) = aT (n/b) + Θ(nd) (ou O(nd))avec a ≥ 1, b > 1, d ≥ 0

1 Si d > logb a,T (n) = Θ(nd ) complexité dominée par le coût de fusion2 Si d < logb a,T (n) = Θ(nlogb a) complexité dominée par le coût du sous-problème3 Si d = logb a,T (n) = Θ(nd log n) pas de domination

Tri fusion :

T (n) =

Θ(1) si n = 12T (n/2) + Θ(n) si n > 1

a = 2, b = 2, d = 1, log2 2 = 1 = d

On est donc dans le cas 3 et la complexité en Θ(n log n)

Algorithmes Récursifs 17 / 31

Page 77: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Théorème maître (général) - version simplifiée

On ne considère que les récurrences T (n) = aT (n/b) + Θ(nd) (ou O(nd))avec a ≥ 1, b > 1, d ≥ 0

1 Si d > logb a,T (n) = Θ(nd ) complexité dominée par le coût de fusion2 Si d < logb a,T (n) = Θ(nlogb a) complexité dominée par le coût du sous-problème3 Si d = logb a,T (n) = Θ(nd log n) pas de domination

Tri fusion :

T (n) =

Θ(1) si n = 12T (n/2) + Θ(n) si n > 1

a = 2, b = 2, d = 1, log2 2 = 1 = d

On est donc dans le cas 3 et la complexité en Θ(n log n)

Algorithmes Récursifs 17 / 31

Page 78: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Théorème maître (général) - version simplifiée

On ne considère que les récurrences T (n) = aT (n/b) + Θ(nd) (ou O(nd))avec a ≥ 1, b > 1, d ≥ 0

1 Si d > logb a,T (n) = Θ(nd ) complexité dominée par le coût de fusion2 Si d < logb a,T (n) = Θ(nlogb a) complexité dominée par le coût du sous-problème3 Si d = logb a,T (n) = Θ(nd log n) pas de domination

Tri fusion :

T (n) =

Θ(1) si n = 12T (n/2) + Θ(n) si n > 1

a = 2, b = 2, d = 1, log2 2 = 1 = d

On est donc dans le cas 3 et la complexité en Θ(n log n)

Algorithmes Récursifs 17 / 31

Page 79: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Théorème maître (général) - version simplifiée

On ne considère que les récurrences T (n) = aT (n/b) + Θ(nd) (ou O(nd))avec a ≥ 1, b > 1, d ≥ 0

1 Si d > logb a,T (n) = Θ(nd ) complexité dominée par le coût de fusion2 Si d < logb a,T (n) = Θ(nlogb a) complexité dominée par le coût du sous-problème3 Si d = logb a,T (n) = Θ(nd log n) pas de domination

Tri fusion :

T (n) =

Θ(1) si n = 12T (n/2) + Θ(n) si n > 1

a = 2,

b = 2, d = 1, log2 2 = 1 = d

On est donc dans le cas 3 et la complexité en Θ(n log n)

Algorithmes Récursifs 17 / 31

Page 80: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Théorème maître (général) - version simplifiée

On ne considère que les récurrences T (n) = aT (n/b) + Θ(nd) (ou O(nd))avec a ≥ 1, b > 1, d ≥ 0

1 Si d > logb a,T (n) = Θ(nd ) complexité dominée par le coût de fusion2 Si d < logb a,T (n) = Θ(nlogb a) complexité dominée par le coût du sous-problème3 Si d = logb a,T (n) = Θ(nd log n) pas de domination

Tri fusion :

T (n) =

Θ(1) si n = 12T (n/2) + Θ(n) si n > 1

a = 2, b = 2,

d = 1, log2 2 = 1 = d

On est donc dans le cas 3 et la complexité en Θ(n log n)

Algorithmes Récursifs 17 / 31

Page 81: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Théorème maître (général) - version simplifiée

On ne considère que les récurrences T (n) = aT (n/b) + Θ(nd) (ou O(nd))avec a ≥ 1, b > 1, d ≥ 0

1 Si d > logb a,T (n) = Θ(nd ) complexité dominée par le coût de fusion2 Si d < logb a,T (n) = Θ(nlogb a) complexité dominée par le coût du sous-problème3 Si d = logb a,T (n) = Θ(nd log n) pas de domination

Tri fusion :

T (n) =

Θ(1) si n = 12T (n/2) + Θ(n) si n > 1

a = 2, b = 2, d = 1,

log2 2 = 1 = d

On est donc dans le cas 3 et la complexité en Θ(n log n)

Algorithmes Récursifs 17 / 31

Page 82: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Théorème maître (général) - version simplifiée

On ne considère que les récurrences T (n) = aT (n/b) + Θ(nd) (ou O(nd))avec a ≥ 1, b > 1, d ≥ 0

1 Si d > logb a,T (n) = Θ(nd ) complexité dominée par le coût de fusion2 Si d < logb a,T (n) = Θ(nlogb a) complexité dominée par le coût du sous-problème3 Si d = logb a,T (n) = Θ(nd log n) pas de domination

Tri fusion :

T (n) =

Θ(1) si n = 12T (n/2) + Θ(n) si n > 1

a = 2, b = 2, d = 1, log2 2 = 1 = d

On est donc dans le cas 3 et la complexité en Θ(n log n)

Algorithmes Récursifs 17 / 31

Page 83: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Théorème maître (général) - version simplifiée

On ne considère que les récurrences T (n) = aT (n/b) + Θ(nd) (ou O(nd))avec a ≥ 1, b > 1, d ≥ 0

1 Si d > logb a,T (n) = Θ(nd ) complexité dominée par le coût de fusion2 Si d < logb a,T (n) = Θ(nlogb a) complexité dominée par le coût du sous-problème3 Si d = logb a,T (n) = Θ(nd log n) pas de domination

Tri fusion :

T (n) =

Θ(1) si n = 12T (n/2) + Θ(n) si n > 1

a = 2, b = 2, d = 1, log2 2 = 1 = d

On est donc dans le cas 3 et la complexité en Θ(n log n)

Algorithmes Récursifs 17 / 31

Page 84: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Théorème maître (général) - version simplifiée

On ne considère que les récurrences T (n) = aT (n/b) + Θ(nd) (ou O(nd))avec a ≥ 1, b > 1, d ≥ 0

1 Si d > logb a,T (n) = Θ(nd ) complexité dominée par le coût de fusion2 Si d < logb a,T (n) = Θ(nlogb a) complexité dominée par le coût du sous-problème3 Si d = logb a,T (n) = Θ(nd log n) pas de domination

Recherche binaire :

T (n) =

Θ(1) si n = 1T (n/2) + Θ(1) si n > 1

a = 1, b = 2, d = 0, log2 1 = 0 = d

On est donc dans le cas 3 et la complexité en Θ(log n)

Algorithmes Récursifs 18 / 31

Page 85: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Théorème maître (général) - version simplifiée

On ne considère que les récurrences T (n) = aT (n/b) + Θ(nd) (ou O(nd))avec a ≥ 1, b > 1, d ≥ 0

1 Si d > logb a,T (n) = Θ(nd ) complexité dominée par le coût de fusion2 Si d < logb a,T (n) = Θ(nlogb a) complexité dominée par le coût du sous-problème3 Si d = logb a,T (n) = Θ(nd log n) pas de domination

Recherche binaire :

T (n) =

Θ(1) si n = 1T (n/2) + Θ(1) si n > 1

a = 1,

b = 2, d = 0, log2 1 = 0 = d

On est donc dans le cas 3 et la complexité en Θ(log n)

Algorithmes Récursifs 18 / 31

Page 86: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Théorème maître (général) - version simplifiée

On ne considère que les récurrences T (n) = aT (n/b) + Θ(nd) (ou O(nd))avec a ≥ 1, b > 1, d ≥ 0

1 Si d > logb a,T (n) = Θ(nd ) complexité dominée par le coût de fusion2 Si d < logb a,T (n) = Θ(nlogb a) complexité dominée par le coût du sous-problème3 Si d = logb a,T (n) = Θ(nd log n) pas de domination

Recherche binaire :

T (n) =

Θ(1) si n = 1T (n/2) + Θ(1) si n > 1

a = 1, b = 2,

d = 0, log2 1 = 0 = d

On est donc dans le cas 3 et la complexité en Θ(log n)

Algorithmes Récursifs 18 / 31

Page 87: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Théorème maître (général) - version simplifiée

On ne considère que les récurrences T (n) = aT (n/b) + Θ(nd) (ou O(nd))avec a ≥ 1, b > 1, d ≥ 0

1 Si d > logb a,T (n) = Θ(nd ) complexité dominée par le coût de fusion2 Si d < logb a,T (n) = Θ(nlogb a) complexité dominée par le coût du sous-problème3 Si d = logb a,T (n) = Θ(nd log n) pas de domination

Recherche binaire :

T (n) =

Θ(1) si n = 1T (n/2) + Θ(1) si n > 1

a = 1, b = 2, d = 0,

log2 1 = 0 = d

On est donc dans le cas 3 et la complexité en Θ(log n)

Algorithmes Récursifs 18 / 31

Page 88: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Théorème maître (général) - version simplifiée

On ne considère que les récurrences T (n) = aT (n/b) + Θ(nd) (ou O(nd))avec a ≥ 1, b > 1, d ≥ 0

1 Si d > logb a,T (n) = Θ(nd ) complexité dominée par le coût de fusion2 Si d < logb a,T (n) = Θ(nlogb a) complexité dominée par le coût du sous-problème3 Si d = logb a,T (n) = Θ(nd log n) pas de domination

Recherche binaire :

T (n) =

Θ(1) si n = 1T (n/2) + Θ(1) si n > 1

a = 1, b = 2, d = 0, log2 1 = 0 = d

On est donc dans le cas 3 et la complexité en Θ(log n)

Algorithmes Récursifs 18 / 31

Page 89: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Théorème maître (général) - version simplifiée

On ne considère que les récurrences T (n) = aT (n/b) + Θ(nd) (ou O(nd))avec a ≥ 1, b > 1, d ≥ 0

1 Si d > logb a,T (n) = Θ(nd ) complexité dominée par le coût de fusion2 Si d < logb a,T (n) = Θ(nlogb a) complexité dominée par le coût du sous-problème3 Si d = logb a,T (n) = Θ(nd log n) pas de domination

Recherche binaire :

T (n) =

Θ(1) si n = 1T (n/2) + Θ(1) si n > 1

a = 1, b = 2, d = 0, log2 1 = 0 = d

On est donc dans le cas 3 et la complexité en Θ(log n)

Algorithmes Récursifs 18 / 31

Page 90: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Taille de la Donnée

Taille de la Donnée 19 / 31

Page 91: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

La taille de la donnée

Taille de la donnée |x |Espace mémoire nécessaire pour la représenter x

Dans une unité quelconque, fonction de la donnée : |x | ∈ Θ(f (x))

Type primitif entier, flottant, etc. sur 32 ou 64 bits : Θ(1)

Entier non-borné x : |x | ∈ Θ(log x)

Liste L de n caractères : |L| ∈ Θ(n)

Taille de la Donnée 20 / 31

Page 92: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

La taille de la donnée

Taille de la donnée |x |Espace mémoire nécessaire pour la représenter x

Dans une unité quelconque, fonction de la donnée : |x | ∈ Θ(f (x))

Type primitif entier, flottant, etc. sur 32 ou 64 bits : Θ(1)

Entier non-borné x : |x | ∈ Θ(log x)

Liste L de n caractères : |L| ∈ Θ(n)

Taille de la Donnée 20 / 31

Page 93: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

La taille de la donnée : exemple

La complexité se mesure en fonction de la taille de la donnée

Parfois, on mesure plus facilement la complexité d’un algorithme en fonction d’unautre paramètre que la taille de la donnée (ex : sa valeur)

Si l’algorithme A est en Θ(f (x)) pour une donnée x et la taille |x | est en Θ(g(x)),alors la complexité de A sera en Θ(f (g−1(x)))

Exemple

Algorithme : Carré(x)Données : un entier xRésultat : un entier valant x2

r : entier;début

r ← 0;pour i allant de 1 à x faire

pour j allant de 1 à x fairer ← r + 1;

retourner r ;

Complexité : Θ(x2)

Mais la taille de la donnée est |x | = Θ(log x)

Autrement dit, x = Θ(2|x|)

cet algorithme est donc en Θ(22|x|)(exponentiel !)

Taille de la Donnée 21 / 31

Page 94: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

La taille de la donnée : exemple

La complexité se mesure en fonction de la taille de la donnée

Parfois, on mesure plus facilement la complexité d’un algorithme en fonction d’unautre paramètre que la taille de la donnée (ex : sa valeur)

Si l’algorithme A est en Θ(f (x)) pour une donnée x et la taille |x | est en Θ(g(x)),alors la complexité de A sera en Θ(f (g−1(x)))

Exemple

Algorithme : Carré(x)Données : un entier xRésultat : un entier valant x2

r : entier;début

r ← 0;pour i allant de 1 à x faire

pour j allant de 1 à x fairer ← r + 1;

retourner r ;

Complexité : Θ(x2)

Mais la taille de la donnée est |x | = Θ(log x)

Autrement dit, x = Θ(2|x|)

cet algorithme est donc en Θ(22|x|)(exponentiel !)

Taille de la Donnée 21 / 31

Page 95: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

La taille de la donnée : exemple

La complexité se mesure en fonction de la taille de la donnée

Parfois, on mesure plus facilement la complexité d’un algorithme en fonction d’unautre paramètre que la taille de la donnée (ex : sa valeur)

Si l’algorithme A est en Θ(f (x)) pour une donnée x et la taille |x | est en Θ(g(x)),alors la complexité de A sera en Θ(f (g−1(x)))

Exemple

Algorithme : Carré(x)Données : un entier xRésultat : un entier valant x2

r : entier;début

r ← 0;pour i allant de 1 à x faire

pour j allant de 1 à x fairer ← r + 1;

retourner r ;

Complexité : Θ(x2)

Mais la taille de la donnée est |x | = Θ(log x)

Autrement dit, x = Θ(2|x|)

cet algorithme est donc en Θ(22|x|)(exponentiel !)

Taille de la Donnée 21 / 31

Page 96: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

La taille de la donnée : exemple

La complexité se mesure en fonction de la taille de la donnée

Parfois, on mesure plus facilement la complexité d’un algorithme en fonction d’unautre paramètre que la taille de la donnée (ex : sa valeur)

Si l’algorithme A est en Θ(f (x)) pour une donnée x et la taille |x | est en Θ(g(x)),alors la complexité de A sera en Θ(f (g−1(x)))

Exemple

Algorithme : Carré(x)Données : un entier xRésultat : un entier valant x2

r : entier;début

r ← 0;pour i allant de 1 à x faire

pour j allant de 1 à x fairer ← r + 1;

retourner r ;

Complexité : Θ(x2)

Mais la taille de la donnée est |x | = Θ(log x)

Autrement dit, x = Θ(2|x|)

cet algorithme est donc en Θ(22|x|)(exponentiel !)

Taille de la Donnée 21 / 31

Page 97: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

La taille de la donnée : exemple

La complexité se mesure en fonction de la taille de la donnée

Parfois, on mesure plus facilement la complexité d’un algorithme en fonction d’unautre paramètre que la taille de la donnée (ex : sa valeur)

Si l’algorithme A est en Θ(f (x)) pour une donnée x et la taille |x | est en Θ(g(x)),alors la complexité de A sera en Θ(f (g−1(x)))

Exemple

Algorithme : Carré(x)Données : un entier xRésultat : un entier valant x2

r : entier;début

r ← 0;pour i allant de 1 à x faire

pour j allant de 1 à x fairer ← r + 1;

retourner r ;

Complexité : Θ(x2)

Mais la taille de la donnée est |x | = Θ(log x)

Autrement dit, x = Θ(2|x|)

cet algorithme est donc en Θ(22|x|)(exponentiel !)

Taille de la Donnée 21 / 31

Page 98: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

La taille de la donnée : exemple

La complexité se mesure en fonction de la taille de la donnée

Parfois, on mesure plus facilement la complexité d’un algorithme en fonction d’unautre paramètre que la taille de la donnée (ex : sa valeur)

Si l’algorithme A est en Θ(f (x)) pour une donnée x et la taille |x | est en Θ(g(x)),alors la complexité de A sera en Θ(f (g−1(x)))

Exemple

Algorithme : Carré(x)Données : un entier xRésultat : un entier valant x2

r : entier;début

r ← 0;pour i allant de 1 à x faire

pour j allant de 1 à x fairer ← r + 1;

retourner r ;

Complexité : Θ(x2)

Mais la taille de la donnée est |x | = Θ(log x)

Autrement dit, x = Θ(2|x|)

cet algorithme est donc en Θ(22|x|)(exponentiel !)

Taille de la Donnée 21 / 31

Page 99: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

La taille d’une structures de données

Dans le cas de structures de données (listes, ensembles, etc.) il faut analyser lastructure : la taille de chaque élément, les pointeurs, etc.

Exemple, liste L de n élémentsIl faut Θ(1) bits par élément, plus la somme des tailles des éléments : donc|L| ∈ Θ(n) +

∑e∈ |e| ⊆ Θ(n)×Θ(|e|)

Les éléments sont des entiers : |L| ∈ Θ(n)

Les éléments sont des entiers non bornés et m est l’élément maximum :|L| ∈ Θ(n logm)

Taille de la Donnée 22 / 31

Page 100: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

La taille d’une structures de données

Dans le cas de structures de données (listes, ensembles, etc.) il faut analyser lastructure : la taille de chaque élément, les pointeurs, etc.

Exemple, liste L de n éléments

Il faut Θ(1) bits par élément, plus la somme des tailles des éléments : donc|L| ∈ Θ(n) +

∑e∈ |e| ⊆ Θ(n)×Θ(|e|)

Les éléments sont des entiers : |L| ∈ Θ(n)

Les éléments sont des entiers non bornés et m est l’élément maximum :|L| ∈ Θ(n logm)

Taille de la Donnée 22 / 31

Page 101: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

La taille d’une structures de données

Dans le cas de structures de données (listes, ensembles, etc.) il faut analyser lastructure : la taille de chaque élément, les pointeurs, etc.

Exemple, liste L de n élémentsIl faut Θ(1) bits par élément, plus la somme des tailles des éléments : donc|L| ∈ Θ(n) +

∑e∈ |e| ⊆ Θ(n)×Θ(|e|)

Les éléments sont des entiers : |L| ∈ Θ(n)

Les éléments sont des entiers non bornés et m est l’élément maximum :|L| ∈ Θ(n logm)

Taille de la Donnée 22 / 31

Page 102: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

La taille d’une structures de données

Dans le cas de structures de données (listes, ensembles, etc.) il faut analyser lastructure : la taille de chaque élément, les pointeurs, etc.

Exemple, liste L de n élémentsIl faut Θ(1) bits par élément, plus la somme des tailles des éléments : donc|L| ∈ Θ(n) +

∑e∈ |e| ⊆ Θ(n)×Θ(|e|)

Les éléments sont des entiers : |L| ∈ Θ(n)

Les éléments sont des entiers non bornés et m est l’élément maximum :|L| ∈ Θ(n logm)

Taille de la Donnée 22 / 31

Page 103: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

La taille d’une structures de données

La taille des structures va dépendre de leur codage :

Exemple, graphe G = (S ,A)

Tableau de tableaux : Il faut Θ(1) bits par arc potentiel, donc|G | ∈ Θ(|S |2)

Listes d’adjacence : Il faut Θ(log |S |) bits par arc dans A, donc|G | ∈ Θ(|A| log |S |)

Taille de la Donnée 23 / 31

Page 104: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

La taille d’une structures de données

La taille des structures va dépendre de leur codage :

Exemple, graphe G = (S ,A)

Tableau de tableaux : Il faut Θ(1) bits par arc potentiel, donc|G | ∈ Θ(|S |2)

Listes d’adjacence : Il faut Θ(log |S |) bits par arc dans A, donc|G | ∈ Θ(|A| log |S |)

Taille de la Donnée 23 / 31

Page 105: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

La taille de la donnée

Attention : sujet piégeux !

Taille d’une liste de n entiers (codés sur 32 bits) : Θ(n)

Taille d’une liste de n entiers (où l’élément maximum est m) : Θ(n logm)

Taille d’un ensemble de n entiers (codés sur 32 bits) : Θ(1) ! !I Il y a un nombre fini d’entiers représentable avec 32 bits (232), et donc un nombre fini

d’ensembles de tels entiers (2232)

Taille de la Donnée 24 / 31

Page 106: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

La taille de la donnée

Attention : sujet piégeux !

Taille d’une liste de n entiers (codés sur 32 bits) : Θ(n)

Taille d’une liste de n entiers (où l’élément maximum est m) : Θ(n logm)

Taille d’un ensemble de n entiers (codés sur 32 bits) : Θ(1) ! !I Il y a un nombre fini d’entiers représentable avec 32 bits (232), et donc un nombre fini

d’ensembles de tels entiers (2232)

Taille de la Donnée 24 / 31

Page 107: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

La taille de la donnée

Attention : sujet piégeux !

Taille d’une liste de n entiers (codés sur 32 bits) : Θ(n)

Taille d’une liste de n entiers (où l’élément maximum est m) : Θ(n logm)

Taille d’un ensemble de n entiers (codés sur 32 bits) : Θ(1) ! !I Il y a un nombre fini d’entiers représentable avec 32 bits (232), et donc un nombre fini

d’ensembles de tels entiers (2232)

Taille de la Donnée 24 / 31

Page 108: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Classes de Problèmes

Classes de Problèmes 25 / 31

Page 109: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Vocabulaire

Un algorithme est dit :

en temps constant si sa complexité (dans le pire des cas) est bornée par une constante

linéaire (resp. linéairement borné) si sa complexité (dans le pire des cas) est Θ(n)(resp. O(n))

quadratique (resp. au plus quadratique) si sa complexité (dans le pire des cas) estΘ(n2) (resp. O(n2))

polynômial ou polynômialement borné, si sa complexité (dans le pire des cas) est enO(np) pour un certain p > 0

(au plus) exponentiel si elle est en O(2nc

) pour un certain c > 0

Classes de Problèmes 26 / 31

Page 110: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Vocabulaire

Un algorithme est dit :

en temps constant si sa complexité (dans le pire des cas) est bornée par une constante

linéaire (resp. linéairement borné) si sa complexité (dans le pire des cas) est Θ(n)(resp. O(n))

quadratique (resp. au plus quadratique) si sa complexité (dans le pire des cas) estΘ(n2) (resp. O(n2))

polynômial ou polynômialement borné, si sa complexité (dans le pire des cas) est enO(np) pour un certain p > 0

(au plus) exponentiel si elle est en O(2nc

) pour un certain c > 0

Classes de Problèmes 26 / 31

Page 111: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Vocabulaire

Un algorithme est dit :

en temps constant si sa complexité (dans le pire des cas) est bornée par une constante

linéaire (resp. linéairement borné) si sa complexité (dans le pire des cas) est Θ(n)(resp. O(n))

quadratique (resp. au plus quadratique) si sa complexité (dans le pire des cas) estΘ(n2) (resp. O(n2))

polynômial ou polynômialement borné, si sa complexité (dans le pire des cas) est enO(np) pour un certain p > 0

(au plus) exponentiel si elle est en O(2nc

) pour un certain c > 0

Classes de Problèmes 26 / 31

Page 112: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Vocabulaire

Un algorithme est dit :

en temps constant si sa complexité (dans le pire des cas) est bornée par une constante

linéaire (resp. linéairement borné) si sa complexité (dans le pire des cas) est Θ(n)(resp. O(n))

quadratique (resp. au plus quadratique) si sa complexité (dans le pire des cas) estΘ(n2) (resp. O(n2))

polynômial ou polynômialement borné, si sa complexité (dans le pire des cas) est enO(np) pour un certain p > 0

(au plus) exponentiel si elle est en O(2nc

) pour un certain c > 0

Classes de Problèmes 26 / 31

Page 113: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Vocabulaire

Un algorithme est dit :

en temps constant si sa complexité (dans le pire des cas) est bornée par une constante

linéaire (resp. linéairement borné) si sa complexité (dans le pire des cas) est Θ(n)(resp. O(n))

quadratique (resp. au plus quadratique) si sa complexité (dans le pire des cas) estΘ(n2) (resp. O(n2))

polynômial ou polynômialement borné, si sa complexité (dans le pire des cas) est enO(np) pour un certain p > 0

(au plus) exponentiel si elle est en O(2nc

) pour un certain c > 0

Classes de Problèmes 26 / 31

Page 114: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Vocabulaire

Un algorithme est dit :

en temps constant si sa complexité (dans le pire des cas) est bornée par une constante

linéaire (resp. linéairement borné) si sa complexité (dans le pire des cas) est Θ(n)(resp. O(n))

quadratique (resp. au plus quadratique) si sa complexité (dans le pire des cas) estΘ(n2) (resp. O(n2))

polynômial ou polynômialement borné, si sa complexité (dans le pire des cas) est enO(np) pour un certain p > 0

(au plus) exponentiel si elle est en O(2nc

) pour un certain c > 0

Classes de Problèmes 26 / 31

Page 115: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Classes de problèmes

Analyser la complexité des algorithmes permet de faire un choix éclairé

, mais passeulement

Classer les problèmesI en fonction de la complexité du meilleur algorithme connu pour les résoudre

TIME (f (n))

Ensemble des problèmes pour lesquels il existe un algorithme en O(f (n))

Tri ∈ TIME(n log n)

Recherche dans un tableau trié ∈ TIME(log n)

Tout algorithme de tri est en Ω(n log n) =⇒ Tri 6∈ TIME(n)

Trier est plus “difficile” que chercher dans un tableau trié

Classes de Problèmes 27 / 31

Page 116: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Classes de problèmes

Analyser la complexité des algorithmes permet de faire un choix éclairé, mais passeulement

Classer les problèmesI en fonction de la complexité du meilleur algorithme connu pour les résoudre

TIME (f (n))

Ensemble des problèmes pour lesquels il existe un algorithme en O(f (n))

Tri ∈ TIME(n log n)

Recherche dans un tableau trié ∈ TIME(log n)

Tout algorithme de tri est en Ω(n log n) =⇒ Tri 6∈ TIME(n)

Trier est plus “difficile” que chercher dans un tableau trié

Classes de Problèmes 27 / 31

Page 117: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Classes de problèmes

Analyser la complexité des algorithmes permet de faire un choix éclairé, mais passeulement

Classer les problèmesI en fonction de la complexité du meilleur algorithme connu pour les résoudre

TIME (f (n))

Ensemble des problèmes pour lesquels il existe un algorithme en O(f (n))

Tri ∈ TIME(n log n)

Recherche dans un tableau trié ∈ TIME(log n)

Tout algorithme de tri est en Ω(n log n) =⇒ Tri 6∈ TIME(n)

Trier est plus “difficile” que chercher dans un tableau trié

Classes de Problèmes 27 / 31

Page 118: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Classes de problèmes

Analyser la complexité des algorithmes permet de faire un choix éclairé, mais passeulement

Classer les problèmesI en fonction de la complexité du meilleur algorithme connu pour les résoudre

TIME (f (n))

Ensemble des problèmes pour lesquels il existe un algorithme en O(f (n))

Tri ∈ TIME(n log n)

Recherche dans un tableau trié ∈ TIME(log n)

Tout algorithme de tri est en Ω(n log n) =⇒ Tri 6∈ TIME(n)

Trier est plus “difficile” que chercher dans un tableau trié

Classes de Problèmes 27 / 31

Page 119: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Classes de problèmes

Analyser la complexité des algorithmes permet de faire un choix éclairé, mais passeulement

Classer les problèmesI en fonction de la complexité du meilleur algorithme connu pour les résoudre

TIME (f (n))

Ensemble des problèmes pour lesquels il existe un algorithme en O(f (n))

Tri ∈ TIME(n log n)

Recherche dans un tableau trié ∈ TIME(log n)

Tout algorithme de tri est en Ω(n log n) =⇒ Tri 6∈ TIME(n)

Trier est plus “difficile” que chercher dans un tableau trié

Classes de Problèmes 27 / 31

Page 120: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Classes de problèmes

Analyser la complexité des algorithmes permet de faire un choix éclairé, mais passeulement

Classer les problèmesI en fonction de la complexité du meilleur algorithme connu pour les résoudre

TIME (f (n))

Ensemble des problèmes pour lesquels il existe un algorithme en O(f (n))

Tri ∈ TIME(n log n)

Recherche dans un tableau trié ∈ TIME(log n)

Tout algorithme de tri est en Ω(n log n) =⇒ Tri 6∈ TIME(n)

Trier est plus “difficile” que chercher dans un tableau trié

Classes de Problèmes 27 / 31

Page 121: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Classes de problèmes (suite)

On peut analyser l’espace mémoire utilisé par un algorithme de manière similaire

SPACE (f (n))

Ensemble des problèmes pour lesquels il existe un algorithme nécessitantO(f (n)) octets

On ne compte pas la taille de la donnée, mais on compte la taille de la réponse

ThéorèmeTIME(f (n)) ⊆ SPACE(f (n))

Problème A ∈ TIME(f (n)) =⇒ A ∈ SPACE(f (n))

Chaque octet utilisé implique Ω(1) opération(s)

Classes de Problèmes 28 / 31

Page 122: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Classes de problèmes (suite)

On peut analyser l’espace mémoire utilisé par un algorithme de manière similaire

SPACE (f (n))

Ensemble des problèmes pour lesquels il existe un algorithme nécessitantO(f (n)) octets

On ne compte pas la taille de la donnée, mais on compte la taille de la réponse

ThéorèmeTIME(f (n)) ⊆ SPACE(f (n))

Problème A ∈ TIME(f (n)) =⇒ A ∈ SPACE(f (n))

Chaque octet utilisé implique Ω(1) opération(s)

Classes de Problèmes 28 / 31

Page 123: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Classes de problèmes (suite)

On peut analyser l’espace mémoire utilisé par un algorithme de manière similaire

SPACE (f (n))

Ensemble des problèmes pour lesquels il existe un algorithme nécessitantO(f (n)) octets

On ne compte pas la taille de la donnée, mais on compte la taille de la réponse

ThéorèmeTIME(f (n)) ⊆ SPACE(f (n))

Problème A ∈ TIME(f (n)) =⇒ A ∈ SPACE(f (n))

Chaque octet utilisé implique Ω(1) opération(s)

Classes de Problèmes 28 / 31

Page 124: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Classes de problèmes (suite)

On peut analyser l’espace mémoire utilisé par un algorithme de manière similaire

SPACE (f (n))

Ensemble des problèmes pour lesquels il existe un algorithme nécessitantO(f (n)) octets

On ne compte pas la taille de la donnée, mais on compte la taille de la réponse

ThéorèmeTIME(f (n)) ⊆ SPACE(f (n))

Problème A ∈ TIME(f (n)) =⇒ A ∈ SPACE(f (n))

Chaque octet utilisé implique Ω(1) opération(s)

Classes de Problèmes 28 / 31

Page 125: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Parcours de Graham

Trouver l’enveloppe convexe d’unensemble de points

Algorithme1 Trouver le point p de plus petite

ordonnée

O(n)

2 Trier les autres points en fonction del’angle avec l’axe des abcisses parrapport à p

3 Appliquer le parcours de Graham

O(n)

I retour arrière en cas de “tournant àdroite”

a

b

c

d

e

f

g

h

i

j

k

3

4

5

8

1

6

9

7

2

10

Classes de Problèmes 29 / 31

Page 126: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Parcours de Graham

Trouver l’enveloppe convexe d’unensemble de points

Algorithme1 Trouver le point p de plus petite

ordonnée

O(n)

2 Trier les autres points en fonction del’angle avec l’axe des abcisses parrapport à p

3 Appliquer le parcours de Graham

O(n)

I retour arrière en cas de “tournant àdroite”

a

b

c

d

e

f

g

h

i

j

k

3

4

5

8

1

6

9

7

2

10

Classes de Problèmes 29 / 31

Page 127: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Parcours de Graham

Trouver l’enveloppe convexe d’unensemble de points

Algorithme1 Trouver le point p de plus petite

ordonnée

O(n)

2 Trier les autres points en fonction del’angle avec l’axe des abcisses parrapport à p

3 Appliquer le parcours de Graham

O(n)

I retour arrière en cas de “tournant àdroite”

a

b

c

d

e

f

g

h

i

j

k

3

4

5

8

1

6

9

7

2

10

Classes de Problèmes 29 / 31

Page 128: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Parcours de Graham

Trouver l’enveloppe convexe d’unensemble de points

Algorithme1 Trouver le point p de plus petite

ordonnée

O(n)

2 Trier les autres points en fonction del’angle avec l’axe des abcisses parrapport à p

3 Appliquer le parcours de Graham

O(n)

I retour arrière en cas de “tournant àdroite” a

b

c

d

e

f

g

h

i

j

k

3

4

5

8

1

6

9

7

2

10

Classes de Problèmes 29 / 31

Page 129: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Parcours de Graham

Trouver l’enveloppe convexe d’unensemble de points

Algorithme1 Trouver le point p de plus petite

ordonnée

O(n)

2 Trier les autres points en fonction del’angle avec l’axe des abcisses parrapport à p

3 Appliquer le parcours de Graham

O(n)

I retour arrière en cas de “tournant àdroite” a

b

c

d

e

f

g

h

i

j

k

3

4

5

8

1

6

9

7

2

10

Classes de Problèmes 29 / 31

Page 130: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Parcours de Graham

Trouver l’enveloppe convexe d’unensemble de points

Algorithme1 Trouver le point p de plus petite

ordonnée

O(n)

2 Trier les autres points en fonction del’angle avec l’axe des abcisses parrapport à p

3 Appliquer le parcours de Graham

O(n)

I retour arrière en cas de “tournant àdroite” a

b

c

d

e

f

g

h

i

j

k

3

4

5

8

1

6

9

7

2

10

Classes de Problèmes 29 / 31

Page 131: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Parcours de Graham

Trouver l’enveloppe convexe d’unensemble de points

Algorithme1 Trouver le point p de plus petite

ordonnée

O(n)

2 Trier les autres points en fonction del’angle avec l’axe des abcisses parrapport à p

3 Appliquer le parcours de Graham

O(n)

I retour arrière en cas de “tournant àdroite” a

b

c

d

e

f

g

h

i

j

k

3

4

5

8

1

6

9

7

2

10

Classes de Problèmes 29 / 31

Page 132: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Parcours de Graham

Trouver l’enveloppe convexe d’unensemble de points

Algorithme1 Trouver le point p de plus petite

ordonnée

O(n)

2 Trier les autres points en fonction del’angle avec l’axe des abcisses parrapport à p

3 Appliquer le parcours de Graham

O(n)

I retour arrière en cas de “tournant àdroite”

a

b

c

d

e

f

g

h

i

j

k

3

4

5

8

1

6

9

7

2

10

Classes de Problèmes 29 / 31

Page 133: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Parcours de Graham

Trouver l’enveloppe convexe d’unensemble de points

Algorithme1 Trouver le point p de plus petite

ordonnée

O(n)

2 Trier les autres points en fonction del’angle avec l’axe des abcisses parrapport à p

3 Appliquer le parcours de Graham

O(n)

I retour arrière en cas de “tournant àdroite”

a

b

c

d

e

f

g

h

i

j

k

3

4

5

8

1

6

9

7

2

10

Classes de Problèmes 29 / 31

Page 134: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Parcours de Graham

Trouver l’enveloppe convexe d’unensemble de points

Algorithme1 Trouver le point p de plus petite

ordonnée

O(n)

2 Trier les autres points en fonction del’angle avec l’axe des abcisses parrapport à p

3 Appliquer le parcours de Graham

O(n)

I retour arrière en cas de “tournant àdroite”

a

b

c

d

e

f

g

h

i

j

k

3

4

5

8

1

6

9

7

2

10

Classes de Problèmes 29 / 31

Page 135: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Parcours de Graham

Trouver l’enveloppe convexe d’unensemble de points

Algorithme1 Trouver le point p de plus petite

ordonnée

O(n)

2 Trier les autres points en fonction del’angle avec l’axe des abcisses parrapport à p

3 Appliquer le parcours de Graham

O(n)

I retour arrière en cas de “tournant àdroite”

a

b

c

d

e

f

g

h

i

j

k

3

4

5

8

1

6

9

7

2

10

Classes de Problèmes 29 / 31

Page 136: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Parcours de Graham

Trouver l’enveloppe convexe d’unensemble de points

Algorithme1 Trouver le point p de plus petite

ordonnée O(n)

2 Trier les autres points en fonction del’angle avec l’axe des abcisses parrapport à p

3 Appliquer le parcours de Graham O(n)

I retour arrière en cas de “tournant àdroite”

a

b

c

d

e

f

g

h

i

j

k

3

4

5

8

1

6

9

7

2

10

Classes de Problèmes 29 / 31

Page 137: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Réduction polynômiale

On peut trouver l’enveloppe convexe en O(n) plus le coût de trier n entiers

Tri ∈ TIME(n log n) =⇒ Enveloppe convexe ∈ TIME(n log n)

Réduction de Enveloppe convexe vers Tri :I Enveloppe convexe pas plus difficile que TriI Tri au moins aussi difficile que Enveloppe convexe

Réduction polynômiale de A vers B (de Cook / de Turing) :

Un algorithme pour résoudre A en O(nc) (pour c un constante et n la taillede la donnée) sous l’hypothèse que le problème B peut être résolu en Θ(1)

Classes de Problèmes 31 / 31

Page 138: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Réduction polynômiale

On peut trouver l’enveloppe convexe en O(n) plus le coût de trier n entiers

Tri ∈ TIME(n log n) =⇒ Enveloppe convexe ∈ TIME(n log n)

Réduction de Enveloppe convexe vers Tri :I Enveloppe convexe pas plus difficile que TriI Tri au moins aussi difficile que Enveloppe convexe

Réduction polynômiale de A vers B (de Cook / de Turing) :

Un algorithme pour résoudre A en O(nc) (pour c un constante et n la taillede la donnée) sous l’hypothèse que le problème B peut être résolu en Θ(1)

Classes de Problèmes 31 / 31

Page 139: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Réduction polynômiale

On peut trouver l’enveloppe convexe en O(n) plus le coût de trier n entiers

Tri ∈ TIME(n log n) =⇒ Enveloppe convexe ∈ TIME(n log n)

Réduction de Enveloppe convexe vers Tri :I Enveloppe convexe pas plus difficile que Tri

I Tri au moins aussi difficile que Enveloppe convexe

Réduction polynômiale de A vers B (de Cook / de Turing) :

Un algorithme pour résoudre A en O(nc) (pour c un constante et n la taillede la donnée) sous l’hypothèse que le problème B peut être résolu en Θ(1)

Classes de Problèmes 31 / 31

Page 140: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Réduction polynômiale

On peut trouver l’enveloppe convexe en O(n) plus le coût de trier n entiers

Tri ∈ TIME(n log n) =⇒ Enveloppe convexe ∈ TIME(n log n)

Réduction de Enveloppe convexe vers Tri :I Enveloppe convexe pas plus difficile que TriI Tri au moins aussi difficile que Enveloppe convexe

Réduction polynômiale de A vers B (de Cook / de Turing) :

Un algorithme pour résoudre A en O(nc) (pour c un constante et n la taillede la donnée) sous l’hypothèse que le problème B peut être résolu en Θ(1)

Classes de Problèmes 31 / 31

Page 141: Rappelhomepages.laas.fr/ehebrard/papers/CM2.pdfRappel Problématique Onveutmesurerl’efficacitétemporelled’unalgorithme. Tempsd’exécution proportionnelaunombred’opérationsélementaireseffectués

Réduction polynômiale

On peut trouver l’enveloppe convexe en O(n) plus le coût de trier n entiers

Tri ∈ TIME(n log n) =⇒ Enveloppe convexe ∈ TIME(n log n)

Réduction de Enveloppe convexe vers Tri :I Enveloppe convexe pas plus difficile que TriI Tri au moins aussi difficile que Enveloppe convexe

Réduction polynômiale de A vers B (de Cook / de Turing) :

Un algorithme pour résoudre A en O(nc) (pour c un constante et n la taillede la donnée) sous l’hypothèse que le problème B peut être résolu en Θ(1)

Classes de Problèmes 31 / 31