Quelle est la différence entre une heuristique et un algorithme?
Quelle est la différence entre une heuristique et un algorithme?
Réponses:
Un algorithme est la description d'une solution automatisée à un problème . Ce que fait l'algorithme est défini avec précision. La solution pourrait ou non être la meilleure possible, mais vous savez dès le départ quel type de résultat vous obtiendrez. Vous implémentez l' algorithme en utilisant un langage de programmation pour obtenir (une partie de) un programme .
Maintenant, certains problèmes sont difficiles et vous ne pourrez peut-être pas trouver une solution acceptable dans un délai acceptable. Dans de tels cas, vous pouvez souvent obtenir une solution pas trop mauvaise beaucoup plus rapidement, en appliquant des choix arbitraires (suppositions éclairées): c'est une heuristique .
Une heuristique est toujours une sorte d'algorithme, mais qui n'explorera pas tous les états possibles du problème, ou commencera par explorer les plus probables.
Les exemples typiques proviennent de jeux. Lorsque vous écrivez un programme de jeu d'échecs, vous pouvez imaginer essayer tous les mouvements possibles à un certain niveau de profondeur et appliquer une fonction d'évaluation au tableau. Une heuristique exclurait les branches complètes qui commencent par des mouvements manifestement mauvais.
Dans certains cas, vous ne recherchez pas la meilleure solution, mais toute solution répondant à une contrainte. Une bonne heuristique aiderait à trouver une solution en peu de temps, mais pourrait également ne pas en trouver si les seules solutions se trouvent dans les états qu'elle a choisi de ne pas essayer.
De nombreux problèmes pour lesquels aucun algorithme efficace pour trouver une solution optimale n'est connu ont des approches heuristiques qui donnent très rapidement des résultats quasi optimaux.
Il y a quelques chevauchements: «algorithmes génétiques» est un terme accepté, mais à proprement parler, ce sont des heuristiques, pas des algorithmes.
Heuristique, en un mot, est une «supposition éclairée». Wikipédia l'explique bien. À la fin, une méthode «d'acceptation générale» est considérée comme une solution optimale au problème spécifié.
Heuristique est un adjectif pour les techniques basées sur l'expérience qui aident à la résolution de problèmes, à l'apprentissage et à la découverte. Une méthode heuristique est utilisée pour arriver rapidement à une solution que l'on espère proche de la meilleure réponse possible, ou «solution optimale». Les heuristiques sont des «règles empiriques», des suppositions éclairées, des jugements intuitifs ou simplement du bon sens. Une heuristique est une manière générale de résoudre un problème. L'heuristique en tant que nom est un autre nom pour les méthodes heuristiques.
En termes plus précis, les heuristiques représentent des stratégies utilisant des informations facilement accessibles, bien que peu applicables, pour contrôler la résolution de problèmes chez les êtres humains et les machines.
Alors qu'un algorithme est une méthode contenant un ensemble fini d'instructions utilisées pour résoudre un problème. La méthode a été prouvée mathématiquement ou scientifiquement pour résoudre le problème. Il existe des méthodes et des preuves formelles.
L'algorithme heuristique est un algorithme capable de produire une solution acceptable à un problème dans de nombreux scénarios pratiques, à la manière d'une heuristique générale, mais pour lequel il n'y a pas de preuve formelle de son exactitude.
Un algorithme est un ensemble d'opérations étape par étape autonome à effectuer 4 , généralement interprété comme une séquence finie d'instructions (informatiques ou humaines) pour déterminer une solution à un problème tel que: y a-t-il un chemin de A à B, ou quel est le plus petit chemin entre A et B. Dans ce dernier cas, vous pourriez également être satisfait d'une solution alternative «raisonnablement proche».
Il existe certaines catégories d'algorithmes, dont l'algorithme heuristique fait partie. Selon les propriétés (prouvées) de l'algorithme dans ce cas, il appartient à l'une de ces trois catégories (note 1):
Notez qu'un algorithme d'approximation est également une heuristique, mais avec la propriété la plus forte qu'il existe une liaison prouvée à la solution (valeur) qu'il produit.
Pour certains problèmes, personne n'a jamais trouvé d'algorithme «efficace» pour calculer les solutions optimales (note 2). L'un de ces problèmes est le problème bien connu du voyageur de commerce. L'algorithme de Christophides pour le problème du voyageur de commerce, par exemple, s'appelait autrefois une heuristique , car il n'a pas été prouvé qu'il se situait à moins de 50% de la solution optimale. Depuis qu'il a été prouvé, cependant, l'algorithme de Christophides est plus précisément appelé un algorithme d'approximation.
En raison des restrictions sur ce que peuvent faire les ordinateurs, il n'est pas toujours possible de trouver efficacement la meilleure solution possible. S'il y a suffisamment de structure dans un problème, il peut y avoir un moyen efficace de traverser l'espace de solution, même si l'espace de solution est énorme (c'est-à-dire dans le problème de chemin le plus court).
Les heuristiques sont généralement appliquées pour améliorer la durée d'exécution des algorithmes, en ajoutant des «informations d'experts» ou des «suppositions éclairées» pour guider la direction de la recherche. En pratique, une heuristique peut également être une sous-routine pour un algorithme optimal, pour déterminer où chercher en premier .
(note 1) : De plus, les algorithmes sont caractérisés par le fait qu'ils incluent des éléments aléatoires ou non déterministes. Un algorithme qui s'exécute toujours de la même manière et produit la même réponse est appelé déterministe.
(note 2) : C'est ce qu'on appelle le problème P vs NP, et les problèmes classés comme NP-complet et NP-difficile ont peu de chances d'avoir un algorithme «efficace». Remarque; comme @Kriss l'a mentionné dans les commentaires, il existe des types de problèmes encore `` pires '', qui peuvent nécessiter un temps ou un espace exponentiel pour le calcul.
Il y a plusieurs réponses qui répondent à une partie de la question. Je les ai jugées moins complètes et pas assez précises, et j'ai décidé de ne pas modifier la réponse acceptée faite par @Kriss
En fait, je ne pense pas qu'il y ait beaucoup de points communs entre eux. Certains algorithmes utilisent des heuristiques dans leur logique (souvent pour faire moins de calculs ou obtenir des résultats plus rapides). Les heuristiques sont généralement utilisées dans les algorithmes dits gloutons.
L'heuristique est une "connaissance" que nous supposons qu'il est bon d'utiliser afin d'obtenir le meilleur choix dans notre algorithme (quand un choix doit être fait). Par exemple ... une heuristique aux échecs pourrait être (prenez toujours la reine de l'adversaire si vous le pouvez, puisque vous savez que c'est le chiffre le plus fort). L'heuristique ne vous garantit pas que vous mènera à la bonne réponse, mais (si les hypothèses sont correctes) obtiennent souvent des réponses qui sont proches des meilleures dans un temps beaucoup plus court.
Les heuristiques sont des algorithmes, donc dans ce sens, il n'y en a pas, cependant, les heuristiques adoptent une approche «supposée» de la résolution de problèmes, donnant une réponse «assez bonne», plutôt que de trouver une «meilleure solution possible».
Un bon exemple est celui où vous avez un problème très difficile (lu NP-complet) pour lequel vous voulez une solution mais que vous n'avez pas le temps d'y arriver, vous devez donc utiliser une solution assez bonne basée sur un algorithme heuristique, tel que trouver une solution à un problème de voyageur de commerce à l'aide d'un algorithme génétique.
L'algorithme est une séquence d'opérations qui, étant donné une entrée, calcule quelque chose (une fonction) et produit un résultat.
L'algorithme peut donner des valeurs exactes ou approximatives.
Il peut également calculer une valeur aléatoire qui est avec une forte probabilité proche de la valeur exacte.
Un algorithme heuristique utilise des informations sur les valeurs d'entrée et ne calcule pas la valeur exacte (mais peut être proche de l'optimum). Dans certains cas particuliers, l'heuristique peut trouver une solution exacte.
Un algorithme est un ensemble d'instructions clairement défini pour résoudre un problème, l'heuristique implique l'utilisation d'une approche d'apprentissage et de découverte pour parvenir à une solution.
Donc, si vous savez comment résoudre un problème, utilisez un algorithme. Si vous avez besoin de développer une solution, c'est l'heuristique.
Une heuristique est généralement une optimisation ou une stratégie qui fournit généralement une réponse suffisamment bonne, mais pas toujours et rarement la meilleure réponse. Par exemple, si vous deviez résoudre le problème du voyageur de commerce avec la force brute, rejeter une solution partielle une fois que son coût dépasse celui de la meilleure solution actuelle est une heuristique: parfois cela aide, d'autres fois non, et ce n'est certainement pas le cas. t améliorer le temps d'exécution théorique (notation big-oh) de l'algorithme
Je pense que l'heuristique est davantage une contrainte utilisée dans le modèle basé sur l'apprentissage en intelligence artificielle, car les états de solution futurs sont difficiles à prédire.
Mais alors mon doute après avoir lu les réponses ci-dessus est "Comment l'heuristique peut-elle être appliquée avec succès en utilisant les techniques d'optimisation stochastique? Ou peuvent-elles fonctionner comme des algorithmes à part entière lorsqu'ils sont utilisés avec l'optimisation stochastique?"
L'une des meilleures explications que j'ai lues vient du grand livre Code Complete , que je cite maintenant:
Une heuristique est une technique qui vous aide à chercher une réponse. Ses résultats sont sujets au hasard car une heuristique ne vous dit que comment regarder, pas quoi trouver. Il ne vous dit pas comment aller directement du point A au point B; il peut même ne pas savoir où se trouvent le point A et le point B. En effet, une heuristique est un algorithme dans un costume de clown. C'est moins prévisible, plus amusant et sans garantie de remboursement de 30 jours.
Voici un algorithme pour vous rendre chez quelqu'un: prenez l'autoroute 167 sud jusqu'à Puy-allup. Prenez la sortie South Hill Mall et parcourez 4,5 miles vers le haut de la colline. Tourner à droite au feu près de l'épicerie, puis prendre la première à gauche. Tournez dans l'allée de la grande maison bronzée sur la gauche, au 714 North Cedar.
Voici une heuristique pour vous rendre chez quelqu'un: trouvez la dernière lettre que nous vous avons envoyée. Conduisez jusqu'à la ville à l'adresse de retour. Quand vous arrivez en ville, demandez à quelqu'un où se trouve notre maison. Tout le monde nous connaît, quelqu'un se fera un plaisir de vous aider. Si vous ne trouvez personne, appelez-nous depuis un téléphone public et nous viendrons vous chercher.
La différence entre un algorithme et une heuristique est subtile, et les deux termes se chevauchent quelque peu. Pour les besoins de ce livre, la principale différence entre les deux est le niveau d'indirection de la solution. Un algorithme vous donne directement les instructions. Une heuristique vous indique comment découvrir les instructions par vous-même, ou du moins où les rechercher.
Ils trouvent une solution sous-optimale sans aucune garantie quant à la qualité de la solution trouvée, il est évident que cela a du sens pour le développement d'heuristiques uniquement polynomiales. L'application de ces méthodes convient pour résoudre des problèmes du monde réel ou des problèmes de grande envergure si gênants du point de vue du calcul qu'il n'y a même pas pour eux un algorithme capable de trouver une solution approximative en temps polynomial.