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?
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?
Antworten:
Lassen Sie uns zunächst auspacken, was bedeutet.
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 x , . Das heißt, f wächst höchstens so schnell wie eine konstante Funktion.
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.
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 .
Nun kombinieren wir unsere beiden Konzepte. Wenn ein Algorithmus Speicher verwendet, befindet sich seine Speicherbenutzungsfunktion in Θ ( 1 ) , was bedeutet, dass einige vorhanden sind so dass für jede Eingabe der verwendete Speicher zwischen d und c liegt .
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 .
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.
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.