Aller au contenu

« Optimisation combinatoire » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
SniperMaské (discuter | contributions)
m syntaxe + wikif. + nettoyage
Hunsu (discuter | contributions)
Ligne 11 : Ligne 11 :
<center><math> \max_{S \subseteq N} \{ f(S): \, S\in \mathcal R \}.</math></center>
<center><math> \max_{S \subseteq N} \{ f(S): \, S\in \mathcal R \}.</math></center>


L'ensemble des solutions réalisables ne saurait être décrit par une liste exhaustive car la difficulté réside ici précisément dans le fait que le nombre des solutions réalisables rend son énumération impossible, ou bien qu'il est [[NP-complet]] de dire s'il en existe ou non. La description de <math> \mathcal R </math> est donc [[implicite]], il s'agit en général de la liste, relativement courte, des propriétés des solutions réalisables.
L'ensemble des solutions réalisables ne saurait être décrit par une liste exhaustive car la difficulté réside ici précisément dans le fait que le nombre des solutions réalisables rend son énumération impossible, ou bien qu'il est [[NP-complet]] de dire s'il en existe ou non. La description de <math> \mathcal R </math> est donc implicite, il s'agit en général de la liste, relativement courte, des propriétés des solutions réalisables.


La plupart du temps, on est dans les cas particuliers suivants :
La plupart du temps, on est dans les cas particuliers suivants :

Version du 31 mai 2016 à 22:55

L’optimisation combinatoire, aussi appelée optimisation discrète, est une branche de l'optimisation en mathématiques appliquées et en informatique, également liée à la recherche opérationnelle, l'algorithmique et la théorie de la complexité.

Définition

Dans sa forme la plus générale, un problème d'optimisation combinatoire (on dit aussi d'optimisation discrète) consiste à trouver dans un ensemble discret un parmi les meilleurs sous-ensembles (ou solutions) réalisables, la notion de meilleure solution étant définie par une fonction objectif. Formellement, étant donnés :

  • un ensemble discret  ;
  • une fonction d'ensemble , dite fonction objectif ;
  • et un ensemble de sous-ensembles de , dont les éléments sont appelés les solutions réalisables,

un problème d'optimisation combinatoire consiste à déterminer

L'ensemble des solutions réalisables ne saurait être décrit par une liste exhaustive car la difficulté réside ici précisément dans le fait que le nombre des solutions réalisables rend son énumération impossible, ou bien qu'il est NP-complet de dire s'il en existe ou non. La description de est donc implicite, il s'agit en général de la liste, relativement courte, des propriétés des solutions réalisables.

La plupart du temps, on est dans les cas particuliers suivants :

  • et et la cardinalité de est exponentielle en  ;
  • donc les propriétés de se traduisent en contraintes linéaires, c'est-à-dire que et un polyèdre de  ;
  • .

Exemple

Le problème du VRP où un Voyageur de Commerce doit parcourir les N villes d'un pays en effectuant le trajet le plus court. La résolution est explosive, en n!. Rappelons que 24! = 6,2×1023, tandis qu'une année ne compte que 3,16×1013 microsecondes.

Résolution

Trouver une solution optimale dans un ensemble discret et fini est un problème facile en théorie : il suffit d'essayer toutes les solutions, et de comparer leurs qualités pour voir la meilleure. Cependant, en pratique, l'énumération de toutes les solutions peut prendre trop de temps ; or, le temps de recherche de la solution optimale est un facteur très important et c'est à cause de lui que les problèmes d'optimisation combinatoire sont réputés si difficiles. La théorie de la complexité donne des outils pour mesurer ce temps de recherche. De plus, comme l'ensemble des solutions réalisables est défini de manière implicite, il est aussi parfois très difficile de trouver ne serait-ce qu'une solution réalisable.

Quelques problèmes d'optimisation combinatoire peuvent être résolus (de manière exacte) en temps polynomial par exemple par un algorithme glouton, un algorithme de programmation dynamique[1] ou en montrant que le problème peut être formulé comme un problème d'optimisation linéaire en variables réelles.

Dans la plupart des cas, le problème est NP-difficile et, pour le résoudre, il faut faire appel à des algorithmes de branch and bound, à l'optimisation linéaire en nombres entiers ou encore à la programmation par contraintes.

En pratique, la complexité physiquement acceptable n'est souvent que polynômiale. On se contente alors d'avoir une solution approchée au mieux, obtenue par une heuristique ou une métaheuristique.

Pour le problème du VRP envisagé à large échelle, Karp zone les villes, résout le problème zone par zone, puis assemble au mieux les parcours locaux.
Pour un problème d'optimisation d'affectation d'équipages, l'optimisation linéaire en variables réelles dégrossit le problème : on considère comme définitives les valeurs des variables ainsi collées aux extrêmes de leur domaine, et on n'applique les méthodes d'optimisation combinatoire que sur le problème résiduel.

Pour certains problèmes, on peut prouver une garantie de performance, c'est-à-dire que pour une méthode donnée l'écart entre la solution obtenue et la solution optimale est borné. Dans ces conditions, à domaine égal, un algorithme est préférable à un autre si, à garantie égale ou supérieure, il est moins complexe.

Référence

  1. Bellman, Richard (1957), Dynamic Programming, Princeton University Press. Dover paperback edition (2003), ISBN 0-486-42809-5.

Voir aussi

Sur les autres projets Wikimedia :