Quelle est la différence entre une heuristique et un algorithme?


103

Quelle est la différence entre une heuristique et un algorithme?



1
Si vous regardez un algorithme heuristique comme une sorte de structure arborescente, je suppose que vous pourriez l'appeler comme un algorithme à usage spécial.
James P.

Une heuristique est un algorithme qui ne fonctionne pas (prouvé).
JeffE

Réponses:


99

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.


3
Une autre utilisation courante de l'heuristique est la détection de virus, où vous n'êtes peut-être pas sûr qu'un virus est présent, mais vous pouvez rechercher des attributs clés spécifiques d'un virus.
Dana Holt

Heah thats true and for cracking programms
streetparade

1
@kriss, Donc .. une heuristique est une sorte d'algorithme.
Pacerier le

1
@Pacerier: oui. C'est un algorithme qui aide à naviguer dans l'espace de solution d'un problème particulier. Vous pouvez également le voir comme une stratégie pour modifier un algorithme pour le rendre pratique (un méta-algorithme). C'est toujours un algorithme, toutes les méthodes le sont, et une heuristique est définitivement une méthode.
kriss

33
  • Un algorithme est généralement déterministe et il a été prouvé qu'il donne un résultat optimal
  • Une heuristique n'a pas de preuve d'exactitude, implique souvent des éléments aléatoires et peut ne pas donner des résultats optimaux.

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.


2
Je ne dirais pas qu'il est prouvé qu'un algorithme donne un résultat optimal: cela dépend de l'algorithme par rapport à quel problème.
nbro

Rendre un résultat optimal n'est pas la qualité essentielle des algorithmes, c'est la précision c'est-à-dire le résultat exact alors que l'heuristique vous fournit des résultats approximatifs.
Marina Dunst

22

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.


8

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):

  • Exact : la solution s'avère être unesolutionoptimale (ou exacte ) au problème d'entrée
  • Approximation : il est prouvé que l'écart de la valeur de la solution n'est jamais plus éloigné de la valeur optimale qu'une certaine limite prédéfinie (par exemple, jamais plus de 50% plus grande que la valeur optimale)
  • Heuristique : l'algorithme ne s'est pas avéré optimal, ni dans une limite prédéfinie de la solution optimale

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


Je pense que votre définition du mot algorithme est trop restrictive. L'utilisation de la séquence de mots implique-t-elle une non-parallèle? Les algorithmes parallèles sont bons et même habituels de nos jours. Qu'en est-il de la résolution d'un problème à l'aide d'un réseau de neurones? Ou un outil de propagation de contraintes? Algorithmes? Des méta-algorithmes?
kriss

Le lecteur a le sentiment que les problèmes de NP sont les pires qui soient. C'est faux. Il y a des problèmes vraiment difficiles qui nécessitent des algorithmes vraiment mauvais comme les exponentiels ou pire. Les NP sont spéciaux car si nous avons une solution, il est facile et rapide de la vérifier, alors qu'il est très difficile de la trouver si nous ne l'avons pas déjà. Il est facile de vérifier que nous avons les bonnes instructions pour sortir d'un labyrinthe, c'est beaucoup plus difficile de trouver la sortie. Ainsi, les NP sont à la fois faciles et difficiles si nous pouvions essayer toutes les solutions possibles en même temps (de manière non déterministe), la résoudre serait très simple ... mais nous ne pouvons pas.
kriss

Merci pour les commentaires! J'ai légèrement mis à jour le libellé et l'ai abordé différemment. À mon avis, la propagation de contraintes est une technique pour aborder quelque chose, mais ce n'est pas encore un algorithme qui décrit comment arriver pas à pas à la solution décrite dans la propagation de contraintes. Vous avez bien sûr raison sur les classes d'expspace et «pire», j'ai ajouté une note à ce sujet aussi. BTW: veuillez écrire NP-Complete et / ou NP-Hard entièrement, car le sous-ensemble de NP contient également des problèmes résolubles «efficacement», qui ne sont pas (supposés être) de la même classe.
Joost

Bien sûr, vous avez raison, j'aurais dû écrire NP-Complete. Ma faute.
kriss

C'est bien mieux que ce qu'un de mes collègues l'appelle: NP-ness (qui semble tout simplement horrible et un peu dégoûtant ...)
Joost

6

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.


4

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.


4

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.


3

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.


2

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


2

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


Oups!! faute d'orthographe ça devrait être "Intelligence Artificielle"
A_tanA

2

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.


Dire qu'il existe une différence entre un algorithme et une heuristique revient à dire qu'il y a une différence entre un oiseau et un poulet. Les heuristiques sont un type d'algorithme.
Joost le

0

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.