BuK/IIm20/Vorlesung 8 Seidl

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Python</language>
=== S. 4 ===
[[Bild:Fseidl_20210515_151715.jpg]]
[[Bild:Fseidl_20210515_151731.jpg]]

=== S. 11 ===
<code id="609fcbfe9c7ff">
import itertools

# A Generator
alphabet = ["a", "b", "c"]
def a(alphabet):
        for i in range(0, len(alphabet)+1):
            for word in itertools.product(alphabet, repeat=i):
                    yield word


def wort_index(buchstabe, wort):
    for i, w in enumerate(a(wort)):
        if len(w) != 1:
            continue
        if w[0] == buchstabe:
            return i

# Primzahl Generator

def primzahl_generator(n):
    while True:
        if ist_primzahl(n):
            yield n
        n += 1
 
def ist_primzahl(n):
    if n == 2:
        return True

    for i in range(2, n):
        if n % i == 0:
            return False 
    
    return True
    
# Gödelnummer

def get_goedelnummer(wort):
    elemente = []
    for i_b, buchstabe in enumerate(wort):
        primzahl = -1
        for i_p, p in enumerate(primzahl_generator(2)):
            primzahl = p
            if i_b == i_p:
                break
        xi = wort_index(buchstabe, wort)
        elemente.append(primzahl**xi)
    
    produkt = 1
    for faktor in elemente:
        produkt = faktor * produkt
    
    return produkt

# Reverse Gödelnummer (Holzhammer)

def wort_von_goedelnummer(n):
    for w in a(alphabet):
        goedelnummer = get_goedelnummer("".join(w))
        if goedelnummer == n:
            return "".join(w)
</code>

<run id="609fcbfe9c86d">
print(get_goedelnummer("aba"))
print(wort_von_goedelnummer(90))
</run>

=== S. 13 ===
Satz: f ist eine berechenbare Funktion genau dann, wenn h eine berechenbare Funktion ist.

Ausschroten:<br/>
kurz: h = G^−1 ◦ f ◦ G <br/>
ausgeschrieben: h = G^−1(f(G(w)))<br/>

G(w) gibt uns für ein Wort w die zugehörige Gödelnummer i<br/>
f(i) gibt uns für die Gödelnummer i des Wort w eine übertragene Gödelnummer j, welche auch die Gödelnummer des Wortes w' ist<br/>
G^-1(j) gibt uns das Wort w' aus der Gödelnummer von eben dieser (j)<br/>


kurz: f = G ◦ h ◦ G^−1<br/>
ausgeschrieben: f = G(h(G^-1(w'))<br/>

G^-1(w') gibt uns für ein Wort w' die zugehörige Gödelnummer j<br/>
h(j) gibt uns für die Gödelnummer j des Wort w' eine übertragene Gödelnummer i, welche auch die Gödelnummer des Wortes w ist<br/>
G(i) gibt uns das Wort w aus der Gödelnummer von eben dieser (i)<br/>


Bijunktion, <-><br/>

Versuch eines argumentativen Beweises:<br/>

Aus den Eigenschaften (VL 8, S. 4) der Gödelisierung geht hervor, dass G und G^-1 berechenbare Funktionen sind. Fraglich ist somit nur noch, ob f auch berechenbar ist. Bedingung dabei ist, dass f berechenbar ist, genau dann wenn h es auch ist. Mittels h können wir das Wort w' aus dem Wort w ermitteln. Dies ist sozusagen der kurze Berechnungsweg. Der lange Weg über die Gödelisierung geht mittels Funktion G und beinhaltet auch die Funktion f. Wenn wir also das Wort w' aus Wort w berechnen können, so ist auch Funktion f berechenbar, welche uns für die Gödelnummer des Wortes w die Gödelnummer des Wortes w' berechnet.