ist eine rekursiv aufzählbare Sprache über einem Alphabet . Ein Algorithmus zählt seine Wörter effektiv als . ist eine andere Sprache über als Betrachten Sie die folgenden Aussagen.
- ist rekursiv impliziert ist rekursiv
- ist rekursiv impliziert ist rekursiv
Welche Aussagen sind / sind wahr?
Ich habe beide Aussagen für wahr befunden.
Aussage 1 ist wahr. ist rekursiv, es kann seine Zeichenfolgen lexikografisch auflisten. Die Mitgliedschaftsfrage für kann einfach mit dem Entscheider und lexikografischen Enumerator von geklärt werden .
Aussage 2 ist wahr. Der Algorithmus, der entscheidet, kann geändert werden, um zu akzeptieren, ob die Eingabezeichenfolge entweder mit oder . Damit ist die Mitgliedschaftsfrage für .
Die gegebene Lösung für diese Frage besagt jedoch, dass Aussage 2 falsch ist. Könnten Sie mich wissen lassen, ob meine Argumentation irgendwo falsch ist?
quelle
Antworten:
Sie scheinen recht zu haben. Aber wie Raphael sagt, sei vorsichtig.
Aussage 1. Beachten Sie, dass dieL2 wird mit dem Aufzählungsalgorithmus definiert E zum L1 , nicht von L1 selbst. Um zu entscheiden, obu#v∈L2 , entscheiden, ob beide u,v im L und wenn bestätigt, führen Sie den Enumerator aus E und sehen, ob u wird vorher ausgegeben v . Wie wir wissen, sind beide Saiten inL1 Dies wird beendet.
Aussage 2. WennL1 ist endlich, es ist rekursiv, also nehmen wir an L1 ist unendlich. LaufE und warte auf das erste Wort w1 . Nun ein Entscheider fürL2 kann in eine für verwandelt werden L1 wie folgt. Zu testenu∈L1 Überprüfen Sie zuerst, ob u=w1 und dann überprüfen w1#u∈L2 . Dies entspricht dannu∈L1 da müssen wir uns keine sorgen um die i<j Anforderung, die jetzt durch Konstruktion wahr ist.
Ich bin mir nicht mal sicher, ob wir es wissen müssenw1 durch Laufen E : Wir wollen nur überprüfen , ob es einen Entscheider gibt, nicht, ob einer effektiv konstruiert werden kann. Das scheint unmöglich.
( Bearbeiten ) Nur um zu beachten, dass Raphael eine explizitere "Implementierung" dieser Vorschläge veröffentlicht hat, wodurch mögliche Unklarheiten vermieden werden.
quelle
Anzeige 1: Die Aussage ist wahr, aber Ihre Argumentation ist nicht: Sie können die Aufzählung nicht ändern; Die Definition vonL2 ist eng mit der Reihenfolge der Elemente verbunden. Hier ist der einfache Algorithmus, der entscheidetL2 ::
HierL1 und L1 , die beide unter der Annahme existieren. Beachten Sie, dass die u,v∈L1 so wird die Schleife sie schließlich finden (tatsächlich diejenige, die zuerst auftritt).
decide1
ist der Entscheider fürenumerate1
ist der Enumerator fürwhile
Schleife immer endet. An diesem Punkt wissen wir dasAnzeige 2: Diese Aussage ist zwar richtig, aber auch aus anderen Gründen als von Ihnen angegeben.
WennL2 ist rekursiv, das folgende Programm ist berechenbar und entscheidet L1 ::
Wennw=w1 haben wir eindeutig w∈L1 und das Programm entscheidet richtig. Wennw∈L1∖{w1} , da ist ein i>1 so dass wi=w , und deshalb w1#w∈L2 ;; umgekehrt, wennw∉L1 gibt es keine solche i und somit w1#w∉L2 . Das Programm entscheidet in allen Fällen richtig.
quelle