BuK-Kreativaufgabe05 G2

Aus ProgrammingWiki

Wechseln zu: Navigation, Suche

Loading


POSTsches Korrespondenzproblem

Aufgabe

Entwickeln Sie ein Scheme-Programm, das eine zugehörige Indexfolge mit den im Problem gegebenen Eigenschaften findet, falls eine solche Indexfolge existiert.


Lösung

Das POSTsche Korrespondenzproblem lautet:

Gegeben ist eine endliche Liste von Paaren mit A ist ein beliebiges Alphabet.

Gesucht ist eine (endliche) Indexliste , mit und , sodass steht für die bekannte Verkettungsoperation in .

Für einfache Beispiele kann man Lösungen durch probieren herstellen. Aber für große Indexlistes muss man systematisch suchen. Auf dieser Seite soll die Lösung des Problems mittels Breitensuche dargestellt werden.

Die Tiefensuche eignet sich nicht, da in diesem Fall die Indexliste nur aus unendlich vielen Einsen bestehen würde: . Mit der Breitensuche hingegen, werden alle Indexlisten einer Größe gebildet und geprüft, d.h. alle mit Länge 3, dann mit Läünge 4, usw. .

Dazu werden in jedem Iterationsschritt alle Folgeglieder gebildet und an eine "TODO-Liste" angehängt. Diese Liste enthält die gesuchten Indexlisten. Von der "TODO-Liste" wird das erste Element entnommen und auf die Richtigkeit geprüft. Ist die Indexliste korrekt, dann ist die Suche beendet. Andernfalls muss das nächste Element hinzugezogen werden.

Wenn allerdings keine Lösung existiert, dann terminiert der Algorithmus nicht. Somit ist das POSTsche Korrespondenzproblem nicht entscheidbar. Es ist semi-entscheidbar.


Zunächst wird die Paarliste gesetzt und dann die Prozedur aufgerufen und mit dem erwarteten Ergebnis verglichen.

Ein weiteres Beispiel:

Bei dieser Paar-Liste dauert die Suche sehr lang, da die resultierende Indexliste 66 Elementen enthält. Auch mit dem Branch ("Schranke") wo unnötige Zweige nicht weiter verfolgt werden benötigt die Suche eine lange Zeit.

Persönliche Werkzeuge