Übungen zur Theoretischen Informatik Blatt 1 1) Es gibt verschiedene Möglichkeiten, eine natürliche Zahl n zu codieren. In der unären Codierung hat man nur ein Alphabet mit einem Zeichen – sagen wir der 1 – zur Verfügung und die Zahl n wird durch n aufeinanderfolgende 1’en dargestellt, also z. B. ist 11111 die Codierung der Zahl 5. Bei der binären Codierung wird (ähnlich wie bei der geläufigeren dekadischen Schreibweise) die Zahl n geschrieben als n = ak 2k +ak−1 2k−1 +. . .+a1 21 +a0 20 , wobei ai ∈ {0, 1} für i = 0, . . . , k und k geeignet gewählt ist - also wird hier die Zahl 5 als 101 eincodiert. a) Was sind die Binärcodierungen der Zahlen 13, 19, 22 und 37? b) Wie viele Bits werden zur Binärcodierung der Zahl n benötigt? 2) In der Vorlesung wurde eine Turing-Maschine mit den vier Zuständen z0 , z1 , z2 , ze vorgestellt, welche zu einer in Binärcodierung gegebenen natürlichen Zahl n die 1 addiert (Schöning, Seite 83). a) Was genau macht diese Turing-Maschine in den Zuständen z0 , z1 und z2 ? b) Geben Sie eine Turing-Maschine an, die bei Eingabe einer natürlichen Zahl n ≥ 1 in Binärcodierung die 1 von n subtrahiert. Ausgabe soll also n − 1 in Binärcodierung sein, wobei zu Beginn und Ende der Berechnung der Schreib-/Lesekopf am Anfang (also über dem am weitesten links stehenden Bit) der Ein- bzw. Ausgabe steht. 3) Geben Sie eine Turing–Maschine an, die eine in Binärcodierung gegebene natürliche Zahl n ≥ 1 mit der Zahl 2 multipliziert. Der Schreib–/Lesekopf soll sich zu Anfang und Ende der Berechnung jeweils auf dem ersten Bit (der größten Zweierpotenz zugeordnet) der Darstellung von n befinden. Beschreiben Sie kurz die Funktion der einzelnen Zustände. 4) Geben Sie eine Turing–Maschine an, die zwei natürliche Zahlen n und m addiert. Eingabe sind dabei die Zahlen n und m getrennt durch das Zeichen #. Ausgabe soll die Zahl n + m sein. Der Schreib–/Lesekopf soll dabei zu Beginn und Ende der Berechnung am Anfang (also über dem am weitesten links stehenden Zeichen) der Ein- bzw. Ausgabe stehen, wenn a) die Zahlen n und m in unärer Codierung vorliegen und das Arbeitsalphabet Γ = {1, #, Blank} ist, b) die Zahlen n und m in binärer Codierung vorliegen und das Arbeitsalphabet Γ = {0, 1, #, Blank} ist (Sie müssen hier die Turing–Maschinen nicht exakt angeben, sondern skizzieren, was bei der Wahl der Zustände zu beachten ist).