Was bedeutet Θ (1) Speicher?


13

Ich habe die Definition eines In-situ-Algorithmus vom Professor, aber ich verstehe es nicht.

In-situ-Algorithmen beziehen sich auf Algorithmen, die mit Θ (1) -Speicher arbeiten.

Was bedeutet das?


3
Kennen Sie die Landau-Notation ?
David Richerby

4
Ein Algorithmus wird als In-Situ-Algorithmus oder als In-Place-Algorithmus bezeichnet, wenn die zusätzliche Speichermenge, die zum Ausführen des Algorithmus erforderlich ist, 0 (1) ist, dh [Speicher] eine Konstante nicht überschreitet, egal wie groß sie ist Die Eingabe . Beispielsweise ist Heapsort ein In-situ-Sortieralgorithmus. " en.wikipedia.org/wiki/In_situ#Computer_science
Auberon

@Auberon, es sollte hinzugefügt werden , daß legt eine weitere Anforderung als O ( 1 ) : daß der Gesamtspeicher in einem bestimmten Aufruf verwendet wird , nicht unterschreitet eine konstanten nicht die Größe des Eingangs Rolle. Θ(1)O(1)
Olathe

1
@Olathe Ich habe noch keinen Algorithmus gefunden, der mehr als null, aber weniger als eine Konstante einer Ressource verwendet
adrianN

@adrianN, AES-Verschlüsselung von Dateien erfolgt mit RAM-Auslastung unter einer konstanten Obergrenze. Sie verarbeiten jeweils einen Block, wobei jeder Block dieselbe RAM-Menge benötigt, um verarbeitet zu werden, und der RAM kann von einem Block zum nächsten wiederverwendet werden. Ein einfacheres Beispiel ist das Konvertieren aller Buchstaben in einer ASCII-codierten Datei in Großbuchstaben. Sie können einen Block, beispielsweise 4096 Bytes, der Datei einlesen, diese 4096 Bytes verarbeiten, die Ergebnisse dieses Blocks schreiben und denselben RAM für den nächsten Block wiederverwenden.
Olathe

Antworten:


13

Lassen Sie uns zunächst auspacken, was bedeutet.Θ(1)

Big und big Θ sind Funktionsklassen. Es gibt eine formale Definition hier , aber für die Zwecke dieser Frage, sagen wir , dass eine Funktion f in ist O ( 1 ) , wenn es eine Konstante ist c , wo, für alle xOΘfO(1)cx , . Das heißt, f wächst höchstens so schnell wie eine konstante Funktion.f(x)Cf

Big- bedeutet für konstante Funktionen nicht viel, da es bei der Beschreibung der Zeit- oder Raumnutzung des Algorithmus nicht viel unterhalb der Konstanten gibt. Aber zu erklären , was es bedeutet, f & egr ; & THgr; ( 1 ) , wenn es einige Konstanten c , d , so dass für alle x , d f ( x ) c . Das heißt, f wächst mindestens so schnell und höchstens so schnell wie eine konstante Funktion.ΘfΘ(1)c,dxdf(x)cf

Was hat das nun mit der Speichernutzung zu tun? Betrachten wir einige Algorithmus . Es gibt eine (mathematische) Funktion, die bei einer Eingabe von n die maximale Speichernutzung Ihres Algorithmus A für jede Eingabe der Größe n angibt . Nennen wir diese Funktion m e m .EINnEINnmem

Nun kombinieren wir unsere beiden Konzepte. Wenn ein Algorithmus Speicher verwendet, befindet sich seine Speicherbenutzungsfunktion in Θ ( 1 ) , was bedeutet, dass einige vorhanden sindΘ(1)Θ(1) so dass für jede Eingabe der verwendete Speicher zwischen d und c liegt .d,cdc

Kurz gesagt bedeutet dies, dass die Speichernutzung des Algorithmus unabhängig von der Eingabe in einem konstanten Bereich liegt.

Normalerweise berücksichtigt die Speicherfunktion nicht den Speicher, der zum Speichern der Eingabe in den Algorithmus verwendet wird, da ansonsten die Speichernutzung immer mindestens betragen würde .Θ(n)


"hängt nicht effektiv von seiner Eingabe ab." - Für welche Definition von "effektiv"?
Raphael

Wie in kann sich der verwendete Speicher je nach Eingang ändern, jedoch nur innerhalb eines festen Intervalls. Fühlen Sie sich frei, es zu bearbeiten, wenn Sie eine bessere Formulierung finden können.
Jmite

Ich glaube nicht, dass es einen besseren Wortlaut gibt als "der für Eingaben verwendete Speicher liegt zwischen und c ". Es besteht auch keine Notwendigkeit dafür. dc
Raphael

einfache anschauliche Beispiele wären hilfreich
vzn

8

Konstante Raumkomplexität des Algorithmus

Die von Ihrem Algorithmus verwendete Speichermenge ist unabhängig von der Eingabe.

Ein Algorithmus soll eine konstante Raumkomplexität aufweisen, wenn er eine feste Menge an Raum verwendet. Es können Variablen oder ein Array von genau 10 Elementen sein.1010

In-situ-Algorithmen üben jedoch ihre beabsichtigte Funktion am Eingang selbst aus und benötigen daher sehr wenig oder keinen zusätzlichen Platz. Die Eingabe wird normalerweise durch die Ausgabe überschrieben, wenn der Algorithmus ausgeführt wird. ( ref )

In-situ-Algorithmen berücksichtigen nicht den von der Eingabe belegten Speicherplatz, sondern nur den zusätzlichen Speicherplatz, während sie die Komplexität des Speicherplatzes berechnen.


3
Θ(1)

@Olathe Der von jeder Eingabe belegte Platz in Bezug auf Bytes und die Anzahl der Eingaben in Bezug auf die Anzahl sind nicht zwei verschiedene Konzepte?
Prateek

0

Dies bedeutet, dass die für den Algorithmus erforderliche zusätzliche Speichermenge nicht größer ist als eine konstante Menge, die für eine ausreichend große Eingabe nicht von der Eingabegröße abhängt.


2
ΘÖΩÖ(x2)f(x)=3x2 f(x)=xΘ(x2)f(x)=3x2f(x)=x
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.