Entscheidbarkeit der Sprachen

7

L1 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.Σw1,w2,...
L2Σ{#}{wi#wj:wi,wjL1,i<j}

  1. L1 ist rekursiv impliziert ist rekursivL2
  2. L2 ist rekursiv impliziert ist rekursivL1

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 .L1L2L1

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 .L2wiwjL1

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?

Abhijith Madhav
quelle
1
"passt entweder zu oder " - wofür resp. ? wiwjij
Raphael
@Raphael, ich meine zu sagen, dass der Algorithmus, der entscheidet, kann, um zu akzeptieren, ob die Eingabezeichenfolge mit oder von , der Form der Zeichenfolge von . L2wiwjwi#wjL2
Abhijith Madhav
Aber woher kommt es bekommt diewi#wj? Sie können nicht einfach nach einem suchen, das Ihnen nur Aufzählbarkeit und keine Entscheidbarkeit gibt. (Sie müssen hier wirklich genau sein!)
Raphael
1
Sie dürfen die Aufzählung von nicht ändern L1 In Schritt 1 ist Ihre Begründung für Schritt 1 also fehlerhaft, wenn Sie von der Aufzählung wechseln wizur lexikografischen Aufzählung.
Andrej Bauer
1
Du darfst das nicht. Die Erklärung des Problems gibt Ihnen einen Algorithmus zum AufzählenL1 und Sie müssen diese in der Definition von verwenden L2. Sie verstehen die Problemstellung falsch.
Andrej Bauer

Antworten:

7

Sie scheinen recht zu haben. Aber wie Raphael sagt, sei vorsichtig.

Aussage 1. Beachten Sie, dass die L2 wird mit dem Aufzählungsalgorithmus definiert E zum L1, nicht von L1selbst. Um zu entscheiden, obu#vL2, entscheiden, ob beide u,v im Lund 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. Wenn L1 ist endlich, es ist rekursiv, also nehmen wir an L1ist unendlich. LaufE und warte auf das erste Wort w1. Nun ein Entscheider fürL2 kann in eine für verwandelt werden L1wie folgt. Zu testenuL1 Überprüfen Sie zuerst, ob u=w1und dann überprüfen w1#uL2. Dies entspricht dannuL1 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üssen w1 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.

Hendrik Jan.
quelle
Zu Aussage 2: w1 kann fest codiert sein, und dann können wir die Annahme fallen lassen, dass L1ist rekursiv aufzählbar.
Yuval Filmus
1
Hängt davon ab; das wissen wir nichtEwiederholt sich nicht. Wenn ja,w1#w1L2Letztendlich. Das können wir nicht entscheidenw1wird nie wiederholt. Natürlich gibt es immer einen sich nicht wiederholenden Enumerator, aber seitdemL2 hängt speziell davon ab EEs ist nicht fair anzunehmen, dass wir eine haben.
Raphael
Hier überprüfen wir nie w1#w1um Probleme zu vermeiden. Eingangu wird "manuell" auf geprüft w1. Abgesehen davon schlägt die Formulierung eine Aufzählung ohne Wiederholung vor, gerade weil Ihr Kommentar.
Hendrik
@ HendrikJan Ich erklärte, warum überprüfen u=w1 reicht nicht aus, um das abzulehnen uallgemein. Die Formulierung schlägt keine Aufzählung ohne Wiederholung vor; Tatsächlich sagt das OP, dass die gegebene Lösung Ihrer Antwort widerspricht, was auf eine andere Interpretation hinweisen würde.
Raphael
Ich glaube, ich habe mich teilweise verwirrt. Ich habe selbst eine Antwort gepostet, die meiner Meinung nach Ihrer Absicht entspricht. Ich glaube, ich habe dabei ein Problem mit unserem Beweis für die erste Aussage gefunden.
Raphael
1

Anzeige 1: Die Aussage ist wahr, aber Ihre Argumentation ist nicht: Sie können die Aufzählung nicht ändern; Die Definition vonL2ist eng mit der Reihenfolge der Elemente verbunden. Hier ist der einfache Algorithmus, der entscheidetL2::

decide2(w) = {
  (u,v) = split (w,#) // w = u#v

  if ( decide1(u) && decide1(v) ) {
    i = 1
    while ( true ) {
      if ( enumerate1(i) == u ) {
        return true
      }
      else if ( enumerate1(i) == v ) {
        return false
      }
      i += 1
    }   
  }

  return  false
}

Hier decide1ist der Entscheider fürL1und enumerate1ist der Enumerator fürL1, die beide unter der Annahme existieren. Beachten Sie, dass die whileSchleife immer endet. An diesem Punkt wissen wir dasu,vL1 so wird die Schleife sie schließlich finden (tatsächlich diejenige, die zuerst auftritt).

Anzeige 2: Diese Aussage ist zwar richtig, aber auch aus anderen Gründen als von Ihnen angegeben.

Wenn L2 ist rekursiv, das folgende Programm ist berechenbar und entscheidet L1::

decide1(w) = {
  w1 = enumerate1(1)
  if ( w == w1 ) }
    return true
  }
  else {
    return decider2(w1#w)
  }
}

Wenn w=w1haben wir eindeutig wL1und das Programm entscheidet richtig. WennwL1{w1}, da ist ein i>1 so dass wi=w, und deshalb w1#wL2;; umgekehrt, wennwL1gibt es keine solche i und somit w1#wL2. Das Programm entscheidet in allen Fällen richtig.

Raphael
quelle
Wenn Sie sich das vorstellen, ist der erste Algorithmus fehlerhaft: Wenn die Aufzählung Wiederholungen aufweist, können wir die Eingabe nicht ablehnen, nur weil die ersten Vorkommen vonu,vsind in der falschen Reihenfolge.
Raphael
Keine Hoffnung auf Patches, denke ich. Es gibt keine Möglichkeit zu entscheiden, ob das Wort jemals wieder vorkommen wirdu (um es zu überprüfen tritt auch danach auf v). Die Frage besagte jedoch, dass es Schwierigkeiten mit Problem 2 gab. Nicht Problem 1 :)
Hendrik Jan
@ Raphael, ich verstehe nicht, was du mit "du kannst die Aufzählung nicht ändern" meinst. Welche Aufzählung habe ich geändert? Meine Begründung für die Richtigkeit von Aussage 1 ist genau das, was Sie in Ihrer obigen Antwort geschrieben haben. Nach Verwendung des Entscheiders vonL1 zu entscheiden u und vVerwenden Sie den Enumerator, um zu überprüfen, ob u wird vorher aufgezählt v. Ist das nicht so, weil Sie den Enumerator von erwartenL1 lexikographisch aufzuzählen, jetzt, wo die Hypothese von Aussage 1 dies sagt L1ist rekursiv?
Abhijith Madhav
@ Raphael, Ihr folgender Kommentar hat mich mehr verwirrt. Warum denkst du jetzt, dass erste Vorkommen vonu,vMöglicherweise in der falschen Reihenfolge, wenn die Aufzählung Wiederholungen enthält. WieL1 ist rekursiv, kann die Aufzählung nicht haben u,vin der falschen Reihenfolge. Ich habe gerade auf ein Lehrbuch (Sipser) verwiesen, um sicherzustellen, dass mein "rekursiv impliziert lexikographisch aufzählbar" korrekt ist.
Abhijith Madhav
@Abhijith Aus dem, was Sie in Ihrer Frage schreiben, ist nicht klar, wie Sie genau ausnutzen, dass es eine lexikografische Aufzählung gibt. Sie können nicht die Aufzählung annehmen definierenL2ist lexikografisch, und es scheint, als ob Sie das getan haben.
Raphael