2
3. Méthodologie de résolution pour résoudre un problème donné
la démarche suivie, pour résoudre un problème à l’une procédure algorithmique, peut être
résumée comme suit:
• Pour résoudre un problème, plusieurs solutions peuvent être mises à notre disposition. Il
est alors intéressant d’évaluer le temps et/ou l’espace requis pour exécuter l’algorithme
correspondant à la stratégie utilisée. Cette étape est celle de l’analyse des algorithmes.
• Dans le cas où aucune solution n’est dispoible, ou alors qu’on éprouve le besoin d’avoir
une nouvelle solution que celles dont on dispose, la question qui peut alors se poser est
tout simplement de savoir comment on peut en concevoir une autre.
Il est clair qu’il n’existe pas de recette pour résoudre un problème donné. Toutefois, des
approches générales existent telles que la méthode vorace, diviser et régner,
programation dynamique, la réduction, etc. Généralement, ces méthodes, quand elles
sont utilisées, aboutissent souvent à des solutions. Dans ce cas de figure, il est souhaitable
que la nouvelle solution soit plus performante que les solutions déjà existantes. Bien
entendu, parmi les critères de performance, figurent le temps et l’espace mémoire. Si,
maintenant, on est satisfait de la solution existante, il serait intéressant de savoir si le
changement d’organisation des données peut améliorer ces performances.
• Il est clair qu’on ne peut pas améliorer indéfinément une solution. Il existe un point où
cette amiloration s’arrête. Autrement dit, il est intéressant de savoir si la solution dont on
dispose est optimale. On entend généralement par optimale, toute solution dont le temps
d’exécution est minimum. Cette question est intimement liée à celle de la borne inférieure:
déterminer la borne inférieure dun probème revient à démontrer qu’il ne pourrait exister
d’algorithme dont le temps d’’exécution est inférieur à cette borne.
• Théoriquement (du moins), le temps d’exécution d’expression polynomiale, en fonction
de la taille des données du problème du problème, est considérés meilleurs que celui qui
ne l’est pas. Il peut se trouver que, pour un problème donné (les problèmes dit NP-
difficiles), toutes les solutions connues jusqu’à date ont des temps d’exécution non
polynomiaux. Le problème dans ce cas est de savoir si cela dû à notre incapacité de trouver
une solution polynomiale ou alors que le problème est intriséquement difficile à résoudre.
Ce genre de question est traité par la théorie de la complexité.
• Si le problème est montré qu’il dans la classe des problème dit «difficles», ceci signifie
qu’il exsite pue d’espoir de trouver une solution polynomiale. Cela ne doit pas nous
empêcher d’essayer de trouver une solution au problème en question. Deux approches de
résolution sont entreprises:
1. approche exacte: dans le cas où l’on souhaite r.soudre d’une manière exacte le
problème considéré, des technqiues comme la méthode branch $ bound sont souvent
tuilisées. Il est utile de rappeler que les temps d’exécution des ces méthodes devient de
plus en plus prohibitif à mesure que les données deviennent de plus en plus grandes.
2. approche heuristique: dans le cas où on désire se contenter d’une solution approchée,
alors des méthode heuristiques telles que les méthodes vorace et les méthodes itératives
(recuit simulé, recherche taboue, etc) sont utilisées. Une étude expérimentale est
généralement effectuée pour étudier la performance de algorithmes. Remarquons que
pour les algorithmes dit voraces, une méthode mathématique est en général effectuée.
En effet, pour ces algorithmes, on calcule en fait la distance qui séparent la valeur de la
solution qu’elles génèrent par rapport à celle de la solution optimale. Ce calcul est fait
généralement dans le pire cas, c’est-à-dire, on calcule la distance maximale. Toutefois,
dans certains cas, le calcul est aussi dans le cas moyen.