Académique Documents
Professionnel Documents
Culture Documents
by
Jordan F. Masakuna
Assistant
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
Contact
• Jordan F. Masakuna, PhD
◦ masakunafelicien@gmail.com
◦ +27638499961 (WhatsApp)
◦ +243999734653 (Call)
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
Objectif
Content layout
Introduction
Structures de données
Tri et recherche
Méthodes heuristiques
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
Aperçu général
Définition
Exemples d’algorithmes
1 : Debut
2 : Declarer les variables a , b , c et g .
3 : Lire les variables a , b et c .
4 : Si a >= b et a >= c alors
5 : g = a
6 : Sinon si b >= c alors
7 : g = b
8 : Sinon
9 : g = c
10: Afficher g est le plus grand nombre .
11: Fin
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
Content layout
Introduction
Structures de données
Tri et recherche
Méthodes heuristiques
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
Définition
Définition
f (n) .
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
Définition
• f (n) est la complexité soit dans
◦ le pire cas: le maximum de la quantité de ressources nécessaires
pour toutes les entrées de taille n;
◦ le cas moyen: la moyenne de la quantité de ressources sur toutes les
entrées de taille n;
◦ le meilleur cas: le minimum de la quantité de ressources nécessaires
pour toutes les entrées de taille n.
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
Types de complexité
• la complexité temporelle est le nombre d’opérations
élémentaires requises sur une entrée de taille n.
◦ où les opérations élémentaires sont supposées prendre un temps
constant sur un ordinateur donné et ne changer que par un facteur
constant lorsqu’elles sont exécutées sur un ordinateur différent.
• la complexité de l’espace est la quantité de mémoire requise par
un algorithme sur une entrée de taille n.
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
Notations
f (n) = 4n2 − 2n + 2 .
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
Notations ...
• Au fur et à mesure que n croit, le terme n2 finira par dominer, de
sorte que tous les autres termes deviennent négligeables.
◦ Par exemple, lorsque n = 500, le terme 4n2 est 1000 fois plus grand
que le terme 2n.
◦ Ignorer ce dernier aurait un effet négligeable sur la valeur de
l’expression dans la plupart des cas
◦ Aussi, les coefficients deviennent sans importance si nous les
comparons à tout autre ordre d’expression.
• Donc
f (n) = O(n2 )
ou
f (n) ∈ O(n2 )
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
Exemples
Exemples
Classes de complexité
O Complexité
O(1) constante
O(log(n)) logarithmique
O(n) linéaire
O(n × log(n)) quasi-linéaire
O(n2 ) quadratique
O(n3 ) cubique
O(2n ) exponentielle
O(n!) factorielle
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
Calcul de complexité
factorielle ( n )
fact = 1
i = 2
tant que i <= n
fact = fact * i
i = i + 1
retourne fact
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
Calcul de complexité
factorielle ( n )
fact = 1
i = 2
tant que i <= n
fact = fact * i
i = i + 1
retourne fact
Récursion
Approche itérative
• f (n) = 1 + 2 + 3 + · · · + n
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
Approche récursive
Approche récursive
• f (n) = 1 si n = 1
• f (n) = n + f (n − 1) si n > 1
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
Exemple
Factorielle récursive
factorielle ( n )
si n <=1 alors
retourner 1
sinon
retourner n * factorielle (n -1)
finsi
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
Exemple
Content layout
Introduction
Structures de données
Tri et recherche
Méthodes heuristiques
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
Définition
Définition
• En fonction de vos besoins et de votre projet, il est important de
choisir la bonne structure de données pour votre projet.
◦ Par exemple, si vous souhaitez stocker des données de manière
séquentielle dans la mémoire, vous pouvez opter pour la structure de
données Tableaux.
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
Définition
• La structure des données et les types de données sont légèrement
différents.
◦ La structure de données est la collection de types de données
disposés dans un ordre spécifique.
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
• Les éléments sont disposés en séquence les uns après les autres.
• Étant donné que les éléments sont disposés dans un ordre
particulier, ils sont faciles à implémenter.
• Tous les éléments sont présents sur une seule couche.
• Cependant, lorsque la complexité du programme augmente, les
structures de données linéaires peuvent ne pas être le meilleur
choix en terme de complexités.
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
• Tableau (Array)
• Pile (Stack)
• Files d’attentes (Queue)
• Liste chaı̂née (Linked list)
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
Tableau
Pile
• Les éléments sont stockés selon le principe LIFO.
◦ Le dernier élément stocké dans une pile sera supprimé en premier.
• Cela fonctionne exactement comme une pile d’assiettes où la
dernière assiette conservée sur la pile sera retirée en premier.
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
Fonctionnement de la pile
• Les opérations fonctionnent comme suit:
◦ Un pointeur appelé TOP est utilisé pour garder une trace de
l’élément supérieur dans la pile.
◦ Lors de l’initialisation de la pile, TOP = -1.
◦ En push un élément, TOP = TOP + 1 et le nouvel élément est
placé dans la position pointée par TOP.
◦ Lors du pop d’un élément, nous renvoyons l’élément pointé par TOP
et réduisons sa valeur.
◦ Avant de push, on vérifie si la pile est déjà pleine.
◦ Avant de pop , on vérifie si la pile est déjà vide
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
File d’attentes
Opération enqueue
Opération dequeue
Liste chaı̂née
Graphe
Arbre
Content layout
Introduction
Structures de données
Tri et recherche
Méthodes heuristiques
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
Tri
• Un algorithme de tri est utilisé pour organiser les éléments d’un
tableau/d’une liste dans un ordre spécifique.
• Par example,
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
Tri
Algorithmes de tri
• Tri rapide
• Tri à bulles
• Tri par insertion
• Tri par sélection
• Tri par fusion
• etc.
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
Tri rapide
• Basé sur l’approche diviser pour mieux régner
• Un tableau est divisé en sous-tableaux en sélectionnant un
élément pivot (élément sélectionné dans le tableau).
• Lors de la division du tableau, l’élément pivot doit être positionné
de manière à ce que les éléments inférieurs au pivot soient
conservés sur le côté gauche et les éléments supérieurs au pivot se
trouvent sur le côté droit du pivot.
• Les sous-tableaux gauche et droit sont également divisés en
utilisant la même approche.
• Ce processus se poursuit jusqu’à ce que chaque sous-tableau
contienne un seul élément.
• Enfin, les éléments sont combinés pour former un tableau trié.
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
Tri rapide
tri (A , lo , hi )
si ( lo < hi ) alors
p <- partition (A , lo , hi )
tri (A , lo , p - 1)
tri (A , p + 1 , hi )
partition (A , lo , hi )
pivot = A [ hi ]
i <- lo
pour j = lo a hi
si A [ j ] < pivot alors
A [ i ] <= > A [ j ]
i <- i + 1
A [ i ] <= > A [ hi ]
retourne i
• complexités?
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
• utiliser
n
X n(n + 1)
k=
2
k=1
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
Complexité
• complexité spatiale?
Introduction Complexité des algorithmes Structures de données Tri et recherche Méthodes heuristiques
Complexité
Tri à bulles
Tri à bulles
Recherche binaire
Méthode itérative
Méthode récursive
Content layout
Introduction
Structures de données
Tri et recherche
Méthodes heuristiques