it-swarm.com.de

Was ist O(1) Raumkomplexität?

Es fällt mir schwer, die Komplexität von O(1) zu verstehen. Ich verstehe, dass dies bedeutet, dass der vom Algorithmus benötigte Platz nicht mit der Eingabe oder der Größe der Daten wächst, für die der Algorithmus verwendet wird. Aber was heißt das genau?

Wenn wir einen Algorithmus für eine verknüpfte Liste verwenden, sagen wir 1-> 2-> 3-> 4. Um die Liste zu "3" zu durchlaufen, deklarieren wir einen temporären Zeiger. Durchlaufen Sie die Liste, bis wir 3 erreichen. Bedeutet das, dass noch O(1) zusätzlicher Platz vorhanden ist? Oder bedeutet das etwas ganz anderes? Es tut mir leid, wenn das überhaupt keinen Sinn ergibt. Ich bin etwas verwirrt.

15
coder123

Wenn Sie einen Zeiger haben und die Liste durchlaufen, wird diese als O(1) - Raumkomplexität gezählt. Wenn Sie 10 oder 100 oder sogar 1000 Zeiger haben, ist die Platzkomplexität O (1). Wenn Sie jedoch N-Zeiger haben möchten und selbst wenn N nur 1 ist, ist die Raumkomplexität O (N). 

Ich hoffe, Sie verstehen, O(1) bezeichnet einen konstanten Platz (10, 100 und 1000 sind konstant) und variiert NICHT in Abhängigkeit von der Eingangsgröße (zB N).

23
Ajay Kumar

Nehmen wir an, ich erstelle eine Datenstruktur mit fester Größe. Egal, was ich mit der Datenstruktur mache, sie hat immer die gleiche feste Größe. Operationen, die für diese Datenstruktur ausgeführt werden, sind daher O (1).

Ein Beispiel, ich habe ein Array mit fester Größe 100. Jede Operation, die ich mache, sei es aus dem Array zu lesen oder ein Element zu aktualisieren, diese Operation wird O(1) auf dem Array sein. Die Größe des Arrays (und damit die Menge des verwendeten Speichers) ändert sich nicht.

Ein anderes Beispiel, sagen wir, ich habe eine LinkedList, zu der ich Elemente hinzufüge. Jedes Mal, wenn ich der LinkedList ein Element hinzufüge, handelt es sich um eine O(N) - Operation in der Liste, da der Speicherbedarf erhöht wird, um alle Elemente zusammenzuhalten. 

Hoffe das hilft!

0
Matthew S