Betrachten Sie die folgende algorithmische Aufgabe:
Eingabe: eine positive ganze Zahl zusammen mit ihrer Primfaktorisierung.
Finden: positive ganze Zahlen , die minimieren , vorbehaltlich der Einschränkung, dassx , y , z x y + y z + x z x y z = n
Wie komplex ist dieses Problem? Gibt es einen Polynom-Zeit-Algorithmus? Ist es NP-schwer?
Grundsätzlich stellt sich das Problem: Von allen rechteckigen Körpern, deren Volumen und deren Dimensionen alle ganze Zahlen sind, welche hat die geringste Oberfläche?
Dieses Problem wurde von Dan Meyer unter dem Titel Das Mathematikproblem, das 1.000 Mathematiklehrer nicht lösen konnten, gestellt . Bisher hat keiner der Mathematiklehrer, mit denen er zusammengearbeitet hat, einen sinnvollen Algorithmus für dieses Problem gefunden. In seinem Kontext ist die Definition von "vernünftig" etwas ungenau, aber als Informatiker können wir eine genauere Frage zur Komplexität dieses Problems stellen.
Der naheliegende Ansatz besteht darin, alle Möglichkeiten für , dies benötigt jedoch exponentielle Zeit. Kommentatoren auf Dan Meyers Blog haben viele effiziente Kandidatenalgorithmen vorgeschlagen, die sich leider alle als falsch erwiesen haben. Martin Strauss schlägt vor, dass dieses Problem vage an 3-Partitionen erinnert , aber ich sehe keine Reduktion.
Lassen Sie mich auch einige Missverständnisse aufklären, die ich in den Kommentaren / Antworten gesehen habe:
Sie können die Anzahl der Partitionen von 3 nicht reduzieren, indem Sie einfach jede Zahl durch ihre Potenz ersetzen , da die Zielfunktionen der beiden Probleme unterschiedlich sind. Die offensichtliche Reduzierung funktioniert einfach nicht.
Es ist nicht wahr, dass die optimale Lösung darin besteht, eines von , um der nächste Teiler von zu . Ich sehe mehrere Leute, die davon ausgehen, dass dies der Fall ist, aber tatsächlich ist das nicht richtig. Dies wurde bereits im Dan Meyer-Blogpost widerlegt. Betrachten Sie zum Beispiel ; , und 4 teilt 68, so dass Sie vielleicht denken, dass mindestens eines von 4 sein sollte; das ist jedoch nicht richtig. Die optimale Lösung ist , , . Ein anderes Gegenbeispiel ist , , aber die optimale Lösung istn 3 √ n=683 √x,y,zx=2y=2z=17n=2223 √x=37 , , . (Es kann sein, dass für alle die optimale Lösung darin besteht, mindestens einen von gleich dem kleinsten Teiler von größer als oder dem größten Teiler vonz = 2x , y , z n 3 √ kleiner zu machen als - Ich habe derzeit kein Gegenbeispiel - aber wenn Sie der Meinung sind, dass diese Aussage wahr ist, müsste sie bewiesen werden. Sie können absolut nicht davon ausgehen, dass es wahr ist.)
" gleich groß machen" scheint nicht in allen Fällen die optimale Antwort zu liefern; Siehe Dan Meyers Blogpost für Gegenbeispiele. Oder zumindest für einige vernünftige Interpretationen des Ausdrucks "ungefähr gleich groß machen" gibt es Gegenbeispiele, die zeigen, dass diese Strategie tatsächlich nicht optimal ist. Wenn Sie eine Strategie dieser Art ausprobieren möchten, stellen Sie sicher, dass Sie die Behauptung genau angeben, und legen Sie dann einen sorgfältigen mathematischen Beweis vor.
Eine Laufzeit von ist kein Polynom. Damit dieses Problem in P auftritt, muss die Laufzeit in der Länge der Eingabe ein Polynom sein . Die Länge der Eingabe ist ungefähr lg n , nicht n . Der offensichtliche Brute-Force-Algorithmus kann in O ( n 3 ) oder O ( n 2 ) ausgeführt werden, aber das ist in lg n exponentiell und zählt daher als Exponentialzeit-Algorithmus. Das ist also nicht hilfreich.