Sie erhalten ein großes binäres Array.
Ich möchte zeigen, dass kein Algorithmus Folgendes kann (oder überrascht sein und herausfinden, dass es solche Algorithmen schließlich gibt):
1) Verarbeiten Sie das Eingabearray mit unbegrenzter Zeit, jedoch nur mit -Bits .
2) Beantworten Sie Abfragen in konstanter Zeit, wobei die Abfrage nach der Anzahl der gesetzten Bits zwischen Index und Index im Array fragt .x y
Es scheint, dass die konstante Zeit pro Abfrage dem Algorithmus nicht erlauben sollte, genügend Informationen zu lesen, um die Anzahl der gesetzten Bits zu berechnen.
Wie können wir beweisen, dass es keinen solchen Algorithmus gibt?
Eine allgemeinere Frage wäre:
Welche Untergrenze für die Abfragezeit können wir ableiten , da der Algorithmus -Raum verwenden darf?
Wenn wir Speicherplatz haben, können wir natürlich alle Teilsummen speichern und Abfragen in beantworten , aber was ist, wenn kleiner ist?O ( 1 ) f
Sie können annehmen, dass die Größe eines Speicherworts und wir die Indizes in konstanter Zeit lesen können .x , y