Zum Inhalt springen

Informatik · Klasse 12–13 · aktualisiert

Halteproblem: Unentscheidbarkeit verstehen

Du lernst, warum kein Algorithmus für alle Programme vorhersagen kann, ob sie anhalten, und wie der Widerspruchsbeweis dazu funktioniert.

0 von 10 Aufgaben gelöst

Halteproblem: Unentscheidbarkeit verstehen

Kurz gesagt

Das Halteproblem fragt: Hält ein Algorithmus mit einer Eingabe irgendwann an oder läuft er endlos weiter? Alan Turing bewies, dass es keinen Algorithmus gibt, der das für alle Algorithmen und beliebige Eingaben beantwortet. Für viele einzelne Programme ist die Frage trotzdem leicht zu beantworten.

Stell dir vor, dein Programm läuft und läuft. Ist es nur langsam, oder hängt es für immer? Ein Werkzeug, das das für jedes Programm sicher vorhersagt, wäre extrem nützlich. Hier erfährst du, warum es ein solches Werkzeug nicht geben kann und was das genau bedeutet.

Deine Lernziele

Hake ab, was du schon kannst. Löst du alle Aufgaben eines Abschnitts, hakt Mela das Ziel für dich ab.

4 Abschnitte

Ein Algorithmus ist eine Berechnungsvorschrift: mehrere Rechenschritte nach festen Regeln. In der theoretischen Informatik führt man Algorithmen auf abstrakten Maschinen aus. Eine typische abstrakte Maschine ist die Turingmaschine.

Das Halteproblem fragt, ob die Ausführung eines Algorithmus zu einem Ende gelangt. Genauer: Eine Maschine H soll für jede Maschine T mit jeder Eingabe w entscheiden, ob T irgendwann anhält oder endlos weiterläuft. Das ist eine Ja-Nein-Frage. H bekäme dafür eine codierte Beschreibung b(T) von T und die Eingabe w. Formal ist das Halteproblem eine Eigenschaft von Paaren aus Algorithmus und Eingabe: Der Algorithmus terminiert für die Eingabe, er rechnet also nur endlich lange.

Bei vielen Programmen ist leicht zu sehen, ob sie irgendwann anhalten. Es gibt aber auch Programme, bei denen das nach dem gegenwärtigen Wissensstand noch nicht vorhergesagt werden kann. Ein Beispiel ist das Collatz-Programm unten.

Definition

Halteproblem

Das Halteproblem ist die Frage, ob ein Algorithmus mit einer Eingabe zu einem Ende kommt. Die Antwort ist „ja, er hält an“ oder „nein, er läuft endlos weiter“.

Beispiel: Das Collatz-Programm

  1. 1wiederhole
  2. 2 falls n gerade: n := n / 2
  3. 3 sonst: n := (3 · n) + 1
  4. 4bis n = 1
  5. 5Ausgedachte Eingabe n = 4: 4 ist gerade, also n = 2. 2 ist gerade, also n = 1. Jetzt gilt n = 1, das Programm hält.
  6. 6Die Collatz-Vermutung ist bisher unbewiesen. Wenn sie richtig ist, hält das Programm für jede Eingabe n mit n > 0 und n aus den natürlichen Zahlen.

Merke: Das Halteproblem ist eine Ja-Nein-Frage über ein Paar aus Algorithmus und Eingabe: Hält er irgendwann an oder läuft er endlos weiter?

Teste dich

LeichtWelche Ja-Nein-Frage stellt das Halteproblem?

Alles auf einen Blick

Halteproblem

  • Halteproblem

    Hält T mit der Eingabe w irgendwann an oder läuft T endlos weiter? Das ist eine Ja-Nein-Frage.

  • Entscheidbar

    Ein Algorithmus beantwortet für jedes Element „ja“ oder „nein“.

  • Semi-entscheidbar

    Nur bei „ja“ muss die Berechnung in endlicher Zeit anhalten.

  • Beweis

    Annahme, Selbstanwendung und Umkehrung führen zum Widerspruch. Also gibt es F, G und H nicht.

  • Geltungsbereich

    Unentscheidbar ist die Frage für alle Algorithmen und Eingaben zusammen, für bestimmte Klassen nicht.

Musteraufgabe · Schritt für Schritt

Drei Probleme einordnen (ausgedachte Aufgabe)

  1. 1Aufgabe: Ordne ein. (a) Ist eine Zahl eine Primzahl? (b) Hält T mit Eingabe w an? (c) Hält T mit Eingabe w nicht an?
  2. 2(a) Die Menge aller Primzahlen ist entscheidbar. Ein Algorithmus beantwortet für jede Zahl „ja“ oder „nein“.
  3. 3(b) Die Antwort „ja“ lässt sich durch Laufenlassen geben, also ist (b) semi-entscheidbar. Ein Entscheidungsverfahren gibt es nicht, (b) ist unentscheidbar.
  4. 4(c) Das ist das Komplement des Halteproblems. Es ist nicht semi-entscheidbar.
  5. 5Probe: Wären (b) und (c) beide semi-entscheidbar, wäre das Halteproblem entscheidbar. (c) ist es nicht, also bleibt (b) nur semi-entscheidbar.

Fehler finden

Prüfe die Aussagen zur Unentscheidbarkeit In einer Zeile steckt ein Fehler. Tippe sie an.

Lückentext

Wähl in jeder Lücke das passende Wort und prüf dann deine Antworten.

Eine Eigenschaft heißt , wenn es einen Algorithmus gibt, der für jedes Element beantwortet, ob es die Eigenschaft hat oder nicht. Bei einer semi-entscheidbaren Menge wird nur für „“ gefordert, dass die Berechnung in endlicher Zeit anhält. Die Diagonalsprache ist die Menge aller Turingmaschinen, die , wenn sie ihre eigene Kodierung als Eingabe bekommen.

Karteikasten

Erst selbst überlegen, dann umdrehen.

Übung mit Feedback

Abschluss-Check: Halteproblem

LeichtWelche Eingabe bekäme eine Maschine H, die das Halteproblem entscheiden würde?
MittelEine Menge ist semi-entscheidbar, und ihr Komplement ist es auch. Was folgt daraus?
SchwerAus einer angenommenen Maschine H wird die Maschine G gebaut. Warum folgt daraus, dass es H nicht geben kann?

Weiterlesen in Informatik