Riferimento per l'algoritmo di factoring ottimale di Levin?


13

Nel " Consiglio a uno studente laureato principiante " di Manuel Blum :

LEONID LEVIN crede mentre lo faccio, qualunque sia la risposta a P = NP? problema, non sarà come qualsiasi cosa tu pensi che dovrebbe essere. E ha dato alcuni esempi meravigliosi. Per uno, ha dato un ALGORITMO DI FATTORE che è probabilmente ottimale, fino a una costante moltiplicativa. Dimostra che se il suo algoritmo è esponenziale, allora ogni algoritmo per FACTORING è esponenziale. Allo stesso modo, se un qualsiasi algoritmo per il factoring è il poli-tempo, il suo algoritmo è il poli-tempo. Ma non siamo stati in grado di dire il tempo di esecuzione del suo algoritmo perché, in senso lato, il tempo di esecuzione non è analizzabile.

La pagina delle pubblicazioni di Levin restituisce un 404, DBLP non mostra nulla di correlato al factoring e una ricerca di "facton Levon Levin" su Google Scholar non restituisce nulla di interessante che io possa trovare. AFAIK il setaccio generalizzato è l'algoritmo più veloce noto per il factoring. Di cosa parla Manuel Blum? Qualcuno può collegarmi a un documento?

Risposte:


11

Manuel Blum sta parlando dell'applicazione dell'algoritmo di ricerca universale di Levin al problema della fattorizzazione degli interi. L'idea di algoritmo di ricerca universale di Levin è ugualmente applicabile a qualsiasi problema in .NP

Ecco una citazione dagli appunti delle lezioni di Blum su SICUREZZA e CRIPTOGRAFIA:

ALGORITMO OTTIMALE DI SPLITTING (FACTORING) DI Leonid LEVIN. Lascia che SPLIT denoti qualsiasi algoritmo che calcola INPUT: un intero composito positivo (cioè non primo) n. OUTPUT: un fattore non banale di n.

TEOREMA: esiste un algoritmo "ottimale" per la divisione dei numeri, che chiamiamo OPTIMAL-SPLIT. Questo algoritmo è OTTIMALE nel senso che: per ogni algoritmo di divisione dei numeri SPLIT esiste una costante C (abbastanza grande ma fissa) tale che per ogni ingresso intero composito positivo n, il "tempo di esecuzione" di OPTIMAL-SPLIT sull'ingresso n è al massimo C volte il tempo di esecuzione di SPLIT sull'ingresso n.

Ecco l'algoritmo di factoring ottimale di Levin :

L'ALGORITMO DI SPLIT OTTIMALE: INIZIA Enumera tutti gli algoritmi in ordine di dimensione, lessicograficamente all'interno di ogni dimensione. Esegui tutti gli algoritmi in modo che in qualsiasi momento, t, l'algoritmo ith ottenga [1 / (2 ^ i)] frazione del tempo da eseguire. Ogni volta che un algoritmo si interrompe con un numero intero di output m nell'intervallo 1 <m <n, verificare se m divide n (ovvero se n mod m = 0). In tal caso, restituire m. FINE


Qualcuno può spiegare perché la frazione deve essere 1 / (2 ^ i) ma non qualcosa di più semplice come 1 / i?
netvope,

1
@netvope: la somma infinita di 1 / i diverge. Potresti riuscire a farlo con 1 / i ^ 2 ma 1/2 ^ i è molto più semplice.
Antimonio,

3

NPcoNP

Dato un numero che vogliamo fattore N.

N è primo? In tal caso, produrre 'PRIME' altrimenti:

io=1 ...

P=1 ...io

Eseguire il programma P per i passi con l'ingresso N

L1M1N=L*M(L,M)


4
Non è possibile utilizzare un test di primalità noto perché non è noto per essere più veloce del factoring ottimale. Oltre a questo, non capisco un punto. Per dimostrare che questo è ottimale per il factoring fino a un fattore costante, penso che dobbiamo dimostrare che la moltiplicazione nell'ultimo passaggio non è il termine dominante nella complessità temporale. Se ricordo bene, l'algoritmo di moltiplicazione più veloce noto nell'impostazione asintotica si basa su FFT e impiega il tempo O (n log n log log n) per gli interi n-bit. È possibile dimostrare che il factoring ottimale richiede almeno tanto tempo?
Tsuyoshi Ito,

@Tsuyoshi: Penso che tu abbia ragione nel ritenere che questo algoritmo non sia ottimale se i test di moltiplicazione / primalità noti sono più difficili del factoring. Tuttavia, se leggi la citazione di Blum sopra, dice solo che l'algoritmo di Levin è polinomiale se e solo se lo è quello ottimale, il che elimina questo problema. Altre due cose: (1) come si potrebbe evitare di utilizzare un test di primalità noto in questo algoritmo? (2) Penso che questo algoritmo non sia stato formulato nel modo giusto in quanto il tempo di esecuzione non è correttamente suddiviso tra i diversi programmi; vedi la risposta di Al-Turkistany per la giusta formulazione.
Peter Shor,

@Peter: Bene, la citazione di Blum afferma che "lui [Levin] ha dato un ALGORITMO DI FATTORE che è dimostrabilmente ottimale, fino a una costante moltiplicativa". Ma considerando che non sappiamo nemmeno se il factoring richiede più del tempo lineare o meno, l'affermazione è difficile da credere così com'è.
Tsuyoshi Ito,

@Tsuyoshi: vedo, stavo leggendo la citazione sbagliata di Blum.
Peter Shor,
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.