A questa domanda sul conteggio delle inversioni , ho trovato un documento che dimostra un limite inferiore alla complessità dello spazio per tutti gli algoritmi di streaming (esatti) . Ho affermato che questo limite si estende a tutti gli algoritmi del tempo lineare. Questo è un po 'audace come in generale, un algoritmo di tempo lineare può saltare a piacimento (accesso casuale) che un algoritmo di streaming non può; deve investigare gli elementi in ordine. Posso eseguire più passaggi, ma solo costantemente molti (per runtime lineare).
Pertanto la mia domanda:
Ogni algoritmo a tempo lineare può essere espresso come algoritmo di streaming con costantemente molti passaggi?
L'accesso casuale sembra impedire a una (semplice) costruzione di dare una risposta positiva, ma non sono stato nemmeno in grado di trovare un contro esempio.
A seconda del modello di macchina, l'accesso casuale potrebbe non essere nemmeno un problema, in termini di runtime. Sarei interessato alle risposte per questi modelli:
- Macchina di Turing, ingresso piatto
- RAM, input come array
- RAM, input come elenco collegato