Um die NP-Härte eines Problems zu zeigen, muss man ein bekanntes NP-hartes Problem auswählen und eine Polynomreduktion vom bekannten Problem zu seinem vorliegenden Problem finden. Theoretisch kann jedes NP-harte Problem für die Reduktion verwendet werden, aber in der Praxis lassen sich einige der Probleme leichter reduzieren als andere.
Zum Beispiel ist 3-SAT normalerweise eine bessere Wahl für die Erstellung einer Reduktion als SAT, da das erstere eingeschränkter ist als das letztere. 3-Partitionen sind normalerweise eine einfachere Wahl als das Packen von Behältern, ...
Eine Möglichkeit, solche "guten" Probleme für die Reduzierung zu finden, besteht darin, eine statistische Analyse der vorhandenen Reduktionen durchzuführen. Beispielsweise kann man alle from -> to
Reduktionspaare des Buches Computer und Intraktabilität: Ein Leitfaden zur Theorie der NP-Vollständigkeit
(oder anderer Ressourcen) formen und ein Histogramm der Probleme in der from
Menge zeichnen . Dann können wir herausfinden, welche Probleme häufiger für Reduzierungen verwendet werden.
Ich frage mich, ob eine solche statistische Analyse überhaupt Sinn macht. Wurde eine solche Untersuchung bereits durchgeführt oder nicht? Wenn nicht, wie schätzen Sie die am häufigsten verwendeten Probleme bei Reduzierungen ein?
Der Grund, warum ich diese Frage stelle, ist, dass ich bereits einige Beweise für die NP-Härte gemacht habe, aber fast alle von ihnen basieren auf der Reduzierung des gleichen Problems (3-Partition). Ich suche nach anderen Optionen für meine Proofs.
quelle
Antworten:
Ich weiß nicht, ob es einen maschinellen Weg gibt, dies zu tun, aber meine kleine persönliche Erfahrung funktioniert wie folgt.
Ich versuche, einen Polynomzeitalgorithmus für ein Problem bereitzustellen. Bei diesen Versuchen kann ich normalerweise sehen, dass es einige eingeschränkte Versionen von Problemen gibt, die polynomial zeitlösbar sind. Ich werde auch verstehen, welcher Teil meines Algorithmus für das ursprüngliche Problem von Hand gewinkt hat. Ich kann diese beiden Fälle vergleichen (Unterschied zwischen eingeschränkten Versionen und der allgemeinen auch der Teil eines Algorithmus, der schwer zu verbessern war). Wenn man diese beiden Fälle normalerweise vergleicht, kann man erraten, wie der Problemengpass aussieht. So können wir ein damit verbundenes schwieriges Problem finden. Normalerweise ist die Bereitstellung eines Algorithmus für ein Problem eine schwierige Aufgabe und erfordert gute Kenntnisse über ein Problem. Nachdem wir dieses Wissen über das Problem erhalten haben, können wir viele verschiedene Ideen haben, um das Problem in verschiedenen Szenarien anzugehen (nicht nur die Ergebnisse der Härte).
PS: Wenn sich Ihr Beweis auf ein bestimmtes Problem bezieht, liegt das meiner Meinung nach daran, dass dieses Problem Ihrer Arbeit sehr nahe kommt. Machen Sie sich also keine Vorwürfe.
quelle