Unterschied zwischen heuristischem und Approximationsalgorithmus?

9

Ich habe ein Problem in Bezug auf die folgende Situation.

Ich habe zwei Reihen von Zahlen wie diese:

index/pos     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15 
Array 1(i):   1   2   3   4   7   5   4   3   7   6   5   1   2   3   4   2
Array 2(j):   4   4   8  10  10   7   7  10  10  11   7   4   7   7   4

Angenommen, das zweite Array ist sehr schwer zu berechnen, aber ich habe das bemerkt, wenn ich es hinzufüge

A [i] + A [i + 1]

im Array 1 bekomme ich die Zahl sehr nahe an die Zahl A [j] im Array 2.

  1. Ist meine Lösung eine Heuristik oder eine Annäherung?

  2. Wenn ich Grund zu der Annahme hätte, dass ich mit diesem Algorithmus den Wert von A [j] niemals um + -x überschreiten werde und dies beweisen kann, wäre meine Lösung dann eine Heuristik oder eine Annäherung?

Gibt es Literatur, die sich mit heuristischen oder Approximationsfragen für P-Klassen-Probleme befasst, bei denen die Lösung in Polynomzeit erreicht werden kann, die Eingabe jedoch einfach zu groß ist, als dass ein Polyzeitalgorithmus praktikabel wäre?

Vielen Dank

user6697
quelle
Sie müssen zunächst definieren, was Sie approximieren möchten, um beurteilen zu können, ob Ihr Ansatz eine Approximation ist.
Dan
Was genau ist das Optimierungsproblem, das Sie lösen möchten? Sobald dies bekannt ist, wird Ihre Heuristik zu einer Annäherung, wenn Sie Grenzen beweisen. Darüber hinaus sind die einzigen (klassischen, dh Nicht-Streaming-) Probleme in P, die Approximationsalgorithmen haben (von denen ich weiß), Max-Flow-Algorithmen.
Nicholas Mancuso
ok, also das, was ich berechnen möchte, sind die Zahlen innerhalb des zweiten Arrays. Dies dauert jedoch zu lange. Ich habe jedoch herausgefunden, dass wenn ich zwei aufeinanderfolgende Werte von Array 1 addiere, etwas in Ordnung ist und ich beweisen kann, dass die Schätzung immer innerhalb von + -x liegt. Anfangsalg für die Berechnung von A [j] ist O (n ^ 100)
user6697
Ich verstehe, dass Sie die Zahlen im zweiten Array berechnen möchten, aber wie lautet die Formulierung für das Optimierungsproblem? Wenn X Y unter den Bedingungen von Z berechnet, hilft es nicht, wenn Sie sagen, dass Sie eine beliebige Funktion berechnen möchten.
Nicholas Mancuso
Ihre Lösung ist ein perfektes Beispiel für eine Heuristik!
Björn Lindqvist

Antworten:

11

Eine Heuristik ist im Wesentlichen eine Vermutung, dh der von Ihnen beschriebene Fall ("Ich habe bemerkt, dass er nahe ist", Sie haben keinen Beweis dafür , dass dies der Fall ist) ist eine Heuristik. Ebenso wie das Lösen des Problems des Handlungsreisenden, indem Sie an einem zufälligen Scheitelpunkt beginnen und zum nächsten gehen, der noch nicht bei jedem Schritt besucht wurde. Es ist eine plausible Idee, die keine allzu schlechte Lösung geben sollte. In diesem Fall kann gezeigt werden, dass es nicht immer eine gute Lösung gibt.

Unter einem Näherungsalgorithmus wird normalerweise eine ungefähre Lösung mit einer Art Leistungsgarantie verstanden (dh er löst TSP, und die Gesamtkosten werden nie um mehr als den Faktor 2 gesenkt, oder noch besser, er löst TSP und Abhängig von <einigen Parametern, die variiert werden können> ist die Lösung niemals um mehr als den Faktor schlechter als optimal , wobei von <Parametern> abhängt.ϵ1+ϵϵ

vonbrand
quelle
1
Sie haben eine schlechte Stichprobe verwendet, TSP ist schwer zu approximieren, daher gibt es kein PTAS für TSP. Es gibt auch keine 2-Approximation für TSP. Es ist leicht zu zeigen, ob es eine Polynomzeit gibt. 2-Approximation für TSP. Es gibt einen Polynomzeitalgorithmus zur Lösung des Hamilton-Zyklus-Problems Ich denke, Sie meinen metrischen TSP, was ein Sonderfall ist, aber in diesem Fall gibt es immer noch kein PTAS (und es ist erwiesen, dass es unmöglich ist, PTAS außer P = NP zu haben). Ich würde vorschlagen, eine Müllverpackung zu wählen, um darüber zu sprechen. (oder irgendein anderes einfacheres Problem).
@SaeedAmiri, es war nur zu Illustrationszwecken. Vielleicht nicht das beste Beispiel (wie Sie sagen), aber das Problem ist leicht zu verstehen. Danke für den Kommentar.
vonbrand
Wenn Sie also verstehen, dass dies ein falsches Beispiel ist, warum beheben Sie es nicht?
P=NP
P=NPPNP
6

Sie können diese sehr interessante Antwort über Heuristik in Wikipedia sehen:

"Eine Heuristik ist eine Technik, mit der ein Problem schneller gelöst werden kann, wenn klassische Methoden zu langsam sind. Das Ziel einer Heuristik besteht darin, schnell genug eine Lösung zu erstellen, die gut genug ist, um das vorliegende Problem zu lösen."

Die Heuristik könnte aus theoretischen oder experimentellen Erfahrungen stammen, aber Approximationsalgorithmen haben eine solide theoretische Grundlage (nachweisbare Lösung).

Reza
quelle
4

P=NPP

Juho
quelle