Abbildungen - Reduktionen in der Berechenbarkeitstheorie:

specific part of [[theo2_SprachenEntscheidbarkeit]] broad part of [[112.00_anchor_overview]]


Ziele von Reduktionen:

Angenommen wir wollen ein Problem lösen. Was wäre ein Ansatz dieses zu Lösen im Kontext von Reduktion? #card Wir können es für die Reduktion in ein kleineres Problem reduzieren. also

Wir möchten damit erzielen, dass wir Aussagen über die Berechenbarkeit einer Sprache auf eine andere übertragen können: welche zwei Eigenschaften können wir daraus ableiten? Wichtig! #card

  • Falls leicht ist, erhalten wir eine leichte Lösung für
  • Falls schwer ist, dann ist vermutlich auch schwer.

Definition von Reduktionen:

Sei eine Sprache und eine weitere Sprache Wir beschreiben, dass die Sprache auf die Sprache Abbildungs-reduzierbar ist, wenn gilt: :: Es gibt eine Turing-berechenbare Funktion , so dass für eine beliebiges Wort gilt:

Sofern gilt , was beschreiben wir dann mit f? #card Wir bezeichnen dann die Funktion als eine Reduktion von auf Wir notieren sie folgend mit: wobei m als Indikator für mapping reduction steht.

Jede Reduktion muss quasi in beide Richtungen stimmen, sonst ist es keine valide Reduktion! Wir verlieren ja sonst eventuell Informationen, wie es bei [[netsec_HashFunctions|Hash Functions]] etwa der Fall ist

grafisches Beispiel durch Clique / Vertex Covers

Haben wir zuvor auch schon in Algo betrachtet [[111.99_algo_ProblemComplexity#Example ==Independent set –> clique==|Cliques]] Betrachten wir das Problem von k-Cliques: Sei dafür ein ungerichteter Graph und . Eine Teilmenge heißt dann Clique, falls :: im Graph vollständig miteinander / untereinander verbunden ist. Es müssen also alle Punkte der Clique miteinander direkt verbunden sein. ![[Pasted image 20230523130329.png]] Wir wollen jetzt entscheiden, ob es eine Clique der Größe K im Graph gibt, oder nicht.

Wir können dieses Problem reduzieren, indem wir uns das Vertex Cover anschauen und später verwenden, um darauf auf die Clique-Konstruktion zu schließen.

Vertex Cover:

Sei ein ungerichteter Graph gegeben. Weiter nennen wir jetzt die Teilmenge ein Vertex Cover, wenn wir mit dieser Selection von Knoten jede Kante des Graphes mit mindestens einem Endpunkt in betrachten können. Folgende Darstellung gibt das Prinzip nochmal wieder. ![[Pasted image 20230523143833.png]] Auch dafür existiert ein Problem:

Gibt es ein Vertex Cover mit vielen Knoten in unserem Graph ?

Reduktion von Clique auf Vertex Cover:

Unter vorheriger Betrachtung können wir womöglich das Clique-Problem auf ein Vertex Cover-Problem reduzieren.

Dafür sei der gegebene Graph und Wir können jetzt einen neuen Graphen definieren, welcher genau das Complement des gegebenen Graphen bildet. Wir notieren ihn mit und weiter wählen wir nun auch ein sodass gilt: hat eine k-clique hat einen -Vertex-Cover.

Wir definieren dabei als das Komplement von G:

  • es hat die gleiche Menge Knoten
  • es hat all die Kanten zwischen Knoten, die G nicht hat.

Folgerung der Reduktion:

Wir behaupten unter dieser Betrachtung:

Die Reduktion ist berechenbar

Und beweisen es mit: Die Reduktion transformiert den Graphen in den Graphen . Wir können offentsichtlich eine TM konstruieren, die die Eingabe von G und k so verarbeitet, dass sie mit der Ausgabe resultiert. –> wie ist nicht relevant, wir wissen, dass es möglich ist xd

Weiterhin behaupten wir auch: G hat eine Clique der Größe hat einen Vertex Cover der Größe wobei –> also wir definieren ein Vertex-Cover mit Knoten.

Da es ein sehr spezifisches Anwendungsbeispiel ist,besteht unter Umständen das Problem, dass es keine Sprache beschreibt. Wenn wir jedoch bedenken, dass unser Beispiel auf n viele Eingaben übertragen und somit angewandt werden kann, können wir das Problem schon auch aus der_Sicht_ einer Sprache betrachten, denn am Ende ist das Paradigma der Übersetzung / Reuktion das selbige. Bildlich betrachtet: ![[Pasted image 20230523144719.png]] Auch diese Aussage kann man beweisen, werde ich in diesem Satz aber weglassen, weil dieser Beweise nicht allzu wichtig ist und eher zu [[111.00_anchor]] gehört.

Wir können schlussendlich folgern:

  • Wir wollen eine TM bauen, die das -Clique Problem lösen kann.
  • Wir starten mit einer Instanz des Problemes einer -Clique.
  • Wir transformieren diese Instanz auf eine neue, die die Charakteristika eines -Problem aufweist. Diese Transformation können wir durch eine weitere TM berechnen.
  • Wir können jetzt eine TM des -Vertext-Covers-Problem auf anwenden.
  • Deren Ja/Nein-Antworten stimmen dann auch für das ursprüngliche -Clique Problem überein, wie wir es zuvor gezeigt und bewiesen haben!

Gründe für Reduktionen :

Folglich können wir mit dieser Betrachtung und Reduktion wichtige Schlüsse über Sprachen treffen: Falls dann gilt: welche zwei Aussagen können wir mit einer Reduktion beschreiben? #card

  1. Falls (semi) entscheidbar ist, dann ist auch entscheidbar

  2. Falls nicht (semi-)entscheidbar ist, dann ist auch nicht (semi-entscheidbar)

  3. Falls (semi) entscheidbar ist, dann ist auch entscheidbar warum können wir darauf schließen? #card

    Denn wir können ja das erste Problem auf das zweite abbilden / reduzieren Und wenn wir das erste darauf reduzieren können, gleichzeitig das einfachere Problem der Zielraum ist, dann wird auch unser erster Raum leicht sein, denn wir können ihn ja auf den leichteren Raum reduzieren

  4. Falls nicht (semi-)entscheidbar ist, dann ist auch nicht (semi-entscheidbar) warum ist diese Aussage möglich? #card

    Wenn wir nun nicht entscheiden können, aber es dennoch mit einer Funktion auf reduzieren können, dann muss auch nicht entscheidbar sein, weil es ja weiterhin schwer ist!

Beweis der Aussage 1:

Falls (semi) entscheidbar ist, dann ist auch entscheidbar Sei (semi-)entscheidbar, also es gibt eine TM , die die Sprache (semi-)entscheidet. unter dieser prämisse, wie können wir jetzt darauf schließen, dass auch entscheidbar ist ? #card Dann bauen wir jetzt auch eine TM die (semi-)entscheidet. Bei der Eingabe von wendet zunächst die TM an, welche die Reduktion von auf umsetzt. Weiter können wir die Ausgabe von auf anwenden. Nach unserer Definition sollte dann das richtige Ergebnis liefern. ==> wir wissen also, dass beide entscheidbar sind!. ![[Pasted image 20230523131413.png]]

Beweis der Aussage 2:

Falls nicht (semi-)entscheidbar ist, dann ist auch nicht (semi-entscheidbar) Angenommen ist (semi-)entscheidbar wie würden wir mit diesem Zustand weiter darauf schließen, dass auch nicht entscheidbar ist? Wir starten nun mit der Instanz von und bauen die TM auf. Weiterhin wissen wir jetzt, dass auch (semi)-entscheidbar. Dann entscheidet aber auch , was ein Widerspruch bildet!

Andere Richtungen der Reduktionen gelten nicht:

Sei gegeben: wobei nicht entscheidbar ist. Können wir etwas für folgern? #card Nein, denn wir wissen dann nur, dass das erste Problem nicht gelöst werden kann, indem wir es auf Problem 2 reduzieren –> denn dann ist es auch nicht mehr entscheidbar. Wir wissen auch nicht, ob es einen anderen Weg gibt, mit dem man das Problem dann vielleicht doch lösen kann

Als weiteres Beispiel können wir noch betrachten:

Sei gegeben:

Sei und entscheidbar. Was folgt jetzt für ? #card Nichts , denn um die Reduktion zum Lösen von Problem 2 zu benutzen, müssten wir die Umkehrabbildung bauen –> um so eventeull eine Reduktion von Problem 2 auf Problem 1 erhalten zu können. Es besteht aber auch die Möglichkeit, dass es Instanzen von Problem 2 gibt, die nie durch eine Reduktion getroffen werden könnten, also wir würden den Zustand und die Menge der Instanzen gar nicht abdecken. Bildlich heißt das: ![[Pasted image 20230523145805.png]]

Mit dieser Betrachtung können wir uns jetzt viel wichtigere Probleme anschauen. So auch das [[theo2_Halteproblem|Halteproblem]] was uns aussagt, dass man manche Probleme niemals richtig lösen kann!