Fragen theoretische Informatik (Berechenbarkeit / Komplexität)

Hallo,
ich bin kein Student, habe aber den Leistunsgkurs Informatik. Da mir das, was wir da besprechen, viel zu langweilig ist (und der Lehrer die meisten Beweise weglässt), frage ich einfach mal hier, vielleicht kann ja jemand helfen

  1. Screenshot by Lightshot

min-10 heißt mindestens 10 Worte, M akzeptiert mindestens 10 Worte.

Warum ist das so, dass wenn M auf w hält, bekommen wir eine Maschine, die immer hält und umgekehrt.

  1. warum ist das halte-problem semi-entscheidbar?

  2. wie funktioniert dove-tailing in der konkreten funktion hier?Screenshot by Lightshot

  3. Screenshot by Lightshot warum ist das eine richtige reduktion?

  4. warum stimmt das? wie begründet man das?
    Screenshot by Lightshot

  5. warum ist „ist l(m) regulär eine semantische Eigenschaft“?

  6. wie kann man mit einer n-band-tm eine maschine bauen, die nur O(n) Schritte braucht

  7. wie kann man eine k-Band-NTM in eine k-Band-TM umwandeln (und damit in eine TM) wie lange brauche ich um eine k-band-tm in eine 1-band-tm umzuwandeln?

  8. wenn ich das erreichbarkeitsproblem für neas auf das erreichbarkeitsproblem in graphen übertrage, warum brauche ich dafür nur linear viel Zeit?

im Buch steht was wie
„Es geht effizient zu jedem Übergang eine Kante, zu jedem Zustand eine Kante zu schreiben, für alles in der Eingabe müssen wir nur eine Sache machen. Die Kanten dazuzuschreiben, sind auch jeweils nur so viele Schritte wie wir Knoten haben.“
10) 3.Färbbarkeit: warum ist der Algorithmus der NTM:

Rate eine von 3 Farben für jeden Knoten.

Prüfe für jede Kante, ob die beiden Enden der Karte verschiedene Farben haben. Warum braucht der hier n^2 Schritte

Bei ein paar der Fragen bin ich mir nicht sicher, aber ich kann zumindest versuchen etwas beizutragen. Keine Garantie das irgendwas stimmt.

  1. Die Aussage hier ist scheinbar, dass man die Entscheidung, ob ein Wort in der Sprache „min-10“ auf das Halteproblem reduzieren kann (wegen dem kleiner-gleich). Diese Reduktion würde bedeuten, man versucht das min-10 Problem mittels des Halteverhaltens einer TM zu modellieren. Dazu ist es nur notwendig, ein TM zu „bauen“ welche mindestens 10 Wörter in der Eingabe abzählt, und sobald das 10. erreicht ist hält. Ansonsten, wenn die Eingabe frühzeitig beendet wird, würde diese Endlos weiterlaufen (in einer Hochsprache also etwas wie while (0 == 0) { /* noop */ }).

  2. Halbentscheidbar heißt ja, man kann entweder nur „Ja“ oder „Nein“ auf ein Problem beantworten. In einem alten Beitrag in diesem Forum wurde mir hierfür das Alltags-Beispiel „Ist da jemand“ oder „Bist du doch wach“ gegeben. Entweder sagt jemand „Ja“, oder man bekommt keine Antwort. In diesem Kontext, ist das Halte-Problem entscheidbar, wenn man eine Machine simuliert, und diese hält. Dann kann man kann man eine konkrete Instanz des Halteproblems sicher beantwortet. Aber nur weil die Simulation nach 10, 100, 1000, … schritten nicht angehalten ist, kann man (allgemein) nicht sicher sagen, dass diese nie halten wird. Daher ist es nur Halbentscheidbar.

  3. Ich kenne den Begriff „dove-tailing“ nicht, und bin mir nicht sicher was die konkrete Funktion ist.

  4. Es ist eine „richtige“ Reduktion, weil man wie oben ein Problem in eine TM-Formulierung übersetzt, sozusagen ein Berechenbaren Algorithmus vorgeben kann), und das Resultat zurück auf eine Lösung im eigentlichen Problem rückinterpretieren kann.

  5. Wie ich es sehe, geht es hier nur darum die Konzepte ineinander zu übersetzen, und weil diese (per Konstruktion) recht ähnlich sind, geht das mehr oder weniger per Definition.

  6. Ich bin mir hier nicht sicher was unter „semantische Eigenschaft“ zu verstehen ist. Hast du irgendwo eine Definition, ich konnte auf die Schnelle nichts finden.

  7. O(n) Schritte wofür braucht?

  8. IIRC kann man hier die gleiche Potenzmengen-Konstruktion benutzen, wie auch bei Regulären Sprachen, d.h. im wesentlichen simuliert man den nicht-determinismus indem man sich immer deterministisch merkt in welchen möglichen Zuständen eine NTM sich befinden könnte.

  9. „Linear“ in Abhängigkeit wovon? In Abhängigkeit von der Größe des NFA? Das sollte sein, weil jeder Zustand im Automaten einem Konten gleicht (was intuitiv nachvollziehbar ist, wenn wir bedenken wie oft man ein NFA in einer graphischen Form ziechnet).

Auf welches Buch beziehst du dich? Insofern Englisch kein Problem ist, kann ich dir Empfehlen Introduction to Automata Theory, Languages, and Computation von Hopcroft und Ullman anzuschauen. Die haben auch am Anfang ein schönen Abschnitt zum Beweisen im Allgemeinen, und die meisten Kapitel kann man (insofern man bereits einen groben Überblick hat) auch getrennt voneinander Anschauen). Professor Wanka, der hier an der FAU BFS hällt hat auch damals The Annotated Turing Empfohlen, aber ich habe es mir leider noch nie genauer angeschaut gehabt.

Erstmal danke und danke für die Zeit :slight_smile: hier noch eine frage

warum wäre hier L(M’), wenn w akzeptiert würde, = {w} und sonst {0}

Man will ja hier das Wortproblem lösen, indem an es auf das Äquivalenzproblem reduziert. Soweit ich die Idee verstehe, geht es darum, dass M’’ konstant ist, aber M’ von M abhängt, sodass die konstruierte kombination von M’ und M’’ immer gdw. affirmativ antworten, wenn das Wortproblem mit M und w auch affirmativ ist.

Übrigens, pass auf: {0} (bzw. {∅} oder {ε}) ist nicht das gleiche wie ∅. {∅} ist üblicherweise keine Sinnvolle Menge, weil ∅ die Menge der leeren Wörter definiert, und diese Menge ist (üblicherweise) kein Wort der Sprache. {ε} ist die Sprache welche nur das leere Wort enthält, d.h. alle TMs welche nur dann erfolgreich Terminieren, wenn keine Eingabe stattfindet. ∅ hingegen terminiert nie erfolgreich.

Ich gehe jetzt mal nur auf die erste Frage ein. Da sollten genug Lücken zu stopfen sein um sich eine gute Weile mit zu beschäftigen. Und wenn das verstanden ist, dann nehme ich an werden die anderen einfacher.

Das „Kleiner-gleich“, also die Reduzierbarkeitsrelation sagt leider das Gegenteil aus. Also A ≤ B bedeutet „A ist reduzierbar (sprich lösbar durch) B“, bedeutet also wer B lösen kann, kann auch A lösen. Psychisch tritt man da gerne in die sprachliche Falle, dass „A reduziert auf B“ den Anschein gibt, dass B kleiner ist, aber es geht hier um die Komplexität, also wenn ein Problem durch ein anderes gelöst wird, dann ist es selbst ja weniger komplex.
(Das soll nicht heißen, dass man Min-10 nicht auf das Halteproblem reduzieren kann, dann wären eben beide Probleme „gleichschwer“)

Wir wollen hier also das Halteproblem reduzieren auf das Min-10 Problem. Die Aussage ist „Wer Min-10 lösen kann, der hat schon das Geheimnis für das Halteproblem geknackt.“ H ≤ Min10. Wir suchen eine totale, berechenbare Funktion f, die das Halteproblem also in das Min10 Problem überführt. Und es soll gelten, dass wir die Antwort nach der Übersetzung auch beim ursprünglichen Problem benutzen können. Das ist was mit x ∈ H <=> f(x) ∈ Min10 gemeint ist.

Die richtigere Formulierung wäre eigentlich „A ist nicht schwerer als B“. Wir übersetzen ein A Problem in ein B Problem, lösen das B Problem, und geben die gleiche Antwort für das A Problem.

Natürlich muss ich auch beweisen, dass jede Akzeptanz im Fall B auch Akzeptanz im Fall A bedeuten würde, und umgekehrt, dass jede nicht-Akzeptanz im Fall B auch nicht-Akzeptanz im Fall A impliziert.

Nehmen wir uns das Beispiel doch mal her.

Das gruselige Halteproblem soll nicht schwerer sein als das Min10 Problem, von dem ich bis jetzt noch nie etwas gehört habe? Kann denn eine Lösung für das Min10 Problem zu einer Lösung für das Halteproblem führen?

Das trainierte Informatikgehirn weiß wonach es Ausschau halten muss. Alles ins Extreme führen. Randfälle betrachten.

Wir nehmen jetzt mal an, ich kann für jede TM sagen, ob sie für mindestens 10 Eingaben hält. Das gilt dann für jede Art von TM! Auch für TMs, die die Eingabe verwerfen oder ignorieren und gemütlich ihren eigenen Code ausführen. Man denke da an Eingabemasken, die es eigentlich nicht interessiert, was du angekreuzt hast.
Was also, wenn ich aus meiner Halteproblem TM eine neue bastele?

Das Halteproblem ist folgendermaßen definiert: Gegeben Turingmaschine M und Eingabe w, M hält für w.
Das bedeutet wenn etwas keine Turingmaschinenkodierung gefolgt von Eingabe ist, dann ist es auch Element des Halteproblems. Das ist nicht ganz unwichtig.

Wir müssen ein f basteln, sodass x ∈ H <=> f(x) ∈ Min10.

Nehmen wir jetzt 3 Fälle für unser x her:

  1. Eine TM M und eine Eingabe w, und M hält tatsächlich für w, also ist x = M,w ∈ H.
  2. Eine TM M’ und eine Eingabe w’, und M’ hält nicht für w’, also x = M,w ∉ H.
  3. Ein Input g, der keine Turingmaschine gefolgt von Eingabe ist (quasi ein Syntax Error). Hier wieder x = g ∉ H.

Für den ersten Fall soll f(x) ∈ Min10, für die anderen beiden Fälle nicht.

Ob etwas ein Syntax Error ist, also keine Turingmaschine gefolgt von Eingabe, lässt sich in Polynomialzeit entscheiden. Das ist also berechenbar.
Alle solche Eingaben wollen wir auch für unsere Übersetzung ins Nirvana katapultieren.
Zur Erinnerung, das Ziel ist, bei jeder Eingabe x, die nicht in H ist, auch etwas in f(x) auszuspucken, das nicht in Min10 ist.
Also lege ich fest, f(x) für x nicht von der Form M,w soll ergeben „0“. Das ist keine Turingmaschine, also garantiert auch nicht in Min10.

Jetzt nehme ich eine Turingmaschine M und Eingabe w her. Sagen wir ich bastele mir eine neue Turingmaschine. Es existiert ja eine sogenannte universelle Turingmaschine, die andere Turingmaschinen ausführen kann. Und eine solche werden wir benutzen. Je nach x = M,w basteln wir uns also eine Turingmaschine M’_⟨M,w⟩, die die wir der Ausgabe f(x) zuordnen.

Wenn ich M’_⟨M,w⟩ jetzt mit einer Eingabe w’ starte, dann soll M’_⟨M,w⟩ folgendes tun:

  1. Starte M mit w.
  2. Fertig. Halte akzeptierend.

Hä? Und was ist mit der Eingabe w’? Die ist uns egal. Zeit wieder rauszuzoomen. Was passiert jetzt mit unserer Funktion f?
Wir bekommen ein x. Wenn dieses x nicht von der Form M,w ist, dann bekommen wir auch keine Turingmaschine als Ausgabe f(x), damit ist trivialerweise f(x) ∉ Min10.

Jetzt zu dem Fall, dass x = M,w. Hier wie oben schon beschrieben gibt es zwei Fälle:

  1. Was passiert wenn M,w ∈ H?
    Dann hält M gestartet mit w. Das bedeutet für M’_⟨M,w⟩, dass es für jede Eingabe w’ akzeptierend hält. Ihm ist ja egal welches w’ er bekommt, da wird nur stur M mit w ausgeführt, und weil das irgendwann fertig ist (M,w ist in H, somit kann ich mich nicht in einer Dauerschleife verfangen), wird haltend akzeptiert.
    Unser f(x) = M’_⟨M,w⟩ ist nun eine Turingmaschine, die für alle Eingaben hält. Also auch für mindestens 10 verschiedene. f(x) ∈ Min10.

  2. Was passiert wenn M,w ∉ H?
    Dann hält M gestartet mit w nicht. Da ist eine Dauerschleife, also verfängt sich auch M’_⟨M,w⟩ in dieser und hält nicht akzeptierend. Nie. Da kann man an w’ rumspielen wie man will, M’_⟨M,w⟩ interessiert das nicht. In diesem Fall hält f(x) = M’_⟨M,w⟩ also nie akzeptierend. Also ist auch kein Wort in seiner Sprache. Bedeutet also nichtmal 10 Wörter. Eher 0. f(x) ∉ Min10.

Ich betone hierbei nochmal: f(x) macht im Fall „x von der Form M,w“ nicht zwei verschiedene Sachen, er baut immer den gleichen Automaten nach Rezept, aber eben die Zutat M,w hat in einem Fall die Eigenschaft in H zu sein, und im anderen Fall eben nicht. Und deswegen bekommen wir auch zwei verschiedene Verhalten.

Unser f(x) ist berechenbar, weil diese Konstruktion der universellen Turingmaschine ja möglich ist, der Syntaxcheck auch. Und die f ist total, was einfach bedeutet, dass wir jede Möglichkeit für x abgedeckt haben. Die Funktion wäre nicht total, wenn ich nur Fälle betrachtet hätte, in denen x von der Form M,w ist. Weil was wenn nicht? Dann wäre die Funktion auf solchen anderen x nicht definiert und somit die Funktion nicht auf allen möglichen Eingaben definiert. Deswegen dieser Fall mit der Mülleingabe g, bei der f(g) = „0“.

Für mindestens 10 Eingaben halten ist auch ein bisschen ein red herring. Die Zahl 10 hätte auch die Zahl 58 sein können, die Konstruktion bleibt gleich.

Das wäre ein Musteraufbau für eine Reduktionsaufgabe. Ich hoffe es nützt zumindest etwas. Du kannst ja im selben Stil versuchen andere Reduktionen durchzuführen, beim selbst probieren kommen sehr schnell die Wissenslücken zum Vorschein.

Das zu lesen hat mich ein bisschen erschreckt, und sehr glücklich gemacht. Freut mich dass das Beispiel so gut im Kopf geblieben ist.

Gruß
Feyven