forschungstage-2023/jupyter/Untitled.ipynb
Dominic Zimmer 5f5e96c0cf Update
2023-06-05 18:09:23 +02:00

806 lines
41 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "5cd9ffa9",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# The Art of Memory Loss\n",
"### and the Art of Memory Loss and [...]\n",
"#### by Dominic Zimmer"
]
},
{
"cell_type": "markdown",
"id": "4cb168bd",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"<div class=\"alert alert-info\">\n",
"“Die Kunst des Gedächtnisverlustes beschäftigt sich damit, trotz großer Vergesslichkeit auf lange Sicht stets die Richtigen Antworten zu wissen.”\n",
" \n",
"— *Irgendjemand, Saarbrücken 2023*\n",
"</div>"
]
},
{
"cell_type": "markdown",
"id": "5384b59e",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"<div class=\"img-row\">\n",
"<img src=\"https://cdn-icons-png.flaticon.com/256/2491/2491325.png\" />\n",
"<img src=\"https://cdn-icons-png.flaticon.com/512/3997/3997691.png\"/>\n",
"<img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/5/53/Google_%22G%22_Logo.svg/2008px-Google_%22G%22_Logo.svg.png\" />\n",
"<img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/0/04/ChatGPT_logo.svg/1024px-ChatGPT_logo.svg.png\" />\n",
"<img src=\"https://static.vecteezy.com/system/resources/previews/023/636/525/original/3d-rendering-radiation-icons-sign-caution-danger-symbol-free-png.png\" />\n",
"<img src=\"https://thegraphicsfairy.com/wp-content/uploads/2016/07/Frog-Drawing-Green-3-GraphicsFairy.jpg\" />\n",
"</div>"
]
},
{
"cell_type": "markdown",
"id": "ffc10d60",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Frösche, Wetten, Wetter und Wetterfrösche\n",
"motivierendes bildchen"
]
},
{
"cell_type": "markdown",
"id": "ab8003a9",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"TODO: 2-state beispiel\n",
"\n",
"```mermaid\n",
"stateDiagram-v2\n",
" direction lr\n",
" l --> r: p\n",
" l --> l: 1-p\n",
" r --> r: 1-q\n",
" r --> l: q\n",
"```"
]
},
{
"cell_type": "markdown",
"id": "43e49851",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Frösche\n",
"\n",
"<div class=\"alert alert-info\">\n",
" \n",
"- ein Frosch sitzt auf einer von zwei Seerosen $S = \\{l, r\\}$\n",
"- mit $p$ hüpft er von $l$ nach $r$\n",
"- mit $q$ hüpft er von $r$ nach $l$\n",
"- mit $1-p$ bzw $1-q$ bleibt er sitzen\n",
"- er beginnt auf $s_0 = l$\n",
" \n",
"</div>"
]
},
{
"cell_type": "markdown",
"id": "25a3f2ca",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"<div class=\"alert alert-success\">\n",
" \n",
"Wie oft ist der Frosch im Schnitt in $l$, wie oft in $r$?\n",
"\n",
"</div>"
]
},
{
"cell_type": "markdown",
"id": "feb11fcd",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Frösche Simulieren"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "f8a3a4d9",
"metadata": {
"hideCode": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"import numpy as np\n",
"uniform = np.random.random # Zufall in [0, 1]\n",
"# Kein numpy? -> from random import random as uniform\n",
"\n",
"p = 0.6 # von l nach r\n",
"q = 0.2 # von r nach l\n",
"N = 100_000 # Simulationen\n",
"\n",
"# Los geht's!"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "41017b8e",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"100000/100000\n",
" 0.2495 of the time at 0 (24945 total)\n",
" 0.7506 of the time at 1 (75055 total)\n"
]
}
],
"source": [
"visits = [0, 0]\n",
"cur = 0\n",
"for i in range(N):\n",
" if cur == 0:\n",
" if uniform() < p:\n",
" cur = 1\n",
" visits[1] += 1\n",
" else:\n",
" visits[0] += 1\n",
" elif cur == 1:\n",
" if uniform() < q:\n",
" cur = 0\n",
" visits[0] += 1\n",
" else:\n",
" visits[1] += 1\n",
"n = sum(visits)\n",
"print(f\"{n}/{N}\")\n",
"print(f\" {visits[0]/n:.4f} of the time at 0 ({visits[0]} total)\")\n",
"print(f\" {visits[1]/n:.4f} of the time at 1 ({visits[1]} total)\")\n"
]
},
{
"cell_type": "markdown",
"id": "ca2c3139",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"<div class=\"alert alert-warning\">\n",
"\n",
"**Warum** ist der Frosch im Schnitt 25% in $l$ und 75% in $r$?\n",
"\n",
"</div>"
]
},
{
"cell_type": "markdown",
"id": "3840a6f7",
"metadata": {
"slideshow": {
"slide_type": "subslide"
},
"tags": [
"hide_cell"
]
},
"source": [
"## Frösche Analysieren\n",
"\n",
"<div class=\"alert alert-info\">\n",
" \n",
"Die Wahrscheinlichkeiten für Wechsel sind\n",
" \n",
"$P(l \\to r) = p$ und $P(r \\to l) = q$\n",
"\n",
"</div>"
]
},
{
"cell_type": "markdown",
"id": "5bf90648",
"metadata": {
"slideshow": {
"slide_type": "fragment"
},
"tags": [
"hide_cell"
]
},
"source": [
"<div class=\"alert alert-success\">\n",
"\n",
"Wie können wir $P(\\text{Frosch links})$ für große $t$ vorraussagen?\n",
" \n",
"</div>"
]
},
{
"cell_type": "markdown",
"id": "57a24526",
"metadata": {
"slideshow": {
"slide_type": "fragment"
},
"tags": [
"hide_cell"
]
},
"source": [
"\n",
"| $t$ | $P(\\text{ Frosch links zu }t)$ | $P(\\text{ Frosch rechts zu }t)$ |\n",
"| -------- | -------- | -------- |\n",
"| $0$ | <span>$1$</span> | <span>$0$</span> |"
]
},
{
"cell_type": "markdown",
"id": "74e64a9a",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Frösche Analysieren\n",
"\n",
"<div class=\"alert alert-info\">\n",
" \n",
"Die Wahrscheinlichkeiten für Wechsel sind $P(l \\to r) = p$ und $P(r \\to l) = q$\n",
"\n",
"</div>\n",
"\n",
"<div class=\"alert alert-success\">\n",
"\n",
"Wie können wir $P(\\text{Frosch links})$ für große $t$ vorraussagen?\n",
" \n",
"</div>\n",
"\n",
"| $t$ | $P(\\text{ Frosch links zu }t)$ | $P(\\text{ Frosch rechts zu }t)$ |\n",
"| -------- | -------- | -------- |\n",
"| $0$ | <span>$1$</span> | <span>$0$</span> |\n",
"| <span>$1$</span> | <span>$1-p$</span> | <span>$p$</span> |\n",
"| <span>$2$</span> | <span>$(1-p)^2 + pq$</span> | <span>$p(1-p) + p(1-q)$</span>|"
]
},
{
"cell_type": "markdown",
"id": "bce42c67",
"metadata": {
"slideshow": {
"slide_type": "fragment"
},
"tags": [
"hide_cell"
]
},
"source": [
"<div class=\"alert alert-info\">\n",
"\n",
"$$\n",
"\\begin{align*}\n",
"P_{t+1}(\\text{Frosch links}) &= P_t(\\text{Frosch links}) \\cdot P(l \\to l) \\\\\n",
"& + P_t(\\text{Frosch rechts}) \\cdot P(r \\to l)\\\\\n",
"P_{t+1}(\\text{Frosch rechts}) &= P_t(\\text{Frosch rechts}) \\cdot P(r \\to r) \\\\\n",
"&+ P_t(\\text{Frosch links}) \\cdot P(l \\to r)\n",
"\\end{align*}\n",
"$$\n",
" \n",
"</div>"
]
},
{
"cell_type": "markdown",
"id": "d33a0be9",
"metadata": {
"slideshow": {
"slide_type": "subslide"
},
"tags": [
"hide_cell"
]
},
"source": [
"## Frösche Analysieren\n",
"\n",
"Unser Experiment zeigt für große $t$:\n",
"$$\n",
" P_{t-2}(\\text{Frosch links}) \\approx P_{t-1}(\\text{Frosch links}) \\approx P_{t}(\\text{Frosch links}) \\approx \\dots L\n",
"$$\n",
"\n",
"<div class=\"alert alert-info\">\n",
"\n",
"$$\n",
"\\begin{align*}\n",
"P_{t+1}(\\text{Frosch links}) &= P_t(\\text{Frosch links}) \\cdot P(l \\to l) \\\\\n",
"& + P_t(\\text{Frosch rechts}) \\cdot P(r \\to l)\\\\\n",
"P_{t+1}(\\text{Frosch rechts}) &= P_t(\\text{Frosch rechts}) \\cdot P(r \\to r) \\\\\n",
"&+ P_t(\\text{Frosch links}) \\cdot P(l \\to r)\n",
"\\end{align*}\n",
"$$\n",
" \n",
"</div>"
]
},
{
"cell_type": "markdown",
"id": "85a20830",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"## Frösche Analysieren\n",
"\n",
"Unser Experiment zeigt für große $t$:\n",
"$$\n",
" P_{t-2}(\\text{Frosch links}) \\approx P_{t-1}(\\text{Frosch links}) \\approx P_{t}(\\text{Frosch links}) \\approx \\dots L\n",
"$$\n",
"<div class=\"alert alert-info\">\n",
"\n",
"$$\n",
"\\begin{align*}\n",
"L &= L \\cdot P(l \\to l) + R \\cdot P(r \\to l)\\\\\n",
"R &= R \\cdot P(r \\to r) + L \\cdot P(l \\to r)\\\\\n",
"1 &= L + R\n",
"\\end{align*}\n",
"$$\n",
" \n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"id": "cfa9063c",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"$$\n",
"\\begin{align*}\n",
"L &= \\frac{q}{p+q} = 25\\% \\\\\n",
"R &= \\frac{p}{p+q} = 75\\%\n",
"\\end{align*}\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "74f18541",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Mathematik und Gedächtnisverlust"
]
},
{
"cell_type": "markdown",
"id": "6af0597d",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"<div class=\"alert alert-info\">\n",
" \n",
"**Definition** *(Gedächtnislosigkeit)*\n",
"\n",
"Ein Prozess ist *gedächtnislos*, wenn zu jedem Zeitpunkt seine Entscheidung nur vom aktuellen Zustand abhängt, nicht aber von dem Weg, wie der aktuelle Zustand erreicht wurde.\n",
"</div>"
]
},
{
"cell_type": "markdown",
"id": "b4507aa2",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"<div class=\"alert alert-success\">\n",
" \n",
"**Beobachtung**\n",
"\n",
"Das Verhalten der Frösche ist gedächtnislos. Die Aktionen des Frosches und deren Wahrscheinlichkeiten $p$ und $1-p$ (bzw $q$ und $1-q$) hängen nur von der aktuellen Seerose ab. \n",
"</div>"
]
},
{
"cell_type": "markdown",
"id": "90451df9",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"# Frösche — Formell"
]
},
{
"cell_type": "markdown",
"id": "40c3b0b5",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"> Der Frosch kann auf der linken oder rechten Seerose sitzen.\n",
"\n",
"Wir modellieren die beiden Seerosen als die zwei Zustände $S = \\{L, R\\}$."
]
},
{
"cell_type": "markdown",
"id": "a034c732",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"> Zufällig hüpft er zwischen den Seerosen hin und her\n",
"\n",
"Die Zufallsvariable $X_t$ beschreibt wo der Frosch zum Zeitpunkt $t$ ist."
]
},
{
"cell_type": "markdown",
"id": "47b022ef",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Wir könnten zum Beispiel beobachten, dass\n",
"\n",
"$$\n",
"\\dots \\quad X_3 = L \\quad X_4 = L \\quad X_5 = R \\quad X_6 = L \\quad \\dots\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "1bea4ee3",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"> Am Anfang sitzt der Frosch auf der linken Seerose.\n",
"\n",
"Die Wahrscheinlichkeit $P(X_0 = L) = 1$.\n",
"\n",
"Analog ergibt sich $P(X_0 = R) = 0$."
]
},
{
"cell_type": "markdown",
"id": "12dde881",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"> Der Frosch hüpft mit Wahrscheinlichkeit $p$ von links nach rechts\n",
"\n",
"Die Übergangswahrscheinlichkeit, dass der Frosch zum Zeitpunkt $t-1$ in $L$, und zum Zeitpunkt $t$ in $R$ ist, ist $p$.\n",
"\n",
"$$\n",
"\\begin{align*}\n",
"&\\phantom{==}\\color{gray}{P(X_t = R \\mid X_{t-1} = L, X_{t-2} = L)}\\\\ \n",
"&=\\color{gray}{P(X_t = R \\mid X_{t-1} = L, X_{t-2} = R)}\\\\ \n",
"&= P(X_t = R \\mid X_{t-1} = L) \\\\&= p\n",
"\\end{align*}\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "7ded753c",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Da die Übergangswahrscheinlichkeiten zum Zeitpunkt $t$ nur von $X_t$ abhängen, schreiben wir kurzerhand\n",
"\n",
"$$\n",
"P(X_t = R | X_{t-1} = L) = P(L \\to R) = m_{L R}\n",
"$$"
]
},
{
"attachments": {
"image.png": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkYAAAEnCAIAAADD/xtZAAAAA3NCSVQICAjb4U/gAAAgAElEQVR4Ae2dZ8AURbaGd6+rrrgGxDUjiJgRcwARs6goKIqIomJOoGJCMaBgQgXBAKKoSDBgVjBiAHMEFUQFs4ARI7qK7t5nt+6eW8xMz/TM9Mx097z8+Ojprq7wVHWdCuec+tO/9E8EREAEREAEUkHgT6kohQohAiIgAiIgAv+SSFMjEAEREAERSAkBibSUVKSKIQIiIAIiIJGmNiACIiACIpASAhJpKalIFUMEREAEREAiTW1ABERABEQgJQQk0lJSkSqGCIiACIiARJragAiIgAiIQEoISKSlpCJVDBEQAREQAYk0tQEREAEREIGUEJBIS0lFqhgiIAIiIAISaWoDIiACIiACKSEgkZaSilQxREAEREAEJNLUBkRABERABFJCQCItJRWpYoiACIiACEikqQ2IgAiIgAikhIBEWkoqUsUQAREQARGQSFMbEAEREAERSAkBibSUVKSKIQIiIAIiIJGmNiACIiACIpASAhJpKalIFUMEREAEREAiTW1ABERABEQgJQQk0lJSkSqGCIiACIiARJragAiIgAiIQEoISKSlpCJVDBEQAREQAYk0tQEREAEREIGUEJBIS0lFqhgiIAIiIAISaWoDIiACIiACKSEgkZaSilQxREAEREAEJNLUBkRABERABFJCQCItJRWpYoiACIiACEikqQ2IgAiIgAikhIBEWkoqUsUQAREQARGQSFMbEAEREAERSAkBibSUVKSKIQIiIAIiIJGmNiACIiACIpASAhJpKalIFUMEREAEREAiTW1ABERABEQgJQQk0lJSkSqGCIiACIiARJragAiIgAiIQEoISKSlpCJVDBEQAREQAYk0tQEREAEREIGUEJBIS0lFqhgiIAIiIAISaWoDIiACIiACKSEgkZaSilQxREAEREAEJNLUBkRABERABFJCQCItJRWpYoiACIiACEikqQ2IgAiIgAikhIBEWkoqUsUQAREQARGQSFMbEAEREAERSAkBibSUVKSKIQIiIAIiIJGmNiACIiACIpASAhJpKalIFUMEREAEREAiTW1ABERABEQgJQQk0qKsyH/+859DhgzZZJNNFl100cUXX/zYY4+NMnbFJQIiIAIikJeARFpePMU8vO6665Zeeuk/LfzvnnvuKSYOhRUBERABESidgERa6ezszbfeeqtp06ZOlrVq1eqGG2749ddfl19+ee7ccccdFkwXIiACIiACFSUgkRYB3q222grp1aJFiw8++MBF99VXXy2yyCLcnDp1agQJKAoREAEREIEQBCTSQkAqFGSHHXa46qqr/FDcQZ41b97cv6lrERABERCBihKQSIse74QJE5Bn/MuQc9GnpBhFQAREQAQ8AhJpHowoLt9+++3FFlsMebb22mtHEZ/iqAGBGTNm3HbbbYMHDz7nnHP69u07Z86cGmRCSYqACBRPQCKteGbBb8yePXvJJZdEni2xxBJz584NDqgnMSLwww8/PPnkkyeddNLmm2/eqFGjP//5z/+eYi/875BDDolRjpUVERCBAAISaQFgir89ZcqUBg0a0BOiGPLSSy8VH4HeqB6BBQsWPPHEE+3atVt22WUXFl6Bv0488cTq5U8piYAIlERAIq0kbAu/9OOPP+69996uL/yf//mfxx57bOHn+hUvAjNnznSLw9nii/vMsLlPPbZv375Lly4bbrihC8b8O17FUG5EQASyCEikZSEJfYNhfps2bZo1a/aXv/zF9Xqrrbba+++/HzoCBawNgQMPPNDVF05eVlxxxZ122okNs3Hjxn333XdkyM3bGjdubJlbaqmlXPgvvvjCbupCBEQghgTqUaT98ssvRx99dL9+/Uqoj3nz5n3yySfuRRu/09/h/urUU0/FIVYJceqVKhO47LLLGIg888wz2ematupZZ51lT5dbbjkn0r7++mu7qQsREIEYEqg7kYYym02q7r777vBVgosQlBjZJ2NJ6tZbb+XF559/vlevXn/729/o79AvCB+VQsaWQNeuXZ30mjRpksvkH3/84azmURvhOrY5V8ZEQAQgUHcirWXLlq7P4i/TrDCNAHHlv7X66qt///339iI6ckTVp08fu6OL5BJg6dg1j3/84x+uFP3793d3WKJMbrmUcxGoEwL1JdLY6HLdk/vLrkn+av7888/btm1rr7D10qNHj4yh+pprrkmAgw46KH9UepoIAn/961+pTTRXXW6nT5/upmjcHDRoUCKKoEyKQD0TqC+R1rlzZyef2PriIv9SEn4afQ3vnXfeOafqxyqrrEJU6623Xj03o3SUna1QZ5S20korUaIvv/zSjlbACXU6yqhSiEC6CdSXSHP62UggFg+dbDNHw9nVjHobqm4M0tdff/2cwsy9gtIjUREmOwbdSRaBadOmuVax2WabMUE3RUfawKeffpqssii3IlCfBOpIpI0ePdp1WMizbbfd1l2jup2n4pFq/MsTgEfdunUjKrq//MH0NP4Exo4d61oFJwSxyOyukWePPvpo/DOvHIqACECgjkSaHWl2yy23oMTvOixUFstsB2iEExVqkNgGlBmVXq8tAVuXdm2DvyjHjho1qra5UuoiIALhCdSLSMOYzG2TsPYInTFjxrhui+laeFg5Q+Kn2EUlv/s5+STlJjZn/tapk2eTJ09OSv6VTxEQAQjUi0jr2LGjEzy4OKLYH374ofvZpEmT8tuB0xBBlUATtfJhVjmGjz/+GAMM1FbdiMe1Cv5us802Bdecq5xVJScCIlCQQF2INMzInCo23RbuP4Bium349CvIqGCAYcOGua6Qi4KBFSA+BFh/zpBk1CN3VI/xqSPlRASKIlAXIm2fffZxIsdfZmzYsKG7+e233zo5VxS4jMDnnXfeGmus8cILL2Tc18/YEmBY4zy/uGbAbqi7WHfddWObZ2VMBEQgP4H0izQkluutGH1jOWs4OBzLdWFXXHHFyy+/bPd1UT8EsM04//zzhwwZcs899xx77LGuPcgRTP00AJU0fQTSL9Kc3Ri9FbbSfv0NGDDAdWFspz311FP+I13XIYEWLVq49oB4q8Piq8gikA4CKRdpL774ouunmKLhDMKvMw45s0c9e/b0H+m6Dgk4QzQm9JwOWofFV5FFIB0EUi7S8GPk5BYmR9kVxq6JeyqPtNlw6urO7NmzXUuQ46u6qncVNn0E0izSLrzwQtdPMQD/9ddfsyvPvEXgTT/7qe7UDwFsCl1T2Xrrreun1CqpCKSPQGpFGuNuOxdt6NChQTWHu2H6MlQigwLofj0Q2GKLLZxIGzhwYD2UV2UUgbQSSKdI+/33380xcevWrfNUHsdiTZ06lfB5wuhR6gnYudV4K059YVVAEUgxgRSKtH79+mFA7QbdHH9VzU4KfxOfffYZMjLFLSaVRWvcuDENBi8wqSydCiUC9UMghSINuyInz9hCe/zxxytal3jA4tTjZs2amRB1SaNlcOmll1Y0aUUeIYHhw4ejxD9x4sQI41RUIiAC1SeQQpEGxOeee+6YY47JcxZa+aBfffVVd561k2E5/5544onlJ6QYREAEREAEQhJIp0gLWfjSgv3000+mTZAtycyvknukuVppkPWWCIiACJRAQCKtOGjPP/98xhojRtwrr7zy8ccf/9BDDzlP/MwRGzRo4EQai5/FJaDQIiACIiACpRKQSCuCHK4g/UkY1yeddBI6k9lRPPLIIzaBu/fee7MD6I4IiIAIiEDkBCTSwiKdM2eOGbohrjbddFNcauV5eckll3RSbYcddsgTTI9EQAREQASiIiCRFookB5H8/e9/t4kX52wVfA1J5sLL21ZBVgogAiIQLQEWkDBhwi4lw7dttKnEMDaJtFCV0qNHD5Nn3bp1C/OOueNi7y1MeIURAREQgUgInHzyydZf1dsqkURa4SaEsbZtoTVv3rzwC/8JwYE1rlWhPxLyFQUTAREQgfIJLL744ibSOOe2/AgTFINEWuHKateunQmnjz76qPAL/wlBSGtVcrgVEpqCiYAIlElg8uTJ1vNwgbO3MiNM1usSaQXqi5VoplmuiRx44IEFQnuPv/rqK2tY33zzjfdElyIgAiJQKQIbb7yx9Txc4BGiUinFMl6JtALVgiaIax+oOzqzswIv/PcxMzNrWO+8885/b+t/ERABEagUgW+//daG4K7/2X777UtL7Icffrj44os5bmn33Xc/6qijKuqMqbQc5nxLIi0nlv+/aUbTHTt2/P+7Ia6QfybSMAAI8YaCiIAIiEBZBA477DDrdtzFkUceWUKMr7/++rLLLpsRFdty48aNKyG2ar4ikZaP9o033miV+t577+ULmvWMQY29iw+trOe6IQIiIAJREuCgY9921vU/CKdi0/j000+djyTU4jbYYINtttlm1VVXtd5sp512irNygERavurebLPNXEWus846+cLlenbNNde4d2lkuZ7rXuwIfPfddxzdMGHChOuuu47R7llnnbXddtvtueee66+/PkfFcgIfns+aNGmCoSFu+9F9Pfzww1mQueuuu8aPH6+JeOyqs/4ydO6557o+x9YekUklYFhttdWIB2d+r7zyir3OtQk2+sM//vjDHsXqQiItsDoYidiQh8NHAsMFPOjSpYtrXksvvXRAEN2uDYFZs2Y99thjY8aM2W+//Ri1bLvttrh6MTsNV2sl/CUG1mowA+rcufMtt9xy2223sRtRmxIq1fojQH+1xBJLuHZrrotatmxZLIm33nrLRTJy5MiMdwcPHky3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VV3KrAiIgAiIQDABibRgNnoiAiIgAiKQKAISaYmqLmVWBERABEQgmIBEWjAbPREBERABEUgUAYm0RFWXMisCIiACIhBMQCItmI2eiIAIiIAIJIqARFqiqkuZFQEREAERCCYgkRbMRk9EQAREQAQSRUAiLVHVpcyKgAiIgAgEE5BIC2ajJyIgAiIgAokiIJGWqOpSZkVABERABIIJSKQFs9ETERABERCBRBGQSEtUdSmzIiACIiACwQQk0oLZ6IkIiIAIiECiCEikJaq6lFkREAEREIFgAhJpwWz0RAREQAREIFEEJNISVV3KrAiIgAiIQDABibRgNnoiAiIgnsh3QwAAAa5JREFUAiKQKAISaYmqLmVWBERABEQgmIBEWjAbPREBERABEUgUAYm0RFWXMisCIiACIhBMQCItmI2eiIAIiIAIJIqARFqiqkuZFQEREAERCCYgkRbMRk9EQAREQAQSRUAiLVHVpcyKgAiIgAgEE5BIC2ajJyIgAiIgAokiIJGWqOpSZkVABERABIIJSKQFs9ETERABERCBRBGQSEtUdSmzIiACIiACwQQk0oLZ6IkIiIAIiECiCEikJaq6lFkREAEREIFgAhJpwWz0RAREQAREIFEEJNISVV3KrAiIgAiIQDABibRgNnoiAiIgAiKQKAISaYmqLmVWBERABEQgmIBEWjAbPREBERABEUgUAYm0RFWXMisCIiACIhBMQCItmI2eiIAIiIAIJIqARFqiqkuZFQEREAERCCYgkRbMRk9EQAREQAQSRUAiLVHVpcyKgAiIgAgEE5BIC2ajJyIgAiIgAokiIJGWqOpSZkVABERABIIJSKQFs9ETERABERCBRBGQSEtUdSmzIiACIiACwQQk0oLZ6IkIiIAIiECiCEikJaq6lFkREAEREIFgAv8Ls3MCrNtnV1IAAAAASUVORK5CYII="
}
},
"cell_type": "markdown",
"id": "0c8c91ad",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Wir können alle Übergangswahrscheinlichkeiten $P(s \\to s')$ elegant als Matrix $M$ notieren:\n",
"\n",
"$$\n",
"M = \n",
"\\begin{pmatrix} m_{LL} & m_{LR} \\\\ m_{RL} & m_{RR}\n",
"\\end{pmatrix} = \n",
"\\begin{pmatrix} 1 - p & p \\\\ q & 1-q\n",
"\\end{pmatrix}\n",
"$$\n",
"\n",
"![image.png](attachment:image.png)"
]
},
{
"cell_type": "markdown",
"id": "bb0c420e",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"source": [
"Wir können die Wahrscheinlichkeiten, dass der Frosch zum Zeitpunkt $t$ in $L$ oder $R$ ist, als Vektoren schreiben.\n",
"\n",
"$$\n",
"X_0 = \\begin{pmatrix}1 \\\\ 0\\end{pmatrix}\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "0cbd4273",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Ein Zeitschritt $t=0 \\to t=1$ verändert die Verteilung gemäß $M$:\n",
"\n",
"$$\n",
"X_0 = \\begin{pmatrix}1 \\\\ 0\\end{pmatrix} \\to \\begin{pmatrix}1-p \\\\ p \\end{pmatrix} = X_1\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "e7fd32c7",
"metadata": {},
"source": [
"- die Berechnung von ganzfrüh aus der Tabelle nenen wir Matrixmultiplikation.\n",
"- MM captures the idea that \"\n",
"- denn, wir können Lineare Algebra machen. $v_0^T\\cdot{}M = v_1$"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "9d30de72",
"metadata": {
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"ename": "SyntaxError",
"evalue": "invalid syntax (2451516634.py, line 3)",
"output_type": "error",
"traceback": [
"\u001b[0;36m Cell \u001b[0;32mIn[4], line 3\u001b[0;36m\u001b[0m\n\u001b[0;31m :::info\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n"
]
}
],
"source": [
"\n",
"## Frösche brauchen Zufall\n",
"\n",
":::info\n",
"Viele Leute werfen Münzen in den Teich der Frösche. Wir sollen einen Frosch aussuchen, der der neue Schatzmeister werden soll. Wie können wir aus den 7 Fröschen **fair** einen auswählen?\n",
":::\n",
"\n",
"**Bedingungen**:\n",
"- Jeder Frosch wird mit $\\frac{1}{7}$ ausgewählt\n",
"- Zufall nur durch die Münzen\n",
"\n",
"---\n",
"\n",
"## Frösche brauchen Zufall\n",
"\n",
"```mermaid\n",
"stateDiagram-v2\n",
" state \"&nbsp;\" as 0\n",
" state \"&nbsp;\" as 1\n",
" state \"&nbsp;\" as 2\n",
" state \"&nbsp;\" as 3\n",
" state \"&nbsp;\" as 4\n",
" state \"&nbsp;\" as 5\n",
" state \"&nbsp;\" as 6\n",
" state \"1\" as 7\n",
" state \"2\" as 8\n",
" state \"3\" as 9\n",
" state \"4\" as 10\n",
" state \"5\" as 11\n",
" state \"6\" as 12\n",
" state \"7\" as 13\n",
" state \"&nbsp;\" as 14\n",
" 0 --> 1: 0.5\n",
" 0 --> 2: 0.5\n",
" 1 --> 3: 0.5\n",
" 1 --> 4: 0.5\n",
" 2 --> 5: 0.5\n",
" 2 --> 6: 0.5\n",
" 3 --> 7: 0.5\n",
" 3 --> 8: 0.5\n",
" 4 --> 9: 0.5\n",
" 4 --> 10: 0.5\n",
" 4 --> 11: 0.5\n",
" 5 --> 12: 0.5\n",
" 6 --> 13: 0.5\n",
" 6 --> 14: 0.5\n",
" 14 --> 0: 1\n",
" 7 --> 7: 1\n",
" 8 --> 8: 1\n",
" 9 --> 9: 1\n",
" 10 --> 10: 1\n",
" 11 --> 11: 1\n",
" 12 --> 12: 1\n",
" 13 --> 13: 1\n",
"```\n",
"\n",
"---\n",
"\n",
"## Gedächtnisverlust\n",
"\n",
"- Der Frosch hüpft mit $p$ nach links und $q$ nach rechts\n",
"- Die Münze fällt gleichwahrscheinlich auf Kopf oder Zahl\n",
"\n",
"<div>\n",
" \n",
":::success\n",
"Die nächste Aktion hängt nur vom **aktuellen** Zustand ab.\n",
"Was davor geschah ist irrelevant.\n",
":::\n",
"</div> <!-- .element: class=\"fragment\" data-fragment-index=\"0\" -->\n",
"\n",
"---\n",
"\n",
"## Bissle Mathematik"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "1aa7ccc8",
"metadata": {
"hideCode": false,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"import matplotlib as mpl\n",
"import matplotlib.pyplot as plt\n",
"import networkx as nx\n",
"\n",
"seed = 13648 # Seed random number generators for reproducibility\n",
"G = nx.random_k_out_graph(10, 3, 0.5, seed=seed)\n",
"pos = nx.spring_layout(G, seed=seed)\n",
"\n",
"node_sizes = [3 + 10 * i for i in range(len(G))]\n",
"M = G.number_of_edges()\n",
"edge_colors = range(2, M + 2)\n",
"edge_alphas = [(5 + i) / (M + 4) for i in range(M)]\n",
"cmap = plt.cm.plasma\n",
"\n",
"nodes = nx.draw_networkx_nodes(G, pos, node_size=node_sizes, node_color=\"indigo\")\n",
"edges = nx.draw_networkx_edges(\n",
" G,\n",
" pos,\n",
" node_size=node_sizes,\n",
" arrowstyle=\"->\",\n",
" arrowsize=10,\n",
" edge_color=edge_colors,\n",
" edge_cmap=cmap,\n",
" width=2,\n",
") \n",
"# set alpha value for each edge\n",
"for i in range(M):\n",
" edges[i].set_alpha(edge_alphas[i])\n",
"\n",
"pc = mpl.collections.PatchCollection(edges, cmap=cmap)\n",
"pc.set_array(edge_colors)\n",
"\n",
"ax = plt.gca()\n",
"ax.set_axis_off()\n",
"plt.colorbar(pc, ax=ax)\n",
"plt.show()"
]
}
],
"metadata": {
"celltoolbar": "Slideshow",
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}