Referenz für Levins optimalen Faktorisierungsalgorithmus?

13

In Manuel Blums " Rat an einen angehenden Doktoranden ":

LEONID LEVIN glaubt, dass ich das tue, unabhängig von der Antwort auf den P = NP? Problem, es wird nicht so sein, wie Sie denken, es sollte sein. Und er hat einige wunderbare Beispiele gegeben. Zum einen hat er einen FAKTORIERENDEN ALGORITHMUS angegeben, der bis zu einer multiplikativen Konstante nachweislich optimal ist. Er beweist, dass jeder Algorithmus für FACTORING exponentiell ist, wenn sein Algorithmus exponentiell ist. Wenn ein Algorithmus zum Faktorisieren Polyzeit ist, dann ist sein Algorithmus Polyzeit. Die Laufzeit seines Algorithmus konnte jedoch nicht ermittelt werden, da die Laufzeit im eigentlichen Sinne nicht analysierbar ist.

Levins Publikationsseite gibt 404 zurück, DBLP zeigt nichts im Zusammenhang mit Factoring, und eine Suche nach "Leonid Levin Factoring" bei Google Scholar liefert nichts von Interesse, das ich finden konnte. AFAIK, das generalisierte Sieb, ist der schnellste bekannte Algorithmus für Factoring. Worüber spricht Manuel Blum? Kann mich jemand mit einem Artikel verlinken?

Christopher Monsanto
quelle

Antworten:

11

Manuel Blum spricht über die Anwendung von Levins universellem Suchalgorithmus auf das Problem der Ganzzahlfaktorisierung. Die Idee von Levin Universal - Suchalgorithmus ist in gleicher Weise anwendbar auf jedes Problem in .NP

Hier ist ein Zitat aus den Vorlesungsnotizen von Blum zu SECURITY und CRYPTOGRAPHY:

Leonid LEVINS OPTIMALER NUMBER-SPLITTING (FACTORING) -ALGORITHMUS. Es sei SPLIT ein beliebiger Algorithmus, der INPUT berechnet: eine positive zusammengesetzte (dh keine Primzahl) ganze Zahl n. OUTPUT: ein nichttrivialer Faktor von n.

THEOREM: Es gibt einen "optimalen" Algorithmus zur Aufteilung von Zahlen, den wir OPTIMAL-SPLIT nennen. Dieser Algorithmus ist in dem Sinne OPTIMAL: Für jeden Algorithmus zur Aufteilung von Zahlen SPLIT gibt es eine (ziemlich große, aber feste) Konstante C, so dass für jede positive zusammengesetzte Ganzzahleingabe n die "Laufzeit" von OPTIMAL-SPLIT für Eingabe n ist höchstens C-mal die Laufzeit von SPLIT am Eingang n.

Hier ist der optimale Faktorisierungsalgorithmus für Levin :

Der OPTIMAL-SPLIT-ALGORITHMUS: BEGIN Zählen Sie alle Algorithmen in der Reihenfolge ihrer Größe lexikographisch in jeder Größe auf. Führen Sie alle Algorithmen aus, sodass der i-te Algorithmus zu jedem Zeitpunkt t einen Bruchteil der auszuführenden Zeit erhält. Wenn ein Algorithmus mit einer Ausgabe-Ganzzahl m im Bereich 1 <m <n anhält, prüfen Sie, ob m n dividiert (dh ob n mod m = 0 ist). Wenn ja, geben Sie m zurück. ENDE

Mohammad Al-Turkistany
quelle
Kann jemand erklären, warum der Bruch 1 / (2 ^ i) sein muss, aber nicht etwas Einfacheres wie 1 / i?
Netvope
1
@netvope: Die unendliche Summe von 1 / i läuft auseinander. Sie können es vielleicht mit 1 / i ^ 2 machen, aber 1/2 ^ i ist viel einfacher.
Antimon
3

NPcÖNP

Bei einer gegebenen Zahl wollen wir N faktorisieren.

Ist N Primzahl? Wenn ja, gib 'PRIME' aus, sonst:

ich=1 ...

P=1 ...ich

Führen Sie Programm P für i Schritte mit Eingabe N aus

L1M1N=LM(L,M)

Artem Kaznatcheev
quelle
4
Sie können keinen bekannten Primalitätstest verwenden, da nicht bekannt ist, dass er schneller ist als das optimale Factoring. Ansonsten verstehe ich keinen Punkt. Um zu beweisen, dass dies optimal ist, um einen konstanten Faktor zu berücksichtigen, müssen wir meines Erachtens beweisen, dass die Multiplikation im letzten Schritt nicht der dominierende Term in der zeitlichen Komplexität ist. Wenn ich mich richtig erinnere, basiert der schnellste bekannte Multiplikationsalgorithmus in der asymptotischen Einstellung auf der FFT und benötigt O (n log n log n) Zeit für n-Bit-Ganzzahlen. Kann nachgewiesen werden, dass das optimale Factoring mindestens so lange dauert?
Tsuyoshi Ito
@ Tsuyoshi: Ich denke, Sie haben Recht, dass dieser Algorithmus nicht optimal ist, wenn die bekannten Multiplikations- / Primalitätstests schwieriger sind als Factoring. Wenn Sie jedoch das obige Zitat von Blum lesen, sagt er nur, dass Levins Algorithmus genau dann polynomisch ist, wenn der optimale Algorithmus vorliegt, was dieses Problem verfeinert. Zwei weitere Dinge: (1) Wie könnten Sie vermeiden, einen bekannten Primalitätstest in diesem Algorithmus zu verwenden? (2) Ich denke, dieser Algorithmus ist nicht richtig formuliert, da die Laufzeit nicht richtig auf die verschiedenen Programme aufgeteilt ist. Siehe die Antwort von Al-Turkistany für die richtige Formulierung.
Peter Shor
@ Peter: Nun, in Blums Zitat heißt es: "Er [Levin] hat einen FAKTORIERENDEN ALGORITHMUS angegeben, der nachweislich bis zu einer multiplikativen Konstante optimal ist." ist schwer zu glauben, wie es ist.
Tsuyoshi Ito
@ Tsuyoshi: Ich verstehe, ich habe das falsche Blum-Zitat gelesen.
Peter Shor