Qual è l'algoritmo più efficiente per la divisibilità?


12

abababO(mlogmloglogm)mΩ ( m log m log log m )max{a,b}Ω(mlogmloglogm) il limite inferiore di questo problema?

Grazie e saluti, e scusate se questa è una domanda così ingenua.


AFAIK non sono noti limiti inferiori non banali. Credo che la moltiplicazione e la divisione abbiano essenzialmente la stessa complessità (sebbene possa forse dipendere da un log log?) Tramite il metodo di Newton, e dal momento che non esiste un limite inferiore non lineare noto sulla moltiplicazione, penso che nessun limite inferiore del modulo stai affermando sarebbe un risultato importante.
Steven Stadnicki,

(In realtà, osservandolo ora penso che il fattore log log scompaia perché mentre stai facendo un numero non costante di moltiplicazioni, non hanno tutti la stessa lunghezza, quindi i fattori superlineari possono essere assorbiti nello stesso modo in cui, ad esempio, è ancora lineare in anche se ha un numero non costante di fattori 'lineari'.) nk=1lgnn2kn
Steven Stadnicki,

Risposte:


4

Trasformando i miei commenti in una risposta: poiché la divisibilità è (banalmente) riducibile alla divisione, e poiché la divisione è (non banalmente) riducibile alla moltiplicazione tramite approcci come il metodo di Newton, allora il tuo problema dovrebbe avere la stessa complessità temporale della moltiplicazione intera. AFAIK, non ci sono limiti inferiori noti per la moltiplicazione meglio di quello banale lineare, quindi lo stesso dovrebbe valere per il tuo problema - e in particolare, poiché è noto che la moltiplicazione ha (essenzialmente) algoritmi, le tue speranze per un limite inferiore sono quasi certamente vane.n registro n registro registro nO(nlognlogn)nlognloglogn

La ragione per cui la divisione si riduce precisamente in complessità alla moltiplicazione - per quanto io la comprenda - è che il metodo di Newton eseguirà una sequenza di moltiplicazioni di dimensioni crescenti diverse; ciò significa che se esiste un algoritmo per la moltiplicazione con complessità la complessità di un algoritmo di divisione che utilizza questo algoritmo di moltiplicazione come un passo intermedio sarà lungo le linee di - e per tutte le classi di complessità in discussione questo è solo .Θ ( lg n k = 0 f ( nΘ(f(n))Θ(f(n))Θ(k=0lgnf(n2k))Θ(f(n))


2
Nitpick: non vedo come ottenere un limite inferiore da questo tipo di ragionamento, anche se assumiamo che non ci siano algoritmi di moltiplicazione migliori di quelli attualmente conosciuti. Le vostre riduzioni implicano che la divisibilità non è più difficile della moltiplicazione. Ma c'è ancora la possibilità che la divisibilità potrebbe essere più facile della divisione e più semplice della moltiplicazione, poiché la divisibilità richiede solo una risposta sì / no invece di un numero. (Almeno, la riduzione che menzioni non sembra escluderla.)
DW,

2
@DW concordato, e questo è un punto eccellente; ma non stavo cercando di ottenere un limite inferiore. Piuttosto, il punto è che qualsiasi limite inferiore sulla divisibilità implica il limite inferiore corrispondente sulla moltiplicazione, e poiché tali limiti non sono noti oltre il limite lineare banale, quindi ottenere un limite inferiore migliore della lineare sulla divisibilità (che fa parte di ciò OP richiesto) è improbabile.
Steven Stadnicki,

@DW Non sarei del tutto scioccato nell'apprendere un limite superiore lineare sulla divisibilità e, come dici tu, ciò non implicherebbe specificamente nulla sui limiti superiori della moltiplicazione, ma non ci sono risultati specifici in quella direzione AFAIK.
Steven Stadnicki,

-2

Penso che ci siano tipi vedici di hack per alcuni numeri che terminano con 3,7 ecc. O base 2 ^ n divisori ...

Ma in generale, l'algoritmo di divisione più veloce sembra essere la norma.

Il migliore che io conosca senza guardare è l'algoritmo D dei metodi seminumerici di Knuth ... Tuttavia non ne ho mai verificato la correttezza. Funziona in più o meno O (mn-n ^ 2) dove m e n sono il dividendo e il divisore ... senza considerare la complessità della moltiplicazione ...

Un limite inferiore tuttavia potrebbe essere sorprendentemente basso poiché la tua domanda riguarda solo il problema decisionale.

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.