R1_algorithme et heuristique

publicité
Département d’Informatique
Master Big Data Analytics & Smart Systems
Realisé par :
Encadré par :
Salma Largo
Pr.Meknassi
Khalid El masry
Année universitaire : 2016/2017
Introduction :
Il existe de nombreux problèmes intéressants, ayant des applications pratiques
importantes, par exemple, production d’itinéraire ou d’horaires de transport, placement
de composants électroniques dans un circuit, conception de réseaux, etc pour lesquels
il n’existe aucun algorithme connu ayant un temps d’éxecution polynomial. En d’autres
mots, pour de nombreux problèmes, les seuls algorithmes connus qui permettent
d’obtenir une solution optimale sont de complexité asymptotique très élevée, c’est-àdire de complexité exponentielle ou factorielle.
La question qui se pose existe-t-il un algorithme optimale et qui a un temps d’éxecution
polynomilale ?
Dans ce travail on va essayer de montrer la différences entre les algorithmes et les
heuristiques.
1) Algorithme :
On désigne par algorithmique l'ensemble des activités logiques qui relèvent des
algorithmes ; en particulier, en informatique, cette discipline désigne l'ensemble des
règles et des techniques qui sont impliquées dans la définition et la conception des
algorithmes.
Le mot « algorithme » vient du nom du mathématicien Al Khwarizmi, qui, au 9ème siècle
écrivit le premier ouvrage systématique sur la solution des équations linéaires et
quadratiques. La notion d'algorithme est donc historiquement liée aux manipulations
numériques, mais elle s'est progressivement développée pour porter sur des objets de
plus en plus complexes : des textes, des images, des formules logiques, des objets
physiques, etc. Un algorithme est un énoncé d'une suite d'opérations permettant de
donner la réponse à un problème.
 Si les opérations s'exécutent sur plusieurs processeurs en parallèle, on parle
d'algorithme parallèle.
 Si les tâches s'exécutent sur un réseau de processeurs on parle d'algorithme
distribué.
 Un algorithme qui contient un appel à lui-même est dit récursif. • Un algorithme
glouton est un algorithme qui suit le principe de faire, étape par étape, un choix
optimum local, dans l'espoir d'obtenir un résultat optimum global.
SALMA LARGO & KHALID ELMASRY
Page 2
 Exemple : algorithme problème des 8 reines
Le problème initialement posé par K.F. Gauss en 1842 est le suivant : est-il possible de
placer 8 reines sur un échiquier sans qu'aucune reine n'en menace une autre ?
Sachant que une reine menace toutes les pièces de l'échiquier qui sont situées sur la
même : ligne, colonne et diagonale.
La solution du problème est codée sous la forme d'un tableau S de taille N qui
représente le n-uplet solution, c'est-à-dire que S[i] est la colonne où il faut placer la ième reine.
L'algorithme EstLibre teste si la case à la ligne ligne et à la colonne colonne n'est pas
menacée par les reines précédemment placées. Il n'est pas nécessaire de disposer d'une
matrice booléenne pour savoir quelles sont les cases menacées ou non au fur et mesure
de l'évolution de l'algorithme, les positions des reines sur les lignes qui précèdent
suffisent et cette information est dans la table S. La vérification se fait en observant
qu'aucune reine précédente n'est placée sur la même ligne, sur la même colonne ou les
mêmes diagonales.
L'algorithme PlacerReine est chargé de placer les reines les unes après les autres en
parcourant implicitement l'arbre de décision. Contrairement à la résolution du
problème des 4 reines présenté précédemment, l'algorithme ne s'arrête pas dès que
les nn reines sont placées mais poursuit son investigation dans l'arbre jusqu'au bout.
Les nn alternatives de placement d'une reine sur une ligne se concrétisent dans
SALMA LARGO & KHALID ELMASRY
Page 3
l'algorithme par une boucle suivie d'un test pour vérifier que la case candidate n'est
pas menacée. Le premier appel de l'algorithme se fait avec la valeur 1.
2) Heuristique :
En optimisation combinatoire, une heuristique est un algorithme approché qui permet
d’identifier en temps polynomial au moins une solution réalisable rapide, pas
obligatoirement optimale. L’usage d’une heuristique est efficace pour calculer une
solution approchée d’un problème et ainsi accélérer le processus de résolution exacte.
Généralement une heuristique est conçue pour un problème particulier, en s’appuyant
sur sa structure propre sans offrir aucune garantit quant à la qualité de la solution
calculée. Les heuristiques peuvent être classées en deux catégories : – Méthodes
constructives qui génèrent des solutions à partir d’une solution initiale en essayant d’en
ajouter petit à petit des éléments jusqu’à ce qu’une solution complète soit obtenue, –
Méthodes de fouilles locales qui démarrent avec une solution initialement complète
(probablement moins intéressante), et de manière répétitive essaie d’améliorer cette
solution en explorant son voisinage.
SALMA LARGO & KHALID ELMASRY
Page 4
 Exemple : La méthode de descente
Pour un problème de minimisation d’une fonction f , la méthode descente peut être
décrite comme suit :
L’inconvénient majeur de la méthode de descente est son arrêt au premier minimum
local rencontré. Pour améliorer les résultats, on peut lancer plusieurs fois l’algorithme
en partant d’un jeu de solutions initiales différentes, mais la performance de cette
technique décroît rapidement.
Pour éviter d’être bloqué au premier minimum local rencontré, on peut décider
d’accepter, sous certaines conditions, de se déplacer d’une solution s vers une solution
s 0 ∈ N(s) telle que f(s 0 ) > f(s).
Réferences :
http://www.fsr.ac.ma/cours/maths/bernoussi/Cours%20C2SI.pdf
http://www-poleia.lip6.fr/~fouilhoux/documents/synthese-heuristique
http://www.nymphomath.ch/info/algo/algorithmique.pdf
SALMA LARGO & KHALID ELMASRY
Page 5
Téléchargement