Was ist der Unterschied zwischen einer Heuristik und einem Algorithmus?
algorithm
definition
heuristics
nomenclature
Straßenparade
quelle
quelle
Antworten:
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.
quelle
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.
quelle
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.
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.
quelle
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):
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
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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
quelle
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
quelle
Eine der besten Erklärungen, die ich gelesen habe, stammt aus dem großartigen Buch Code Complete , das ich jetzt zitiere:
quelle
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.
quelle