BuK/IIm20/Vorlesung 8 Lemke

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Python</language>
== Übungsaufgabe S. 4 ==

=== Gödelisierungseigenschaften ===

[[Bild:Goedel_umkehr.jpg]]

=== Ableitung der 4. Eigenschaft aus den ersten 3 ===

[[Bild:Goedel_umkehr2.jpg]]

== Übungsaufgabe S. 11 ==

=== Prozeduren für G (Primzahlverschlüsselung) und $G^{−1} : G(A^∗) → A^∗$ ===

<code id="609fca277f7e4">
from math import pow
from itertools import product

ALPHABET = ['a', 'b', 'c']

def generate_words_with_length(length):
	return ["".join(x) for x in product(ALPHABET, repeat=length)]
			
def generate_wordset():
	length = 0
	while True:
		for w in generate_words_with_length(length):
			yield w
		length += 1
			
def is_prime(n):
	if n == 1:
		return False
	elif n == 2:
		return True
		
	for i in range(2, n):
		if n % i == 0:
			return False
	return True
	
def generate_prime_numbers():
	n = 2
	while True:
		if is_prime(n):
			yield n
		n += 1
			
def goedel_prime(word):
	result = 1
	primes = generate_prime_numbers()
	for l in word:
		p = next(primes)
		i = ALPHABET.index(l) + 1
		result *= pow(p, i)
	return int(result)
	
def goedel_prime_reverse(goedel_nr):
	for word in generate_wordset():
		if goedel_prime(word) == goedel_nr:
			return word
</code>

<run id="609fca277f861">
wordset = generate_wordset()
for i in range(25):
	w = next(wordset)
	g = goedel_prime(w)
	print('w =', w, 'G(w) =', g, 'G-1(G(w) =', goedel_prime_reverse(g))
</run>

== Übungsaufgabe S. 13 ==

=== f ist eine berechenbare Funktion genau dann, wenn h eine berechenbare Funktion ist ===

[[Bild:Beweis_f_h_berechenbar_aequivalenz.jpg]]

== Kreativaufgabe ==

=== Ist MU Teil der MIU-Sprache? ===

[[Bild:MIU-Grammatik.jpg]]

'''Toni: Aber warum muss das den ungerade sein?'''