1 Introduction
1 Introduction
2020-2021
2
■ Méthodes évolutives
■ Programmation en langage C ou Java
■ Algorithmes génétiques, …
■ Approches hybrides
3 4
Introduction générale
1
Optimisation Combinatoire ? Méta-heuristiques ?
■ Beaucoup de méthodes de résolution développées en recherche opérationnelle et en
intelligence artificielle :
■ De nombreux problèmes d'optimisation : ■ Les méthodes exactes : garantissent l'optimalité
■ Dans des domaines variés : transport, robotique, télécommunications, ■ Les méthodes approchées : donnent une solution de "bonne qualité" en un temps raisonnable
bourse, planification, biologie, reconnaissance d'image, …
■ Les méthodes exactes inapplicables aux applications de taille importante :
■ souvent très difficiles à résoudre ■ Temps de calcul nécessaire pour trouver une solution augmente exponentiellement avec la
taille du problème à résoudre
■ Plusieurs applications réelles peuvent être formulées sous la ■ Les méthodes approchées (ou heuristiques) constituent une alternative très intéressante
forme d'un problème d'optimisation combinatoire pour les problèmes d'optimisation de grande taille
7 8
Problèmes d'optimisation ■
■
d'une application f, qui renvoie le plus souvent une valeur réelle (ou entière).
Il s'agit de déterminer s* ∈X tel que : f(s*) = min {f(s) tel que s ∈ X }
10
■ Il s'agit de chercher un chemin élémentaire (ne passant pas deux fois par ■ modélise un représentant qui doit partir de chez lui en
un même sommet) de coût minimal, allant de s à t minimisant la distance parcourue
■ Problème apparaissant dans les transports, et en sous-problème ■ L'un des problèmes les plus étudiés. Ces applications
de nombreux problèmes de graphes sont nombreuses :
■ transport, industrie, fabrication de cartes électroniques,
…
11 12
2
Exemple de POCs (3)
■ Problème du sac à dos (knapsack problem) : Introduction à la
■ On dispose de n objets ayant chacun un poids aj et une
valeur cj (j = 1, 2, …, n) complexité des
■ Il s'agit d'effectuer une sélection (déterminer un sous-ensemble algorithmes
decesobjets) dont le poids total soit inférieur ou égal à un
nombre donné et dont la valeur, somme des valeurs des
objets sélectionnés, soit maximum
17 18
3
Notion de Taille de Données Représenter le Temps d’Exécution
■ Le temps d’exécution d’un algorithme doit être ■ Le temps d’exécution (ou complexité
défini comme une fonction de la taille des données algorithmique) désigne le nombre d’opérations
■ Exemples : le nombre d’éléments à trier, le nombre de élémentaires effectuées par un algorithme
chiffres dans l’écriture des nombres à multiplier, la dimension
des matrices à multiplier, …
■ Il s’exprime en fonction de la taille n des données
■ Le temps d’exécution ne pourra pas être exprimé On note : T(n)
en unités de temps « standard » comme les
secondes. L’analyse d’algorithme a pour but
principal de fournir des résultats indépendants de ■ T(n) donne une évaluation du nombre d’opérations
la machine utilisée élémentaires à exécuter pour des données de taille n
19 20
■ Exemples : ■ Exemple :
■ Les opérations suivantes sont élémentaires : Appel et retour ■ Pour la recherche séquentielled’un élément dans une liste den éléments, le
d’unefonction,Effectuer uneopérationarithmétique, Comparer deux temps d’exécution varie selon que l’élément se trouve en
nombres, etc. première position, ou que l’élément n’est pas présent dans la
■ Le test d’appartenance d’un élément à un ensemble n’est pas liste
une opération élémentaire parce que son temps d’exécution ■ Pour le tri d’une liste, le temps d’exécution varie selon que la
dépend de la taille de l’ensemble liste est déjà triée ou non
21 22
■ Complexité moyenne (Tmoy(n)) : temps moyen ■ Le pire cas est d’importance cruciale pour certaines applications (par exemple,
contrôle aérien, chirurgie, gestion de réseaux)
d’exécution d’un algorithme sur tous les jeux de
données de taille n ■ Le meilleur cas apporte peu d’informations car beaucoup d’algorithmes font
exactement la même chose dans une telle situation
■ Complexité dans le meilleur cas (Tmin(n)) : temps ■ La complexité en moyenne est en général plus difficile à calculer, car il faut
d’exécution minimal d’un algorithme pour des données que soit précisée une distribution de probabilité pour les données de taille n
de taille n
23 24
4
Règles de Calcul de Complexité Complexité Asymptotique
■ Les opérations élémentaires ont un temps d’exécution constant
■ On s’intéresse à une "estimation asymptotique" (i.e. pour n
■ La complexité d’une séquence d’instructions est la somme des complexités grand) du temps d’exécution des algorithmes
des instructions qui la composent
25 26
■ On dit que T(n) est en O(f(n)) (en grand O de f(n)) ■ T(n)=3(n3)+2(n2) est en O(n3). Pour le démontrer,
si et seulement si il existe un entier nO et une constante
c > 0 tels que: T(n) ≤ c f(n), pour tout n ≥ nO prendre nO= 0 et c = 5
■ On dit aussi que T(n) est de l’ordre de f(n). Par abus ■ Si T(n) est le temps d’exécution d'un algorithme A, A est
de notation, on écrit : T(n) = O(f(n)) donc O(n3). On pourrait aussi dire que A est O(n4), mais, ce
serait un énoncé plus faible
■ Soit maintenant A un algorithme de temps d’exécution
T(n). On dira que A est de complexité O(f(n)) ■ T(n) = 3n n’est pas en O(2n)
27 28
5
Ordres de Grandeur (exemples) Quelques Règles de Simplification
1, log n, n, n log n, n2, n3, 2n ■ Si T(n) = O(k f(n)) où k > 0, alors T(n) = O(f(n))
■ Exemple : 2n+10 est O(n), par contre n2 n’est pas O(n)
31 32
33 34
35 36
6
Evolution du temps d'exécution en Taille maximale des problèmes
fonction de la complexité résolubles en une heure avec divers
Complexité
Taille de n types d'ordinateurs et de complexités
temporelle
10 20 30 40 50 60
n [Link] [Link] O.OOOO3s O.OOOO4s O.OOOO5 O.OOOO6s Complexité Avec un ordinateur Avec un ordinateur Avec un ordinateur
actuel 100 fois plus rapide 1000 fois plus rapide
2s s
n2 [Link] O.OOO4 O.OOO9s O.OOl6s O.OO25s O.OO36s n N1 100 N1 1000 N1
s
n2 N2 10 N2 31.6 N2
n3 [Link] O.OO8s O.O27s O.O64s O.l25s O.2l6s
n3 N3 4.64 N3 10 N3
n5 ls 3.2s 24.3s l.7mn 5.2mn l3.O mn
n5 N4 2.5 N4 3.98 N4
2n 35.7
[Link] [Link] l7.9mn l2.7jours années 366 Siècles
2n N5 N5+6.64 N5+9.97
n 6.5 3855 2xlO8 l.3xlOl3
3 O.O59s 58mn Siècles
années siècles siècles 3n N6 N6+4.19 N6+6.29
37 38
Problème de décision
Introduction à la ■ Problème qui consiste à apporter une réponse "oui" ou "non"
à une question.
■ On distingue les problèmes décidables pour lesquels il existe au ■ Classe des problèmes dits "faciles"
moins un algorithme pour les résoudre, de ceux indécidables
■ Exemple :
■ Il existe plusieurs classes de complexité, mais les plus connues
sont : ■ Le problème de décision associé au problème du plus court
■ Classe P (Polynomial time) chemin ;
■ Classe N P (Non deterministic Polynomial time) ■ On dispose de plusieurs algorithmes polynomiaux pour
■ Classe NP-complet résoudre ce problème (algorithmes de Bellman, de Dijkstra,
…)
41 42
7
Classe N P Exemple de problème de N P
Problème de décision associé au voyageur de commerce
■ Classe des problèmes de décision pour lesquels la
réponse Oui peut être décidée par un algorithme non- Un voyageur de commerce désire faire sa tournée, existe-t-il une
déterministe en un temps polynomial tournée de moins de 50 km ?
10
■ Le terme non déterministe désigne un pouvoir qu’on a
b
a-b-e-c-d-a 50km
incorpore à un algorithme pour qu’il puisse deviner la 10
bonne solution
20 40 10
10 d
■ Classe des problèmes de décision pour lesquels une 10
proposition de solution Oui est vérifiable par un 10
algorithme déterministe en temps polynomial c
12
10
■ Conjecture : P ≠ NP e
■ La classe NP-complet contient les problèmes de NP tels que n’importe quel problème ■ Méthodes approchées :
de NP leur est polynomialement réductible ■ Algorithmes polynomiaux qui permettent de donner une solution approchée au problème
■ Il existe des algorithmes rapides qui n'offrent aucune garantie théorique dans le cas
■ Aucun problème NP-complet n’a pu être résolu à l’aide d’un algorithme efficace général, mais qui sont réputés, sur base expérimentale, donner en moyenne de bons
résultats. Ce sont les heuristiques et les méta-heuristiques
■ S’il existe un algorithme efficace pour un problème NP-complet quelconque alors il existe
un algorithme efficace pour tout problème NP-complet ■ Le principal problème est l'évaluation de la qualité des résultats obtenus
45 46