Quelle est la différence entre une heuristique et un algorithme?
algorithm
definition
heuristics
nomenclature
streetparade
la source
la source
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.
la source
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.
la source
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é.
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.
la source
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
la source
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.
la source
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.
la source
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.
la source
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.
la source
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
la source
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?"
http://en.wikipedia.org/wiki/Stochastic_optimization
la source
L'une des meilleures explications que j'ai lues vient du grand livre Code Complete , que je cite maintenant:
la source
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.
la source