From 4247ea0f078a8d9c9e433693aa0784d9c748177b Mon Sep 17 00:00:00 2001 From: "Kamal Bentahar (ab3735)" Date: Thu, 26 Apr 2018 12:22:54 +0100 Subject: [PATCH] Special cases & Complexity --- SAT/Investigating 3SAT.ipynb | 420 ++++++++++++++--------------------- SAT/Investigating 3SAT.pdf | Bin 99042 -> 103658 bytes 2 files changed, 170 insertions(+), 250 deletions(-) diff --git a/SAT/Investigating 3SAT.ipynb b/SAT/Investigating 3SAT.ipynb index fc50034..694e748 100644 --- a/SAT/Investigating 3SAT.ipynb +++ b/SAT/Investigating 3SAT.ipynb @@ -2,9 +2,7 @@ "cells": [ { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "_Kamal Bentahar_ (individual work)\n", "\n", @@ -13,27 +11,21 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ - "# Guide report for the 380CT Assignment" + "_This is a guide report for the 380CT Assignment._" ] }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ - "## Notation" + "# Notation" ] }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "Let $x_1,x_2,\\ldots,x_n$ be Boolean **variables**, and let $\\phi$ be a Boolean formula written in 3-cnf (Conjunctive Normal Form) given by\n", "\t$$\n", @@ -47,54 +39,51 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ - "## Definition of the problem" + "# Definition of the problem" ] }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ + "Given $\\phi$ as above, the versions of the 3SAT are defined as follows:\n", + "\n", "* **Decisional 3SAT**:\n", "\n", - " Decide if $\\phi$ is satisfiable.\n", + " _Decide if $\\phi$ is satisfiable._\n", + "\n", + " **NP-complete**, because 3SAT $\\in$ NP and SAT $\\leq_p$ 3SAT.\n", " \n", - "\tNP-complete.\n", + " * 3SAT $\\in$ NP: once an assignment of the variables is given (a certificate) we can quickly evaluate $\\phi$ in $O(\\ell)$ time to verify it.\n", + " * SAT $\\leq_p$ 3SAT: Reduction from the SAT problem, which is known to be NP-complete by the Levin-Cook theorem (Sipser, 2013, p. 304).\n", "\n", "* **Computational/Search 3SAT**:\n", "\n", - " If $\\phi$ is satisfiable then find a satisfying assignment.\n", + " _If $\\phi$ is satisfiable then find a satisfying assignment._\n", "\n", - " NP-Hard.\n", + " **NP-Hard**, because we can reduce the decision version of 3SAT to it trivially: if a solution is found then return **yes**, otherwise return **no**.\n", "\n", "* **Optimization 3SAT (Max 3SAT)**:\n", "\n", - " Find an assignment that minimizes the number of non-satisfying clauses.\n", + " _Find an assignment that minimizes the number of non-satisfying clauses._\n", "\n", - " NP-Hard.\n", + " **NP-Hard**, because the optimization version of (decision) NP-complete problems are automatically NP-Hard. (using the same method sketched above for **Search 3SAT**)\n", "\n", - "The facts about the complexity classes memberships are taken from book by Garey and Johnson (1979)." + "The facts about the complexity classes memberships can also be found in (Garey and Johnson, 1979)." ] }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ - "## Testing methodology" + "# Testing methodology" ] }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "* **Exhaustive search**:\n", " average time for instances with increasing $n$.\n", @@ -106,18 +95,14 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ - "### Random instances sampling strategy" + "## Random instances sampling strategy" ] }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "Following (Hoos & Stutzler, 2005), general 3SAT instances will be generated by selecting exactly 3 different literals from\n", "$$\\{x_1, \\bar x_1, x_2, \\bar x_2, \\ldots, x_n, \\bar x_n\\}$$\n", @@ -131,18 +116,14 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "# Code" ] }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "First start by importing relevant libraries." ] @@ -153,8 +134,7 @@ "metadata": { "collapsed": true }, - "outputs": [ - ], + "outputs": [], "source": [ "from random import sample, choice, shuffle, randint\n", "from itertools import product\n", @@ -165,9 +145,7 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "## Base class definition" ] @@ -178,8 +156,7 @@ "metadata": { "collapsed": true }, - "outputs": [ - ], + "outputs": [], "source": [ "class SAT():\n", " def __init__(self):\n", @@ -197,8 +174,7 @@ "metadata": { "collapsed": true }, - "outputs": [ - ], + "outputs": [], "source": [ "def sat_repr(self):\n", " ''' To print out the SAT instance in readable form '''\n", @@ -216,8 +192,7 @@ "metadata": { "collapsed": true }, - "outputs": [ - ], + "outputs": [], "source": [ "def set_variable(self, variable, value):\n", " ''' Set the given 'variable' to the giben 'value' '''\n", @@ -226,7 +201,8 @@ " '''\n", " Flip the value of 'variable'\n", " '''\n", - " self.configuration[ abs(variable)-1 ] = not self.configuration[ abs(variable)-1 ]\n", + " idx = abs(variable)-1\n", + " self.configuration[ idx ] = not self.configuration[ idx ]\n", "def get_variable(self,variable):\n", " ''' Return the value assigned to 'variable' '''\n", " return self.configuration[ abs(variable)-1 ]\n", @@ -238,9 +214,7 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "## Evaluation" ] @@ -251,8 +225,7 @@ "metadata": { "collapsed": true }, - "outputs": [ - ], + "outputs": [], "source": [ "def clause_value(self, clause):\n", " ''' Return the value of 'clause' '''\n", @@ -297,9 +270,7 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "## Methods for random constructions" ] @@ -310,8 +281,7 @@ "metadata": { "collapsed": true }, - "outputs": [ - ], + "outputs": [], "source": [ "def random_clause(self):\n", " ''' helper function to generate a clause randomly '''\n", @@ -350,7 +320,8 @@ " self.clauses = []\n", " for nc in range(self.nc):\n", " c = self.random_clause() #sample(self.variables,3)\n", - " while self.clause_value(c) == False: # alter c until it becomes satisfying\n", + " # alter c until it becomes satisfying\n", + " while self.clause_value(c) == False:\n", " c[ choice([0,1,2]) ] *= -1 # by flipping terminals (negating)\n", " self.clauses.append(c)\n", " if self.value() != True:\n", @@ -364,36 +335,28 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "# Solution methods" ] }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "## Exact methods -- Exhaustive search" ] }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "Pseudo-code:" ] }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "1. **for all** possible variable assignments of $x_1,x_2,\\ldots,x_n$ **do**\n", "2. $\\quad$ **if** $\\phi(x_1,x_2,\\ldots,x_n)$ evaluates to True **then**\n", @@ -405,9 +368,7 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "There are $2^n$ possible assignments, and each evaluation of $\\phi$ costs $O(\\ell)$. So this algorithm costs $$O(\\ell\\, 2^n).$$" ] @@ -418,8 +379,7 @@ "metadata": { "collapsed": true }, - "outputs": [ - ], + "outputs": [], "source": [ "def exhaustive_search(self):\n", " '''\n", @@ -447,18 +407,14 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ - "### Testing" + "## Testing" ] }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "Average time for randomly generated instances with $\\rho=3$." ] @@ -466,9 +422,7 @@ { "cell_type": "code", "execution_count": 26, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -516,17 +470,14 @@ { "cell_type": "code", "execution_count": 27, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAHThJREFUeJzt3Xt0VeWd//H3lyAiXhAkiAUSULEubS2OEcfa1ltRBi/oONMfSr2iFCr60zW/VufntNOuWcyMnc7PaZCIEREvUcRBkSqKlw51qJcmWKUCQ6UqECoS8QpBrt/fH89Jcwg5yUlyznnOOfm81jorZ+/95OzvJvBhZ+9nP4+5OyIiUlx6xC5AREQyT+EuIlKEFO4iIkVI4S4iUoQU7iIiRUjhLiJShNIKdzMbY2arzWyNmd3ayvYfmNkbiddbZrbbzPpnvlwREUmHtdfP3cxKgD8Ao4F6oBa41N1Xpmh/AXCzu5+V4VpFRCRN6Zy5jwLWuPs77r4DmAuMa6P9pcAjmShOREQ6p2cabQYD65OW64FTWmtoZn2AMcDU9j50wIABPmzYsDR2LyIiTZYtW/ahu5e21y6dcO+IC4DfuPtHrW00s0nAJICysjLq6uoyvHsRkeJmZmvTaZfOZZkNwNCk5SGJda0ZTxuXZNy92t0r3L2itLTd/3hERKST0gn3WmCEmQ03s16EAF/YspGZ9QVOB57MbIkiItJR7V6WcfddZjYVWAyUALPdfYWZTU5sn5loejHwnLtvzVq1IiKSlna7QmZLRUWF65q7iEjHmNkyd69or52eUBURKUIKdxGRXKmpgWHDoEeP8LWmJmu7ynRXSBERaU1NDUyaBI2NYXnt2rAMMGFCxnenM3cRkVy47bbmYG/S2BjWZ4HCXUQkF9at69j6LlK4i4jkQllZx9Z3kcJdRCQX/uEf9l3Xpw9Mm5aV3SncRURyYWvi+c5Bg8AMysuhujorN1NBvWVERLJv926YPh1OOw2WLs3JLnXmLiKSbc88A3/8I9x4Y852qXAXEcm2ykoYPBguvjhnu1S4i4hk08qV8Pzz8P3vw3775Wy3CncRkWy6807Yf3+47rqc7lbhLiKSLZ98AvffD5ddBjmeoEjhLiKSLbNnhyEGcngjtYnCXUQkG3bvDpdkvvUtGDky57tXuIuIZMPTT8O770Y5aweFu4hIdlRWwtChMG5clN0r3EVEMm3FCnjxRbj+eugZZyAAhbuISKZNnw69e8O110YrQeEuIpJJH38MDzwA3/0uHHZYtDLSCnczG2Nmq81sjZndmqLNGWb2hpmtMLNfZ7ZMEZECce+9sG0b3HBD1DLavRhkZiXADGA0UA/UmtlCd1+Z1OZQoAoY4+7rzGxgtgoWEclbTd0fzzgDTjghainpnLmPAta4+zvuvgOYC7S8/XsZ8Li7rwNw902ZLVNEpAAsXBgmvo7U/TFZOuE+GFiftFyfWJfsGKCfmS0xs2VmdkVrH2Rmk8yszszqGhoaOlexiEi+qqwMk3BccEHsSjJ2Q7UncBJwHnAu8CMzO6ZlI3evdvcKd68ozfE4CyIiWbV8OSxZErX7Y7J0KtgADE1aHpJYl6we2OzuW4GtZvYS8DXgDxmpUkQk302fDgccABMnxq4ESO/MvRYYYWbDzawXMB5Y2KLNk8A3zKynmfUBTgFWZbZUEZE8tXkzPPQQXH459O8fuxogjTN3d99lZlOBxUAJMNvdV5jZ5MT2me6+ysyeBZYDe4BZ7v5WNgsXEckbs2bBF19E7/6YzNw9yo4rKiq8rq4uyr5FRDJm1y448kgYMSIMOZBlZrbM3Svaaxf/qr+ISCF78klYvz70b88jGn5ARKQrKith+HA477zYlexF4S4i0llvvAEvvQRTp0JJSexq9qJwFxHprOnToU8fuOaa2JXsQ+EuItIZH34INTVw5ZVw6KGxq9mHwl1EpDPuuQe2bw+XZPKQwl1EpKN27oSqKhg9Go47LnY1rVJXSBGRjlqwAOrr4a67YleSks7cRUQ6qrISjjoKxo6NXUlKCncRkY54/XVYujRca++RvxGav5WJiOSjyko48EC4+urYlbRJ4S4ikq5Nm+CRR+Cqq6Bv39jVtEnhLiKSrupq2LEjb7s/JlO4i4iko6n747nnwrHHxq6mXeoKKSKSjvnz4f33w9jtBUBn7iIi6aisDGO2jxkTu5K0KNxFRNpTWwuvvBJmWsrj7o/JCqNKEZGYpk+Hgw8Og4QVCIW7iEhbNm6EuXNDv/ZDDoldTdoU7iIibamuDj1lCqD7YzKFu4hIKjt2hMHBxo4NN1MLSFrhbmZjzGy1ma0xs1tb2X6GmX1qZm8kXj/OfKkiIjn2n/8ZLsvceGPsSjqs3X7uZlYCzABGA/VArZktdPeVLZr+t7ufn4UaRUTiqKyEL385jNteYNI5cx8FrHH3d9x9BzAXGJfdskREInvttfAqoO6PydKpeDCwPmm5PrGupa+b2XIze8bMjm/tg8xskpnVmVldQ0NDJ8oVEcmRysrQO+aKK2JX0imZ+u/odaDM3U8ApgMLWmvk7tXuXuHuFaWlpRnatYhIhv3pTzBvHlxzTejfXoDSCfcNwNCk5SGJdX/m7p+5+5bE+0XAfmY2IGNViojk0t13w+7dcP31sSvptHTCvRYYYWbDzawXMB5YmNzAzAaZmSXej0p87uZMFysiknXbt8PMmXDeeXD00bGr6bR2e8u4+y4zmwosBkqA2e6+wswmJ7bPBP4GmGJmu4BtwHh39yzWLSKSHfPmhUk5CrD7YzKLlcEVFRVeV1cXZd8iIq1yh5NPhsZGWLECwgWJvGJmy9y9or12Gs9dRKTJq6/CsmVhUo48DPaOKLzOmyIi2VJZGeZGvfzy2JV0mcJdRARgw4Yw3MC118JBB8WupssU7iIiEHrIFHj3x2QKdxGRL74IfdsvvBCGD49dTUYo3EVEHn0UGhoKvvtjMoW7iHRv7vCLX8Dxx8OZZ8auJmPUFVJEureXX4bf/S5clinw7o/JdOYuIt1bZSX06wcTJsSuJKMU7iLSfa1fD/Pnh+6PBx4Yu5qMUriLSPd1113hmvv3vx+7koxTuItI97RtG1RXw7hxMGxY7GoyTuEuIt1LTU0I8z59YPNmOO642BVlhcJdRLqPmhqYNAnWrm1ed8cdYX2RUbiLSPdx221hON9kjY1hfZFRuItI97FuXcfWFzCFu4h0H2VlHVtfwBTuItJ9TJsG++2397o+fcL6IqNwF5Hu4zvfCQ8r9e4dhhooLw/dIYvs6VTQ2DIi0p388pfwySewcCFccEHsarIqrTN3MxtjZqvNbI2Z3dpGu5PNbJeZ/U3mShQRyZAZM8L19bFjY1eSde2Gu5mVADOAvwKOAy41s316/Sfa3Q48l+kiRUS6bNUq+NWvYPJkKCmJXU3WpXPmPgpY4+7vuPsOYC4wrpV2NwDzgU0ZrE9EJDNmzoRevWDixNiV5EQ64T4YWJ+0XJ9Y92dmNhi4GLgrc6WJiGTIli0wZw787d/CwIGxq8mJTPWW+Q/gFnff01YjM5tkZnVmVtfQ0JChXYuItOPhh+Gzz4py9MdU0uktswEYmrQ8JLEuWQUw18IsJgOAsWa2y90XJDdy92qgGqCiosI7W7SISNrcw43UkSPh1FNjV5Mz6YR7LTDCzIYTQn08cFlyA3f/83ThZjYHeKplsIuIRPHyy7B8eejPXkTT6LWn3XB3911mNhVYDJQAs919hZlNTmyfmeUaRUQ6r6oK+vaFyy5rv20RSeshJndfBCxqsa7VUHf3q7pelohIBmzaBI89Fq61F9k0eu3R8AMiUrzuvRd27oQpU2JXknMKdxEpTrt3h77tZ58NX/5y7GpyTuEuIsXp6afDOO3dqPtjMoW7iBSnqioYPBguvDB2JVEo3EWk+Lz9NixeDN/7HvTsnoPfKtxFpPjMnBlC/dprY1cSjcJdRIpLYyPcdx9ccgkccUTsaqJRuItIcZk7Fz7+uNveSG2icBeR4tE0jszxx8M3vxm7mqi6550GESlOtbXw+uuhp0w3GkemNTpzF5HiMWMGHHQQfPe7sSuJTuEuIsXhww/h0Ufhiivg4INjVxOdwl1EisN998H27d3+RmoThbuIFL49e+Cuu+D008PNVFG4i0gRePZZePddnbUnUbiLSOGrqoJBg+Cii2JXkjcU7iJS2N59FxYtgkmToFev2NXkDYW7iBS2mTOhRw+47rrYleQVhbuIFK4vvgizLY0bB0OGxK4mryjcRaRwPfYYbN4M118fu5K8o3AXkcI1Y0aYQu/MM2NXknfSCnczG2Nmq81sjZnd2sr2cWa23MzeMLM6M/tG5ksVEUmybBm89lro/tjNx5FpTbsDh5lZCTADGA3UA7VmttDdVyY1exFY6O5uZicA84Bjs1GwiAgQHlrq0ycMNyD7SOfMfRSwxt3fcfcdwFxgXHIDd9/i7p5YPBBwRESy5eOP4eGHwwBhhx4au5q8lE64DwbWJy3XJ9btxcwuNrP/AZ4Grmntg8xsUuKyTV1DQ0Nn6hURgTlzYNs2mDIldiV5K2M3VN39CXc/FrgI+KcUbardvcLdK0pLSzO1axHpTprGkfn612HkyNjV5K10wn0DMDRpeUhiXavc/SXgSDMb0MXaRET29eKL8Pbb6v7YjnTCvRYYYWbDzawXMB5YmNzAzI42C7erzewvgP2BzZkuVkSEGTOgtDRMgC0ptdtbxt13mdlUYDFQAsx29xVmNjmxfSZwCXCFme0EtgH/K+kGq4hIZqxbB7/8JdxyC+y/f+xq8lpac6i6+yJgUYt1M5Pe3w7cntnSRERaqK4OX7/3vbh1FAA9oSoihWH7drjnHjj/fCgvj11N3lO4i0hhePxx2LRJE3KkSeEuIoWhqgqOPhpGj45dSUFQuItI/lu+HJYuDQ8t9VBspUN/SiKS/6qqoHdvuOqq2JUUDIW7iOS3Tz+Fhx6CSy+F/v1jV1MwFO4ikt8efBC2btUTqR2kcBeR/OUeLsmMGgUnnRS7moKS1kNMIiJRLFkCq1aFUSClQ3TmLiL5q6oqXGf/zndiV1JwFO4ikp82bIAnnoCJE+GAA2JXU3AU7iKSn+65J4zdrnFkOkXhLiL5Z+fOMEjYmDFw1FGxqylIuqEqIvlnwQJ4//1w9i6dojN3Eck/VVUwbFg4c5dOUbiLSH5ZuTJ0gZw8GUpKYldTsBTuIpJfqqrCLEsTJ8aupKAp3EUkf3z+OTzwQOjXPmBA7GoKmsJdRPJHTU0IeE3I0WUKdxHJD03jyJx4IpxySuxqCp66QopIfli6FH7/e5g1C8xiV1Pw0jpzN7MxZrbazNaY2a2tbJ9gZsvN7Pdm9rKZfS3zpYpIUauqgr59w7jt0mXthruZlQAzgL8CjgMuNbPjWjR7Fzjd3b8K/BNQnelCRaSIbdwI8+fD1VdDnz6xqykK6Zy5jwLWuPs77r4DmAuMS27g7i+7+8eJxVeBIZktU0SK2qxZYciBKVNiV1I00gn3wcD6pOX6xLpUJgLPtLbBzCaZWZ2Z1TU0NKRfpYgUr1274O67YfRoOOaY2NUUjYz2ljGzMwnhfktr29292t0r3L2itLQ0k7sWkUL11FNQX6/ujxmWTrhvAIYmLQ9JrNuLmZ0AzALGufvmzJQnIkWrpiaMH3PxxWGYgc8/j11RUUmnK2QtMMLMhhNCfTxwWXIDMysDHgcud/c/ZLxKESkuNTUwaRI0Nobl3bvDWDI9esCECXFrKxLtnrm7+y5gKrAYWAXMc/cVZjbZzCYnmv0YOAyoMrM3zKwuaxWLSOG77bbmYG/S2BjWS0aYu0fZcUVFhdfV6f8AkW6pR4/wRGpLZmH2JUnJzJa5e0V77TT8gIjkXqoOFWVlua2jiCncRSS3liyBjz7ad4iBPn1g2rQoJRUjhbuI5M4rr8D554f+7FVVUF4eQr68PMyZqpupGaOBw0QkN5YtC9PmfelL8MILcMQRoYeMZIXO3EUk+956C845B/r1gxdfDMEuWaVwF5HsWr0avv1t6N07BPvQoe1/j3SZLsuISPa8+y6cfXbo3rhkCRx1VOyKug2Fu4hkR319CPbGxhDsxx4bu6JuReEuIpn3wQch2DdvDpdiTjghdkXdjsJdRDJr8+Zwjb2+Hp57DirafZhSskDhLiKZ88knoVfM22/DokVw2mmxK+q2FO4ikhlbtsDYsWGS6wUL4KyzYlfUrSncRaTrtm2DCy6A3/4WHn00hLxEpXAXka7Zvh3++q/h17+GBx+ESy6JXZGgcBeRrti5Ey69FJ59NkxyrbFh8oaeUBWRztm9G668Ep54AiorYeLE2BVJEoW7iHTcnj1w3XXwyCNw++1www2xK5IWFO4i0jHucOONcN998I//CD/8YeyKpBUKdxFJn3sI8xkz4Ac/COEueUnhLiLp++lP4ec/h+uvD5djWs6mJHkjrXA3szFmttrM1pjZra1sP9bMXjGz7Wb2fzJfpohE97OfhXC/+upwA1XBntfa7QppZiXADGA0UA/UmtlCd1+Z1Owj4EbgoqxUKSJx3Xkn3HILjB8P99wDPfRLf75L5yc0Cljj7u+4+w5gLjAuuYG7b3L3WmBnFmoUkZjuvTf0hrnoInjgASgpiV2RpCGdcB8MrE9ark+sE5Fi9/DDocvjmDEwdy7st1/siiRNOf3dyswmmVmdmdU1NDTkctci0lGPPw5XXAFnnBHe779/7IqkA9IJ9w1A8qSHQxLrOszdq929wt0rSktLO/MRIpILixaF6+ujRsHChXDAAbErkg5KJ9xrgRFmNtzMegHjgYXZLUtEovnVr8JAYCecAM88AwcdFLsi6YR2e8u4+y4zmwosBkqA2e6+wswmJ7bPNLNBQB1wCLDHzG4CjnP3z7JYu4hk2m9+AxdeCCNGwOLF0Ldv7Iqkk9IaFdLdFwGLWqybmfR+I+FyjYgUkpoauO02WLcODj88zKRUVgbPPw+HHRa7OukCDfkr0l3V1MCkSdDYGJY3bgwPJk2dCoMGxa1NukxPIoh0R01jxDQFe/L6f//3ODVJRunMXaQ7eP99qK2Furrmrx9+2HrbdetyW5tkhcJdpNh89FEI76Ygr62FDYneyz16wFe+Em6aLlgQ2rZUVpbbeiUrFO4ihWzLFvjd75pDvLYW/vjH5u0jRsDpp8PJJ4fXiSdCnz5h21ln7X3NHcK2adNyewySFQp3kXyQ3GulrCwEbMv5SLdvh+XL9w7yVavCrEgQvq+iAq69NgT5SSfBoYem3mfT57e3XylI5u5RdlxRUeF1dXVR9i2SV1r2WoFwBv2jH8HAgc1Bvnx5mJAaoLS0+Wz85JNDqB9+eJz6JafMbJm7V7TbTuEuEtmwYbB2berthxwSwjs5zIcO1Xjq3VS64a7LMiIx7NgBr7wSHhZqK9hXr4ajj9b46dJhCneRXHAP18effz68liyBrVvD2Oj77x+up7dUXg7HHJPzUqU4KNxFsmXTJnjhheZAb+qOOGIEXHUVjB4dhtN96in1WpGMU7iLZMq2bbB0aQjy556DN98M6/v3h7PPhnPOCYFeXr7396nXimSBbqiKdNaePaEHS1OYL10KX3wRZis67bTmMD/xRE1NJxmjG6oi2bBhQ/Nlluefh6YZxY4/HqZMCWH+rW/BgQfGrVO6PYW7SLKWDxP9+Meh/3jT2fmqVaHd4YeHM/NzzoFvfxu+9KW4dYu0oHAXaXL//eHse9u2sLx2LUycGN737h3OyCdODGfnX/2q+plLXlO4S/5J51H8dG3bBh980PZr48bw9dNPW/+MgQND0Pfu3fljEskxhbvkl5aP4q9dG5ahOeC3bGk/sJten3/e+n769QuXVg4/HEaODF+nT2+9bUODgl0KjnrLSHyNjbB5cxhffMyY0D+8pV69YMiQENhbt7b+OYcd1hzYLV+DBjW/HzgwfF5LqYYBKC+H997ryhGKZIx6y0jXdebySGNjCOmmsE7nfdM17rbs2AGnnpo6vEtLQxfErpg2TQ8TSdFQuOe7TF5/Tpc7PPDAvjcXr7kGFi+GI49MHdZtBXX//uHsesCAMPDVyJHh/YABzesnTw5n5y2Vl8NDD2XneJvoYSIpImmFu5mNAX4BlACz3P1fW2y3xPaxQCNwlbu/nuFa4wRdzH2nc/3ZPTw4s2VL8+vzz/deTvVqq92uXfvWs2MHPPhg6CXSr19zKA8dGh7UaQro5LBuet+vH/RM46/b1q1xz54nTFCYS1Fo95q7mZUAfwBGA/VALXCpu69MajMWuIEQ7qcAv3D3U9r63A5fc0815nV1ddf+MbqH15494bV7d/P7pte8eXDzzXuflfbuDT/5CZx7bhhju+m1Y8fey115zZu37wTGEEJy4MDmIG6arKE9ZnDQQalfBx/c/P6f/zn1Z+zcmd0nLmP+Jy6S5zI2nruZnQr8xN3PTSz/PYC7/0tSm7uBJe7+SGJ5NXCGu7+f6nM7HO6pbnb17BlutKUK5vbWR7qhvM8x7Lffvq/161N/z8SJqYM5VXAfcED6fbN1c1EkL2XyhupgIDll6gln5+21GQzsFe5mNgmYBFDW0Ul4U83IvmtXeLikR4/mV0nJ3sup1qXb9qabWt+3Gcyf33owN7169Wp7e8+eqQO3rYCdNatjf34dpZuLIgUtpzdU3b0aqIZw5t6hby4rSx1099+fifJSu+OO1vddVgYXX5y9/cYMWN1cFClo6UzvsgEYmrQ8JLGuo226Ztq05lnbm+Qq6GLte8KEcE+hvDyc3ZeXd/0eQ0f3/9574RLWe+8p2EUKSDrhXguMMLPhZtYLGA8sbNFmIXCFBX8JfNrW9fZOiRl0sfetgBWRDkrrCdVEb5j/IHSFnO3u08xsMoC7z0x0hbwTGEPoCnm1u7d5t1RPqIqIdFxGn1B190XAohbrZia9d+D6jhYpIiLZoSnVRUSKkMJdRKQIKdxFRIqQwl1EpAhFG8/dzBqAVp4MSssA4MMMllMIdMzdg465e+jKMZe7e2l7jaKFe1eYWV06XYGKiY65e9Axdw+5OGZdlhERKUIKdxGRIlSo4V4du4AIdMzdg465e8j6MRfkNXcREWlboZ65i4hIG/I+3M1stpltMrO3ktb1N7PnzeztxNd+MWvMtBTH/G9m9j9mttzMnjCzQ2PWmGmtHXPStr8zMzezATFqy5ZUx2xmNyR+1ivM7Gex6suGFH+3R5rZq2b2hpnVmdmomDVmkpkNNbP/MrOViZ/n/06sz3qG5X24A3MIo00muxV40d1HAC8mlovJHPY95ueBr7j7CYQ5bf8+10Vl2Rz2PWbMbChwDpBiKq6CNocWx2xmZwLjgK+5+/HAzyPUlU1z2Pfn/DPgp+4+EvhxYrlY7AL+zt2PA/4SuN7MjiMHGZb34e7uLwEftVg9Dmiaful+4KKcFpVlrR2zuz/n7rsSi68SJkQpGil+zgB3AD8Eiu7mUIpjngL8q7tvT7TZlPPCsijFMTtwSOJ9X+BPOS0qi9z9fXd/PfH+c2AVYQrSrGdY3od7CocnTQayETg8ZjERXAM8E7uIbDOzccAGd38zdi05dAzwTTN7zcx+bWYnxy4oB24C/s3M1hN+Uym230oBMLNhwInAa+Qgwwo13P8sMZZ80Z3VpWJmtxF+1auJXUs2mVkf4P8Sfk3vTnoC/Qm/wv8AmJeYDKeYTQFudvehwM3AvZHryTgzOwiYD9zk7p8lb8tWhhVquH9gZkcAJL4W1a+uqZjZVcD5wAQv/j6sRwHDgTfN7D3CZajXzWxQ1Kqyrx543IPfAnsI45AUsyuBxxPvHwOK5oYqgJntRwj2GndvOs6sZ1ihhvtCwl8IEl+fjFhLTpjZGMK15wvdvTF2Pdnm7r9394HuPszdhxFC7y/cfWPk0rJtAXAmgJkdA/Si+AfV+hNweuL9WcDbEWvJqMRvXfcCq9z9/yVtyn6GuXtev4BHgPeBnYR/4BOBwwh3mN8GXgD6x64zB8e8BlgPvJF4zYxdZ7aPucX294ABsevMwc+5F/AQ8BbwOnBW7DpzcMzfAJYBbxKuR58Uu84MHu83CJdclif92x2biwzTE6oiIkWoUC/LiIhIGxTuIiJFSOEuIlKEFO4iIkVI4S4iUoQU7iIiRUjhLiJShBTuIiJF6P8DzZlm7uLy/48AAAAASUVORK5CYII=" }, "execution_count": 27, - "metadata": { - }, + "metadata": {}, "output_type": "execute_result" } ], @@ -541,8 +492,7 @@ "metadata": { "collapsed": true }, - "outputs": [ - ], + "outputs": [], "source": [ "import numpy as np\n", "from scipy.optimize import curve_fit\n", @@ -556,9 +506,7 @@ { "cell_type": "code", "execution_count": 29, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -567,8 +515,7 @@ ] }, "execution_count": 29, - "metadata": { - }, + "metadata": {}, "output_type": "execute_result" } ], @@ -579,17 +526,14 @@ { "cell_type": "code", "execution_count": 30, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 30, - "metadata": { - }, + "metadata": {}, "output_type": "execute_result" } ], @@ -599,55 +543,46 @@ "plt.figure()\n", "plt.plot(x, y, 'bo', label=\"Measurement\")\n", "xx = np.linspace(pnts_n[0],pnts_n[-1],100)\n", - "plt.plot(xx, func(xx, *popt), 'r-', linewidth=2, color='teal', label=\"Fitted Curve\")\n", + "plt.plot(xx, func(xx, *popt), 'r-',\n", + " linewidth=2, color='teal', label=\"Fitted Curve\")\n", "plt.legend(loc='best')\n", "plt.show()" ] }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "### Discussion" ] }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ - "Exhaustive search exhibits exponential running time:\n", - "linear in $\\ell$ but exponential in $n$.\n", + "* Exhaustive search exhibits exponential running time:\n", + " linear in $\\ell$ but exponential in $n$.\n", "\n", - "So it is useful when $n$ is small even if $\\ell$ is large." + "* So it is useful when $n$ is small even if $\\ell$ is large." ] }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ - "## Approximation" + "# Approximation" ] }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ - "### Greedy" + "## Greedy" ] }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "Find the variable that appears most often and assign it accordingly to\n", "maximize the number of satisfied clauses.\n", @@ -668,9 +603,7 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "##### Cost\n", "Steps 1-5 and 7-10 are $O(n)$, and step 6 costs $O(n\\log n)$ assuming the use of an $O(n\\log n)$ sorting\n", @@ -685,13 +618,12 @@ "metadata": { "collapsed": true }, - "outputs": [ - ], + "outputs": [], "source": [ "def greedy(self):\n", " '''\n", " Solve in the 3SAT problem instance using a simple greedy search.\n", - " Find the variable that appears most often and assign it accordingly to maximize ...\n", + " Find the variable that appears most often and assign it accordingly\n", " '''\n", " literals_occurance = [[i,0] for i in range(-self.nv,self.nv+1)]\n", " for c in self.clauses:\n", @@ -707,19 +639,17 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ - "### GRASP" + "## Greedy Randomized Adaptive Search Procedure (GRASP)" ] }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ + "The general template pseudocode for GRASP is given by:\n", + "\n", "1. $best\\_candidate\\gets \\emptyset$\n", "2. **while** \"termination condition\" is not met **do**\n", "3. $\\quad$ $greedy\\_candidate\\gets \\text{ConstructGreedyRandomizedSolution}()$\n", @@ -733,10 +663,10 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ + "For our problem, we have:\n", + "\n", "- **termination condition** is simply to repeat a fixed number of times, e.g. 100 times.\n", "\n", "- $f$ gives the ratio of unsatisfied clauses to $\\ell$. Objective is to minimize it.\n", @@ -752,13 +682,12 @@ "metadata": { "collapsed": true }, - "outputs": [ - ], + "outputs": [], "source": [ "def greedy_randomized(self, block_size=2):\n", " '''\n", - " Solve in the 3SAT problem instance using a randomized greedy search.\n", - " Find the variable that appears most often and assign it accordingly to maximize ...\n", + " Solve in the 3SAT problem instance using a randomized greedy search\n", + " Find the variable that appears most often and assign it accordingly\n", " Same as greedy() but randomizes the order of 'literals_occurance' a bit\n", " '''\n", " literals_occurance = [[i,0] for i in range(-self.nv,self.nv+1)]\n", @@ -766,7 +695,8 @@ " for v in c:\n", " literals_occurance[ v+self.nv ][1] += 1\n", " literals_occurance.sort( key=lambda a:a[1] )\n", - " for i in range(0,len(literals_occurance), block_size): # randomize list block by block\n", + " # randomize list block by block\n", + " for i in range(0,len(literals_occurance), block_size):\n", " tmp = literals_occurance[i:i+block_size]\n", " shuffle( tmp )\n", " literals_occurance[i:i+block_size] = tmp\n", @@ -778,7 +708,8 @@ " ''' Solve the 3SAT problem instance using the GRASP meta-heuristic '''\n", " best = 1 # i.e. start with the worst solution that satisfies no clauses\n", " for i in range(max_repetition):\n", - " candidate = self.greedy_randomized( choice([2,3,4]) ) # random block_size from {2,3,4}\n", + " # random block_size from {2,3,4}\n", + " candidate = self.greedy_randomized( choice([2,3,4]) )\n", " # local search: flip variable assignment and see if things improve\n", " # Choose the best one from the flipped attempts\n", " best_v = 0\n", @@ -799,19 +730,17 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ - "### Genetic Algorithm" + "## Genetic Algorithm" ] }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ + "The general template pseudocode for Genetic Algorithms is given by:\n", + "\n", "1. determine initial population $p$\n", "2. **while** termination criterion not satisfied **do**\n", "3. $\\quad$ generate set $pr$ of new candidate by recombination\n", @@ -823,10 +752,10 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ + "For our problem, we have:\n", + "\n", "- **Initial population**: generate 20 candidates by randomly assigning True/False values to the variables.\n", "- **termination criterion** is to simply repeat 20 times.\n", "- **Recombination** is done by cutting a pair of candidates at some point ($ab$,$cd$) then creating the possible combinations $ad$ and $cb$.\n", @@ -840,31 +769,35 @@ "metadata": { "collapsed": true }, - "outputs": [ - ], + "outputs": [], "source": [ "def GA(self, pop_size=20, max_generations=20):\n", - " ''' Solve the 3SAT problem instance using the Genetic Algorithm meta-heuristic '''\n", - " population = [ [choice([True,False]) for nv in range(self.nv)] for i in range(pop_size) ]\n", + " '''\n", + " Solve the 3SAT problem instance using the Genetic Algorithm meta-heuristic\n", + " '''\n", + " def sort_key(p):\n", + " self.configuration = p\n", + " return self.ratio_unsatisfied()\n", + " population = [\n", + " [choice([True,False]) for nv in range(self.nv)]\n", + " for i in range(pop_size)\n", + " ]\n", " for generation in range(max_generations):\n", - " # crossing\n", - " for i in range( pop_size ):\n", - " for j in range(i+1, pop_size):\n", - " cut = randint(0,self.nv-1)\n", - " population.append( population[i][:cut] + population[j][cut:] )\n", - " population.append( population[j][:cut] + population[i][cut:] )\n", - " # mutation\n", - " for i in range( len(population) ):\n", - " j = randint(0,self.nv-1) # variable to mutate\n", - " if randint(0,100)<=20: # probabilistically mutate\n", - " population[i][j] = not population[i][j]\n", - " # choose fittest\n", - " def sort_key(p):\n", - " self.configuration = p\n", - " return self.ratio_unsatisfied()\n", - " population.sort(key=sort_key)\n", - " population = population[:pop_size]\n", - " self.configuration = population[0]\n", + " # crossing\n", + " for i in range( pop_size ):\n", + " for j in range(i+1, pop_size):\n", + " cut = randint(0,self.nv-1)\n", + " population.append( population[i][:cut] + population[j][cut:] )\n", + " population.append( population[j][:cut] + population[i][cut:] )\n", + " # mutation\n", + " for i in range( len(population) ):\n", + " j = randint(0,self.nv-1) # variable to mutate\n", + " if randint(0,100)<=20: # probabilistically mutate\n", + " population[i][j] = not population[i][j]\n", + " # choose fittest\n", + " population.sort(key=sort_key)\n", + " population = population[:pop_size]\n", + " self.configuration = population[0]\n", " return self.ratio_unsatisfied()\n", "\n", "SAT.GA = GA" @@ -872,19 +805,15 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ - "### Testing" + "## Testing" ] }, { "cell_type": "code", "execution_count": 34, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -935,17 +864,14 @@ { "cell_type": "code", "execution_count": 35, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 35, - "metadata": { - }, + "metadata": {}, "output_type": "execute_result" } ], @@ -960,18 +886,14 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ - "### Discussion" + "## Discussion" ] }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "For $1\\leq \\rho\\leq 9$ we notice that:\n", "\n", @@ -983,58 +905,52 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ - "## Special cases" + "# Special cases" ] }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "* $n=1$.\n", "\n", - " If $x$ and $\\bar x$ appear in the same clause then it becomes a tautology, and the clause can be ignored.\n", - " \n", - " Otherwise $x\\lor x\\lor x = x$ and $\\bar x\\lor \\bar x\\lor \\bar x = \\bar x$.\n", - " \n", - " So $\\phi$ simplifies to a conjunction of terminals, whose satisfiability is easy to establish.\n", - " \n", - " [TODO: details?]\n", - " \n", + " Each clause will fall into one of 3 categories as follows:\n", + "\n", + " 1. Only $x$ appears. The clause reduces to: $x\\lor x\\lor x = x$\n", + " 2. Only $\\bar x$ appears. The clause reduces to: $\\bar x\\lor \\bar x\\lor \\bar x = \\bar x$.\n", + " 3. Both $x$ and $\\bar x$ appear. The clause becomes a tautology: $x\\lor \\bar x \\lor \\ldots = T$, and the clause can be ignored.\n", + "\n", + " So $\\phi$ simplifies to a conjunction of $x$'s and $\\bar x$'s, whose satisfiability is easy to establish:\n", + " * If both $x$ and $\\bar x$ appear then return **no**.\n", + " * Otherwise, return **yes**.\n", + "\n", "* $n=2$.\n", "\n", - " We get 2-SAT which is known to be in **P**.\n", - " \n", - " [TODO: details/cite]\n", - " \n", + " We get 2-SAT which is known to be in **P**, (Krom, 1967).\n", + "\n", "* $\\ell=1$.\n", "\n", " Always satisfiable.\n", " \n", " [TODO: true for $\\ell\\leq n$?]\n", "\n", - "* ..." + "* Nested satisfiability, (Knuth, 1990).\n", + "\n", + " If the clauses have a \"hierarchical structure\", as defined in (Knuth, 1990), then it is solvable in linear time." ] }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "# Conclusion" ] }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "* If instance is a special case then can be solved in polynomial time.\n", "* Exhaustive search useful when $n$ is small.\n", @@ -1044,36 +960,28 @@ }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "# Reflection" ] }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "Reflection ...." ] }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "# References" ] }, { "cell_type": "markdown", - "metadata": { - "collapsed": false - }, + "metadata": {}, "source": [ "* Garey, S. and Johnson, D. (1979)\n", "**Computers and Intractability: A Guide to the Theory of NP-Completeness.**\n", @@ -1083,9 +991,21 @@ "**Stochastic Local Search: Foundations and Applications.**\n", "Morgan Kaufmann.\n", "\n", + "* Knuth, D.E. (1990).\n", + "**Nested satisfiability.**\n", + "Acta Informatica, 28(1), 1-6.\n", + "\n", "* Koutsoupias, E., & Papadimitriou, C. H. (1992).\n", "**On the greedy algorithm for satisfiability.**\n", - "Information Processing Letters, 43(1), 53-55.\n" + "Information Processing Letters, 43(1), 53-55.\n", + "\n", + "* Krom, M.R. (1967).\n", + "**The Decision Problem for a Class of First-Order Formulas in Which all Disjunctions are Binary**\n", + "Zeitschrift für Mathematische Logik und Grundlagen der Mathematik, 13: 15–20, [doi:10.1002/malq.19670130104](doi:10.1002/malq.19670130104).\n", + "\n", + "* Sipser, M. (2013).\n", + "**Introduction to the theory of computation**\n", + "(3rd international ed.). Cengage Learning." ] } ], @@ -1109,5 +1029,5 @@ } }, "nbformat": 4, - "nbformat_minor": 0 -} \ No newline at end of file + "nbformat_minor": 1 +} diff --git a/SAT/Investigating 3SAT.pdf b/SAT/Investigating 3SAT.pdf index 8ee9c2cfd1c19ea70d4a087dee5020b34294cfbe..131439976353654eecc21f6b2049fac4ac84ee4d 100644 GIT binary patch delta 72654 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 V96*CB!2gC{KpdNuRasjF`#&M2v5f!# delta 67949 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 ZBkMz#m%)?)91J-)G%+y>B_%~qMhd+j9b^Ci