Ich habe das folgende algorithmische Problem:
Bestimmen Sie den Raum Turing Komplexität der Erkennung von DNA-Strings, die Watson-Crick-Palindrome sind.
Watson-Crick-Palindrome sind Saiten, deren umgekehrtes Komplement die ursprüngliche Saite ist. Das Komplement ist buchstabenweise definiert, inspiriert von der DNA: A ist das Komplement von T und C ist das Komplement von G. Ein einfaches Beispiel für ein WC-Palindrom ist ACGT.
Ich habe zwei Möglichkeiten gefunden, dies zu lösen.
Man benötigt Speicherplatz.
- Sobald die Maschine fertig ist, lesen Sie die Eingabe. Das Eingabeband muss in umgekehrter Reihenfolge auf das Arbeitsband kopiert werden.
- Die Maschine liest dann die Eingabe- und Arbeitsbänder von links und vergleicht jeden Eintrag, um zu überprüfen, ob die Zelle im Arbeitsband das Kompliment der Zelle in der Eingabe ist. Dies erfordert Speicherplatz.
Der andere benötigt Speicherplatz.
- Beim Lesen der Eingabe. Zählen Sie die Anzahl der Einträge auf dem Eingabeband.
- Wenn das Eingabeband fertig gelesen ist
- Kopieren Sie die Ergänzung des Briefes auf das Arbeitsband
- Kopieren Sie den Buchstaben L an das Ende des Arbeitsbandes
- (Schleifenpunkt) Wenn der Zähler = 0 ist, löschen Sie das Arbeitsband und schreiben Sie "Ja". Halten Sie dann an
- Wenn das Eingabeband L anzeigt
- Bewegen Sie den Eingangskopf um die vom Zähler angegebene Anzahl von Malen nach links (erfordert einen zweiten Zähler).
- Wenn das Eingabeband R anzeigt
- Bewegen Sie den Eingangskopf um die vom Zähler angegebene Anzahl von Malen nach rechts (erfordert einen zweiten Zähler).
- Wenn die Zelle, die den Wert auf dem Arbeitsband enthält, mit der aktuellen Zelle auf dem Eingabeband übereinstimmt
- Dekrementieren Sie den Zähler um zwei
- Bewegen Sie eine nach links oder rechts, je nachdem, ob sich R oder L auf dem Arbeitsband befindet
- Kopieren Sie das Komplement von L oder R anstelle des aktuellen L oder R auf das Arbeitsband
- Setzen Sie die Schleife fort
- Wenn die Werte nicht übereinstimmen, löschen Sie das Arbeitsband und schreiben Sie no. Halten Sie dann an
Dies ergibt ungefähr Speicherplatz zum Speichern beider Zähler, des aktuellen Komplements und des Werts L oder R.
Mein Problem
Der erste benötigt sowohl lineare Zeit als auch Raum. Der zweite benötigt Zeit und Speicherplatz. Ich erhielt das Problem aus dem Zitat und kam auf diese beiden Ansätze, aber ich weiß nicht, mit welchem ich gehen soll. Ich muss nur die räumliche Komplexität des Problems angeben. logn
Der Grund, warum ich verwirrt bin
Ich würde eher sagen, dass die zweite die beste Option ist, da sie zeitlich besser ist, aber diese Antwort kommt nur von mir, wenn ich Glück habe und einen Algorithmus finde. Es scheint, als würde es kein Glück erfordern, den richtigen Algorithmus zu finden, wenn ich die räumliche Komplexität von etwas angeben möchte. Vermisse ich etwas Sollte ich überhaupt eine Lösung für das Problem finden, um die Komplexität des Raums zu beantworten?