Gödelnummer
Eine Gödelnummer ist eine natürliche Zahl, die einem Wort einer formalen Sprache nach einem bestimmten Verfahren zugeordnet wird und dieses Wort eindeutig kennzeichnet. Ein solches Verfahren bezeichnet man als Gödelisierung. Die Bezeichnungen beziehen sich auf Kurt Gödel, der erstmals ein solches Verfahren angab, um seinen Unvollständigkeitssatz zu beweisen.
Formale Definition
Sei
die (abzählbare)
Menge der Wörter
einer formalen
Sprache. Eine Funktion
wird Gödelisierung genannt, wenn
injektiv und berechenbar,
- die Bildmenge
entscheidbar sowie
- die auf
definierte Umkehrfunktion von
berechenbar ist.
nennt man dann die Gödelnummer von
.
Beispiel
Angenommen, beliebige Wörter der formalen
Sprache ,
die auf dem Alphabet
basieren, sollen gödelisiert werden. Hier sei
.
Eine Möglichkeit der Kodierung wäre, den Buchstaben zunächst einfach
fortlaufende Nummern zuzuweisen. Ein a entspräche der 1, ein b der
2 und ein c der 3. Nun kann man gödelisieren, indem man die dem
Buchstaben entsprechenden Potenzen der fortlaufenden Primzahlen
miteinander multipliziert:
Das Wort abccba
- Das a an erster Stelle hat den Wert
- Das b an zweiter Stelle hat den Wert
- Das c an dritter Stelle hat den Wert
- Das c an vierter Stelle hat den Wert
- Das b an fünfter Stelle hat den Wert
- Das a an sechster Stelle hat den Wert
Die Gödelnummer für abccba in dieser Kodierung lautet also
Da es unendlich viele Primzahlen gibt, kann man auf diese Weise tatsächlich
beliebig lange Wörter kodieren und aufgrund der Eindeutigkeit der
Primfaktorzerlegung lässt sich etwa aus der Zahl 1213962750 wieder das Wort
abccba rekonstruieren. Es gibt zwar Zahlen, die keinem Wort der Sprache
entsprechen, beispielsweise
(kein erster Buchstabe) oder
(Alphabet
hat kein viertes Element). Aber zumindest lassen sich diese ungültigen Werte auf
berechenbare Weise von den gültigen unterscheiden.
Neben der hier gezeigten gibt es natürlich noch andere Methoden, eine Gödelisierung durchzuführen. Man könnte beispielsweise für die Nummerierung der Zeichen des Alphabets ebenfalls die Primzahlfolge verwenden. Das ist zwar grundsätzlich nicht nötig, erlaubt aber zusätzlich die Struktur von Termen (Formeln) mit zu kodieren.
Die im Buch (Douglas R. Hofstadter: Gödel, Escher, Bach. An Eternal Golden Braid. Basic Books, New York NY 1979, ISBN 0-465-02685-0.) von Douglas Hofstadter beschriebene Methode verwendet beispielsweise ein Stellenwertsystem mit der Basis 1000, was zwar sehr anschaulich ist, aber formal schwieriger zu handhaben ist als eine Methode, die wie die obige auf Primzahlpotenzen beruht. Das gilt erst recht für die im IT-Bereich verwendeten Codierungen – etwa Unicode-Codierungen wie UTF-7, mit denen man auch die Sonderzeichen abbilden kann. Diese ordnen einer Zeichenkette (String) eine Folge von Hexadezimal- bzw. Binärziffern zu, die man als Ganzes als eine Gödelnummer auffassen kann (das Nullbyte bedeutet üblicherweise Ende des Darstellungsstrings, daher sollte es keine Eindeutigkeitsprobleme wegen führender Nullen geben – ansonsten kann eine binäre 1 vorangestellt werden). Die Rekonstruktion der Zeichenfolge aus dieser Zahlendarstellung ist aufgrund der geforderten technischen Funktionalität gegeben.
Gödelisierung von zahlentheoretischen Aussagen
Aussagen der Zahlentheorie (oder auch anderer mathematischer Theorien) lassen
sich mit Hilfe eines endlichen Alphabets formulieren, dessen Elemente neben
Zeichen für Variablen auch gewisse mathematische und logische Symbole (etwa
,
,
,
,
,
)
umfasst. (Die abzählbar
unendlich vielen Variablen können als besonders gekennzeichnete Wörter des
endlichen Alphabets dargestellt werden.)
Auf diese Weise lassen sich also zahlentheoretische Aussagen (und sogar Beweise) in Zahlen übersetzen. Als Folge hiervon kann die Zahlentheorie, die ja Aussagen über Zahlen behandeln soll, auch Aussagen über zahlentheoretische Aussagen und Beweise behandeln. Diese Tatsache ist der Punkt, an dem Gödels Unvollständigkeitssatz ansetzt.
Gödelisierung von Turingmaschinen
Eine bekannte Anwendung der Gödelnummer ist die Kodierung einer Turingmaschine durch ein
Binärwort .
Auf diese Weise wird jeder Turingmaschine eine Zahl zugeordnet (d.h. die
Menge aller Turingmaschinen ist abzählbar). Diese Tatsache wird unter anderem im
Halteproblem ausgenutzt.
Beispiel
Natürlich lassen sich verschiedenste Konventionen für die Nummerierung vereinbaren. Im Folgenden soll der Vorgang an einem einfachen Beispiel gezeigt werden. Sei
eine Turingmaschine. Seien o.
B. d. A. die Zustandsmenge ,
sowie das Bandalphabet
durchnummeriert.
Wir codieren nun vorerst jeden Übergang
mit
durch ein Wort über dem Alphabet
.
Zustände bzw. Terminalsymbole werden durch die Binärdarstellung ihrer Indizes
dargestellt, die einzelnen Elemente werden mit
getrennt.
wobei
die Kopfbewegung darstellt (
).
Um uns auf das zweistellige Alphabet
beschränken zu können, führen wir eine Abbildung der Menge
auf
ein:
.
Die Turingmaschine mit der einzigen Produktion
wird so zu
.
Eine Alternative, die auf das Trennzeichen verzichtet, nutzt die Eindeutigkeit der Primfaktorzerlegung aus, um Tupel in einer Zahl codieren zu können.
Siehe auch



© biancahoegel.de
Datum der letzten Änderung: Jena, den: 29.08. 2021