Das Addieren von ganzen Zahlen, die durch ihre Faktorisierung dargestellt werden, ist genauso schwierig wie das Faktorisieren? Referenzanfrage

22

Ich suche eine Referenz für das folgende Ergebnis:

Das Hinzufügen von zwei Ganzzahlen in der faktorisierten Darstellung ist so schwierig wie das Faktorieren von zwei Ganzzahlen in der üblichen binären Darstellung.

(Ich bin mir ziemlich sicher, dass es da draußen ist, weil ich mich das irgendwann gefragt hatte und dann aufgeregt war, als ich es endlich in gedruckter Form sah.)

"Addieren von zwei Ganzzahlen in die faktorisierte Darstellung" ist das Problem: Ausgehend von den Primfaktoren zweier Zahlen und wird die Primfaktorisierung von ausgegeben . Beachten Sie, dass der naive Algorithmus für dieses Problem die Faktorisierung in der binären Standarddarstellung als Unterroutine verwendet.y x + yxyx+y

Update : Danke Kaveh und Sadeq für die Beweise. Je mehr Beweise, desto besser, aber ich möchte auch dazu ermutigen, mehr Hilfe bei der Suche nach einer Referenz zu leisten, von der ich , wie gesagt, ziemlich sicher bin, dass sie existiert. Ich erinnere mich, es in einem Artikel gelesen zu haben, der andere interessante und nicht oft diskutierte Ideen enthielt, aber ich erinnere mich nicht, was diese anderen Ideen waren oder worum es in dem Artikel im Allgemeinen ging.

Joshua Grochow
quelle
6
Ich denke, ein besserer Titel wird sein: "Ist die Faktorisierung der Summe zweier durch ihre Faktorisierung dargestellter Ganzzahlen genauso schwierig wie die Faktorisierung?"
MS Dousti
1
Gute Frage. Wenn wir eine bestimmte Ganzzahl als Summe von zwei einfach zu faktorierenden Ganzzahlen schreiben können, folgt, was Sie wollen. Es ist einfach, wenn wir Nummern wollten , aber ich verstehe nicht einmal, wie es mit Nummern gemacht wird. Es lohnt sich vielleicht, sich die Zahlenklassen anzusehen, die leicht zu faktorisieren sind. log log nlognloglogn
Kaveh
1
einige verwandte Fragen zu MO und Math.SE: 1 , 2 , 3
Kaveh

Antworten:

15

Angenommen, wir können das Problem in der Komplexitätsklasse lösen (nennen wir es FactSum), und ist unter -iteration (aka -bounded recursion) geschlossen (z. B. wenn wir berechnen können, wobei eine binäre Funktion ist, wir können berechnen und enthalten (diese letzte Bedingung kann schwächer gemacht werden). Wir zeigen, dass Factoring auch in .C log log x y x 1x log n P CCCloglogxyx1xlognPC

Beachten Sie, dass jede Zahl als Summe von geschrieben werden Potenzen von . Jeder von ihnen ist leicht zu faktorisieren.2logn2

Geben Sie nun eine Zahl ein, schreiben Sie sie als die Summe ihrer Potenzen, schreiben Sie dann jeden Summanden in die Faktorisierungsdarstellung und verwenden Sie dann den Algorithmus, um sie in der Faktorisierungsdarstellung zu summieren. Das Ergebnis ist das Faktorisieren der eingegebenen Nummer.

Dies zeigt, dass Factoring auf die Ihres Problems FactSum reduziert werden kann. Daher ist Factoring in (und ich denke, dass hier durch werden kann).P FactSum P N C 1logPFactSumPNC1

Kaveh
quelle
10

Mir ist kein Hinweis bekannt, aber ich glaube, ich habe einen Beweis gefunden:

Angenommen, Sie haben ein Orakel , bei dessen Eingabe zwei faktorisierte Zahlen eingegeben werdenO

x=i=1npiαi

und

y=i=1mqiβi,

gibt die Faktorisierung von .x+y

Wenn wir Zugriff auf , können wir mit der folgenden rekursiven Prozedur eine beliebige Zahl N in der Polynomzeit faktorisieren.ON

VERFAHREN Faktor ( )N

  1. Finden Sie eine prime , so daß N / 2 x N - 1 , und sei y = N - x .xN/2xN1y=Nx
  2. Wenn keine Primzahl ist, erhalten Sie die Faktorisierung von y durch den rekursiven Aufruffaktor ( y ) und geben Sie O ( x , f a c t o r ( y ) ) aus .yyyO(x,factor(y))
  3. Andernfalls wird ausgegeben .O(x,y)

Analyse:

Nach dem Primzahlsatz für groß genug gibt es viele Primzahlen zwischen N / 2 und N - 1 . Wenn N so klein ist, dass keine Primzahl in dieses Intervall fällt, können Sie N leicht faktorisieren. Daher ist Schritt 1 erfolgreich.NN/2N1NN

In Schritt 2 können Sie AKS oder einen beliebigen anderen Polynomial-Time-Primality-Test verwenden.

Die Anzahl der Rekursionen ist einfach , da bei jedem Schritt N (mindestens) halbiert wird.O(lg(N))=O(|N|)N


PS-1: Angenommen, Goldbachs Vermutung könnte helfen, das Verfahren für gerade (und möglicherweise ungerade) ganze Zahlen zu beschleunigen.

PS-2: Die verwendete Reduktion ist eine Cook-Reduktion. Man könnte daran interessiert sein, den Beweis mit Karp-Reduktionen durchzuführen.

MS Dousti
quelle
3
Ich denke, es ist offen, ob wir eine Primzahl in einem bestimmten Bereich effizient finden können, sodass ich nicht sehe, wie es Ihnen geht. 1.
Kaveh
1
@ Kaveh: Du hast recht! Ich denke, ich kann den Algorithmus mit einigen zusätzlichen Schritten so ändern, dass keine Primzahl sein muss, und ihn dann wie y faktorisieren. oder wir können annehmen, dass die Reduktion probabilistisch ist (da wir in der probabilistischen Polynomzeit eine Primzahl in dem gegebenen Bereich finden können). xy
MS Dousti
2
Ja, ich denke, wir hatten die gleiche Idee, dh wir wollten einfach zu faktorisierende Ganzzahlen finden, die zur Eingabe addieren. Sie haben versucht, Primzahlen zu verwenden. Ich habe Potenzen von 2 verwendet. :) Ich weiß immer noch nicht, ob wir damit umgehen können weniger als die logarithmische Anzahl von Fragen an das Orakel, und das scheint mit einer interessanten und natürlichen Zahlentheorie zu tun zu haben (Schreiben von Zahlen als Summe von einfach zu faktorisierenden Zahlen).
Kaveh
5

Diese Antwort ist unabhängig von meiner vorherigen Antwort . Ziel ist es, @ Kavehs Anliegen in den Kommentaren anzusprechen:

Es ist einfach zu tun , wenn wir wollten Zahlen, aber ich sehe nicht , wie es zu tun , auch mit log log n Zahlen.lognloglogn

Ich hatte ähnliche Bedenken:

Die verwendete Reduktion ist eine Cook-Reduktion. Man könnte daran interessiert sein, den Beweis mit Karp-Reduktionen durchzuführen.

(Karp-Kürzungen sind für Entscheidungsprobleme. Mit Karp-Kürzungen meine ich hier eine Cook-Kürzung mit nur einer Abfrage. Entschuldigung für nicht standardmäßige Terminologie!)


Die Antwort unten basiert auf den Diskussionen hier: /math/54580/factoring-some-integer-in-the-given-interval .


In dieser Antwort werde ich eine deterministische Karp-Reduktion in Polynimialzeit vom Faktorisieren zum Faktorisieren der Summe von zwei durch ihre Faktorisierungen dargestellten ganzen Zahlen angeben . Es gibt jedoch einen Haken: Im Verlauf des Beweises werde ich die folgende zahlentheoretische Annahme verwenden:

pnpn+1pn+1pn=O(log2pn)

Nn=|N|=O(logN)N[Nlog3N,N]log3N=O(n3)

x[Nlog3N,N]y=Nx

0ylog3N|y|=O(loglogN)=O(logn)y

(x,y)N=x+y

MS Dousti
quelle
Vielen Dank an Sadeq, aber bedingte Ergebnisse waren nicht das, wonach ich gefragt habe. ps: Ich interessiere mich für interessante Darstellungen von Zahlen und die Darstellung, die man aus Ihrer Antwort (mit einem großen Prim) erhält, erscheint mir nicht sehr interessant. Um den Geschmack dessen zu geben, was ich interessant finde: Jede natürliche Zahl ist die Summe von vier Quadraten .
Kaveh