Quelle est la différence entre une heuristique et un algorithme?
Un algorithme est la description d'un solution automatisée à un problème. Ce que fait l'algorithme est défini avec précision. La solution pourrait être ou ne pas être la meilleure possible, mais vous savez dès le départ quel type de résultat vous obtiendrez. Vous implémentez le algorithme en utilisant un langage de programmation pour obtenir (une partie de) un programme.
Maintenant, certains problèmes sont difficiles et il est possible que vous ne puissiez pas obtenir une solution acceptable dans un délai raisonnable. 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 un heuristique.
Une heuristique reste une sorte d'algorithme, mais un algorithme qui n'explorera pas tous les états possibles du problème, ni ne commencera par explorer ceux qui sont les plus probables.
Des exemples typiques sont des jeux. Lors de l'écriture d'un programme de jeu d'échecs, vous pouvez imaginer essayer chaque mouvement possible à un niveau de profondeur et appliquer une fonction d'évaluation au tableau. Une heuristique exclurait les branches complètes commençant par de mauvais coups.
Dans certains cas, vous ne recherchez pas la meilleure solution, mais une solution qui rencontre une contrainte. Une bonne heuristique aiderait à trouver une solution dans un court laps de temps, mais pourrait également ne pas en trouver si les seules solutions se trouvent dans les états pour lesquels elle a choisi de ne pas essayer.
De nombreux problèmes pour lesquels aucun algorithme efficace permettant de trouver une solution optimale est connue ont des approches heuristiques qui produisent des résultats presque optimaux très rapidement.
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". Wikipedia 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 trouver rapidement une solution qui devrait être 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 un moyen général de résoudre un problème. 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 vaguement applicables, pour contrôler la résolution de problèmes chez les êtres humains et les machines.
Tandis qu’un algorithme est une méthode contenant un ensemble fini d’instructions servant à 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 formelles et des preuves.
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'existe aucune preuve formelle de son exactitude.
En fait, je ne pense pas qu’ils ont beaucoup en commun. Certains algorithmes utilisent des méthodes heuristiques dans leur logique (souvent pour effectuer moins de calculs ou obtenir des résultats plus rapides). Les heuristiques sont généralement utilisées dans les algorithmes gloutons.
L'heuristique est une "connaissance" que nous supposons bonne à utiliser afin d'obtenir le meilleur choix dans notre algorithme (quand un choix doit être pris). 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). Les heuristiques ne vous garantissent pas que cela vous mènera à la bonne réponse, mais (si les hypothèses sont correctes), vous obtiendrez souvent une réponse proche du meilleur dans un temps beaucoup plus court.
Un algorithme est un ensemble autonome d’opérations pas à pas à effectuer 4 , généralement interprété comme un résultat fini. séquence d'instructions (informatiques ou humaines) pour trouver une solution à un problème tel que: existe-t-il un chemin d'accès de A à B ou le plus petit chemin entre A et B. Dans ce dernier cas, vous pouvez également vous contenter d'un solution de rechange 'raisonnablement proche'.
Il existe certaines catégories d'algorithmes, dont l'algorithme heuristique. Selon les propriétés (éprouvées) de l'algorithme dans ce cas, il entre dans l'une des trois catégories suivantes (note 1):
Notez qu'un algorithme d'approximation est aussi une heuristique, mais avec la propriété la plus forte, il existe une liaison prouvée à la solution (valeur) qu'il génère.
Pour certains problèmes, personne n'a jamais trouvé un algorithme "efficace" pour calculer les solutions optimales (note 2). L'un de ces problèmes est le problème bien connu du vendeur itinérant. L'algorithme de Christophides pour le problème du voyageur de commerce, par exemple, s'appelait auparavant = heuristique, car il n'était pas prouvé qu'il se situait à moins de 50% de la solution optimale. Depuis qu'il a été prouvé, l'algorithme de Christophides est plus précisément appelé algorithme d'approximation.
En raison de restrictions sur ce que les ordinateurs peuvent faire, il n'est pas toujours possible de efficacement trouver la meilleure solution possible. S'il y a suffisamment de structure dans un problème, il peut exister un moyen efficace de parcourir l'espace de la solution, même si l'espace de la solution est énorme (c'est-à-dire dans le problème du 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 expertes" 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, permettant de déterminer où regarder first.
(note 1) : en outre, 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) : Ceci s'appelle le problème P vs NP) et les problèmes classés dans la catégorie NP-complet. et NP-hard ont peu de chances d’avoir un algorithme "efficace" Remarque: comme @Kriss l’a mentionné dans les commentaires, il existe même des types de problèmes "pires", qui peuvent nécessiter un temps ou un espace exponentiel pour être calculés.
Il y a plusieurs réponses à une partie de la question. Je les ai jugés moins complets et pas assez précis et j'ai décidé de ne pas modifier la réponse acceptée faite par @Kriss
L'algorithme est une séquence d'opérations qui, à partir d'une entrée, calcule quelque chose (une fonction) et génère un résultat.
L'algorithme peut donner une valeur exacte ou approximative.
Il est également possible de calculer une valeur aléatoire dont la probabilité est proche de la valeur exacte.
Un algorithme heuristique utilise certaines informations sur les valeurs d'entrée et ne calcule pas une valeur exacte (mais peut être proche de la valeur optimale). Dans certains cas particuliers, l'heuristique peut trouver une solution exacte.
Les heuristiques sont des algorithmes. En ce sens, il n'y en a pas. Cependant, les heuristiques adoptent une approche "approximative" de la résolution de problèmes, donnant une réponse "assez bonne" plutôt que de trouver la "meilleure solution" possible.
Un bon exemple est celui où vous avez un problème très difficile (lire NP-complet) pour lequel vous voulez une solution mais vous n’avez pas le temps de le résoudre, vous devez donc utiliser une solution suffisamment bonne basée sur un algorithme heuristique, tel que trouver une solution à un problème de voyageur de commerce en utilisant un algorithme génétique.
Un algorithme est un ensemble d'instructions clairement défini permettant de résoudre un problème. L'heuristique consiste à utiliser une approche d'apprentissage et de découverte pour trouver une solution.
Donc, si vous savez comment résoudre un problème, utilisez un algorithme. Si vous avez besoin de développer une solution, alors c'est de la heuristique.
Une heuristique est généralement une optimisation ou une stratégie qui fournit généralement une bonne réponse, mais pas toujours et rarement la meilleure réponse. Par exemple, si vous résolvez 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, mais ce n'est pas toujours le cas, et cela ne le fait certainement pas. t améliorer le temps d'exécution théorique (notation big-oh) de l'algorithme
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 indique uniquement comment rechercher, pas ce qu’il faut trouver. Cela ne vous dit pas comment aller directement du point A au point B; il se peut même qu'il ne sache pas où se trouvent les points A et 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 en direction de Puy-allup. Prenez la sortie South Hill Mall et parcourez 7 km. Au feu près de l'épicerie, tournez à droite et prenez la première à gauche. Entrez 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. Conduire à la ville dans l'adresse de retour. Lorsque 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 à partir d'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 recouvrent quelque peu. Pour les besoins de ce livre, la principale différence entre les deux est le niveau d'indirection par rapport à la solution. Un algorithme vous donne directement les instructions. Une heuristique vous indique comment découvrir les instructions par vous-même, ou au moins où les rechercher.
Je pense que l'heuristique est plus une contrainte utilisée dans Learning Model, dans Artificial Intelligent, car les futurs états de solution sont difficiles à prédire.
Mais alors, mon doute, après avoir lu les réponses ci-dessus, est "Comment les techniques heuristiques peuvent-elles être appliquées avec succès à l’aide des techniques d’optimisation stochastique? Ou peuvent-elles fonctionner comme des algorithmes à part entière lorsqu’elles sont utilisées avec l’optimisation stochastique?"
Ils trouvent une solution sous-optimale sans aucune garantie quant à la qualité de la solution trouvée, il est évident que cela fait sens pour le développement d’heuristique uniquement polynomiale. L’application de ces méthodes est appropriée pour résoudre des problèmes du monde réel ou de grands problèmes si maladroits du point de vue du calcul qu’il n’existe même pas un algorithme capable de trouver une solution approximative en temps polynomial.