Drüben bei dieser Frage um die Inversionszählung , ich fand ein Papier , das für alle (genau) eine untere Schranke für Speicherkomplexität beweist Streaming - Algorithmen . Ich habe behauptet, dass diese Schranke sich auf alle linearen Zeitalgorithmen erstreckt. Dies ist ein bisschen fett, da im Allgemeinen ein linearer Zeitalgorithmus nach Belieben herumspringen kann (Direktzugriff), was ein Streaming-Algorithmus nicht kann; Es muss die Elemente in der richtigen Reihenfolge untersuchen. Ich kann mehrere Durchläufe durchführen, aber nur konstant viele (für lineare Laufzeit).
Daher meine Frage:
Kann jeder Linearzeitalgorithmus als Streaming-Algorithmus mit konstant vielen Durchläufen ausgedrückt werden?
Zufälliger Zugriff scheint zu verhindern, dass eine (einfache) Konstruktion eine positive Antwort liefert, aber ich konnte auch kein Gegenbeispiel finden.
Abhängig vom Maschinenmodell ist der wahlfreie Zugriff möglicherweise nicht einmal ein Problem, was die Laufzeit betrifft. Ich würde mich für Antworten zu diesen Modellen interessieren:
- Turingmaschine, flacher Eingang
- RAM, Eingabe als Array
- RAM, Eingabe als verkettete Liste