Aggiungere numeri interi rappresentati dalla loro fattorizzazione è difficile come il factoring? Richiesta di riferimento


22

Sto cercando un riferimento per il seguente risultato:

L'aggiunta di due numeri interi nella rappresentazione fattorizzata è difficile come il factoring di due numeri interi nella normale rappresentazione binaria.

(Sono abbastanza sicuro che sia là fuori perché questo è qualcosa che mi ero chiesto ad un certo punto, e poi ero eccitato quando finalmente l'ho visto in stampa.)

"L'aggiunta di due numeri interi nella rappresentazione ceduti" è il problema: date le fattorizzazioni principali di due numeri e , uscita la fattorizzazione un'eccellente . Si noti che l'algoritmo ingenuo per questo problema utilizza la fattorizzazione nella rappresentazione binaria standard come subroutine.y x + yxyx+y

Aggiornamento : grazie a Kaveh e Sadeq per le prove. Ovviamente più prove ci sono, meglio è, ma vorrei anche incoraggiare un maggiore aiuto nella ricerca di un riferimento , che come ho detto sono abbastanza sicuro che esista. Ricordo di averlo letto in un documento con altre idee interessanti e non spesso discusse al suo interno, ma non ricordo quali fossero quelle altre idee o di cosa parlava il documento in generale.


6
Penso che un titolo migliore sarà "La fattorizzazione della somma di due numeri interi rappresentata dalla loro fattorizzazione è dura quanto il factoring?"
MS Dousti,

1
Bella domanda Se siamo in grado di scrivere un dato intero come somma di due numeri interi facili da fatturare, segue ciò che desideri. È facile da fare se volessimo numeri, ma non vedo come farlo anche con numeri. Vale la pena guardare le classi di numeri che sono facili da considerare. registro registro nlognloglogn
Kaveh,

1
alcune domande correlate su MO e Math.SE: 1 , 2 , 3
Kaveh

Risposte:


15

Supponiamo di poter risolvere il problema (chiamiamolo FactSum) nella classe di complessità e chiusa in -iteration (aka ricorsione legata al ) (ad es. Se possiamo calcolare dove è una funzione binaria, possiamo calcolare ) e contiene (quest'ultima condizione può essere indebolita). Mostriamo che il factoring è anche in .C Registro registro x y x 1x registro n P CCCloglogxyx1xlognPC

Si noti che ogni numero può essere scritto come una somma di poteri di . Ognuno di essi è facile da considerare.2logn2

Ora dato un numero, scrivilo come la somma dei suoi poteri, quindi scrivi ogni summand nella rappresentazione del factoring, quindi usa l'algoritmo per sommarli nella rappresentazione del factoring. Il risultato sarà il factoring del numero di input.

Ciò dimostra che il factoring è riducibile a -iteration del problema FactSum. Pertanto il factoring è in (e penso che possa essere sostituito con qui).P FactSum P N C 1logPFactSumPNC1


10

Non sono a conoscenza di un riferimento, ma penso di aver trovato una prova:

Supponiamo di avere un oracolo che, inserendo due numeri fattorizzatiO

x=i=1npiαi

e

y=i=1mqiβi ,

genera la fattorizzazione di .x+y

Avendo accesso a , possiamo considerare qualsiasi numero in tempo polinomiale usando la seguente procedura ricorsiva. NON

Fattore PROCEDURA ( )N

  1. Trova una primaria tale che e lascia .N / 2 x N - 1 y = N - xxN/2xN1y=Nx
  2. Se non è un numero primo, ottieni la fattorizzazione di dal fattore di chiamata ricorsivo ( ) e genera .yy O ( x , f a c t o r ( y ) )yyO(x,factor(y))
  3. Altra uscita .O(x,y)

Analisi:

Secondo il teorema dei numeri primi per abbastanza grande , ci sono molti numeri primi tra e . Se è così piccolo che nessun numero primo cade in questo intervallo, puoi facilmente fattorePertanto, il passaggio 1 passa.N / 2 N - 1 N NNN/2N1NN

Nel passaggio 2, è possibile utilizzare AKS o qualsiasi altro test di primalità al tempo polinomiale.

Il numero di ricorsione è semplicemente , poiché ad ogni passo viene tagliato a metà (almeno)NO(lg(N))=O(|N|)N


PS-1: Supponendo che la congettura di Goldbach potrebbe aiutare ad accelerare la procedura per i numeri pari (e forse dispari).

PS-2: la riduzione utilizzata è una riduzione Cook. Uno potrebbe essere interessato a realizzare la prova usando le riduzioni di Karp.


3
Penso che sia aperto se riusciamo a trovare in modo efficiente un numero primo in un determinato intervallo, quindi non vedo come stai andando 1.
Kaveh

1
@Kaveh: hai ragione! Con alcuni passaggi extra, penso di poter cambiare l'algoritmo per non richiedere che sia primo e quindi lo consideri come ; oppure possiamo supporre che la riduzione sia probabilistica (poiché nel tempo polinomiale probabilistico , possiamo trovare un numero primo nell'intervallo dato). yxy
MS Dousti,

2
Sì, penso che abbiamo avuto la stessa idea, cioè volevo trovare numeri interi facili da fatturare che si sommino all'input, hai provato a usare i numeri primi, ho usato potenze di 2. :) Non so ancora se possiamo farlo con meno del numero logaritmico di domande all'oracolo, e questo sembra essere correlato a una domanda di teoria dei numeri interessante e naturale (scrivere i numeri come somma dei numeri facili da fatturare).
Kaveh,

5

Questa risposta è indipendente dalla mia precedente risposta . Il suo obiettivo è quello di affrontare la preoccupazione di @ Kaveh nei commenti:

lognloglogn

Ho avuto una preoccupazione simile:

La riduzione utilizzata è una riduzione Cook. Uno potrebbe essere interessato a realizzare la prova usando le riduzioni di Karp.

(Le riduzioni di Karp sono per problemi di decisione. Qui, per riduzione di Karp, intendo una riduzione di Cook a una query. Ci scusiamo per la terminologia non standard!)


La risposta di seguito si basa sulle discussioni qui: /math/54580/factoring-some-integer-in-the-given-interval .


In questa risposta, fornirò una riduzione deterministica del Karp nel tempo polinimiale dal factoring al factoring della somma di due numeri interi rappresentati dalle loro fattorizzazioni . C'è un problema, però: nel corso della dimostrazione, userò il seguente presupposto teorico dei numeri:

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

Infine, invia insieme alle loro fattorizzazioni all'oracolo e ottieni la fattorizzazione di .N = x + y(x,y)N=x+y


Grazie Sadeq, ma i risultati condizionali non erano quello che chiedevo. ps: sono interessato a rappresentazioni interessanti di numeri e la rappresentazione che si ottiene dalla tua risposta (tirando fuori un grande numero primo) non mi sembra molto interessante. Per dare il sapore di ciò che sarei interessante per me: ogni numero naturale è la somma di quattro quadrati .
Kaveh
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.