{ "cells": [ { "cell_type": "markdown", "id": "5e2351bb", "metadata": {}, "source": [ "# Reasonable shortcut distributions" ] }, { "cell_type": "code", "execution_count": 1, "id": "461cc953", "metadata": {}, "outputs": [], "source": [ "from kleinberg_grid_simulator import compute_edt, get_bounds, parallelize\n", "from matplotlib import pyplot as plt" ] }, { "cell_type": "markdown", "id": "5ded03c5", "metadata": {}, "source": [ "As observed by Kleinberg, for any given $n$, $r=2$ is not the optimal value for having the shortest routes. Let's have a look with a grid of size 20,000." ] }, { "cell_type": "code", "execution_count": 2, "id": "98baced2", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|█████████████████████████████████████████████████████████████████████████████████| 31/31 [00:00<00:00, 2409.80it/s]\n" ] } ], "source": [ "n = 20000\n", "res = parallelize([{'r': r/10, 'n': n} for r in range(0, 31)])" ] }, { "cell_type": "code", "execution_count": 3, "id": "f67ebeab", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "r = [re.r for re in res]\n", "edt = [re.edt for re in res]\n", "plt.semilogy(r, edt, '-', marker='o')\n", "plt.ylabel(f'Expected Delivery Time ($n={n}$)')\n", "plt.xlabel('$r$')\n", "plt.xlim([0, 3])\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "a533cba5", "metadata": {}, "source": [ "The simulator can give you, for a given value of $n$, the key ranges:\n", "- What are the values of $r$ faster than $r=2$?\n", "- What is the optimal value of $r$?\n", "- What are the values of $r$ at most twice slower than $r=2$?" ] }, { "cell_type": "code", "execution_count": 4, "id": "92c7cae2", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|████████████████████████████████████████████████████████████████████████████████| 43/43 [00:00<00:00, 16614.93it/s]\n" ] } ], "source": [ "res = parallelize([{'n': 2**i} for i in range(7, 50)], function=get_bounds)" ] }, { "cell_type": "code", "execution_count": 6, "id": "d7ddd911", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "n = [re['n'] for re in res]\n", "opt = [re['r_opt'] for re in res]\n", "rm = [re['r-'] for re in res]\n", "r2p = [re['r2+'] for re in res]\n", "r2m = [re['r2-'] for re in res]\n", "plt.semilogx(n, opt, marker='o', markersize=3, label='$r_{opt}(n)$')\n", "plt.fill_between(n, rm, [2 for _ in n], facecolor='blue', alpha=0.3, label='$\\leq e_2(n)$')\n", "plt.fill_between(n, r2m, r2p, facecolor='blue', alpha=0.15, label='$\\leq 2e_2(n)$')\n", "plt.legend()\n", "plt.xlim([n[0], n[-1]])\n", "plt.ylim([0, 3])\n", "plt.xlabel('$r$')\n", "plt.ylabel('$n$')\n", "plt.show()" ] } ], "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.10.9" } }, "nbformat": 4, "nbformat_minor": 5 }