BuK/IIm11/Studenten/sijeheid/ue5
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
== Mathematik vs. Informatik ==
=== Aufgabe 1 ===
Defnieren Sie je eine totale Funktion für den Vorgänger und die Halbierung einer natürlichen Zahl. Defnieren Sie außerdem eine Funktion mit $ D_f = \N \setminus \{1234, 7266281\} $.
== Postsches Korrrespondenzprobelm PCP ==
=== Aufgabe 1 ===
Für K = ((001; 0)(01; 011); (01; 101); (10; 001)) gibt es eine Lösung. Die gesuchte Indexfolge heißt
(2 4 3 4 4 2 1 2 4 3 4 3 4 4 3 4 4 2 1 4 4 2 1 3 4 1 1 3 4 4 4 2 1 2 1 1 1 3 4 3 4 1 2 1 4 4 2 1 4 1 1 3 4 1 1 3 1 1 3 1 2 1 4 1 1 3)
Uberprüfen Sie die angegebene Lösung per Hand.
Lösung siehe Bild...
[[Bild:Sijeheid_2012-04-22-025.jpg]]
<language>Scheme</language>
=== Aufgabe 2 ===
Entwickeln Sie eine Scheme-Prozedur (ProgrammingWiki), die bei Aufruf für eine gegebene Instanz eine Lösung des PCP findet, falls eine solche existiert und der Rechenaufwand im Rahmen bleibt.
<code id="4f95745864a22">
(define erstelle-zeile
(lambda (ill len)
(letrec (
(helper
(lambda (liste len)
(if (> len 0)
(append (helper liste (- len 1)) (list (append liste (list len))))
'()
)
)
))
(if (null? ill)
'()
(append (list (car ill)) (helper (car ill) len) (erstelle-zeile (cdr ill) len))
)
)
)
)
(define erstelle-ill
(lambda (len depth)
(letrec (
(erstelle-initialliste (lambda (len)
(if (> len 0)
(append (erstelle-initialliste (- len 1)) (list (list len)))
'()
)
)
)
(helper (lambda (depth ill)
(if (> depth 0)
(erstelle-zeile (helper (- depth 1) ill) len)
(erstelle-zeile (erstelle-initialliste len) len)
)
)
))
(helper depth '())
)
)
)
(define get-item
(lambda (liste index)
(letrec
((helper (lambda (rl current-index)
(cond
((= current-index index) (car rl))
((null? rl) null)
(else (helper (cdr rl) (+ current-index 1)))
)
)
))
(helper liste 1)
)
)
)
(define pcp
(lambda (pairs depth)
(letrec
((erzeuge-wort (lambda (fn il)
(if (null? il)
""
(string-append (fn (get-item pairs (car il))) (erzeuge-wort fn (cdr il)))
)
))
(helper (lambda (reduced-ill)
(if (null? reduced-ill)
#f
(if (string=? (erzeuge-wort car (car reduced-ill)) (erzeuge-wort cadr (car reduced-ill)))
(car reduced-ill)
(helper (cdr reduced-ill))
)
)
)))
(helper (erstelle-ill (length pairs) depth))
)
)
)
</code>
<run id="4f95745864a91">
(pcp '(("1" "101") ("10" "00") ("011" "11")) 2)
</run>
== Turing-Maschine und Churchsche These ==
=== Turing-Maschine als Akzeptator ===
Geben Sie Trichterbilder für den Einsatz einer TM als Akzeptator an:
* für semi-entscheidbare Sprachen
* für entscheidbare Sprachen
=== Turing-Aufzählbarkeit, Turing-Entscheidbarkeit ===
Definierten Sie die Begriffe Turing-aufzählbar und Turing-entscheidbar analog zur Turing-Berechenbarkeit.