BuK/IIm20/Vorlesung 2 Lemke

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Python</language>
=== Übungsaufgabe 1 ===

== Unzugängliche Probleme ==

* soziale Konstrukte wie z.B. Dynamiken in einer Gesellschaft oder in einer Marktwirtschaft, aufgrund der Komplexität, Schwierigkeit der abstrakten Darstellung und Mangel an Information

== Praktisch unmöglich zu lösende Probleme ==

* Primfaktorzerlegung (Quantencomputer mit einer gewissen Anzahl an QBits könnten das Problem in Zukunft aber praktisch lösbar machen, allerdings sind wir noch lange nicht bei der Größenordnung an QBits angekommen, weshalb das Problem praktisch immer noch unmöglich zu lösen ist)

== Warum ist es so schwierig, ein leistungsfähiges Schachprogramm zu entwerfen? ==

Einfach aufgrund der immenns vielen Möglichkeiten, die es in jedem Spielzustand gibt. Man kann aber, wenn man nicht die perfekte Lösung haben will, eine hinreichend gute Lösung in akzeptabler Zeit erhalten, z.B. mit QLearning

<code id="605f6c78b5cfc">
def memoize(function):
    lookup_table = {}
    def helper(x):
        if x not in lookup_table:            
            lookup_table[x] = function(x)
        return lookup_table[x]
    return helper

@memoize
def recursive(n):
	if n == 1:
		return 1
	elif n % 2 == 0:
		return recursive((n/2)) + 1
	else:
		return 1 / recursive(n-1)

# Disclaimer: Does not seem to work for 4/3. Unsure, if bug in code or something to do with how Python handles floating point numbers.
@memoize
def inverse(n):
	if n == 1:
		return 1
	elif n < 1:
		return inverse(1/n) + 1
	else:
		return inverse(n-1) * 2
</code>
<run id="605f6c78b5dc0">print(recursive(8))</run>
<run id="605f6c78b5e0e">print(inverse(4))</run>