Disclaimer: ci sono molte domande a riguardo, ma non ne ho trovate nessuna con il requisito di memoria costante.Numeri di Hamming per la velocità O (N) e memoria O (1)
I numeri di Hamming sono numeri 2^i*3^j*5^k
, dove i, j, k sono numeri naturali.
Esiste la possibilità di generare il numero Nth Hamming con il tempo O (N) e la memoria O (1) (costante)? Sotto generate intendo esattamente il generatore, cioè si può solo emettere il risultato e non leggere i numeri precedentemente generati (in tal caso la memoria non sarà costante). Ma puoi salvare un numero costante di loro.
Vedo che solo l'algoritmo migliore con memoria costante non è migliore di O (N log N), ad esempio, in base alla coda di priorità. Ma c'è una prova matematica che è impossibile costruire un algoritmo in tempo O (N)?
http://stackoverflow.com/q/12480291/77567 –
È una domanda interessante, ma potresti avere più fortuna a ottenere una risposta su cs.stackexhange.com poiché probabilmente non è possibile e vuoi una dimostrazione. –
qual è l'algoritmo di tempo O (N log N) della memoria O (1) che hai citato? il PQ che hai menzionato occupa lo spazio ~ N^(2/3). e BTW l'algoritmo standard corretto (dovuto a Dijkstra) è O (N) -time. anche l'algo sovrapproducibile a cui ci si riferisce probabilmente può essere O (N) se si utilizza PQ correttamente performante con inserto di cacca O (1) e O (1). –