Ich habe zwei log-Raumfahrtprogramme bekommt und .
- Programm wird in das Array eingegeben und erstellt das Ausgabearray .
- Programm wird als Eingabe erhalten wie erstellt von und erstellen Sie daraus das Ausgabearray .
Ich muss einen Beweis schreiben, dass es ein Log-Space-Programm gibt , die Eingabe Array erhalten und erstellen Sie daraus ein entsprechendes Array . Aber ich kann nicht den richtigen Weg finden, es zu schreiben. Wie wird das gemacht?
Ein Log-Space-Programm ist ein Programm, das verwendet Speicherbits. Hier sind einige Bedingungen, die Sie einhalten müssen:
Sie müssen nur Variablen verwenden, die einen einfachen Ganzzahltyp haben (z. B.
int
in C ++,longint
in Pascal).Der zulässige Bereich der Ganzzahl ist definiert: if ist die Größe der Eingabe, die wir in Variablen speichern können, nur Werte, die polymonial sind .
Zum Beispiel: Wir können Variablen haben, die Werte annehmen können , oder auch Werte , aber wir können keine Variablen haben, die Werte annehmen . Es sind keine anderen Variablentypen zulässig, auch keine Arrays und Iteratoren.
Ausnahmen von den Regeln sind Eingabe und Ausgabe. Die Eingabe ist in speziellen Variablen (meistens Arrays) verfügbar, aus denen Ihr Programm nur lesen kann, und die Ausgabe kann nur in andere spezielle Variablen geschrieben werden. Sie können also nicht aus der Ausgabe lesen und die Werte von Eingabevariablen usw. nicht erhöhen.
Ihre Programme können keine Rekursion verwenden.
Beispiel eines in Pascal geschriebenen Protokollspeicherprogramms (damit jeder es verstehen kann), das die größte Zahl im Array der Ganzzahl findet
var n: integer; //input variable the number of elements in A
A: array [1..n] of integer; //input variable - the array of integers
m: integer; // output variable, the position of maximum
i, j: integer; //working variables
begin
j := 1;
for i := 2 to n do
if A[i] > A[j] then j := i;
m := j;
end;
Die einzigen zwei Variablen hier sind j
und i
und sie nehmen offensichtlich Werte in an. Damit sind alle Bedingungen erfüllt und es handelt sich wirklich um ein Log-Space-Programm.