BuK/IIm19/Ausarbeitungen Lüpke/Brainstorming
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Python</language>
== Prinzipiell Unlösbares (für Computer) ==
=== (Für Computer) unzugängliches ===
* Einschätzung eines sich spontan ändernden Systems
* Subjektive Wertveränderungen einordnen
=== Praktisch Unmögliches ===
* eindeutige Vorhersage zur Endlichkeit und ggf. zum Endzustand eines unbekannten, nicht-deterministischen Automaten
== Abzählbarkeit ==
Wenn $\mathbb{R}$ überabzählbar unendlich wäre, dann müsste man in der Lage sein, für $x, y \in \mathbb{R}$, mit $x < y$ eine Funktion $f$ zu definieren, für die *immer* $x < f(x) < y$ gilt. Anders gesagt: $y$ ist indirekter Nachfolger von $x$. Wenn es eine Funktion gibt, die unendlich viele indirekte Nachfolger von x produziert, die gleichzeitig indirekte Vorgänger von y sind, dann ist die Überabzählbarkeit gezeigt, da $y$ nie "erreicht" wird.
== Schachcomputer ==
Einen leistungsfähigen Schachautomaten zu schreiben ist deshalb keine leichte Aufgabe, weil die Zugfolgen des (Menschlichen) Gegenspielers nicht deterministisch sind, ein Schachcomputer jedoch viele Zugfolgen voraus errechnen und diese demzufolge alle durchspielen muss, bevor die nächsten sinnvollen Züge geplant werden können. Beispielüberschlagsrechnung: im schlimmsten Fall könnten alle 16 der gegnerischen Figuren potenziell bewegt werden, mit rund 3 verschiedenen Möglichkeiten der Zuggestaltung pro Figur. Wollte man 10 Züge voraus rechnen, ergäben sich etwa <math>(16 \cdot 3)^{10} = 64.925.062.108.545.024</math> gegnerische Züge, mit im schlimmsten Fall ebenfalls <math>64.925.062.108.545.024</math> möglichen Antworten mit den eigenen Figuren. Ganz so dramatisch ist es mit einer tatsächlichen Schachpartie wohl nicht, dennoch wird für außergewöhnliche Leistung auf fortgeschrittene Konzepte, wie z.B. Deep-Learning oder Reinforcement-Learning, möglicherweise mit eingebauter, künstlicher spontanität (Pseudozufallsaktionen) zurückgegriffen.
<language>Python</language>
<language>Python</language>
<language>Python</language>
= Übungen zur absoluten Unlösbarkeit =
<code id="5e7b185152401">
def f(n):
return 1 if n == 1 else f(n/2)+1 if n % 2 == 0 else 1/f(n-1)
def f_memo(n, d):
if n == 1:
return 1
elif n%2 == 0:
result = 0
if str(n/2) in d:
result = d[str(n/2)] + 1
else :
result = f_memo(n/2, d) + 1
d[str(n)] = result
return result
else :
if str(n-1) in d:
result = 1/d[str(n-1)]
else :
result = 1/f_memo(n-1, d)
d[str(n)] = result
return result
</code>
<run id="5e7b18515247a">
print('===Without memoizing===')
print(f(1))
print(f(2))
print(f(3))
print(f(4))
print(f(5))
print(f(6))
print(f(7))
print('===With memoizing===')
print(f_memo(1, {}))
print(f_memo(2, {}))
print(f_memo(3, {}))
print(f_memo(4, {}))
print(f_memo(5, {}))
print(f_memo(6, {}))
print(f_memo(7, {}))
</run>