In Lance Fortnows Buch The Golden Ticket erwähnt er, dass Sie einen Polynom-Zeit-Algorithmus für ein NP-vollständiges Problem verwenden können, um einen schnelleren Algorithmus zu finden. Können Sie mir sagen, wie das gemacht wird? Und wenn dies erledigt ist, können Sie den neuen Algorithmus verwenden, um eine noch schnellere ad infinitum bis zu einem festen Punkt zu entdecken . Unten ist das genaue Zitat aus dem Buch:
"Also, was fragst du einen Geist, der dir nur einen Wunsch erfüllt?" sagte der Berater.
"Ich habe keine Ahnung", antwortete Steve.
"Sie fragen nach einem Geist, der alle Ihre Wünsche erfüllt."
Die sprichwörtliche Glühbirne ging in Steves Kopf aus. Er wusste, dass es irgendwo einen besseren Algorithmus geben musste, um Cliquenprobleme zu lösen, aber er konnte es nicht alleine herausfinden. Aber er hatte den Geist, den Tsinghua-Code, der schnell nach einer exponentiellen Anzahl von Möglichkeiten suchen konnte. Also schrieb er ein Programm, das die Tsinghua-Routinen verwendete, um nach einem besseren Algorithmus für NP-Probleme zu suchen. Er erhielt die Erlaubnis, die Computerressourcen des Nationalen Zentrums für Supercomputing-Anwendungen (NCSA) an der Universität von Illinois zu nutzen. Nach wochenlanger Verarbeitungszeit zahlte sich seine Arbeit ein wenig aus und fand einen neuen Algorithmus, der eine 5-prozentige Verbesserung gegenüber dem Tsinghua-Code aufwies - gut genug für eine Forschungsarbeit, aber nicht genug, um eine echte Wirkung zu erzielen.
Sein Berater sagte einfach: "Versuchen Sie es erneut mit dem neuen Code."
Also benutzte Steve seinen neuen Code, um einen noch schnelleren Algorithmus für NP-Probleme zu finden. Einige Wochen später hatte er eine 20-prozentige Verbesserung.
Aber sein Berater war nicht beeindruckt. "Versuche es noch einmal."
Steve antwortete: "Warum richte ich den Computer nicht einfach so ein, dass er es automatisch mit dem neuen Code versucht, den er findet?"
Der Berater warf diesen Blick zu, der einem Schüler sagte, er habe Erleuchtung erlangt oder zumindest das Offensichtliche erkannt.
Steve kehrte in sein Büro zurück und begann mit dem kniffligen Prozess des Schreibens von Code, der nach schnellerem Code sucht. Anschließend verwendete er diesen schnelleren Code, um noch schnelleren Code zu finden und diesen Prozess fortzusetzen, bis keine weitere Verbesserung mehr festgestellt werden konnte.
Konzentrieren Sie sich jetzt auf SAT. MiniSAT ist ein schneller SAT-Löser, allerdings nicht bis zur Polynomzeit.
Wie kann man mit MiniSAT einen neuen SAT-Solver mechanisch entdecken?