Last active
August 8, 2024 07:03
-
-
Save Per48edjes/870b4c13c49488c0abdce31a324f9f6f to your computer and use it in GitHub Desktop.
Fiddler on the Proof: Fiddler (06/28/2024)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"id": "6479454d-d434-4808-a73d-01255eed4844", | |
"metadata": {}, | |
"source": [ | |
"# Fiddler on the Proof\n", | |
"\n", | |
"Ravi Dayabhai & Conrad Warren 🧦 2024-06-28" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "52b23e3c-c3d9-4a10-87b0-8f3910e19419", | |
"metadata": { | |
"jp-MarkdownHeadingCollapsed": true | |
}, | |
"source": [ | |
"## Problem\n", | |
"\n", | |
"I have five distinct pairs of socks in my drawer, none of which is actually paired up. The room is pitch black, so I can’t see the color of any sock I’m pulling out. I reach into my drawer and randomly pull out one of the 10 socks. Then I reach in again and pull out one of the remaining nine. I can keep pulling out one sock at a time, at random, until I decide to stop at some point.\n", | |
"\n", | |
"My goal is to stop removing socks as soon as I have a matching pair among those I have drawn. How many socks should I draw to maximize the chances that the last sock I draw results in the first such pair?" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "eaa13279-6073-4c6d-8fa7-e57145e55b49", | |
"metadata": {}, | |
"source": [ | |
"## Solution\n", | |
"\n", | |
"You should pull $4$ socks out of the drawer to maximize your chances that the *last* sock you draw results in the first matching pair among drawn socks." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "75277d57-d547-41e9-9813-88d90e03dc12", | |
"metadata": {}, | |
"source": [ | |
"### Rationale" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "b7c609da-0f88-4740-b830-187c26c846bd", | |
"metadata": {}, | |
"source": [ | |
"We model this problem as a Markov process and use dynamic programming to compute the probability mass function $f(X)$, where random variable $X$ is the minimum number of draws required to have a *first* matching pair among drawn socks. The particular number of draws that maximizes $f(X)$ is the answer." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"id": "90977443-6c56-4db2-9b4f-70a4e9d6c87a", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from fractions import Fraction" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"id": "f6d03c41-95d5-4b33-b518-cfde8b1b6b32", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def sock_pulling(pairs: int) -> tuple[dict[int, Fraction]]:\n", | |
" p_no_pairs = {draws: Fraction(1) for draws in range(pairs * 2 + 1)}\n", | |
" p_first_pair = {draws: Fraction(0) for draws in range(pairs * 2 + 1)}\n", | |
"\n", | |
" p_pair = Fraction(0) \n", | |
" for draw in range(2, pairs * 2 + 1):\n", | |
" pair_choices = draw - 1\n", | |
" p_first_pair[draw] = Fraction(pair_choices, (pairs * 2) - pair_choices) * p_no_pairs[pair_choices]\n", | |
" p_pair += p_first_pair[draw]\n", | |
" p_no_pairs[draw] = 1 - p_pair\n", | |
" \n", | |
" return p_first_pair, p_no_pairs" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"id": "771ee05d-02dc-4c73-b28e-5b8c495b2b64", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"{0: Fraction(0, 1),\n", | |
" 1: Fraction(0, 1),\n", | |
" 2: Fraction(1, 9),\n", | |
" 3: Fraction(2, 9),\n", | |
" 4: Fraction(2, 7),\n", | |
" 5: Fraction(16, 63),\n", | |
" 6: Fraction(8, 63),\n", | |
" 7: Fraction(0, 1),\n", | |
" 8: Fraction(0, 1),\n", | |
" 9: Fraction(0, 1),\n", | |
" 10: Fraction(0, 1)}" | |
] | |
}, | |
"execution_count": 3, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"five_pairs_results, _ = sock_pulling(5)\n", | |
"five_pairs_results" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"id": "8c6eea4e-c426-4d1e-be2d-398b1b19bb84", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"4" | |
] | |
}, | |
"execution_count": 4, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"max(five_pairs_results, key=five_pairs_results.get)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "03ccb517-34a8-4e6c-82fc-2440973a6fd1", | |
"metadata": {}, | |
"source": [ | |
"From the resulting distribution, we see that pulling $4$ socks maximizes the probability that the *last* sock forms the first matching pair among the drawn socks.\n", | |
"\n", | |
"Below, we sketch out the event/state graph of this process:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"id": "41a4d510-b7e3-4f58-9419-ccacbcafd4dc", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import networkx as nx\n", | |
"import matplotlib.pyplot as plt" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"id": "6f68f05c-851e-46f6-8a2e-8deb4cb1e685", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def visualize_sock_pulling(pairs: int):\n", | |
" p_first_pair, p_no_pairs = sock_pulling(pairs)\n", | |
" G = nx.DiGraph()\n", | |
" \n", | |
" for draw in range(pairs * 2):\n", | |
" G.add_node(draw)\n", | |
" if draw + 1 <= pairs * 2:\n", | |
" # Calculate the transition probabilities\n", | |
" if p_no_pairs[draw] != 0:\n", | |
" prob_no_pair_next = p_no_pairs[draw + 1] / p_no_pairs[draw]\n", | |
" else:\n", | |
" prob_no_pair_next = 0\n", | |
" \n", | |
" prob_pair_next = 1 - prob_no_pair_next\n", | |
" \n", | |
" G.add_edge(draw, draw + 1, weight=float(prob_no_pair_next), minlength=200)\n", | |
" if prob_pair_next > 0:\n", | |
" G.add_edge(draw, 'pair', weight=float(prob_pair_next))\n", | |
"\n", | |
" levels = list(nx.topological_generations(G))\n", | |
" for i, level in enumerate(levels):\n", | |
" for node in level:\n", | |
" G.nodes[node]['subset'] = i\n", | |
"\n", | |
" pos = nx.multipartite_layout(G, subset_key=\"subset\") \n", | |
" edge_labels = {(u, v): f\"{d['weight']:.2f}\" for u, v, d in G.edges(data=True)}\n", | |
"\n", | |
" plt.figure(figsize=(12, 6)) # 12 units wide and 6 units tall\n", | |
" \n", | |
" nx.draw(G, pos, with_labels=True, node_color='skyblue', node_size=700, edge_color='k', font_size=10, font_weight='bold')\n", | |
" nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_labels, font_color='red', font_size=8)\n", | |
"\n", | |
" plt.title(r\"State DAG ($5$ pairs of socks)\")\n", | |
" plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"id": "c854ee45-3cc1-4d25-a9a8-b9ca69fd6f35", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAABMQAAAKECAYAAADouOasAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAACWx0lEQVR4nOzdd3iUVd6H8e8kIRA60jsIIvYFBVwLKoIBC0ZFRMNacEUF22t3XVHX1VVUXBvYCwKioouKShWwgIJdBFQQpAmEXhIgyTzvH8eTQtr0eWae+3NdXrtkksmTnCQwv5xzj89xHEcAAAAAAACAR6TE+wIAAAAAAACAWGIgBgAAAAAAAE9hIAYAAAAAAABPYSAGAAAAAAAAT2EgBgAAAAAAAE9hIAYAAAAAAABPYSAGAAAAAAAAT2EgBgAAAAAAAE9hIAYAAAAAAABPYSAGAAAAAAAAT2EgBgAAAAAAAE9hIAYAAFCFkSNHqnPnzvL7/fG+lAq98sor8vl8WrlyZbwvpcjChQt13HHHqVatWvL5fPruu+/ifUmSpHvuuUc+n0+bNm0K636eeeYZtWnTRnv37o3QlQEAgFhhIAYAQAL68ccfNWDAALVt21Y1atRQy5Yt1adPHz355JNFrzNv3jzdc8892rZtW8jvJxL3UR47vLH/1ahRQy1atFBmZqaeeOIJ7dy5s9K3Hz16tHw+n3r06FHp661YsULXXHONOnXqpJo1a6pmzZo69NBDNXz4cP3www8BXeuOHTv00EMP6bbbblNKSvE/nebMmVPqYyj53xdffBHQfSez/Px8nX/++dqyZYsee+wxvfbaa2rbtm28LyuiLr30Uu3bt0/PPvtsvC8FAAAEKS3eFwAAAIIzb948nXLKKWrTpo2uuOIKNWvWTKtXr9YXX3yhxx9/XNdee23R691777269NJLVb9+/ZDfV7j3UZl//etfat++vfLz87V+/XrNmTNHN9xwg0aNGqX33ntPRx55ZLlvN378eLVr104LFizQsmXL1LFjxzKvM2XKFF1wwQVKS0tTdna2jjrqKKWkpGjp0qV65513NGbMGK1YsaLKIc1LL72kgoICXXjhheXeft1116lbt26lXlbe9UTb3/72Nw0aNEjVq1eP+fsuz/Lly/X777/r+eef19///vd4X05U1KhRQ5dccolGjRqla6+9Vj6fL96XBAAAAsRADACABHP//ferXr16WrhwYZkh1caNG+NzUSHq16+fjjnmmKI/33HHHfr444915plnqn///lqyZIkyMjJKvc2KFSs0b948vfPOO7ryyis1fvx43X333aVeZ/ny5Ro0aJDatm2rWbNmqXnz5qVuf+ihhzR69OhSO74q8vLLL6t///6qUaNGubefeOKJGjBgQKAfctSkpqYqNTW1ytfbvXu3atWqFfXrsV+L0RikusnAgQM1cuRIzZ49W7169Yr35QAAgABxZBIAgASzfPlyHXbYYeUOGpo0aSLJNJJuueUWSVL79u2LjvLZvtTvv/+uYcOG6eCDD1ZGRoYaNmyo888/v1R/qqr7WLt2rYYMGaKmTZuqevXqOuyww/TSSy+F/fH16tVLd911l37//XeNGzeuzO3jx49XgwYNdMYZZ2jAgAEaP358mdcZOXKkdu/erZdffrnMMEyS0tLSdN1116l169aVXsuKFSv0ww8/qHfv3pW+3s6dO1VQUFDFR1bMNqyWLl2qgQMHqm7dumrYsKGuv/567dmzp9TrBrJWUvkNMft+Fi9erIsuukgNGjTQCSecUHTNN9xwg9q1a6fq1aurSZMm6tOnj7755psqr//bb79Vv379VLduXdWuXVunnnpqqWOil156qU466SRJ0vnnny+fz6eTTz65wvsL9Fqqer/W2rVrdfnll6tFixaqXr262rdvr6uvvlr79u2r8Bp+//13dezYUYcffrg2bNgQ8HUdffTROuCAA/Tuu+9W+XkDAADuwQ4xAAASTNu2bTV//nwtWrRIhx9+eLmvc+655+qXX37R66+/rscee0yNGjWSJDVu3FiSiZ3PmzdPgwYNUqtWrbRy5UqNGTNGJ598shYvXqyaNWtWeh8bNmzQscceK5/Pp2uuuUaNGzfWRx99pMsvv1w7duzQDTfcENbH+Le//U3/+Mc/NH36dF1xxRWlbhs/frzOPfdcpaen68ILL9SYMWO0cOHCUscWp0yZoo4dO1bZGKvKvHnzJEldu3at8HUuu+wy7dq1S6mpqTrxxBP18MMPl9r1VpmBAweqXbt2+s9//qMvvvhCTzzxhLZu3aqxY8cWvU4ga1WV888/XwcddJAeeOABOY4jSbrqqqs0adIkXXPNNTr00EO1efNmffbZZ1qyZEmlH+9PP/2kE088UXXr1tWtt96qatWq6dlnn9XJJ5+suXPnqkePHrryyivVsmVLPfDAA0VHSps2bVrhfQZyLYG8X0lat26dunfvrm3btmno0KHq3Lmz1q5dq0mTJik3N1fp6ell3v/y5cvVq1cvHXDAAZoxY0bR13qgn6OuXbvq888/r3IdAACAizgAACChTJ8+3UlNTXVSU1Odv/71r86tt97qTJs2zdm3b1+p13v44YcdSc6KFSvK3Edubm6Zl82fP9+R5IwdO7bK+7j88sud5s2bO5s2bSr18kGDBjn16tUr9/5Levnllx1JzsKFCyt8nXr16jldunQp9bKvvvrKkeTMmDHDcRzH8fv9TqtWrZzrr7++6HW2b9/uSHKysrLK3OfWrVudnJycov+qus5//vOfjiRn586dZW77/PPPnfPOO8958cUXnXfffdf5z3/+4zRs2NCpUaOG880331R6v3fffbcjyenfv3+plw8bNsyR5Hz//fdFLwt0rezntORa2fdz4YUXlrmPevXqOcOHD6/0OsuTlZXlpKenO8uXLy962bp165w6deo4PXv2LHrZ7NmzHUnOW2+9VeV9BnItgb7fiy++2ElJSSn3a8vv9zuOU/x5ycnJcZYsWeK0aNHC6datm7Nly5agr8txHGfo0KFORkZGla8HAADcgyOTAAAkmD59+mj+/Pnq37+/vv/+e40cOVKZmZlq2bKl3nvvvYDuo2SXKz8/X5s3b1bHjh1Vv379Ko/MOY6jt99+W2eddZYcx9GmTZuK/svMzNT27dsDOnZXldq1a5d5tsnx48eradOmOuWUUyRJPp9PF1xwgSZOnKjCwkJJ5lkh7dvv7+STT1bjxo2L/nv66acrvYbNmzcrLS2t3Ps67rjjNGnSJA0ZMkT9+/fX7bffri+++EI+n0933HFHQB/j8OHDS/3ZPiHChx9+WPSycNbKuuqqq8q8rH79+vryyy+1bt26gO5DkgoLCzV9+nRlZWXpwAMPLHp58+bNddFFF+mzzz4r+vwHo6prCfT9+v1+TZ48WWeddVa5u/T2j94vWrRIJ510ktq1a6eZM2eqQYMGQV2X1aBBA+Xl5Sk3NzfQDxkAAMQZAzEAABJQt27d9M4772jr1q1asGCB7rjjDu3cuVMDBgzQ4sWLq3z7vLw8jRgxQq1bt1b16tXVqFEjNW7cWNu2bdP27dsrfducnBxt27ZNzz33XKnhUuPGjXXZZZdJikzcf9euXapTp07RnwsLCzVx4kSdcsopWrFihZYtW6Zly5apR48e2rBhg2bNmiVJRW+za9euMvf57LPPasaMGeW2ySKhY8eOOvvsszV79uyiAV1lDjrooFJ/7tChg1JSUkp1wMJZK6t9+/ZlXjZy5EgtWrRIrVu3Vvfu3XXPPffot99+q/R+cnJylJubq4MPPrjMbYcccoj8fr9Wr14d0DUFcy2Bvt+cnBzt2LGjwqPE+zvrrLNUp04dTZs2TXXr1g36uiznz2OoPMskAACJg4EYAAAJLD09Xd26ddMDDzygMWPGKD8/X2+99VaVb3fttdfq/vvv18CBA/Xmm29q+vTpmjFjhho2bCi/31/p29rbBw8erBkzZpT73/HHHx/Wx7VmzRpt375dHTt2LHrZxx9/rD/++EMTJ07UQQcdVPTfwIEDJakorl+vXj01b95cixYtKnO/PXr0UO/evQO+voYNG6qgoKDMTrXKtG7dWvv27dPu3bsDfhurvIFKOGtl7f9MnZLpl/3222968skn1aJFCz388MM67LDD9NFHHwV93eGK17Wcd955Wr58eblPzBDMdW3dulU1a9Ys9/MMAADciag+AABJwh4R++OPPyRVvltl0qRJuuSSS/Too48WvWzPnj3atm1bqdcr7z4aN26sOnXqqLCwsMpnXwzVa6+9JknKzMwsetn48ePVpEmTco85vvPOO/rf//6nZ555RhkZGTrjjDP0wgsvaMGCBerevXvI19G5c2dJ5tkmjzzyyIDe5rffflONGjXKPWa5v19//bXU7q1ly5bJ7/erXbt2RS8LdK1C0bx5cw0bNkzDhg3Txo0b1bVrV91///3q169fua/fuHFj1axZUz///HOZ25YuXaqUlJQqn7kzlGsJ9P3Wrl1bdevWLXcYWp6HH35YaWlpGjZsmOrUqaOLLrooqOuyVqxYoUMOOSSkjxsAAMQHO8QAAEgws2fPLjqiVZLtTtljZbVq1ZKkcgcnqampZe7jySefLHPMr7z7SE1N1Xnnnae333673MFDTk5O4B9MOT7++GPdd999at++vbKzsyWZY4PvvPOOzjzzTA0YMKDMf9dcc4127txZ1FC79dZbVbNmTQ0ZMkQbNmwo8z7K+/yV569//ask6auvvipzW3kf5/fff6/33ntPp512mlJSqv5n1v7DvSeffFKSSg1bAl2rYBQWFpY5btmkSRO1aNFCe/furfDtUlNTddppp+ndd98tdaxzw4YNmjBhgk444YRyjx6Gey2Bvt+UlBRlZWXp/fffL3fN9v88+nw+PffccxowYIAuueSSUg2+YD5H33zzjY477rigPm4AABBf7BADACDBXHvttcrNzdU555yjzp07a9++fZo3b57eeOMNtWvXrqjjdfTRR0uS7rzzTg0aNEjVqlXTWWedpVq1aunMM8/Ua6+9pnr16unQQw/V/PnzNXPmTDVs2LDU+6roPh588EHNnj1bPXr00BVXXKFDDz1UW7Zs0TfffKOZM2dqy5YtAX0sH330kZYuXaqCggJt2LBBH3/8sWbMmKG2bdvqvffeU40aNSRJ7733nnbu3Kn+/fuXez/HHnusGjdurPHjx+uCCy7QQQcdpAkTJujCCy/UwQcfrOzsbB111FFyHEcrVqzQhAkTlJKSolatWlV6fQceeKAOP/xwzZw5U0OGDCl12wUXXKCMjAwdd9xxatKkiRYvXqznnntONWvW1IMPPhjQx79ixQr1799fffv21fz58zVu3DhddNFFOuqoo4peJ9C1CsbOnTvVqlUrDRgwQEcddZRq166tmTNnauHChaV2opXn3//+t2bMmKETTjhBw4YNU1pamp599lnt3btXI0eOjNq1BPp+H3jgAU2fPl0nnXSShg4dqkMOOUR//PGH3nrrLX322WeqX79+qfefkpKicePGKSsrSwMHDtSHH36oXr16BXxdX3/9tbZs2aKzzz476I8dAADEUdye3xIAAITko48+coYMGeJ07tzZqV27tpOenu507NjRufbaa50NGzaUet377rvPadmypZOSkuJIclasWOE4juNs3brVueyyy5xGjRo5tWvXdjIzM52lS5c6bdu2dS655JKA7mPDhg3O8OHDndatWzvVqlVzmjVr5px66qnOc889V+XH8PLLLzuSiv5LT093mjVr5vTp08d5/PHHnR07dpR6/bPOOsupUaOGs3v37grv89JLL3WqVavmbNq0qehly5Ytc66++mqnY8eOTo0aNZyMjAync+fOzlVXXeV89913VV6n4zjOqFGjnNq1azu5ubmlXv7444873bt3dw444AAnLS3Nad68uTN48GDn119/rfI+7777bkeSs3jxYmfAgAFOnTp1nAYNGjjXXHONk5eXV+p1A10r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v0HMPwdZ7eqocwOeXdINGIgBAAAAAICoKBnDnzlzprZt26Z69eqpe/fuqlmzpn777Tf9+OOPqlatmk455RQdcsghWr9+vT766CPt2LFD3bp108CBA5Wenq7x48drwYIFatOmja6++mqdffbZGjt2rJ588kn5fD5de+21uvHGG7V+/Xp17dq13KOTkhmOrVu3TqtT6mnW2t0x+1yc2rKWutEOcw0GYgAAAAAAICLKi+GnpKSoW7duOvTQQ7Vnzx4tWLBAy5cvV506ddSvXz916dJF69at09tvv61169apQ4cOys7OVs+ePTV9+nS9+OKL2rx5s0477TQNHz5cPXr00H//+98yg7CaNWvqvvvu0yOPPKIWLVpo1apVZa7P5/Np6NCheuaZZyRJX67frdl/5EX988IwzH0YiAEAAAAAgJBUFMNv2bKlTj31VDVv3lxr167VtGnTlJOTo2bNmunss8/WX//6V61atUoTJ07U4sWL1ahRIw0aNEgXXnihtm3bptGjR+vDDz9UvXr1dNlll+nqq69WgwYN9Oijj5YZhDVq1EjTpk3TsGHDtHbtWt1555269dZbdeONN2r06NFlrnnJkiVat26drr32Wi1ZskRfrdmiuTmF2ud3Ihra90lKT/GpX5vaHJN0IQZiAAAAAAAgYOXF8GvUqKGePXvqxBNPVFpamr766itNnTpVu3fvVqdOnXTOOefolFNO0W+//abXX39dn376qTIyMpSVlaXBgwfr6KOP1muvvaYxY8YURfKHDx+uCy+8ULm5uRUOwtavX6//+7//08SJE9WrVy+NGTNGnTp1kiStWLFCRxxxhHbvNsciU1JSdMQRR0iSvv/+e0lSWlqa9u7dq9xCaeqqnVq2I18+KazBmH37g+qlq2/r2gT0XYqBGAAAAAAAqFBFMfxDDz1UmZmZ6tq1qzZu3KgPP/xQc+bMUWFhoXr06KGsrCz17dtXv/76q8aPH68PP/ywKI6fnZ2trKws/fzzzxo9erRef/31oki+PRa5efPmCgdhfr9fzz//vG677TZVq1ZNo0aN0uDBg+Xz+SRJn3/+uc455xzVqlVLHTp00KxZs4o+npSUFPn9fknSSSedpDlz5kgyu91+2b5P8//YpfV7HKVI8gfxebKv37JWmro3yVCneulF1wP3YSAGAAAAAABKKS+GX79+ffXu3VunnXaa2rdvry+++EKTJ0/W119/rWrVqqlXr17KysrSGWecoV9//VXjxo3T22+/XRTHz87O1gUXXKD69evrzTff1NNPP10qkj9kyBA1adJEmzZtqnAQJkmLFi3SlVdeqXnz5mnIkCEaOXKkGjZsWHTtr776qoYOHapjjz1Wb7/9tjIyMtS0adOinWJWamqqbr/9dv373/+WZAZil112mV599VV98dMv2lq7uX7dvle7C8zYxCep5HzLcYp3ktVK8+mgetXVtXENNclIi9q6IHJYJQAAAAAAPK6iGH737t11/fXXq3fv3iooKNCUKVP00EMPFUXxTz/9dN18883q27evVq5cqfHjx+vYY48tiuPfcMMNys7OVqdOnbRixQo99thjpSL57777rs444wylpqZq06ZNuuOOO4oGYdddd12pQVhubm5RNL9jx46aM2eOTjrppKKPobCwUP/4xz80cuRIXX755Ro9erTS09MlSStXrtTf/vY3TZ06tdTr9+jRQ5KUn5+voUOH6tVXX5Uk7clZp76HHqS+qq3d+X6tzy3QxrwC7S10VOA4SvP5VD3VpyYZaWpWM41jkQmIgRgAAAAAAB5TWQw/MzNT9957r4477jh9++23mjx5ss4999xSUfynnnpKp5xyitavX68JEybo+OOPLxXHz87OVo8ePeQ4jqZNm6Ybb7yxTCT/oIMOkqQyO8L2H4RJKhXNHzFihG699VZVr14cqt+5c6eys7P1wQcfaNSoUbrhhhtKHVds1KiRzj///FIDMUnq0aOHdu3apfPOO08zZswoevmmTZuK/n+tainqUC9dHeqlR3wdED8MxAAAAAAA8IDKYvj333+/MjMz1bx5c3344Yd64403dNlllxVF8YcMGaKsrCx1795d27Zt01tvvaU+ffqUiuM//PDD6tOnj6pVq6YtW7bo0UcfLRXJf/7553XhhReqZs2akgIbhO0fzf/oo4+KovnWypUr1b9/f61cuVLvv/++Tj/99DIf+8KFCzVs2DANGTJEZ599ti666CI1bNhQjuPohBNO0I8//ihblPL5fNq4cWMUVwJuwEAMAAAAAIAkVFkM//zzz1dmZqZ69uypTZs26d1339X1119fKor/z3/+U1lZWercubPy8vI0ZcoUPfjgg6Xi+GPHjlVWVpbq1KkjSfrqq6/KRPLHjx+vHj16FO3YCmQQtn80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", | |
"text/plain": [ | |
"<Figure size 1200x600 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"visualize_sock_pulling(5)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "4e6851ee-f69b-4979-a181-a8e9e5b3020f", | |
"metadata": {}, | |
"source": [ | |
"The numbered nodes represent the states that no matching pair has yet been witnessed up-to-and-including the number of draws given by the number contained in the respective node (e.g., the node labeled `3` is the state that \"after $3$ draws, no pair has been drawn\"). The node labeled `pair` is the state that \"a pair of matching socks has been witnessed.\"\n", | |
"\n", | |
"A labeled directed edge from node representing event $u$ to node representing event $v$ is the transition probability $P(v \\mid u)$.\n", | |
"\n", | |
"In terms of the random variable $X$ declared above, each unique path (from node `0`) to `pair` represents an element in the support of $X$. For example, the product of the transition probabilities along the path $(0, 1, 2, 3, 4, \\text{pair})$ is equivalent to the $P(X = 5)$." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "4abee1ff-02b0-4429-85c7-eaa26d52f483", | |
"metadata": {}, | |
"source": [ | |
"## Extra Credit\n", | |
"\n", | |
"Instead of five pairs of socks, I now have $N$ pairs of socks, where $N$ is a very large number. In terms of $N$, how many socks should I draw to maximize the chances that the last sock I draw results in the first pair?" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "a318fe79-4807-410e-843d-23c206a0db02", | |
"metadata": {}, | |
"source": [ | |
"### Solution\n", | |
"\n", | |
"The number of draws that maximize the chances that the last sock drawn results in the first matched pair, in terms of $N$, is $\\left\\lfloor \\frac{3 + \\sqrt{1 + 8N}}{2} \\right\\rfloor$." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "2f1cf4f9-dfcb-4ac8-926f-996e3ea6b1eb", | |
"metadata": {}, | |
"source": [ | |
"### Rationale\n", | |
"\n", | |
"As defined above, the probability mass function can be expressed as the following:\n", | |
"\n", | |
"$$\n", | |
"P(X = x) = f(X) = \\frac{(x-1)}{2N - x + 1} \\cdot \\frac{\\binom{N}{x-1} \\cdot 2^{x-1}}{\\binom{2N}{x-1}}\n", | |
"$$\n", | |
"\n", | |
"We arrived at this expression constructively:\n", | |
"\n", | |
"1. $\\frac{(x-1)}{2N - x + 1}$ : For the $x$th draw, $(x - 1)$ socks have been drawn such that none of the drawn socks match. Therefore, among the $2N - x + 1$ remaining socks, there are $(x - 1)$ choices that *would* result in the first matching pair.\n", | |
"2. There are $\\binom{N}{x-1} \\cdot 2^{x-1}$ ways that $(x - 1)$ mutually unmatched socks could have been drawn, among a total of $\\binom{2N}{x-1}$ ways to have drawn $(x - 1)$ socks, unconditionally.\n", | |
"3. The product of these two terms gives the probability that the $x$th draw results in the first matching pair." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"id": "30a593b6-67d8-46dc-8463-e373b8429f6a", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import math" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"id": "70ff5019-2c69-4483-8749-62c66f379490", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def pmf(x: int, N: int) -> float:\n", | |
" return ((x - 1) / (2*N - x + 1)) * (math.comb(N, x - 1) * 2 ** (x - 1) / math.comb(2*N, x - 1))" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "00b4c4aa-52c3-4142-9fae-beffc0d9e7cf", | |
"metadata": {}, | |
"source": [ | |
"We test this expression for the $N = 5$ case below:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"id": "8a8166c0-4c44-4cb1-962a-d07c7592fead", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"True" | |
] | |
}, | |
"execution_count": 10, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"all(pmf(k, 5) == float(v) for k, v in five_pairs_results.items() if k > 0)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "8eb7246a-af8d-46df-b077-fe9b131ae3ee", | |
"metadata": {}, | |
"source": [ | |
"Now, we can turn out attention to finding a closed-form solution to the question \"How many draws $x$ maximize $f(X)$?\"\n", | |
"\n", | |
"\n", | |
"Let $N$ equal the total number of pairs and let $P(x)$ equal the probability that the first pair is found after the $x^{th}$ choice. \n", | |
"\n", | |
"$$\n", | |
"P(x) = \\frac{(x-1)}{2N - x + 1} \\cdot \\frac{\\binom{N}{x-1} \\cdot 2^{x-1}}{\\binom{2N}{x-1}}\n", | |
"$$\n", | |
"\n", | |
"The ratio of $P(x)$ to $P(x-1)$ can be expressed as:\n", | |
"\n", | |
"$$\n", | |
"\\frac{P(x)}{P(x-1)} = \\frac{2(x-1)(N-x+2)}{(2N-x+1)(x-2)}\n", | |
"$$\n", | |
"\n", | |
"Notice that $\\frac{P(x)}{P(x-1)}$ is always decreasing over the interval $2 \\lt x \\leq 2N$. We will use this fact, along with the derivation below, to show that there exists an $x^{*}$ that maximizes $f$.\n", | |
"\n", | |
"$P(x)$ is at it's maximum for the largest value of $x$ where $\\frac{P(x)}{P(x-1)} \\geq 1$ (i.e., $x^{*}$), as that will be the last time $P(x)$ will be greater than $P(x-1)$. \n", | |
"\n", | |
"Let $\\frac{P(x)}{P(x-1)} = 1$. Then what follows is:\n", | |
"\n", | |
"$$\n", | |
"\\begin{align*}\n", | |
"\\frac{2(x-1)(N-x+2)}{(2N-x+1)(x-2)} &= 1\\\\\n", | |
"2(x-1)(N-x+2) &= (2N-x+1)(x-2)\\\\\n", | |
"x^2 + 3x + 2N - 2 &= 0\\\\\n", | |
"x &= \\frac{3 \\pm \\sqrt{1 + 8N}}{2} \\text{ where } x \\geq 2\\\\\n", | |
"\\end{align*}\n", | |
"$$\n", | |
"\n", | |
"As $x^{*}$ is a positive integer, it can be written as:\n", | |
"$$\n", | |
"x^{*} = \\left\\lfloor \\frac{3 + \\sqrt{1 + 8N}}{2} \\right\\rfloor\n", | |
"$$" | |
] | |
} | |
], | |
"metadata": { | |
"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.12.4" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 5 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment