it-swarm.com.de

Was ist der Unterschied zwischen einer Heuristik und einem Algorithmus?

Was ist der Unterschied zwischen einer Heuristik und einem Algorithmus?

98
streetparade

Ein Algorithmus ist die Beschreibung eines automatisierte Lösung eines Problems. Was der Algorithmus macht, ist genau definiert. Die Lösung könnte oder könnte nicht die bestmögliche sein, aber Sie wissen von Anfang an, welche Art von Ergebnis Sie erhalten. Sie implementieren den Algorithmus mit einer Programmiersprache, um (einen Teil) eines Programms zu erhalten.

Jetzt sind einige Probleme schwierig und es kann sein, dass Sie nicht in der Lage sind, eine akzeptable Lösung in einer akzeptablen Zeit zu 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 eine heuristische.

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

Typische Beispiele sind aus Spielen. Wenn Sie ein Schachspielprogramm schreiben, können Sie sich vorstellen, jeden möglichen Zug in einer bestimmten Tiefe auszuprobieren 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 bestimmte Einschränkungen erfüllt. Eine gute Heuristik würde helfen, eine Lösung in kurzer Zeit zu finden, kann aber auch fehlschlagen, wenn die einzigen Lösungen in den Staaten liegen, die sie nicht ausprobiert hat.

94
kriss
  • Ein Algorithmus ist in der Regel deterministisch und liefert nachweislich ein optimales Ergebnis
  • Eine Heuristik hat keinen Beweis für die Richtigkeit, enthält häufig zufällige Elemente und liefert möglicherweise keine optimalen Ergebnisse.

Viele Probleme, für die kein effizienter Algorithmus zum Finden einer optimalen Lösung bekannt ist, haben heuristische Ansätze, die sehr schnell nahezu optimale Ergebnisse liefern.

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

32

Heuristisch, auf den Punkt gebracht, ist eine "fundierte Vermutung". Wikipedia erklärt es schön. Am Ende wird eine "General Acceptance" -Methode als optimale Lösung für das angegebene Problem herangezogen.

Heuristik ist ein Adjektiv für erfahrungsbasierte Techniken, die beim Lösen, Lernen und Erkennen von Problemen helfen. Eine heuristische Methode wird verwendet, um schnell zu einer Lösung zu gelangen, die der bestmöglichen Antwort oder der „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, die leicht zugängliche, wenn auch nur schwer anwendbare Informationen verwenden, um die Problemlösung bei Menschen und Maschinen zu steuern.

Ein Algorithmus ist eine Methode, die endliche Anweisungen zur Lösung eines Problems enthält. Die Methode hat sich mathematisch oder wissenschaftlich bewährt. Es gibt formale Methoden und Beweise.

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

22
Buhake Sindi

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). In der Regel werden Heuristiken in sogenannten Greedy-Algorithmen verwendet.

Heuristik ist ein gewisses "Wissen", von dem wir annehmen, dass es gut ist, es zu verwenden, um die beste Wahl in unserem Algorithmus zu treffen (wann 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 führen, aber (wenn die Annahmen korrekt sind) erhalten Sie häufig eine Antwort, die in viel kürzerer Zeit nahe an der besten liegt.

6
anthares

Ein Algorithmus ist eine in sich geschlossene, schrittweise auszuführende Gruppe von Operationen 4 , die typischerweise als endlich interpretiert wird Abfolge von (Computer- oder menschlichen) Anweisungen, um eine Lösung für ein Problem zu finden, z. B .: Gibt es einen Pfad von A nach B oder den kleinsten Pfad zwischen A und B. In letzterem Fall könnten Sie auch mit a zufrieden sein "ziemlich nahe" alternative Lösung.

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

  • Gena: Die Lösung hat sich als optimale (oder genaue Lösung) erwiesen das Eingabeproblem
  • Approximation: Es ist erwiesen, dass die Abweichung des Lösungswerts nie weiter vom optimalen Wert entfernt ist als eine vordefinierte Grenze (zum Beispiel niemals mehr als 50% größer als der optimale Wert)
  • Heuristic: Der Algorithmus hat sich weder als optimal erwiesen, noch innerhalb einer vordefinierten Grenze der optimalen Lösung

Beachten Sie, dass ein Approximationsalgorithmus auch 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 nie jemand einen "effizienten" Algorithmus gefunden, um die optimalen Lösungen zu berechnen (Anmerkung 2). Eines dieser Probleme ist das bekannte Problem des Handlungsreisenden. Christophides 'Algorithmus für das Problem des Handlungsreisenden wurde beispielsweise als heuristisch bezeichnet, da nicht nachgewiesen wurde, dass er innerhalb von 50% der optimalen Lösung lag. Christophides 'Algorithmus wird jedoch, wie nachgewiesen, genauer als Approximationsalgorithmus bezeichnet.

Aufgrund von Einschränkungen der Computerfunktionen ist es nicht immer möglich, effizient die beste Lösung zu finden. Wenn in einem Problem genügend Struktur vorhanden ist, kann es einen effizienten Weg geben, den Lösungsraum zu durchlaufen, obwohl der Lösungsraum riesig ist (d. H. In dem Problem mit dem kürzesten Weg).

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 Subroutine für einen optimalen Algorithmus sein, um zu bestimmen, wo gesucht werden soll first.

(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 abläuft und die gleiche Antwort liefert, heißt deterministisch.

(Anmerkung 2) : Dies wird das P vs NP Problem und Probleme, die als NP-vollständig klassifiziert sind, genannt und NP-hard haben wahrscheinlich keinen "effizienten" Algorithmus. Hinweis: Wie @Kriss in den Kommentaren erwähnte, gibt es noch "schlimmere" Arten von Problemen, für deren Berechnung möglicherweise exponentielle Zeit oder Raum benötigt wird.

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

6
Joost

Der Algorithmus ist eine Folge einiger Operationen, bei denen eine Eingabe etwas (eine Funktion) berechnet und ein Ergebnis ausgibt.

Der Algorithmus kann genaue oder ungefähre Werte liefern.

Es kann auch ein Zufallswert berechnet werden, der mit hoher Wahrscheinlichkeit nahe an dem genauen Wert liegt.

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

4
Slava

Heuristiken sind Algorithmen. In diesem Sinne gibt es keine. Heuristiken gehen jedoch beim Lösen von Problemen von einer Vermutung aus und liefern eine ausreichend gute Antwort, anstatt eine bestmögliche Lösung zu finden.

Ein gutes Beispiel ist, wenn Sie ein sehr schweres (Lese-NP-vollständiges) Problem haben, für das Sie eine Lösung suchen, aber nicht die Zeit haben, um es zu lösen. Verwenden Sie daher eine ausreichend gute Lösung, die auf einem heuristischen Algorithmus basiert, wie z Finden einer Lösung für ein Problem mit Handlungsreisenden unter Verwendung eines genetischen Algorithmus.

4
dsm

Ein Algorithmus ist ein klar definierter Befehlssatz zur Lösung eines Problems. Heuristiken umfassen die Verwendung eines Lern- und Entdeckungsansatzes, um eine Lösung zu finden.

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

3
Lazarus

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 brachialer Gewalt lösen, ist es heuristisch, eine Teillösung zu verwerfen, sobald ihre Kosten die der derzeit besten Lösung überschreiten: Manchmal hilft sie, manchmal nicht, und definitiv nicht. t Verbessern Sie die theoretische Laufzeit (Big-Oh-Notation) des Algorithmus

2
IVlad

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 dem Zufall unterworfen, da eine Heuristik Ihnen nur sagt, wie Sie aussehen sollen, nicht, was Sie finden sollen. Sie erfahren nicht, wie Sie direkt von Punkt A nach Punkt B gelangen. Möglicherweise weiß es nicht einmal, wo Punkt A und Punkt B liegen. Tatsächlich ist eine Heuristik ein Algorithmus in einer Clownsklage. Es ist weniger vorhersehbar, macht mehr Spaß und kommt ohne eine 30-tägige Geld-zurück-Garantie aus.

Hier ist ein Algorithmus, mit dem Sie zu einem Haus fahren können: Nehmen Sie den Highway 167 nach Süden bis Puy-allup. Nehmen Sie die Ausfahrt South Hill Mall und fahren Sie 7 km bergauf. Biegen Sie an der Ampel beim Lebensmittelgeschäft rechts ab und nehmen Sie die erste Straße links. Biegen Sie links in die Auffahrt des großen Bräunungshauses ein (714 North Cedar).

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 Rücksendeadresse. 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. Wir holen Sie dann ab.

Der Unterschied zwischen einem Algorithmus und einer Heuristik ist subtil und die beiden Begriffe überschneiden sich etwas. Für die Zwecke dieses Buches ist der Hauptunterschied zwischen den beiden die Indirektionsebene von der Lösung. Ein Algorithmus gibt Ihnen die Anweisungen direkt. In einer Heuristik erfahren Sie, wie Sie die Anweisungen für sich selbst finden oder wo Sie sie zumindest suchen können.

2
Edwin Dalorzo

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.

Nachdem ich die obigen Antworten gelesen habe, bezweifle ich jedoch, dass "Wie würde Heuristik mit stochastischen Optimierungstechniken erfolgreich angewendet werden können? Oder können sie bei Verwendung mit stochastischer Optimierung als vollwertige Algorithmen funktionieren?"

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

2
A_tanA

Sie finden eine Lösung suboptimal, ohne Gewähr für die Qualität der gefundenen Lösung, es ist offensichtlich, dass es für die Entwicklung von Heuristiken nur polynomiell sinnvoll ist. 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.

0
kafka