Was ist der Unterschied zwischen einer Heuristik und einem Algorithmus?


103

Was ist der Unterschied zwischen einer Heuristik und einem Algorithmus?



1
Wenn Sie einen heuristischen Algorithmus als eine Art Baumstruktur betrachten, können Sie ihn vermutlich als Spezialalgorithmus bezeichnen.
James P.

Eine Heuristik ist ein Algorithmus, der (nachweislich) nicht funktioniert.
JeffE

Antworten:


99

Ein Algorithmus ist die Beschreibung einer automatisierten Lösung eines Problems . Was der Algorithmus tut, ist genau definiert. Die Lösung könnte die bestmögliche sein oder auch nicht, aber Sie wissen von Anfang an, welche Ergebnisse Sie erzielen werden. Sie implementieren den Algorithmus mit einer Programmiersprache, um (einen Teil) eines Programms abzurufen .

Jetzt sind einige Probleme schwierig und Sie können möglicherweise nicht in einer akzeptablen Zeit eine akzeptable Lösung finden. In solchen Fällen können Sie oft viel schneller eine nicht allzu schlechte Lösung finden, indem Sie einige willkürliche Entscheidungen treffen (fundierte Vermutungen): das ist a Heuristik .

Eine Heuristik ist immer noch eine Art Algorithmus, der jedoch nicht alle möglichen Zustände des Problems untersucht oder zunächst die wahrscheinlichsten untersucht.

Typische Beispiele stammen aus Spielen. Wenn Sie ein Schachspielprogramm schreiben, können Sie sich vorstellen, jeden möglichen Zug in einer bestimmten Tiefe zu versuchen und eine Bewertungsfunktion auf das Brett anzuwenden. Eine Heuristik würde vollständige Zweige ausschließen, die mit offensichtlich schlechten Zügen beginnen.

In einigen Fällen suchen Sie nicht nach der besten Lösung, sondern nach einer Lösung, die einer bestimmten Einschränkung entspricht. Eine gute Heuristik würde helfen, in kurzer Zeit eine Lösung zu finden, kann aber auch keine finden, wenn sich die einzigen Lösungen in den Staaten befinden, in denen sie es nicht versucht haben.


3
Eine weitere häufige Verwendung für Heuristiken ist die Virenerkennung, bei der Sie möglicherweise nicht sicher sind, ob ein Virus vorhanden ist, aber nach bestimmten Schlüsselattributen eines Virus suchen können.
Dana Holt

Heah das ist wahr und für das Knacken von Programmen
Straßenparade

1
@kriss, also .. eine Heuristik ist eine Art Algorithmus.
Pacerier

1
@ Pacerier: ja. Es ist ein Algorithmus, der hilft, im Lösungsraum eines bestimmten Problems zu navigieren. Sie können es auch als Strategie betrachten, einen Algorithmus so zu ändern, dass er praktisch ist (ein Meta-Algorithmus). Es ist immer noch ein Algorithmus, alle Methoden sind es, und eine Heuristik ist definitiv eine Methode.
Kriss

33
  • Ein Algorithmus ist typischerweise deterministisch und liefert nachweislich ein optimales Ergebnis
  • Eine Heuristik hat keinen Korrektheitsnachweis, enthält häufig zufällige Elemente und liefert möglicherweise keine optimalen Ergebnisse.

Viele Probleme, für die kein effizienter Algorithmus bekannt ist, um eine optimale Lösung zu finden, haben heuristische Ansätze, die sehr schnell nahezu optimale Ergebnisse liefern.

Es gibt einige Überschneidungen: "genetische Algorithmen" ist ein akzeptierter Begriff, aber genau genommen handelt es sich um Heuristiken, nicht um Algorithmen.


2
Ich würde nicht sagen, dass ein Algorithmus nachweislich ein optimales Ergebnis liefert: Es hängt vom Algorithmus ab, welches Problem vorliegt.
nbro

Das Erzielen eines optimalen Ergebnisses ist nicht die wesentliche Qualität von Algorithmen, sondern die Genauigkeit, dh das genaue Ergebnis, während die Heuristik Ihnen ungefähre Ergebnisse liefert.
Marina Dunst

22

Heuristisch, kurz gesagt, ist eine "fundierte Vermutung". Wikipedia erklärt es schön. Am Ende wird eine "allgemeine Akzeptanz" -Methode als optimale Lösung für das spezifizierte Problem angesehen.

Heuristik ist ein Adjektiv für erfahrungsbasierte Techniken, die beim Lösen, Lernen und Entdecken von Problemen helfen. Eine heuristische Methode wird verwendet, um schnell zu einer Lösung zu gelangen, die der bestmöglichen Antwort oder „optimalen Lösung“ nahe kommen soll. Heuristiken sind "Faustregeln", fundierte Vermutungen, intuitive Urteile oder einfach gesunder Menschenverstand. Eine Heuristik ist eine allgemeine Methode zur Lösung eines Problems. Heuristik als Substantiv ist ein anderer Name für heuristische Methoden.

Genauer gesagt stehen Heuristiken für Strategien, bei denen leicht zugängliche, wenn auch lose anwendbare Informationen verwendet werden, um die Problemlösung bei Menschen und Maschinen zu steuern.

Während ein Algorithmus eine Methode ist, die einen endlichen Satz von Anweisungen enthält, die zur Lösung eines Problems verwendet werden. Es wurde mathematisch oder wissenschaftlich nachgewiesen, dass die Methode für das Problem funktioniert. Es gibt formale Methoden und Beweise.

Der heuristische Algorithmus ist ein Algorithmus, der in vielen praktischen Szenarien eine akzeptable Lösung für ein Problem nach Art einer allgemeinen Heuristik liefern kann, für die es jedoch keinen formalen Beweis für seine Richtigkeit gibt.


8

Ein Algorithmus ist ein in sich geschlossener Schritt-für-Schritt-Satz von auszuführenden Operationen 4 , der typischerweise als endliche Folge von (Computer- oder Menschen-) Anweisungen interpretiert wird, um eine Lösung für ein Problem zu bestimmen, wie zum Beispiel: Gibt es einen Pfad von A nach B oder was ist der kleinste Pfad zwischen A und B. Im letzteren Fall könnten Sie auch mit einer alternativen Lösung zufrieden sein, die „ziemlich nah“ ist.

Es gibt bestimmte Kategorien von Algorithmen, von denen der heuristische Algorithmus eine ist. Abhängig von den (nachgewiesenen) Eigenschaften des Algorithmus in diesem Fall fällt er in eine dieser drei Kategorien (Anmerkung 1):

  • Genau : Die Lösung ist nachweislich eine optimale (oder exakte) Lösung für das Eingabeproblem
  • Annäherung : Die Abweichung des Lösungswerts ist nachweislich nie weiter vom optimalen Wert entfernt als eine vordefinierte Grenze (z. B. nie mehr als 50% größer als der optimale Wert).
  • Heuristik : Der Algorithmus hat sich weder als optimal erwiesen, noch innerhalb einer vordefinierten Grenze der optimalen Lösung

Beachten Sie, dass ein Approximationsalgorithmus ebenfalls eine Heuristik ist, jedoch mit der stärkeren Eigenschaft, dass eine nachgewiesene Bindung an die von ihm ausgegebene Lösung (Wert) besteht.

Für einige Probleme hat noch niemand einen "effizienten" Algorithmus gefunden, um die optimalen Lösungen zu berechnen (Anmerkung 2). Eines dieser Probleme ist das bekannte Problem des Handlungsreisenden. Der Algorithmus von Christophides für das Problem des Handlungsreisenden wurde beispielsweise früher als Heuristik bezeichnet , da nicht nachgewiesen wurde, dass er innerhalb von 50% der optimalen Lösung lag. Da dies jedoch bewiesen wurde, wird der Christophides-Algorithmus genauer als Approximationsalgorithmus bezeichnet.

Aufgrund der Einschränkungen der Computerfunktionen ist es nicht immer möglich, die bestmögliche Lösung effizient zu finden . Wenn ein Problem genügend strukturiert ist, kann es eine effiziente Möglichkeit geben, den Lösungsraum zu durchqueren, obwohl der Lösungsraum riesig ist (dh das Problem mit dem kürzesten Pfad).

Heuristiken werden normalerweise angewendet, um die Laufzeit von Algorithmen zu verbessern, indem "Experteninformationen" oder "fundierte Vermutungen" hinzugefügt werden, um die Suchrichtung zu bestimmen. In der Praxis kann eine Heuristik auch eine Unterroutine für einen optimalen Algorithmus sein, um zu bestimmen, wo zuerst gesucht werden muss .

(Anmerkung 1) : Zusätzlich werden Algorithmen dadurch charakterisiert, ob sie zufällige oder nicht deterministische Elemente enthalten. Ein Algorithmus, der immer auf die gleiche Weise ausgeführt wird und die gleiche Antwort liefert, wird als deterministisch bezeichnet.

(Anmerkung 2) : Dies wird als P-gegen-NP-Problem bezeichnet, und es ist unwahrscheinlich, dass Probleme, die als NP-vollständig und NP-hart klassifiziert sind, einen „effizienten“ Algorithmus haben. Hinweis; Wie @Kriss in den Kommentaren erwähnt hat, gibt es noch "schlimmere" Arten von Problemen, für deren Berechnung möglicherweise exponentielle Zeit oder Raum erforderlich sind.

Es gibt mehrere Antworten, die einen Teil der Frage beantworten. Ich hielt sie für weniger vollständig und nicht genau genug und beschloss, die akzeptierte Antwort von @Kriss nicht zu bearbeiten


Ich glaube, Ihre Definition des Wortalgorithmus ist zu restriktiv. Bedeutet die Verwendung der Wortfolge eine Nichtparallele? Parallell-Algorithmen sind in Ordnung und heutzutage sogar üblich. Was ist mit der Lösung eines Problems mithilfe eines neuronalen Netzwerks? Oder ein Tool zur Weitergabe von Einschränkungen? Algorithmen? Meta-Algorithmen?
kriss

Der Leser hat das Gefühl, dass NP-Probleme umso schlimmer sind, als es sie gibt. Das ist nicht wahr. Es gibt wirklich schwierige Probleme, die wirklich schlechte Algorithmen wie exponentielle oder schlechtere benötigen. NP sind etwas Besonderes, denn wenn wir eine Lösung haben, ist es einfach und schnell, sie zu überprüfen, während es sehr schwierig ist, sie zu finden, wenn wir sie noch nicht haben. Es ist leicht zu überprüfen, ob wir die richtigen Anweisungen haben, um aus einem Labyrinth herauszukommen. Es ist viel schwieriger, den Ausgang zu finden. Daher sind NP sowohl einfach als auch schwierig, wenn wir alle möglichen Lösungen gleichzeitig ausprobieren könnten (nicht deterministisch). Eine Lösung wäre sehr einfach ... aber wir können nicht.
Kriss

Danke für die Rückmeldung! Ich habe die Formulierung leicht aktualisiert und bin anders vorgegangen. Meiner Ansicht nach ist die Weitergabe von Beschränkungen eine Technik, um sich etwas anzunähern, aber noch kein Algorithmus, der beschreibt, wie man schrittweise zu der in der Weitergabe von Beschränkungen beschriebenen Lösung kommt. Sie haben natürlich Recht mit den Klassen von expspace und 'schlechter', ich habe auch einen Hinweis dazu hinzugefügt. Übrigens: Bitte schreiben Sie NP-Complete und / oder NP-Hard vollständig, da die Teilmenge von NP auch "effizient" lösbare Probleme enthält, die nicht (vermutlich) dieselbe Klasse sind.
Joost

Natürlich hast du recht, ich hätte NP-Complete schreiben sollen. Mein Fehler.
Kriss

Es ist viel besser als das, was einer meiner Kollegen es nennt: NP-Ness (was einfach schrecklich und irgendwie eklig klingt ...)
Joost

6

Eigentlich glaube ich nicht, dass sie viel gemeinsam haben. Einige Algorithmen verwenden Heuristiken in ihrer Logik (häufig, um weniger Berechnungen durchzuführen oder schnellere Ergebnisse zu erzielen). Normalerweise werden Heuristiken in den sogenannten gierigen Algorithmen verwendet.

Heuristik ist ein "Wissen", von dem wir annehmen, dass es gut zu verwenden ist, um die beste Wahl in unserem Algorithmus zu treffen (wenn eine Wahl getroffen werden sollte). Zum Beispiel ... könnte eine Heuristik im Schach sein (nimm immer die Königin des Gegners, wenn du kannst, da du weißt, dass dies die stärkere Figur ist). Heuristiken garantieren Ihnen nicht, dass Sie zur richtigen Antwort gelangen, aber (wenn die Annahmen richtig sind) erhalten Sie häufig Antworten, die in viel kürzerer Zeit den besten nahe kommen.


4

Heuristiken sind Algorithmen, daher gibt es in diesem Sinne keine. Heuristiken verfolgen jedoch einen "Vermutungs" -Ansatz zur Problemlösung, der eine "gut genug" Antwort liefert, anstatt eine "bestmögliche" Lösung zu finden.

Ein gutes Beispiel ist, wenn Sie ein sehr schwieriges Problem haben (NP-vollständig lesen), für das Sie eine Lösung suchen, aber nicht die Zeit haben, es zu finden. Sie müssen daher eine ausreichend gute Lösung verwenden, die auf einem heuristischen Algorithmus basiert, wie z Finden einer Lösung für ein Problem mit Handlungsreisenden mithilfe eines genetischen Algorithmus.


4

Der Algorithmus ist eine Folge einiger Operationen, die bei einer Eingabe etwas (eine Funktion) berechnen und ein Ergebnis ausgeben.

Der Algorithmus kann genaue oder ungefähre Werte liefern.

Es kann auch einen Zufallswert berechnen, der mit hoher Wahrscheinlichkeit nahe am exakten Wert liegt.

Ein heuristischer Algorithmus verwendet einige Erkenntnisse zu Eingabewerten und berechnet keinen exakten Wert (kann jedoch nahezu optimal sein). In einigen speziellen Fällen kann die Heuristik eine genaue Lösung finden.


3

Ein Algorithmus ist ein klar definierter Satz von Anweisungen zur Lösung eines Problems. Bei der Heuristik wird ein Lern- und Entdeckungsansatz verwendet, um eine Lösung zu finden.

Wenn Sie also wissen, wie man ein Problem löst, verwenden Sie einen Algorithmus. Wenn Sie eine Lösung entwickeln müssen, dann sind es Heuristiken.


2

Eine Heuristik ist normalerweise eine Optimierung oder eine Strategie, die normalerweise eine ausreichend gute Antwort liefert, aber nicht immer und selten die beste Antwort. Wenn Sie beispielsweise das Problem des Handlungsreisenden mit brutaler Gewalt lösen möchten, ist es eine Heuristik, eine Teillösung zu verwerfen, sobald ihre Kosten die der derzeit besten Lösung übersteigen: Manchmal hilft es, manchmal nicht, und definitiv nicht. t Verbesserung der theoretischen Laufzeit (Big-Oh-Notation) des Algorithmus


2

Ich denke, Heuristik ist eher eine Einschränkung, die im lernbasierten Modell in Artificial Intelligent verwendet wird, da die zukünftigen Lösungszustände schwer vorherzusagen sind.

Aber dann bezweifle ich nach dem Lesen der obigen Antworten: "Wie kann Heuristik mit stochastischen Optimierungstechniken erfolgreich angewendet werden? Oder können sie bei Verwendung mit stochastischer Optimierung als vollwertige Algorithmen fungieren?"

http://en.wikipedia.org/wiki/Stochastic_optimization


Hoppla!! Rechtschreibfehler sollte es "Künstliche Intelligenz" sein
A_tanA

2

Eine der besten Erklärungen, die ich gelesen habe, stammt aus dem großartigen Buch Code Complete , das ich jetzt zitiere:

Eine Heuristik ist eine Technik, mit der Sie nach einer Antwort suchen können. Die Ergebnisse sind zufällig, da eine Heuristik nur angibt, wie Sie suchen und nicht, was Sie finden müssen. Es sagt Ihnen nicht, wie Sie direkt von Punkt A nach Punkt B gelangen. es könnte nicht einmal wissen, wo Punkt A und Punkt B sind. Tatsächlich ist eine Heuristik ein Algorithmus in einem Clownanzug. Es ist weniger vorhersehbar, macht mehr Spaß und es gibt keine 30-tägige Geld-zurück-Garantie.

Hier ist ein Algorithmus für die Fahrt zu einem Haus: Nehmen Sie den Highway 167 nach Süden nach Puy-allup. Nehmen Sie die Ausfahrt South Hill Mall und fahren Sie 7 km den Hügel hinauf. Biegen Sie an der Ampel beim Lebensmittelgeschäft rechts ab und nehmen Sie die erste Straße links. Biegen Sie links in die Einfahrt des großen hellbraunen Hauses bei 714 North Cedar ein.

Hier ist eine Heuristik, um zu jemandem nach Hause zu kommen: Finden Sie den letzten Brief, den wir Ihnen geschickt haben. Fahren Sie in die Stadt in der Absenderadresse. Wenn Sie in die Stadt kommen, fragen Sie jemanden, wo unser Haus ist. Jeder kennt uns - jemand hilft Ihnen gerne weiter. Wenn Sie niemanden finden können, rufen Sie uns über ein öffentliches Telefon an, und wir holen Sie ab.

Der Unterschied zwischen einem Algorithmus und einer Heuristik ist subtil, und die beiden Begriffe überlappen sich etwas. Für die Zwecke dieses Buches besteht der Hauptunterschied zwischen beiden in der Indirektionsebene von der Lösung. Ein Algorithmus gibt Ihnen die Anweisungen direkt. Eine Heuristik zeigt Ihnen, wie Sie die Anweisungen für sich selbst finden oder zumindest wo Sie danach suchen müssen.


Die Aussage, dass es einen Unterschied zwischen einem Algorithmus und einer Heuristik gibt, ist wie die Aussage, dass es einen Unterschied zwischen einem Vogel und einem Huhn gibt. Heuristiken sind eine Art Algorithmus.
Joost

0

Sie finden eine Lösung suboptimal ohne Garantie für die Qualität der gefundenen Lösung. Es ist offensichtlich, dass es für die Entwicklung von Heuristiken nur Polynome sinnvoll macht. Die Anwendung dieser Methoden ist geeignet, um Probleme der realen Welt oder große Probleme zu lösen, die aus rechnerischer Sicht so umständlich sind, dass es für sie nicht einmal einen Algorithmus gibt, der in der Lage ist, eine ungefähre Lösung in Polynomzeit zu finden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.