{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "ad120557", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "from scipy import stats\n", "import matplotlib.pyplot as plt\n", "from scipy.optimize import minimize\n", "from scipy.integrate import quad\n", "from scipy.special import logsumexp\n", "import multiprocessing\n", "import time" ] }, { "cell_type": "code", "execution_count": 2, "id": "8d5beec7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Starting time: Sat Sep 11 06:41:58 2021\n" ] } ], "source": [ "print(\"Starting time:\", time.ctime())" ] }, { "cell_type": "markdown", "id": "258e59b4", "metadata": {}, "source": [ "# Evaluating the Parisi formula for a pure p-spin glass" ] }, { "cell_type": "markdown", "id": "61522052", "metadata": {}, "source": [ "The goal here is to calculate the zero-temperature Parisi constant, and compare it to the maximum satisfying fraction of randomXORSAT instances." ] }, { "cell_type": "markdown", "id": "89198858", "metadata": {}, "source": [ "## Using the Parisi formula" ] }, { "cell_type": "markdown", "id": "e6ca260e", "metadata": {}, "source": [ "Wei-Kuo Chen says:\n", "> I am not aware of numerical simulations for the Parisi constant P(K) for large K. Nevertheless, this constant can be written as the Parisi formula, which is a convex optimization problem (see Theorem 1 in https://arxiv.org/pdf/1606.05335.pdf). With this, it should be fairly easy to run a numerical simulation to approximate P(K) for large K.\n" ] }, { "cell_type": "markdown", "id": "22d5006c", "metadata": {}, "source": [ "Paraphrased from the linked paper:\n", "> We introduce the space $U$ that collects all nonnegative and nondecreasing functions $f$ on $[0,1)$ that are right continuous and satisfy $\\int_0^1 f(t)dt < \\infty$. Let's say $f$ has $k$ jumps. Then it has value $m_i$ in region $[q_i,q_{i+1})$, given $q_0 = 0$ and $q_{k+1} = 1$, where $m_i$ and $q_i$ are increasing and nonnegative. The distance metric $d$ is the integral of $f$, or equivalently, $d = \\sum_{i=0}^k m_i(q_{i+1} - q_i)$." ] }, { "cell_type": "markdown", "id": "d90969ed", "metadata": {}, "source": [ "$P(f) = \\Psi_f(0, h) - 0.5 \\int_0^1 t \\xi^{''}(t)f(t) dt$" ] }, { "cell_type": "markdown", "id": "4469b627", "metadata": {}, "source": [ "$\\xi(s) =\\sum_{p\\ge 2} c_p^2 s^p$ Where the $c_p$'s are the mixing constants (mixed vs pure spin glasses)." ] }, { "cell_type": "markdown", "id": "58ede3b7", "metadata": {}, "source": [ "$\\partial_t \\Psi_f(t,x) = -0.5\\xi^{''}(t) \n", "\\Big(\n", "\\partial_x^2 \\Psi_f(t,x) + f(t) (\\partial_x \\Psi_f(t,x))^2\n", "\\Big)$" ] }, { "cell_type": "markdown", "id": "8f822294", "metadata": {}, "source": [ "With boundary condition: $\\Psi_f(1,x) = |x|$." ] }, { "cell_type": "markdown", "id": "481a7980", "metadata": {}, "source": [ "This can be solved recursively, by using the transformation $f(t) \\Psi = \\log \\Phi$ for a piecewise, continuous function $f$." ] }, { "cell_type": "markdown", "id": "93452dd4", "metadata": {}, "source": [ "This is the coefficient $a_{\\ell} = \\sqrt{ \\xi^{'}(q_{\\ell+1}) - \\xi^{'}(q_{l}) }$" ] }, { "cell_type": "code", "execution_count": 3, "id": "316166fd", "metadata": {}, "outputs": [], "source": [ "global grid" ] }, { "cell_type": "code", "execution_count": 4, "id": "aa2e381c", "metadata": {}, "outputs": [], "source": [ "def a(qs, l, xiprime):\n", " return (xiprime(qs[l+1]) - xiprime(qs[l]))**0.5" ] }, { "cell_type": "markdown", "id": "25992c4b", "metadata": {}, "source": [ "Let $\\Psi_{k+1}(x) = abs(x)$.\n", "\n", "For $1\\le \\ell \\le k$, let $Exp(m_{\\ell} \\Psi_{\\ell}(x)) = \\mathbb{E}[Exp(m_{\\ell} \\Psi_{\\ell+1}(x + a_{\\ell} z) ]$, for standard Gaussian variable $z$." ] }, { "cell_type": "markdown", "id": "8c9a3ec4", "metadata": {}, "source": [ "Let $\\Psi_0(x) = \\mathbb{E}[\\Psi_{\\ell+1}(x + a_{0} z)]$, since I let $m_0 = 0$." ] }, { "cell_type": "code", "execution_count": 5, "id": "59011c44", "metadata": {}, "outputs": [], "source": [ "def psi0(qs, ms, xiprime, k, PDF_INPS):\n", " a_s = np.array([a(qs, l, xiprime) for l in range(len(qs)-1)])\n", " start = 0\n", " for i in range(len(grid)):\n", " start += a_s[i]*grid[i]\n", " start = np.abs(start)\n", " # 1 to k\n", " for i in list(range(1, k+1))[::-1]:\n", " start = np.log(np.sum(np.exp(ms[i]*start)*PDF_INPS, axis=i))/ms[i]\n", " # scipy is slower\n", " # start = logsumexp(ms[i]*start, b=PDF_INPS, axis=i)/ms[i]\n", " # 0\n", " start = np.sum(PDF_INPS*start, axis=0)\n", " return start" ] }, { "cell_type": "markdown", "id": "c2cd78ec", "metadata": {}, "source": [ "The penalty term in the operator is $0.5 \\int_0^1 f(t) t \\xi^{''}(t) dt = 0.5 \\sum_{i=0}^k \\int_{q_i}^{q_{i+1}} m_i t \\xi^{''}(t) dt$" ] }, { "cell_type": "code", "execution_count": 6, "id": "7d6bebde", "metadata": {}, "outputs": [], "source": [ "def penalty(qs, ms, xiprimeprime, k):\n", " out = 0\n", " for i in range(k+1):\n", " integral = quad(lambda t: t * xiprimeprime(t), qs[i], qs[i+1])[0]\n", " out += ms[i] * integral\n", " return 0.5 * out" ] }, { "cell_type": "markdown", "id": "25790ede", "metadata": {}, "source": [ "This tests the ground state energy of inputs **m**, **q**:" ] }, { "cell_type": "code", "execution_count": 7, "id": "4b9aaa0f", "metadata": {}, "outputs": [], "source": [ "def make_test(xiprime, xiprimeprime, k, PDF_INPS):\n", " # the input here is a list of \"adjustments\" \n", " # (m_1, m_2-m_1, ...,m_k-m_{k-1}, q_1, q_2-q_1,...,q_k-q_{k-1})\n", " def test(inp):\n", " assert len(inp) == 2*k\n", " inp_qs,inp_ms= inp[:k],inp[k:]\n", "\n", " # if bad input, return a large number\n", " if np.any(np.array(inp) < 0) or sum(inp_ms) > 2 or sum(inp_qs) > 1:\n", " return 10000\n", "\n", " qs = np.array([0,*[sum(inp_qs[:i+1]) for i in range(k)],1])\n", " ms = np.array([0,*[sum(inp_ms[:i+1]) for i in range(k)]])\n", " output = psi0(qs, ms, xiprime, k, PDF_INPS) - penalty(qs, ms, xiprimeprime, k)\n", " return output\n", " return test" ] }, { "cell_type": "markdown", "id": "346bb74a", "metadata": {}, "source": [ "## Evaluating the Parisi formula" ] }, { "cell_type": "code", "execution_count": 8, "id": "2904b231", "metadata": {}, "outputs": [], "source": [ "# set parameters\n", "# k is number of jumps\n", "k=2\n", "# if this range is too small, it fails at higher p\n", "INPS = np.linspace(-20,20,400)\n", "PDF_INPS = stats.norm.pdf(INPS)\n", "PDF_INPS = PDF_INPS/np.sum(PDF_INPS)\n", "assert np.allclose(sum(PDF_INPS),1), sum(PDF_INPS)\n", "grid = np.meshgrid(*[INPS]*(k+1), indexing='ij')" ] }, { "cell_type": "code", "execution_count": 9, "id": "04ddf4ef", "metadata": {}, "outputs": [], "source": [ "# pure p-spin model; p=2 is SK model\n", "ps = range(2, 35)\n", "# if C_psq is too low, my convergence is not very good.\n", "C_psq = 2\n", "\n", "def run(P):\n", "# xi = lambda x: x**P * C_psq\n", " xiprime = lambda x: P * (x**(P-1)) * C_psq\n", " xiprimeprime = lambda x: P * (P-1) * (x**(P-2)) * C_psq\n", " opt = minimize(make_test(xiprime, xiprimeprime, k, PDF_INPS), \n", " [np.random.random()/k for _ in range(2*k)], \n", " method='Powell', \n", " options={\"xtol\": 1e-10, \"ftol\":1e-14}\n", " )\n", " print(\"p:\", P, opt.fun)\n", " return {\"x\": opt.x, \"fun\": opt.fun}" ] }, { "cell_type": "code", "execution_count": 10, "id": "803a9799", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "kXOR:\n", "p: 2 1.5272160199450222\n", "p: 3 1.626967878475283\n", "p: 4 1.6509589079564133\n", "p: 5 1.6592794712628334\n", "p: 6 1.6625613990698058\n", "p: 7 1.6639566615410057\n", "p: 8 1.6645763092854464\n", "p: 9 1.6648592435744556\n", "p: 10 1.6649908063455099\n", "p: 11 1.665052738662153\n", "p: 12 1.665082143153814\n", "p: 13 1.665096190029601\n", "p: 14 1.6651029312251922\n", "p: 15 1.6651061778722713\n", "p: 16 1.6651077459526302\n", "p: 17 1.6651085050934427\n", "p: 18 1.6651088733426995\n", "p: 19 1.665109052283917\n", "p: 20 1.6651091393676811\n", "p: 21 1.665109181805196\n", "p: 22 1.6651092025108518\n", "p: 23 1.6651092126243832\n", "p: 24 1.6651092175692206\n", "p: 25 1.6651092199891266\n", "p: 26 1.6651092211743546\n", "p: 27 1.6651092217553192\n", "p: 28 1.6651092220403036\n", "p: 29 1.6651092221801669\n", "p: 30 1.6651092222488622\n", "p: 31 1.6651092222826307\n", "p: 32 1.665109222299229\n", "p: 33 1.6651092223073753\n", "p: 34 1.665109222311397\n", "CPU times: user 4h 47min 16s, sys: 1h 37min 14s, total: 6h 24min 30s\n", "Wall time: 6h 24min 33s\n" ] } ], "source": [ "%%time\n", "print(\"kXOR:\")\n", "r = []\n", "for P in ps:\n", " r.append(run(P))" ] }, { "cell_type": "code", "execution_count": 11, "id": "f0bfca0c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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eHkBu3fvPvw8Ihg+fDgA+/btY9++fYePSZIEzihL6qvvL4TXnqvuOd//Ebjg670WW79+PXfccQczZ87kyiuv5LbbbmPz5s088cQTABw8eJBBgwr//583bx4LFxZWb37wwQe54YYb2Lp1K4888sjh8x04cIAzzzyTzs5OrrnmGs4+28XpJElvM1GWlBsTJkxg5syZAFx66aXccsstPPTQQ4eP79y5kxEjRryr3ty5c5k7dy5PPvkkN954I48//jgAgwcPZtWqVXR3dzN37lyef/55PvzhD9elLZKk5meiLKlvypj5rZWel0ZEBNddd12vM8qHnHvuubz00kts376dMWPGHN4/atQo2tvbefTRR02UJUmHmShLyo1NmzaxfPlyzjnnHO69915mzZrF9ddff/h41oxyZ2cnp5xyChHBs88+y969exk9ejTbtm1j6NChjBo1irfeeovHH3+cBQsW1LtJkqQmZqIsKTemTp3KkiVL+MIXvsDkyZO5+uqre63zwAMPcM899zB06FCOPfZY7r//fiKCV199lcsvv5wDBw5w8OBBLrnkEj75yU/WoRWSpLwwUZaUG4MGDWLRokV9qrNgwYLMmeLp06fz05/+tFqhSZJakLeHkyRJkjKYKEvKhYkTJ/L88883OgxJ0gBioixJkiRlMFGWJEmSMpgoS5IkSRlMlCVJkqQMJsqSWtrDDz/M9OnTmTFjBm1tbfzoRz96x/EDBw5w+umnew9lSdK7eB9lSS3tvPPO46KLLiIiWL16NZdccgnr1q07fPxb3/oWU6dO5Y033mhglJKkZuSMsqRc2LhxI1OmTOHyyy9n+vTpXHzxxbz55pu91hs+fDgRAcDu3bsPPwfo6urikUce4fOf/3zN4pYk5ZczypL65Kaf3MS619f1XrAPprxvCgvOevfqeT2tX7+eO+64g5kzZ3LllVdy2223sXnzZp544gkADh48yKBBhf//z5s3j4ULFwLw4IMPcsMNN7B161YeeeSRw+f70pe+xN/8zd+wc+fOqrZHktQaTJQl5caECROYOXMmAJdeeim33HILDz300OHjO3fuZMSIEe+qN3fuXObOncuTTz7JjTfeyOOPP873vvc9TjzxRM4880w6Ojrq1AJJUp6YKEvqk3Jmfmul9LKJQ9vXXXddrzPKh5x77rm89NJLbN++nR//+McsXbqUZcuW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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "num_vert_plots = int(np.ceil(len(ps)/10))\n", "fig, axs = plt.subplots(num_vert_plots, 2, figsize=(12, 4*num_vert_plots))\n", "\n", "for idx in range(len(r)):\n", " P = ps[idx]\n", " if idx % 5 == 0:\n", " ax = axs[idx // 10, (idx % 10)//5]\n", " ax.grid()\n", "\n", " qs = np.array([0,*[sum(r[idx]['x'][:k][:i+1]) for i in range(k)]])\n", " ms = np.array([0,*[sum(r[idx]['x'][k:][:i+1]) for i in range(k)]])\n", " ax.step(qs, ms, where='post', label=\"p=\" + str(P))\n", " if idx % 5 == 4:\n", " ax.legend()\n", "\n", "ax.legend()" ] }, { "cell_type": "markdown", "id": "ffc371ed", "metadata": {}, "source": [ "I notice that the locations of the symmetry breaking points are often at very low values. This may be related to the Auffinger Chen Zeng result that perturbing a solution to this variational near $1$ will reduce the energy. So perhaps perturbations very close to $0$ can also reduce the energy: https://doi.org/10.1002/cpa.21886" ] }, { "cell_type": "markdown", "id": "ce68878b", "metadata": {}, "source": [ "## Finding the large-p limit" ] }, { "cell_type": "markdown", "id": "6c89ef5a", "metadata": {}, "source": [ "Let's look at the constants after dividing out by $c_p$:" ] }, { "cell_type": "code", "execution_count": 12, "id": "6b71bba9", "metadata": {}, "outputs": [], "source": [ "outs = np.array([i['fun'] for i in r])\n", "outs_scaled = np.array(outs)* C_psq**-0.5" ] }, { "cell_type": "code", "execution_count": 13, "id": "c3036855", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.0792825359691502" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "0.763168*2**0.5" ] }, { "cell_type": "code", "execution_count": 14, "id": "57d165fb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2 1.079904804039855\n", "3 1.1504400196425635\n", "4 1.167404239276317\n", "5 1.1732877660135788\n", "6 1.1756084394212536\n", "7 1.1765950389761741\n", "8 1.177033196098215\n", "9 1.1772332608526037\n", "10 1.177326289780168\n", "11 1.1773700825412408\n", "12 1.1773908746566917\n", "13 1.1774008072978153\n", "14 1.177405574042931\n", "15 1.1774078697690966\n", "16 1.177408978569352\n", "17 1.1774095153629682\n", "18 1.177409775754515\n", "19 1.1774099022850633\n", "20 1.1774099638625835\n", "21 1.1774099938704379\n", "22 1.1774100085115475\n", "23 1.1774100156628942\n", "24 1.1774100191594223\n", "25 1.1774100208705542\n", "26 1.177410021708637\n", "27 1.177410022119441\n", "28 1.1774100223209554\n", "29 1.1774100224198536\n", "30 1.1774100224684285\n", "31 1.1774100224923065\n", "32 1.1774100225040434\n", "33 1.1774100225098036\n", "34 1.1774100225126474\n" ] } ], "source": [ "for p, x in zip(ps, outs_scaled):\n", " print(p, x)" ] }, { "cell_type": "code", "execution_count": 15, "id": "baf1017b", "metadata": {}, "outputs": [], "source": [ "guess = (2*np.log(2))**0.5" ] }, { "cell_type": "code", "execution_count": 16, "id": "b0ede645", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.1774100225154747\n" ] } ], "source": [ "print(guess)" ] }, { "cell_type": "code", "execution_count": 17, "id": "250287de", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(ps, [guess]*len(ps), 'b--', \n", " color='black', label=\"$\\sqrt{2 log 2}$\", alpha=0.7)\n", "plt.plot(ps, outs_scaled, 'g.-', ms=7,label=\"pure k-spin model\")\n", "plt.xlabel(\"$k$\")\n", "plt.ylabel(\"ground state energy density $P(k)$\")\n", "plt.title(\"Parisi value for the pure $k$-spin model\")\n", "plt.grid()\n", "plt.legend()\n", "plt.savefig('images/parisi_value.png', dpi=300)" ] }, { "cell_type": "markdown", "id": "ea171296", "metadata": {}, "source": [ "## Relationship with $c_{p}$" ] }, { "cell_type": "markdown", "id": "a387c7d1", "metadata": {}, "source": [ "I ran the above several times for different $c_p$. \n", "The asymptotic value seems to depend on the constant I use. If $c_p^2 < 2 log(2)$, The energy is $log(2) + c_p^2 / 2$. Otherwise, the energy is $\\sqrt{ 2 c_p^2 log(2)}$." ] }, { "cell_type": "code", "execution_count": 18, "id": "93bb0eed", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, '$energy / C_p$')" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAESCAYAAAD+GW7gAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAvVUlEQVR4nO3de3yU9Z3//dcnx0lIOIWjYEWKIocEkJMWxGCtUHTdKuraBaw/603rttbVe7ftb1sfP7nvu249gtt2a626KnarWA+1rbZdVlMXRBQqhDNaTCWAgmAgZzIz3/uPmUxmkgEyyWQmzPV+Ph7zyDXXzFzX9wrkPd/5zPf6XuacQ0REMl9WuhsgIiKpocAXEfEIBb6IiEco8EVEPEKBLyLiEQp8ERGPyEnlzsysCqgFAoDfOTctlfsXEfGylAZ+2Fzn3Cdp2K+IiKeppCMi4hGpDnwH/NHMNprZ0hTvW0TE01Jd0pnlnNtvZkOA/zKznc65N6KfEH4jWApQUFAw9cwzz+z0xpubm2lpaQGgLphLE7kU2XF85gcgPz+f3NzcJB1K7xMMBsnK8taHNh2zN+iYE7N79+5PnHOD26+3dM2lY2Z3AXXOuftP9Jxp06a5DRs2dHqb27ZtY8+ePQD87J3DbD0+mKtGBblkROjxCRMmMHr06O40u1erqKigvLw83c1IKR2zN+iYE2NmG+MNiknZW6aZ9TGz4tZl4DJga4/tj9AbWfTbmSaKExEvS2VJZyjwopm17vc/nXO/T+YOoj/+tC4FozJegS8iXpaywHfO7QEm9eQ+wm8moeVw316BLyISko5x+CnRGv0KfOltWlpaqK6upqmpqUuv79evHzt27Ehyq3o3HXN8Pp+PkSNHdnowSkYFftwePkZrJV+BL71BdXU1xcXFjBo1Kub/bGfV1tZSXFzcAy3rvXTMHTnnOHz4MNXV1Zx99tmd2mZGjXOKqeFba8i3Pa7Al96gqamJkpKSLoW9SCszo6SkJKFPihkV+NFa/5QCCnzphRT2kgyJ/j/K+JKOevjS27z++uu8//77XX59Y2MjBQUFnX7+3/zN33RY97nPfY4333yzU6+vqqriiiuuYOvWHhtF3SXl5eXcf//9TJsWO9x8xYoVLF26lMLCQgCKioqoq6vr8PqHH36YwsJCbrjhhpS094knnmDDhg38+Mc/Tvm+W2Vs4EeGZUY9rsAXCels2PcUv99PTk7PxM+KFStYvHhxJPBP5Otf/3qP7L8z0rXvjCrpaFimSOcUFRXFXf/ggw8yceJEJk6cyIoVKyLr/X4/X/nKVygrK+Oaa66hoaEBgO9+97uMHz+esrIy/umf/gmAQ4cOsXDhQqZPn8706dNZu3YtAHfddRdLly7lsssu44YbbmDmzJls27Ytso/y8nI2btxIfX09N910E9OnT2fKlCn8+te/BkKfbK6//nrKysr4u7/7OxobGzu0/9/+7d/Yv38/c+fOZe7cuZH13/ve95g0aRIXXHABH3/8caQ9999/f+R1rcdx/fXXd9jutm3bmDFjBpMnT6asrIz33nsPgKeeeoqysjImTZrEkiVLAPjNb37DzJkzmTJlCpdeemlkf9Gi911eXs53vvMdZsyYwbnnnsv//M//ANDQ0MB1110XOd6ZM2eSyMwD8WRsD99MgS+SiI0bN/If//EfrF+/HuccM2fO5OKLL2bAgAHs2rWLxx57jFmzZnHTTTfx7//+79x00028+OKL7Ny5EzOjpqYGgNtuu43bb7+d2bNn8+GHHzJv3rzI8MKNGzeyZs0aCgoKWL58OatWrWLZsmUcOHCA/fv3M3XqVP7lX/6FSy65hMcff5yamhpmzJjBG2+8wX/+539SWFhIZWUllZWVnH/++R2O4Vvf+hYPPvggr7/+OoMGDQKgvr6eCy64gB/84Ad8+9vf5uc//znf//73Y173wx/+kA8++ID8/PzIcUR7+OGHue2221i0aBHHjx8nEAiwbds2fvCDH7B27VoGDRrEkSNHAJg9ezZvvfUWZsajjz7KvffeywMPPHDS373f7+ftt9/mlVdeYdmyZaxevZpHH32UAQMGUFlZydatW5k8eXKC/6IdZWwPX2faiiRmzZo1XHXVVfTp04eioiKuvvrqSG/zzDPPZNasWQAsXryYNWvW0LdvX3w+HzfffDMvvPBCpISyevVqvvnNbzJ58mSuvPJKjh07Rm1tLQBXXnll5PuH6667jueeew6AVatWce211wLwxz/+kR/+8IdMnjyZ8vJympqaqK6u5o033mDx4sUAlJWVUVZW1qnjysvL44orrgBg6tSpVFVVdXhOWVkZixYt4umnn45barrwwgu5++67ueeee/jrX/9KQUEBr732Gtdcc03kjWXgwIFAaNjtvHnzKC0t5b777ov5FHMiV199dYf2rVu3LvJpY+LEiZ0+3pPJ2MBvG4ffRoEvcmIn+/toPxrEzMjJyeHtt99m4cKFvPTSS8yfPx8IzfK4bt06Nm3axKZNm9i3b19kPHmfPn0i2xgxYgQlJSVUVlby7LPPRsLNOcfzzz8fef2HH37I2LFj47ajM3JzcyOvy87Oxu/3d3jO7373O77xjW+wceNGpk6d2uE5f//3f8/LL79MQUEB8+bN47XXXsM5F7c9t956K9/85jfZsmULP/vZzzo1bDI/P79D+3oirzI48EPUwxfpnDlz5vDSSy/R0NBAfX09L774IhdddBEAH374IevWrQPgl7/8JbNnz6auro6jR4+yYMECVqxYwaZNmwC47LLL+PGPfxzZbuv6eK6//nruvfdejh49SmlpKQDz5s3jRz/6UeTv9d1334207xe/+AUAW7dupbKyMu42i4uLI58oOiMYDLJ3717mzp3LvffeS01NTYdRPXv27GH06NF861vf4sorr6SyspLPf/7zrFq1isOHDwNESjpHjx5lxIjQFL1PPvlkp9vR3oUXXsiqVasA2L59O1u2bOnytlplbOBn6UtbkYScf/753HjjjcyYMYOZM2dy8803M2XKFADGjRvHk08+SVlZGUeOHOGWW26htraWK664grKyMi6++GKWL18OhL4A3bBhA2VlZYwfP56HH374hPu85ppreOaZZ7juuusi6+68805aWlooKytj4sSJ3HnnnQDccsst1NXVUVZWxr333suMGTPibnPp0qV88YtfjPnS9mQCgQCLFy+mtLSUKVOmcPvtt9O/f/+Y5zz77LNMnDiRyZMns3PnTm644QYmTJjA9773PS6++GImTZrEHXfcAYS+kL322mu56KKLIuWerrj55ps5dOgQZWVl3HPPPZSVldGvX78ubw/SOB9+ZyQ6H351dXWkN/DCxr283nQW0wY5vjI2dIwjRoyI+0VPptCc4aeHHTt2MG7cuC6/XtMMeENNTQ0+nw+fz8df/vIXPv/5z7N7927y8vJinhfv/9OJ5sPP4FE6oZ+q4YvI6aihoYFLL72UlpYWnHP89Kc/7RD2icrYwFdJR0ROZ8XFxd0ed99extbw9aWtiEisDA589fBFRKJlbOBnaRy+iEiMjA38yJe26uGLiACZHPgq6YiIxMiowI+54lU48KMvgBIMBtu/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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# this is what I observed after running for many different c_p^2\n", "inps = np.linspace(1e-10, 5, 100000)\n", "f1 = lambda x: x**-0.5 * (np.log(2) + x/2)\n", "f2 = lambda x: x**-0.5 * (2 * x * np.log(2))**0.5\n", "\n", "plt.plot(inps, [f1(i) if i < 2*np.log(2) else f2(i) for i in inps], \n", " label='i observed this scaling',\n", " linewidth=8, alpha=0.3, color='black')\n", "plt.plot(inps, f1(inps), label='$log 2/C_p +C_p/2$', linewidth=2)\n", "plt.plot(inps, f2(inps), label='$\\sqrt{2 log 2}$', linewidth=2)\n", "# plt.plot(inps, inps**0.5, label='sqrt(x) (expected scaling)', linewidth=2)\n", "plt.legend()\n", "plt.grid()\n", "plt.ylim(0,5)\n", "plt.xlabel('$C_p^2$')\n", "plt.ylabel(\"$energy / C_p$\")" ] }, { "cell_type": "markdown", "id": "815dc426", "metadata": {}, "source": [ "The minimum energy should be proportional to $c_p$. I think this means the limit of $P(p)$ is in fact $\\sqrt{2 log 2}$.\n", "\n", "This ended up being true, because of the relationship to the random energy model." ] }, { "cell_type": "markdown", "id": "a07d03aa", "metadata": {}, "source": [ "## Comparison with Montanari for Max 2XOR, Max 3XOR" ] }, { "cell_type": "markdown", "id": "019b217c", "metadata": {}, "source": [ "This also roughly matches the calculation in https://arxiv.org/pdf/2009.11481.pdf that does Max 2XOR and Max 3XOR. They get\n", "$$\n", "e_2 = 0.763168\\pm 0.000002\n", "$$\n", "and \n", "$$\n", "e_3 = 0.8132\\pm 0.0001\n", "$$" ] }, { "cell_type": "markdown", "id": "6e6b02c6", "metadata": {}, "source": [ "Where $e_2$ uses $\\xi(s) = s^2/2$ and $e_3$ uses $\\xi(s) = s^3/2$." ] }, { "cell_type": "code", "execution_count": 19, "id": "b79296f4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "my result, p: 2 e_p: 0.7636080099725112\n", "my result, p: 3 e_p: 0.8134839392376416\n" ] } ], "source": [ "for p, o in list(zip(ps, outs_scaled))[:2]:\n", " print(\"my result, p:\", p, \"e_p:\", o * 2**-0.5)" ] }, { "cell_type": "markdown", "id": "f8c66170", "metadata": {}, "source": [ "/The agreement gives me confidence that my approach is correct." ] }, { "cell_type": "markdown", "id": "384d333a", "metadata": {}, "source": [ "Note: This matches Table 1 in the original Parisi paper! (k=0 -> 0.798, k=1 -> 0.7652, k=2 -> 0.7636)" ] }, { "cell_type": "markdown", "id": "ed0b0a72", "metadata": {}, "source": [ "One way to improve my precision is to explicitly solve for the derivative, and use it in the optimization procedure (as the Montanari paper does)." ] }, { "cell_type": "markdown", "id": "a541bc6d", "metadata": {}, "source": [ "## Using the Parisi constants in Sen's Max XOR upper bound" ] }, { "cell_type": "markdown", "id": "7e32312b", "metadata": {}, "source": [ "I insert these values for Subhabrata Sen's bounds for Max XOR on hypergraphs, as listed here: https://doi.org/10.1002/rsa.20774\n", "\n", "The satisfying fraction for Max CUT on p-uniform hypergraphs is to first order in D: $\\frac{1}{2}+ \\frac{P_p \\sqrt{p}}{2}\\frac{1}{\\sqrt{D}}$" ] }, { "cell_type": "markdown", "id": "39ca5727", "metadata": {}, "source": [ "This makes the satisfying fraction $\\frac{1}{2} + \\frac{C_p}{\\sqrt{D}}$, where $C_p$ is listed below:" ] }, { "cell_type": "code", "execution_count": 20, "id": "a5d91e87", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2 0.7636080099725112\n", "3 0.9963102825407285\n", "4 1.167404239276317\n", "5 1.311775600987615\n", "6 1.4398204069458498\n", "7 1.556488933481653\n", "8 1.6645763092854464\n", "9 1.7658498912789056\n", "10 1.8615163124503746\n", "11 1.9524474015895312\n", "12 2.0393008152733496\n", "13 2.122589491242484\n", "14 2.2027241316732726\n", "15 2.2800405356546314\n", "16 2.354817957138704\n", "17 2.427291898224409\n", "18 2.4976633100140493\n", "19 2.5661053895923454\n", "20 2.6327687165823077\n", "21 2.6977852104543865\n", "22 2.7612712298482007\n", "23 2.823330034490115\n", "24 2.88405376498115\n", "25 2.9435250521763856\n", "26 3.001818338096022\n", "27 3.059000969477501\n", "28 3.115134110216257\n", "29 3.1702735081514213\n", "30 3.224470143693114\n", "31 3.277770781835779\n", "32 3.3302184445984584\n", "33 3.381852817484659\n", "34 3.4327106008899846\n" ] } ], "source": [ "for p, x in zip(ps, outs_scaled):\n", " print(p, x * p**0.5 / 2)" ] }, { "cell_type": "markdown", "id": "7be8113f", "metadata": {}, "source": [ "Because of the limit, we expect a large $p$XORSAT problem to have satisfying fraction at most\n", "\n", "$$\\frac{1}{2} + \\frac{\\sqrt{2 log 2}}{2} \\sqrt{\\frac{p}{D}} = \\frac{1}{2} + \\sqrt{\\frac{p log 2}{2}} \\frac{1}{\\sqrt{D}} \\approx \\frac{1}{2} + 0.58871\\sqrt{\\frac{p}{D}}$$" ] }, { "cell_type": "markdown", "id": "bbbd9177", "metadata": {}, "source": [ "## Bonus: Evaluating the $p$-SAT approximations" ] }, { "cell_type": "markdown", "id": "5c19a381", "metadata": {}, "source": [ "A similar formula to Sen has been done by Panchenko for $p$-SAT: https://arxiv.org/pdf/1608.06256.pdf" ] }, { "cell_type": "markdown", "id": "916fa1b6", "metadata": {}, "source": [ "Given $N$ variables and $\\alpha N$ clauses, the satisfying fraction is \n", "$$1-\\frac{1}{2^p} + \\frac{B_p}{2^p}\\frac{1}{\\sqrt{\\alpha}}$$" ] }, { "cell_type": "markdown", "id": "daa5379b", "metadata": {}, "source": [ "Where $B_p$ is the limit of a Parisi formula with $\\xi(x) = (1+x)^p - 1$." ] }, { "cell_type": "code", "execution_count": 21, "id": "e4a346d7", "metadata": {}, "outputs": [], "source": [ "# set parameters\n", "# k is number of jumps\n", "k=2\n", "# if this range is too small, it fails at higher p\n", "INPS = np.linspace(-30, 30, 400)\n", "PDF_INPS = stats.norm.pdf(INPS)\n", "PDF_INPS = PDF_INPS/np.sum(PDF_INPS)\n", "assert np.allclose(sum(PDF_INPS),1), sum(PDF_INPS)\n", "grid = np.meshgrid(*[INPS]*(k+1), indexing='ij')" ] }, { "cell_type": "code", "execution_count": 22, "id": "9afd24c3", "metadata": {}, "outputs": [], "source": [ "ksat_ps = range(3, 10)\n", "\n", "# CONST_SQ may affect my convergence.\n", "CONST_SQ = 0.5\n", "\n", "def run_ksat(P):\n", "# xi = lambda x: CONST_SQ* (-1 + (1+x)**P)\n", " xiprime = lambda x: CONST_SQ* P * ((1+x)**(P-1))\n", " xiprimeprime = lambda x:CONST_SQ* P * (P-1) * ((1+x)**(P-2))\n", " opt = minimize(make_test(xiprime, xiprimeprime, k, PDF_INPS), \n", " [np.random.random()/k for _ in range(2*k)], \n", " method='Powell', \n", " options={\"xtol\": 1e-10, \"ftol\":1e-14}\n", " )\n", " print(\"p:\", P, opt.fun)\n", " return {\"x\": opt.x, \"fun\": opt.fun}" ] }, { "cell_type": "code", "execution_count": 23, "id": "e04f8cab", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "kSAT:\n", "p: 3 1.5681444028917366\n", "p: 4 2.6570658272125645\n", "p: 5 4.135420402431401\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_70773/3977490124.py:9: RuntimeWarning: overflow encountered in exp\n", " start = np.log(np.sum(np.exp(ms[i]*start)*PDF_INPS, axis=i))/ms[i]\n", "/home/kunal/miniconda3/lib/python3.8/site-packages/scipy/optimize/optimize.py:2149: RuntimeWarning: invalid value encountered in double_scalars\n", " tmp2 = (x - v) * (fx - fw)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "p: 6 6.174495466368439\n", "p: 7 9.3617669879651\n", "p: 8 12.984169021100051\n", "p: 9 18.558779309269934\n", "CPU times: user 3h 23min 36s, sys: 1h 10min 19s, total: 4h 33min 56s\n", "Wall time: 4h 33min 59s\n" ] } ], "source": [ "%%time\n", "\n", "print(\"kSAT:\")\n", "r_ksat = []\n", "for P in ksat_ps:\n", " r_ksat.append(run_ksat(P))\n", "# pool = multiprocessing.Pool(processes=n_proc)\n", "# r_ksat = pool.map(run_ksat, ksat_ps)\n", "# pool.close()" ] }, { "cell_type": "code", "execution_count": 31, "id": "f4ba9fae", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsoAAAHSCAYAAAD1++0rAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAA5LklEQVR4nO3df5RddX3v/+c7CTRAEpBfEUi4iTaSREwCDKFpQEf5qoFrjVi+bVDklzaAxoWU+iX2LvHe2tWK9q6vlwqk+fJ7VRMr8lMjtN4y4loEISgCIQQjgTBByy8HM4QUZnh//zgn3GHYyZyZ83Nmno+1ZuXssz97n/f+zNmfvGafffaOzESSJEnSm41pdgGSJElSKzIoS5IkSQUMypIkSVIBg7IkSZJUwKAsSZIkFTAoS5IkSQXGNeuFDzzwwJw2bdqgl3v55ZfZZ599al/QMGIf2AdgH+zUrH544IEHns/Mgxr+wk0yUsds66teq9dofdUZKfUNeczOzN3+ANcAzwKPDNDuWKAXOHWgdWYmxxxzTA7FXXfdNaTlRhL7wD7ItA92alY/AOuygrFupPyM1DHb+qrX6jVaX3VGSn1DHbMrOfXiOmDR7hpExFjgUuDOQSd1SZIkqQUNGJQz827gxQGafR74PqUjz5IkSdKwV/WX+SLiMOAUYEX15UiSJEmtoRZf5vsmcHFm9kbEbhtGxFJgKcDkyZPp6OgY9It1d3cPabmRZDj2QUSwzz77MHbs2Jqsb9KkSfziF7+oybpqobe3l5dffnnn+foNMRzfB/VgPzTPa6+9RmdnJzt27Nhlm3333ZcNGzY0sKrB2V1948ePZ8qUKeyxxx4NrkpSq6hFUG4DVpdD8oHAyRHRk5m39G+YmSuBlQBtbW3Z3t4+6Bfr6OhgKMuNJMOxDzZv3szEiRM54IADGOgPqkps27aNiRMn1qCy6mUmL7zwAtu2bWP69OkNe93h+D6oB/uheTo7O5k4cSLTpk3b5X7dSvtqkV3Vt3O/7uzsbOh+Lam1VH3qRWZOz8xpmTkNuBH4bFFI1ui2Y8eOmoXkVhMRHHDAAbs9qiaNRO7Xkka6AY8oR8QqoB04MCI6ga8AewBkpuclq2Ij8T/TnUbyto1k/+P29QB85U/e3eRKhq+R/N4fydsmDUs/Wl7696SvNewlBwzKmXlapSvLzLOqqkZqQbfeeitf/vKXGTNmDOPGjeOb3/wmxx9/fLPLUg08+szvm12CmuSll17i9NNP58knn+T111/nr/7qrzj77LObXVZD+Yeihp3fPtzwl2zanfmk4eLEE0/kox/9KBHBQw89xJ/92Z/x2GOPNbssSVW4/PLLmT17Nt/5znfYsWMHRxxxBJ/85CfZc889m11aw/iHojSwqs9RloaLJ598kpkzZ3LmmWcyZ84cTj31VLZv3z7gchMmTHjjI9iXX37Zj2PV8iJiUURsjIhNEbG8YP6+EXF7RPwyItZHxLA9lDrU/Toi2LZtG5lJd3c3+++/P+PGeexI0ps5Kqjh/sft66s+ktHb2/umS83NPnRSRR8fbty4kauvvpqFCxdyzjnncMUVV7B161buuuuut7RdsmQJy5eXMsbNN9/Ml770JZ599ll++MMfVlW7VE/lO6VeDnwQ6ATuj4jbMvPRPs0+BzyamX8SEQcBGyPi25n56lBfd1f7df99dTDquV8vW7aMj370o7zrXe+iu7ub7373u4wZ47EjSW9mUNaoMnXqVBYuXAjA6aefzmWXXcYtt9wy4HKnnHIKp5xyCnfffTdf/vKX+fGPf1znSqUhmw9syswnACJiNbAY6BuUE5gYpY9HJlC6+2pPowutlaHs13feeSfz5s3j1ltv5dlnn+WDH/wgJ5xwApMmTWpAxZKGC4OyGq4WXxwZ6rVZ+582ERFceOGFAx5R3um9730vv/71r3n++ec58MADB/36UgMcBjzdZ7oTOK5fm28BtwHPABOBP8/M16t50V3t1424jvJQ9utrr72W5cuXExH84R/+IdOnT+exxx5j/vz5da1V0vBiUNaosmXLFtauXcuCBQtYtWoVxx9/PBdddNFul9m0aRPvfOc7iQh+/vOf8+qrr3LAAQc0qGJp0IpOou9/y8gPAw8CHwDeCfxbRPw0M9907sRAd1Pdd9992bZt226L6e3tHbBNNbq7u9myZQs//vGPOe6447jhhhs49thj+fznP7/LZbZt28YhhxzCmjVreM973sOvf/1rHnvsMQ4++OC31Lpjx46m3vmxnnee7Op6BaDq9bf63TGtrzqtVN+8ri4AHuxTT73rMyhrVJk1axbXX3895557LjNmzOD8888fcJnvf//73HDDDeyxxx7stddefPe73/ULfWplncDUPtNTKB057uts4GtZuuf6pojYDMwE7uvbaKC7qW7YsGHAo8X1PqI8YcIEZs2axY033shf/uVfMmPGDL7whS+w995773a5v/mbv+Gss85i4cKFRARf//rXmTZt2lvajR8/nqOOOqpO1Q+snneevHLjWgDa2xdUtZ5Wvzum9VWnperbvB/Am+qpd30GZY0qY8aMYcWKwd0n5+KLL+biiy+uU0VSzd0PzIiI6cBWYAnwiX5ttgAnAj+NiMnAEcATDa2yhoayXx966KH867/+a8vfYltScxmUJWkEycyeiFgG3AmMBa7JzPURcV55/grgq8B1EfEwpVM1Ls7M55tWtCS1KIOyRo1p06bxyCOPNLsMqe4ycw2wpt9zK/o8fgb4UKPrqgf3a0n15EUjJUmSpAIGZUmSJKmAQVmSJEkqYFCWJEmSChiUpQrdf//9jB07lhtvvLHZpUiq0u9+9ztOOeUUFixYwPz58/1CoKRCBmWpAr29vVx88cV8+MMfbnYpkmrg7/7u75g3bx5r167lhhtu4IILLmh2SZJakEFZo8aTTz7JzJkzOfPMM5kzZw6nnnoq27dvr2jZf/zHf+RP//RPOfjgg+tcpaTBGOp+/eijj3LiiScCMHPmTJ588kn+4z/+o97lShpmvI6yGu9Hy+G3D1e1ir16e2Bsn7fv298DJ31twOU2btzI1VdfzcKFCznnnHO44oor2Lp1K3fddddb2i5ZsoTly5ezdetWbr75Zv793/+d+++/v6q6pRFrF/v1W/bVwajjfj137lxuuukm5s6dy3333cdTTz1FZ2cnkydPHlqtkkakAUeviLgG+AjwbGYeWTD/k8DO+/t2A+dn5i9rWqVUI1OnTmXhwoUAnH766Vx22WXccsstu13mC1/4Apdeeiljx45tQIWSBmso+/Xy5cu54IILWLhwIXPnzuWoo45i3DiPHUl6s0pGheuAbwE37GL+ZuB9mfm7iDgJWAkcV5vyNCJVcIRoIK9s28bEiRMHvVxEvGX6wgsv3O2Rp3Xr1rFkyRIAnn/+edasWcO4ceP42Mc+NqTapRFpF/v1UPfVwRjKfj1p0iSuvfZatm3bxoQJE5g+fTrTp0+va52Shp8Bg3Jm3h0R03Yz/54+k/cCU2pQl1QXW7ZsYe3atSxYsIBVq1Zx/PHHc9FFF+12mc2bN7/x+KyzzuIjH/mIIVlqIUPZr7u6uth7770BuOqqq3jve9/LpEmTGlGupGGk1p8zfRr40a5mRsRSYCnA5MmT6ejoGPQLdHd3D2m5kWQ49sG+++7Ltm3bara+3t7eQa+vu7ubI444gquuuoq/+Iu/4J3vfCd/+7d/O6j1vPbaa7zyyiuFy+zYsaOhv5fh+D6oh2r6oavrFQD7cZibNWsW119/Peeeey4zZszg/PPPH3CZDRs2cMYZZxARHHnkkVx99dUNqFTScFOzoBwR76cUlI/fVZvMXEnp1Aza2tqyvb190K/T0dHBUJYbSYZjH2zYsKGmH79uG8LHuRMmTGDcuHFV/Yf47W9/e5fzxo8fz1FHHTXkdQ/WcHwf1EM1/XDlxrUAtLcvqGFFarQxY8awYsWKQS2zYMECfvWrXw1pLJE0etQkKEfEHOAq4KTMfKEW65QkSZKaqerrKEfE4cBNwKcy8/HqS5LqY9q0ad59Sxph3K8l1VMll4dbBbQDB0ZEJ/AVYA+AzFwBXAIcAFxR/uZxT2a21atgSZIkqREquerFaQPM/wzwmZpVJEkaNjLzLZdnGykys9klSGoyb2EtSRqS8ePH88ILL4zIQJmZvPDCC4wfP77ZpUhqIm9DJEkakilTptDZ2clzzz23yzY7duxo6bC5u/rGjx/PlCneGkAazQzK0gA6OjpYvHjxG3ft+vjHP84ll1zS5Kqk5ttjjz0GvJtdR0dHQy+bOFitXp+k5jIoSxU44YQT+MEPftDsMiRJUgN5jrJGjSeffJKZM2dy5plnMmfOHE499VS2b9/e7LIkSVKL8oiyGu7S+y7lsRcfq2odvb29jB079o3pmfvP5OL5Fw+43MaNG7n66qtZuHAh55xzDldccQVbt27lrrvuekvbJUuWsHz5cgDWrl3L3LlzOfTQQ/mHf/gH3v3ud1dVvyRJan0GZY0qU6dOZeHChQCcfvrpXHbZZdxyyy27Xeboo4/mqaeeYsKECaxZs4aPfexj/OpXv2pAtZIkqZkMymq4So78DmTbtm1MnDhx0Mv1v95rRHDhhRfu9ojypEmT3nju5JNP5rOf/SzPP/88Bx544OALl0aTddcy7xdXweb9ml3JLs3r6hq19V3ywkulB9fuW9V6RnMf1oL1DcJvH4a3v6ehL2lQ1qiyZcsW1q5dy4IFC1i1ahXHH388F1100W6X+e1vf8vkyZOJCO677z5ef/11DjjggAZVLA1jD9/IhO7NsJ9XlZBUA29/D7zn1Ia+pEFZo8qsWbO4/vrrOffcc5kxYwbnn3/+gMvceOONXHnllYwbN4699tqL1atXj9g7kUm11j1hOvud/cNml7FLD3Z00N7e3uwydqme9f3NP60F4LtnL6hqPaO5D2vB+lqbQVmjypgxY1ixYsWgllm2bBnLli2rU0WSJKlVeXk4SZIkqYBBWaPGtGnTeOSRR5pdhiRJGiYMypIkSVIBg7IkSZJUwKAsSZIkFTAoS5IkSQUGDMoRcU1EPBsRhd+CipLLImJTRDwUEUfXvkypuTo6Opg3bx7vfve7ed/73tfsciRJUgNUckT5OmDRbuafBMwo/ywFrqy+LKl1dHV18dnPfpbbbruN9evX873vfa/ZJUm7FRGLImJj+QDG8l20aY+IByNifUT8pNE1StJwMGBQzsy7gRd302QxcEOW3AvsFxGH1KpAqVaefPJJZs6cyZlnnsmcOXM49dRT2b59+4DLfec73+HjH/84hx9+OAAHH3xwvUuVhiwixgKXUzqIMRs4LSJm92uzH3AF8NHMfDfwfze6TkkaDmpxZ77DgKf7THeWn/tNDdatEei3f/d3/OeGx6paR09vLy+OHfvG9B/Mmsnb//qvB1xu48aNXH311SxcuJBzzjmHK664gq1bt3LXXXe9pe2SJUtYvnw5jz/+OK+99hrt7e1s27aNCy64gDPOOKOq+qU6mg9syswnACJiNaUDGo/2afMJ4KbM3AKQmc82vEpJGgZqEZSj4LksbBixlNLpGUyePJmOjo5Bv1h3d/eQlhtJhmMf7Lvvvmzbtg2A1159jZ7e3upWmPmmdYx59bU31r8r3d3dTJkyhTlz5rBt2zY+/vGPs2LFClatWrXLZbZt28b27dv5xS9+we23386OHTs48cQTOfLII5kxY8ab2u7YsaOhv5fh+D6oh2r6oavrFYCR1o9FBy+O69fmXcAeEdEBTAT+V2be0JjyJGn4qEVQ7gSm9pmeAjxT1DAzVwIrAdra2rK9vX3QL9bR0cFQlhtJhmMfbNiwgYkTJwIw8b9/per1bdu27Y31VWrChAmMGTPmjeX23ntv9thjDy655JLdHlF+xzvewaGHHsrb3/52ANrb2/n1r3/N0Ue/+Xur48eP56ijjhriFg3ecHwf1EM1/XDlxrUAtLcvqGFFTVfJwYtxwDHAicBewNqIuDczH3/Tiqo8uDGvq4ve3t6W/kOk1f/grGd9tfpDcTT3YS1YX3XqXV8tgvJtwLLyx3vHAS9lpqddqCVt2bKFtWvXsmDBAlatWsXxxx/PRRddtNtlFi9ezLJly+jp6eHVV1/lZz/7GRdeeGGDKpYGrZKDF53A85n5MvByRNwNzAXeFJSrPrixeT+6urpa+g+6Vv+Ds5711eoPxdHch7VgfdWpd32VXB5uFbAWOCIiOiPi0xFxXkScV26yBngC2AT8f8Bn61atVKVZs2Zx/fXXM2fOHF588UXOP//8ipZZtGgRc+bMYf78+XzmM5/hyCOPbEC10pDcD8yIiOkRsSewhNIBjb5uBU6IiHERsTelgxwbGlynJLW8AY8oZ+ZpA8xP4HM1q0iqozFjxrBixYpBL/fFL36RL37xi3WoSKqtzOyJiGXAncBY4JrMXL/z4EZmrsjMDRFxB/AQ8DpwVWYWXitfkkazWpx6IUlqIZm5htKnfX2fW9Fv+hvANxpZlyQNN97CWqPGtGnTeOQRD5pJkqTKGJQlSZKkAgZlSZIkqYBBWZIkSSpgUJYkSZIKGJSlAXzjG99g3rx5zJs3jyOPPJKxY8fy4osvNrssSZJUZwZlaQBf/OIXefDBB3nwwQf5+7//e973vvex//77N7ssSZJUZwZljRpPPvkkM2fO5Mwzz2TOnDmceuqpbN++fVDrWLVqFaedttt78EiSpBHCG46o4X76L4/z/NPdVa2jt7eXsWPHvjF94NQJnPBn7xpwuY0bN3L11VezcOFCzjnnHK644gq2bt3KXXfd9Za2S5YsYfny5W9Mb9++nTvuuINvfetbVdUuSZKGB4OyRpWpU6eycOFCAE4//XQuu+wybrnlloqWvf3221m4cKGnXUiSNEoYlNVwlRz5Hci2bduYOHHioJeLiLdMX3jhhRUdUV69erWnXUiSNIoYlDWqbNmyhbVr17JgwQJWrVrF8ccfz0UXXTTgci+99BI/+clP+Od//ucGVClJklqBX+bTqDJr1iyuv/565syZw4svvsj5559f0XI333wzH/rQh9hnn33qXKEkSWoVHlHWqDJmzBhWrFgx6OXOOusszjrrrNoXJEmSWpZHlCVJkqQCBmWNGtOmTeORRx5pdhmSJGmYqCgoR8SiiNgYEZsiYnnB/H0j4vaI+GVErI+Is2tf6lv99F8e56f/8ngjXkqSJEmjzIDnKEfEWOBy4INAJ3B/RNyWmY/2afY54NHM/JOIOAjYGBHfzsxX61J1WbU3rVBjZeZbLs82UmRms0uQJEk1VsmX+eYDmzLzCYCIWA0sBvoG5QQmRikFTQBeBHpqXOtbvLplS/nR0fV+KVVp/PjxvPDCCxxwwAEjLixnJi+88ALjx49vdinSqPKdn23h1ge3VrWOrq5XuHLj2hpVVHv1rO/R3/ye2YdMqsu6pZGikqB8GPB0n+lO4Lh+bb4F3AY8A0wE/jwzX69Jhbvx+vbt9X4J1ciUKVPo7Ozkueeeq8n6duzY0VLBdPz48UyZMqXZZUijyq0PbjXsVWH2IZNYPO+wZpchtbRKgnLR4b/+nzN/GHgQ+ADwTuDfIuKnmfn7N60oYimwFGDy5Ml0dHQMtl66u7vfWK6np3TQeijrGc769sFo1d3dzYQJE5pdxps89dRTDX093wcl1fRDV9crwOgbQ0aS2YdM4rvnLhjy8h0dHbS3D335emv1+qSRrpKg3AlM7TM9hdKR477OBr6WpRM1N0XEZmAmcF/fRpm5ElgJ0NbWlu3t7YMuuDRolJZb9e3vADCU9QxnfftgtLIP7IOdqumHnR9pG0QkSUUqCcr3AzMiYjqwFVgCfKJfmy3AicBPI2IycATwRC0LHarvPf491jyxpur1zNx/JhfPv7gGFUmSJGk4GPDycJnZAywD7gQ2AP+Smesj4ryIOK/c7KvAH0fEw8D/Bi7OzOfrVfRgrHliDRtf3NjsMiRJkjTMVHQL68xcA6zp99yKPo+fAT5U29Jq54j9j+DaRdc2uwxJkiQNI96ZT5IkSSpgUJYkSZIKGJQlSZKkAgZlSZIkqYBBWZIkSSpgUJYkSZIKGJQlSZKkAgZlSZIkqUBFNxxpGeuuZd4vroLN+5WmX11c+vfa/7rrZeI/Bm4zzMzr6vo/fTBK2Qct1gdvfw+c9LVmVyFJUk0NryPKD9/IhO7Nza5CklpaRCyKiI0RsSkilu+m3bER0RsRpzayPkkaLobXEWWge8J09jv7h6WJe75T+nfndJE7zi79O4JuYf1gRwft7e3NLqOp7AP7QMUiYixwOfBBoBO4PyJuy8xHC9pdCtzZ+ColaXgYVkF5/bPv4dHfzmDc//w5AL8fsz+TXn+xyVVJUkuZD2zKzCcAImI1sBh4tF+7zwPfB45tbHmSNHwMq1MvHn9+Fr/7z7e/MT3p9Rc5rOeJJlYkSS3nMODpPtOd5efeEBGHAacAKxpYlyQNO8PqiDLA2/7gt5xyUemLeU996pvNLUaSWk8UPJf9pr8JXJyZvRFFzcsrilgKLAWYPHkyHR0dgypkXlcXvb29g16uUl1drwBUtf7u7u661VcLrV4ftH6N1led0V7fsAvKkqTd6gSm9pmeAjzTr00bsLockg8ETo6Insy8pW+jzFwJrARoa2vLQZ8Tv3k/urq66nYu/ZUb1wLQ3r5gyOvoaPFz/Vu9Pmj9Gq2vOqO9PoOyJI0s9wMzImI6sBVYAnyib4PMnL7zcURcB/ygf0iWJBmUJWlEycyeiFhG6WoWY4FrMnN9RJxXnu95yZJUoYqCckQsAv4XpUH3qsx8y50FIqKd0nlvewDPZ+b7alalJKlimbkGWNPvucKAnJlnNaImSRqOBgzKlVyTMyL2A64AFmXmlog4uE71SpIkSQ1RyeXh3rgmZ2a+Cuy8JmdfnwBuyswtAJn5bG3LlCRJkhqrkqA84DU5gXcBb4uIjoh4ICLOqFWBkiRJUjNUco5yJdfkHAccA5wI7AWsjYh7M/PxN62oymty9vT0kJlvLPe2ri4ANu9mPV3lNq18DcDBavVrGjaCfWAf7FRNP9TiOrySpJGrkqBcyTU5Oyl9ge9l4OWIuBuYC7wpKFd7Tc6bf/gUPT09b1wv76mrrwFg7m7Wc/0d1wO09DUAB6vVr2nYCPaBfbBTNf1Qi+vwSpJGrkpOvXjjmpwRsSela3Le1q/NrcAJETEuIvYGjgM21LZUSZIkqXEGPKJcyTU5M3NDRNwBPAS8TukSco/Us3BJkiSpniq6jnIl1+TMzG8A36hdaZIkSVLzVHLqhSRJkjTqGJQlSZKkAgZlSZIkqYBBWZIkSSpgUJYkSZIKGJQlSZKkAgZlSZIkqYBBWZIkSSpgUJYkSZIKGJQlSZKkAgZlSZIkqYBBWZIkSSpgUJYkSZIKGJQlSZKkAgZlSZIkqYBBWZIkSSpgUJYkSZIKVBSUI2JRRGyMiE0RsXw37Y6NiN6IOLV2JUqSJEmNN26gBhExFrgc+CDQCdwfEbdl5qMF7S4F7qxHoRoevvOzLdz64Na6v05X1ytcuXFt3V+nldkHJdX0w6O/+T2zD5lU44okSSNFJUeU5wObMvOJzHwVWA0sLmj3eeD7wLM1rE/DzK0PbuXR3/y+2WVIFZl9yCQWzzus2WVIklrUgEeUgcOAp/tMdwLH9W0QEYcBpwAfAI6tWXUalmYfMonvnrugrq/R0dFBe3t9X6PV2Qcl9oMkqV4qCcpR8Fz2m/4mcHFm9kYUNS+vKGIpsBRg8uTJdHR0VFZlWU9PD5n5xnJv6+oCYPNu1tNVbjPY12pl3d3dLbs9XV2vAPXv71bug0axD0rsB0lSvVQSlDuBqX2mpwDP9GvTBqwuh+QDgZMjoiczb+nbKDNXAisB2trasr29fVDF3vzDp+jp6WHnck9dfQ0Ac3eznuvvuB6Awb5WKysdQWtvdhmFdp4rWu8jfK3cB41iH5TYD5KkeqkkKN8PzIiI6cBWYAnwib4NMnP6zscRcR3wg/4huRZ6unt47eUenvrUGQDseOwxxs+cWeuXkSRJkgYOypnZExHLKF3NYixwTWauj4jzyvNX1LnGN/Rs7yVf442qx8+cyaSPfKRRLy9JkqRRpJIjymTmGmBNv+cKA3JmnlV9WbsWe8B/ueGGer6EJEmS5J35JEmSpCIGZUkaYQa6m2pEfDIiHir/3BMRc5tRpyS1OoOyJI0gfe6mehIwGzgtImb3a7YZeF9mzgG+SvlqRJKkNzMoS9LIMuDdVDPznsz8XXnyXkqX/ZQk9VPRl/kkScPGgHdT7efTwI+KZlR7k6h5XV309vbW7YYwtbjBUavfsKbV64PWr9H6qjPa6zMoS9LIUsndVEsNI95PKSgfXzS/2ptEsXk/urq66nZDmFrc4KjVb1jT6vVB69dofdUZ7fUZlCVpZKnkbqpExBzgKuCkzHyhQbVJ0rDiOcqSNLK8cTfViNiT0t1Ub+vbICIOB24CPpWZjzehRkkaFjyiLEkjSIV3U70EOAC4IiIAejKzrVk1S1KrMihL0ggz0N1UM/MzwGcaXZckDTeeeiFJkiQVMChLkiRJBQzKkiRJUgGDsiRJklTAoCxJkiQVMChLkiRJBQzKkiRJUgGDsiRJklSgoqAcEYsiYmNEbIqI5QXzPxkRD5V/7omIubUvVZIkSWqcAYNyRIwFLgdOAmYDp0XE7H7NNgPvy8w5wFeBlbUuVJIkSWqkSo4ozwc2ZeYTmfkqsBpY3LdBZt6Tmb8rT94LTKltmZIkSVJjjaugzWHA032mO4HjdtP+08CPimZExFJgKcDkyZPp6OiorMqyzAQY1HJdXV2DXqbVdXd3t+z2dHW9AtS/v1u5DxrFPiixHyRJ9VJJUI6C57KwYcT7KQXl44vmZ+ZKyqdltLW1ZXt7e2VVlq269nEyk8Esd/0d1wMMaplW19HR0bLbc+XGtQC0ty+o6+u0ch80in1QYj9IkuqlkqDcCUztMz0FeKZ/o4iYA1wFnJSZL9SmPEmSJKk5KjlH+X5gRkRMj4g9gSXAbX0bRMThwE3ApzLz8dqXKUmSJDXWgEeUM7MnIpYBdwJjgWsyc31EnFeevwK4BDgAuCIiAHoys61+ZUuSJEn1VcmpF2TmGmBNv+dW9Hn8GeAztS1NkiRJah7vzCdJkiQVMChLkiRJBQzKkiRJUgGDsiRJklTAoCxJkiQVMChLkiRJBQzKkiRJUgGDsiRJklTAoCxJkiQVMChLkiRJBQzKkiRJUgGDsiRJklTAoCxJkiQVMChLkiRJBQzKkiRJUgGDsiRJklTAoCxJkiQVqCgoR8SiiNgYEZsiYnnB/IiIy8rzH4qIo2tfqiSpEo7ZklQbAwbliBgLXA6cBMwGTouI2f2anQTMKP8sBa6scZ2SpAo4ZktS7VRyRHk+sCkzn8jMV4HVwOJ+bRYDN2TJvcB+EXFIjWuVJA3MMVuSamRcBW0OA57uM90JHFdBm8OA31RVXT87Mnk94Lhr/7TyZeJpxudU/vyf1taylKbq6nqFKze25vY8+pvfM/uQSc0uQxrNWmbMfvKFl3lpey/n1mn8dbyRVG+VBOUoeC6H0IaIWErpYz4mT55MR0dHBS//f/SO/S2v8To9PT0VLzOOQ9jjlSPpeqVrUK/Vynp7e+nq6mp2GYUO3Qtm7d096N/tYHV31/81Wp19UGI/vEXLjNk9rx/CS7xet/GqFuNNq79/Wr0+aP0ara86o76+zNztD7AAuLPP9JeAL/Vr80/AaX2mNwKH7G69xxxzTA7FXXfdNaTlRhL7wD7ItA92alY/AOtygPGzGT+O2YNjfdVr9Rqtrzojpb6hjtmVnKN8PzAjIqZHxJ7AEuC2fm1uA84of5P6j4CXMrOmH+FJkirimC1JNTLgqReZ2RMRy4A7gbHANZm5PiLOK89fAawBTgY2AduBs+tXsiRpVxyzJal2KjlHmcxcQ2lg7fvcij6PE/hcbUuTJA2FY7Yk1YZ35pMkSZIKGJQlSZKkAgZlSZIkqYBBWZIkSSoQpe90NOGFI54DnhrCogcCz9e4nOHGPrAPwD7YqVn98F8y86AmvG5TjOAx2/qq1+o1Wl91Rkp9QxqzmxaUhyoi1mVmW7PraCb7wD4A+2An+6G1tfrvx/qq1+o1Wl91Rnt9nnohSZIkFTAoS5IkSQWGY1Be2ewCWoB9YB+AfbCT/dDaWv33Y33Va/Uara86o7q+YXeOsiRJktQIw/GIsiRJklR3LRuUI2JRRGyMiE0RsbxgfkTEZeX5D0XE0c2os54q6INPlrf9oYi4JyLmNqPOehqoD/q0OzYieiPi1EbW1wiV9EFEtEfEgxGxPiJ+0uga662CfWHfiLg9In5Z7oOzm1HnaFDN2LyrZSNi/4j4t4j4Vfnft7VYfd+IiMfK7W+OiP1aqb4+8/8qIjIiDmy1+iLi8+V56yPi661UX0TMi4h7y2PouoiY36T6romIZyPikX7LtMr+sav6WmX/KKyvz/yh7R+Z2XI/wFjg18A7gD2BXwKz+7U5GfgREMAfAT9rdt1N6IM/Bt5WfnzSaOyDPu3+HVgDnNrsupvwPtgPeBQ4vDx9cLPrbkIf/DVwafnxQcCLwJ7Nrn2k/VQzNu9uWeDrwPLy4+U7f5ctVN+HgHHlx5e2Wn3l+VOBOyld6/rAVqoPeD/wY+APytNDGqPqWN+/Aif1Wb6j0fWV570XOBp4pN8yTd8/Bqiv6fvH7uqrdv9o1SPK84FNmflEZr4KrAYW92uzGLghS+4F9ouIQxpdaB0N2AeZeU9m/q48eS8wpcE11lsl7wOAzwPfB55tZHENUkkffAK4KTO3AGTmSOuHSvoggYkREcAESkG5p7FljgrVjM27W3YxcH358fXAx1qpvsz818zc+X6qZqytV/8B/L/A/0NpXxiqetV3PvC1zPxPqGqMqld9CUwqP94XeKYJ9ZGZd1Mau/prhf1jl/W1yP6xu/6DKvaPVg3KhwFP95nuLD832DbD2WC379OU/soaSQbsg4g4DDgFWNHAuhqpkvfBu4C3RURHRDwQEWc0rLrGqKQPvgXMovQf3MPABZn5emPKG1WqGZt3t+zkzPwNQPnfg1usvr7OYehjbV3qi4iPAlsz85dDrKuu9VEao06IiJ9FxE8i4tgWq+8LwDci4mngH4AvNaG+3WmF/aNSzdo/dqna/WPcUBZqgCh4rv9fAZW0Gc4q3r6IeD+loHx8XStqvEr64JvAxZnZWzqYOOJU0gfjgGOAE4G9gLURcW9mPl7v4hqkkj74MPAg8AHgncC/RcRPM/P3da5ttKlmbG7EmF3X+iLiv1H6pOLbQ6quDvVFxN7Af6P08Xe16tV/44C3Ufqo/FjgXyLiHVn+TLwF6jsfuDAzvx8RfwZcDfxfg6yt2voaoa71NXn/2FVNVe8frRqUOymdT7LTFN76UUglbYazirYvIuYAV1E6v+qFBtXWKJX0QRuwuhySDwROjoiezLylIRXWX6X7wvOZ+TLwckTcDcwFRkpQrqQPzqb00W4CmyJiMzATuK8xJY4a1YzNe+5m2f+IiEMy8zflj1GH+tF8veojIs4EPgKcOISAV8/63glMB35ZHgenAD+PiPmZ+dsWqG/nMjeV++2+iHid0nj9XIvUdyZwQfnx9yj9nzoU9courbB/7FYL7B+7Uv3+UXTicrN/KAX4J8obt/OE7nf3a/NfefMJ3fc1u+4m9MHhwCbgj5tdb7P6oF/76xh5X+ar5H0wC/jf5bZ7A48ARza79gb3wZXAfy8/ngxsZYhfaPKn6t9F4di8u2WBb/DmLyt9vcXqW0TpC7MHtWL/9Vv+yaG+9+vYf+cBf1N+/C5KH51HC9W3AWgvPz4ReKDR/ddn/jTe+mW5pu8fA9TX9P1jd/VVu38MeYPq/UPpm42PU/oG5H8rP3cecF75cQCXl+c/DLQ1u+Ym9MFVwO8ofeT8ILCu2TU3ug/6tb2OERaUK+0D4IvlgeoR4AvNrrnRfQAcSumb6w+X++D0Ztc8Un+qGZuLli0/fwClP/Z+Vf53/xarbxOlcLdzrF3RSvX1W/+TVPFHYp36b0/gn8v75s+BD7RYfccDD1AKZj8DjmlSfauA3wCvUTpy+ukW2z92VV+r7B+F9VW7f3hnPkmSJKlAq171QpIkSWoqg7IkSZJUwKAsSZIkFTAoS5IkSQUMypIkSVIBg7IkSZJUwKAsSZIkFTAoS5IkSQUMypIkSVIBg7IkSZJUwKAsSZIkFTAoS5IkSQUMypIkSVIBg7IkSZJUwKAsSZIkFTAoS5IkSQUMypIkSVIBg7IkSZJUwKAsSZIkFRgwKEfENRHxbEQ8sov5ERGXRcSmiHgoIo6ufZmSpEo5bktSbVRyRPk6YNFu5p8EzCj/LAWurL4sSVIVrsNxW5KqNmBQzsy7gRd302QxcEOW3AvsFxGH1KpASdLgOG5LUm3U4hzlw4Cn+0x3lp+TJLUmx21JqsC4GqwjCp7LwoYRSyl9zMc+++xzzMyZM2vw8pLUeA888MDzmXlQs+sYoorGbcdsSSPFUMfsWgTlTmBqn+kpwDNFDTNzJbASoK2tLdetW1eDl5ekxouIp5pdQxUqGrcdsyWNFEMds2tx6sVtwBnlb1H/EfBSZv6mBuuVJNWH47YkVWDAI8oRsQpoBw6MiE7gK8AeAJm5AlgDnAxsArYDZ9erWEnSwBy3Jak2BgzKmXnaAPMT+FzNKpIkVcVxW5JqwzvzSZIkSQUMypIkSVIBg7IkSZJUwKAsSZIkFTAoS5IkSQUMypIkSVIBg7IkSZJUwKAsSZIkFTAoS5IkSQUMypIkSVIBg7IkSZJUwKAsSZIkFTAoS5IkSQUMypIkSVIBg7IkSZJUwKAsSZIkFTAoS5IkSQUMypIkSVIBg7IkSZJUwKAsSZIkFTAoS5IkSQUMypIkSVIBg7IkSZJUwKAsSZIkFTAoS5IkSQUMypIkSVIBg7IkSZJUwKAsSZIkFTAoS5IkSQUMypIkSVIBg7IkSZJUoKKgHBGLImJjRGyKiOUF8/eNiNsj4pcRsT4izq59qZKkSjhmS1JtDBiUI2IscDlwEjAbOC0iZvdr9jng0cycC7QD/zMi9qxxrZKkAThmS1LtVHJEeT6wKTOfyMxXgdXA4n5tEpgYEQFMAF4EempaqSSpEo7ZklQjlQTlw4Cn+0x3lp/r61vALOAZ4GHggsx8vSYVSpIGwzFbkmqkkqAcBc9lv+kPAw8ChwLzgG9FxKS3rChiaUSsi4h1zz333CBLlSRVwDFbkmqkkqDcCUztMz2F0lGIvs4GbsqSTcBmYGb/FWXmysxsy8y2gw46aKg1S5J2zTFbkmqkkqB8PzAjIqaXv+yxBLitX5stwIkAETEZOAJ4opaFSpIq4pgtSTUybqAGmdkTEcuAO4GxwDWZuT4izivPXwF8FbguIh6m9LHfxZn5fB3rliQVcMyWpNoZMCgDZOYaYE2/51b0efwM8KHaliZJGgrHbEmqDe/MJ0mSJBUwKEuSJEkFDMqSJElSAYOyJEmSVMCgLEmSJBUwKEuSJEkFDMqSJElSAYOyJEmSVMCgLEmSJBUwKEuSJEkFDMqSJElSAYOyJEmSVMCgLEmSJBUwKEuSJEkFDMqSJElSAYOyJEmSVMCgLEmSJBUwKEuSJEkFDMqSJElSAYOyJEmSVMCgLEmSJBUwKEuSJEkFDMqSJElSAYOyJEmSVMCgLEmSJBUwKEuSJEkFDMqSJElSAYOyJEmSVMCgLEmSJBUwKEuSJEkFKgrKEbEoIjZGxKaIWL6LNu0R8WBErI+In9S2TElSpRyzJak2xg3UICLGApcDHwQ6gfsj4rbMfLRPm/2AK4BFmbklIg6uU72SpN1wzJak2qnkiPJ8YFNmPpGZrwKrgcX92nwCuCkztwBk5rO1LVOSVCHHbEmqkUqC8mHA032mO8vP9fUu4G0R0RERD0TEGbUqUJI0KI7ZklQjA556AUTBc1mwnmOAE4G9gLURcW9mPv6mFUUsBZYCHH744YOvVpI0EMdsSaqRSo4odwJT+0xPAZ4paHNHZr6cmc8DdwNz+68oM1dmZltmth100EFDrVmStGuO2ZJUI5UE5fuBGRExPSL2BJYAt/VrcytwQkSMi4i9geOADbUtVZJUAcdsSaqRAU+9yMyeiFgG3AmMBa7JzPURcV55/orM3BARdwAPAa8DV2XmI/UsXJL0Vo7ZklQ7kdn/1LXGaGtry3Xr1jXltSWpWhHxQGa2NbuORnHMljScDXXM9s58kiRJUgGDsiRJklTAoCxJkiQVMChLkiRJBQzKkiRJUgGDsiRJklTAoCxJkiQVMChLkiRJBQzKkiRJUgGDsiRJklTAoCxJkiQVMChLkiRJBQzKkiRJUgGDsiRJklTAoCxJkiQVMChLkiRJBQzKkiRJUgGDsiRJklTAoCxJkiQVMChLkiRJBQzKkiRJUgGDsiRJklTAoCxJkiQVMChLkiRJBQzKkiRJUgGDsiRJklTAoCxJkiQVMChLkiRJBQzKkiRJUgGDsiRJklTAoCxJkiQVqCgoR8SiiNgYEZsiYvlu2h0bEb0RcWrtSpQkDYZjtiTVxoBBOSLGApcDJwGzgdMiYvYu2l0K3FnrIiVJlXHMlqTaqeSI8nxgU2Y+kZmvAquBxQXtPg98H3i2hvVJkgbHMVuSaqSSoHwY8HSf6c7yc2+IiMOAU4AVtStNkjQEjtmSVCOVBOUoeC77TX8TuDgze3e7ooilEbEuItY999xzFZYoSRoEx2xJqpFxFbTpBKb2mZ4CPNOvTRuwOiIADgROjoiezLylb6PMXAmsBGhra+s/cEuSqueYLUk1UklQvh+YERHTga3AEuATfRtk5vSdjyPiOuAH/QdcSVJDOGZLUo0MGJQzsycillH6ZvRY4JrMXB8R55Xne46bJLUIx2xJqp1KjiiTmWuANf2eKxxsM/Os6suSJA2VY7Yk1YZ35pMkSZIKGJQlSZKkAgZlSZIkqYBBWZIkSSpgUJYkSZIKGJQlSZKkAgZlSZIkqYBBWZIkSSpgUJYkSZIKGJQlSZKkAgZlSZIkqYBBWZIkSSpgUJYkSZIKGJQlSZKkAgZlSZIkqYBBWZIkSSpgUJYkSZIKGJQlSZKkAgZlSZIkqYBBWZIkSSpgUJYkSZIKGJQlSZKkAgZlSZIkqYBBWZIkSSpgUJYkSZIKGJQlSZKkAgZlSZIkqYBBWZIkSSpgUJYkSZIKGJQlSZKkAgZlSZIkqUBFQTkiFkXExojYFBHLC+Z/MiIeKv/cExFza1+qJKkSjtmSVBsDBuWIGAtcDpwEzAZOi4jZ/ZptBt6XmXOArwIra12oJGlgjtmSVDuVHFGeD2zKzCcy81VgNbC4b4PMvCczf1eevBeYUtsyJUkVcsyWpBqpJCgfBjzdZ7qz/NyufBr4UdGMiFgaEesiYt1zzz1XeZWSpEo5ZktSjVQSlKPguSxsGPF+SoPuxUXzM3NlZrZlZttBBx1UeZWSpEo5ZktSjYyroE0nMLXP9BTgmf6NImIOcBVwUma+UJvyJEmD5JgtSTVSyRHl+4EZETE9IvYElgC39W0QEYcDNwGfyszHa1+mJKlCjtmSVCMDHlHOzJ6IWAbcCYwFrsnM9RFxXnn+CuAS4ADgiogA6MnMtvqVLUkq4pgtSbUTmYWnrtVdW1tbrlu3rimvLUnViogHRlO4dMyWNJwNdcz2znySJElSAYOyJEmSVMCgLEmSJBUwKEuSJEkFDMqSJElSAYOyJEmSVMCgLEmSJBUwKEuSJEkFDMqSJElSAYOyJEmSVMCgLEmSJBUwKEuSJEkFDMqSJElSAYOyJEmSVMCgLEmSJBUwKEuSJEkFDMqSJElSAYOyJEmSVMCgLEmSJBUwKEuSJEkFDMqSJElSAYOyJEmSVMCgLEmSJBUwKEuSJEkFDMqSJElSAYOyJEmSVMCgLEmSJBUwKEuSJEkFDMqSJElSAYOyJEmSVKCioBwRiyJiY0RsiojlBfMjIi4rz38oIo6ufamSpEo4ZktSbQwYlCNiLHA5cBIwGzgtImb3a3YSMKP8sxS4ssZ1SpIq4JgtSbVTyRHl+cCmzHwiM18FVgOL+7VZDNyQJfcC+0XEITWuVZI0MMdsSaqRSoLyYcDTfaY7y88Nto0kqf4csyWpRsZV0CYKnsshtCEillL6mA/gPyPikQpefyQ5EHi+2UU0mNs8OozGbT6i2QXsgmN27YzG97XbPDqMxm0e0phdSVDuBKb2mZ4CPDOENmTmSmAlQESsy8y2QVU7zLnNo4PbPDpExLpm17ALjtk14jaPDm7z6DDUMbuSUy/uB2ZExPSI2BNYAtzWr81twBnlb1L/EfBSZv5mKAVJkqrimC1JNTLgEeXM7ImIZcCdwFjgmsxcHxHnleevANYAJwObgO3A2fUrWZK0K47ZklQ7lZx6QWauoTSw9n1uRZ/HCXxukK+9cpDtRwK3eXRwm0eHlt1mx+yacZtHB7d5dBjSNkdpvJQkSZLUl7ewliRJkgrUPSiPxlupVrDNnyxv60MRcU9EzG1GnbU00Db3aXdsRPRGxKmNrK/WKtneiGiPiAcjYn1E/KTRNdZaBe/rfSPi9oj4ZXmbh/15rxFxTUQ8u6vLoo3S8Ws0brNj9jAfs8FxezSM23UZszOzbj+Uvkjya+AdwJ7AL4HZ/dqcDPyI0nU9/wj4WT1rqvdPhdv8x8Dbyo9PGg3b3Kfdv1M6d/LUZtdd59/xfsCjwOHl6YObXXcDtvmvgUvLjw8CXgT2bHbtVW73e4GjgUd2MX80jl+jcZsds4fxmD2I37Pj9jAft+sxZtf7iPJovJXqgNucmfdk5u/Kk/dSuobpcFbJ7xng88D3gWcbWVwdVLK9nwBuyswtAJk5GrY5gYkREcAESgNuT2PLrK3MvJvSduzKqBu/GIXb7Jg97MdscNweFeN2Pcbsegfl0Xgr1cFuz6cp/XUznA24zRFxGHAKsILhr5Lf8buAt0VER0Q8EBFnNKy6+qhkm78FzKJ044qHgQsy8/XGlNc0o3H8Go3b3Jdj9vDkuO24DUMYvyq6PFwVanYr1WGk4u2JiPdTGnSPr2tF9VfJNn8TuDgze0t/uA5rlWzvOOAY4ERgL2BtRNybmY/Xu7g6qWSbPww8CHwAeCfwbxHx08z8fZ1ra6bROH6Nxm0uNXTMHs4ct0tG+7g96PGr3kG5ZrdSHUYq2p6ImANcBZyUmS80qLZ6qWSb24DV5QH3QODkiOjJzFsaUmFtVfq+fj4zXwZejoi7gbnAcB1wK9nms4GvZelEsE0RsRmYCdzXmBKbYjSOX6Nxmx2zh/eYDY7b4LgNQxi/6n3qxWi8leqA2xwRhwM3AZ8axn+p9jXgNmfm9MyclpnTgBuBzw7jAbeS9/WtwAkRMS4i9gaOAzY0uM5aqmSbt1A6EkNETAaOAJ5oaJWNN+rGL0bhNjtmD/sxGxy3HbdLBj1+1fWIco7CW6lWuM2XAAcAV5T/Wu/JzLZm1VytCrd5xKhkezNzQ0TcATwEvA5clZmFl6sZDir8HX8VuC4iHqb08dbFmfl804qugYhYBbQDB0ZEJ/AVYA8Y1ePXaNxmx+xhznF7dIzb9RizvTOfJEmSVMA780mSJEkFDMqSJElSAYOyJEmSVMCgLEmSJBUwKEuSJEkFDMqSJElSAYOyJEmSVMCgLEmSJBX4/wEJ3T9ttvzSFAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "num_vert_plots = int(np.ceil(len(ksat_ps)/5))\n", "fig, axs = plt.subplots(num_vert_plots, 2, figsize=(12, 4*num_vert_plots))\n", "\n", "for idx in range(len(r_ksat)):\n", " P = ksat_ps[idx]\n", " if idx % 5 == 0:\n", " ax = axs[idx // 10, (idx % 10)//5]\n", " ax.grid()\n", "\n", " qs = np.array([0,*[sum(r[idx]['x'][:k][:i+1]) for i in range(k)]])\n", " ms = np.array([0,*[sum(r[idx]['x'][k:][:i+1]) for i in range(k)]])\n", " ax.step(qs, ms, where='post', label=\"p=\" + str(P))\n", " if idx % 5 == 4:\n", " ax.legend()\n", "\n", "ax.legend()" ] }, { "cell_type": "markdown", "id": "b54273e3", "metadata": {}, "source": [ "The constants after reducing by CONST_SQ (to help with convergence):" ] }, { "cell_type": "code", "execution_count": 32, "id": "ebed04b1", "metadata": {}, "outputs": [], "source": [ "outs = np.array([i['fun'] for i in r_ksat])\n", "ksats_scaled = outs * CONST_SQ**-0.5" ] }, { "cell_type": "code", "execution_count": 33, "id": "eeff4af1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3 2.217691082328953\n", "4 3.7576585289620956\n", "5 5.84836761923289\n", "6 8.732055229349436\n", "7 13.239537842156965\n", "8 18.362387925784287\n", "9 26.246077400258724\n" ] } ], "source": [ "for p,o in zip(ksat_ps, ksats_scaled):\n", " print(p, o)" ] }, { "cell_type": "markdown", "id": "ab6c3e42", "metadata": {}, "source": [ "I calculate $C$, where the satisfying fraction is $1-1/2^p + C/\\sqrt{\\alpha}$:" ] }, { "cell_type": "code", "execution_count": 34, "id": "52f5bdc1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3 0.2772113852911191\n", "4 0.23485365806013098\n", "5 0.18276148810102782\n", "6 0.13643836295858494\n", "7 0.10343388939185129\n", "8 0.07172807783509487\n", "9 0.05126186992238032\n" ] } ], "source": [ "for p,o in zip(ksat_ps, ksats_scaled):\n", " print(p, o*2**(-p))" ] }, { "cell_type": "markdown", "id": "46d4ffb4", "metadata": {}, "source": [ "It would be nice to get a confirmation on this constant, but I haven't seen it calculated anywhere." ] }, { "cell_type": "code", "execution_count": 35, "id": "8b09f494", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ending time: Sat Sep 11 18:09:43 2021\n" ] } ], "source": [ "print(\"Ending time:\", time.ctime())" ] } ], "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.8.8" } }, "nbformat": 4, "nbformat_minor": 5 }