OpenJij/OpenJij

View on GitHub
docs/tutorial/en/optimization/graph_coloring.ipynb

Summary

Maintainability
Test Coverage
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Graph Coloring Problem\n",
    "Here we show how to solve the graph coloring problem using OpenJij, [JijModeling](https://www.ref.documentation.jijzept.com/jijmodeling/), and [JijModeling Transpiler](https://www.ref.documentation.jijzept.com/jijmodeling-transpiler/). This problem is also mentioned in 6.1. Graph Coloring in [Lucas, 2014, \"Ising formulations of many NP problems\"](https://doi.org/10.3389/fphy.2014.00005).\n",
    "\n",
    "## Overview of the Graph Coloring Problem\n",
    "\n",
    "In a graph coloring problem, we color vertices on a given graph differently when they are on the same edge.\n",
    "This problem is one of the famous NP-complete problems.\n",
    "\n",
    "### Example\n",
    "\n",
    "Consider an undirected graph with 6 vertices and some edges as shown below.\n",
    "\n",
    "![](../../../assets/graph_coloring_01.png)\n",
    "\n",
    "We can color this graph in three colors as follows:\n",
    "\n",
    "![](../../../assets/graph_coloring_02.png)\n",
    "\n",
    "No edge connects two vertices of the same color exist.\n",
    "\n",
    "### Generalizing the Problem\n",
    "\n",
    "Now let us generalize the problem and express it in a mathematical model. Consider an undirected graph $G = (V, E)$ with $N$ colors so that vertices connected by edges do not overlap.\n",
    "We consider coloring an undirected graph $G=(V, E)$ with $N$ colors, and introduce variables $x_{v, n}$ which are 1 if vertex $v$ is colored with $n$ and 0 otherwise.\n",
    "\n",
    "#### Constraint\n",
    "Vertices must be painted with one color, meaning that it is not allowed to paint one vertex with two colors.\n",
    "\n",
    "$$\n",
    "\\sum_{n=0}^{N-1} x_{v, n} \n",
    "= 1 \\quad (\\forall v \\in V)\n",
    "$$(1)\n",
    "\n",
    "#### Objective Function\n",
    "The problem setup for the graph coloring problem requires that the vertices at both ends of every edge be painted with a different color.\n",
    "This can be expressed as:\n",
    "\n",
    "$$\n",
    "\\min \\quad \n",
    "\\sum_{n=0}^{N-1} \\sum_{(uv) \\in E} x_{u, n} x_{v, n}\n",
    "$$(2)\n",
    "\n",
    "where $E$ is a set of edges on graph $G$.\n",
    "\n",
    "| $x_{u,n}$ | $x_{v,n}$ | $x_{u,n}x_{v,n}$ |  \n",
    "|-----------|-----------|------------------|\n",
    "|     0     |     0     |         0        |\n",
    "|     0     |     0     |         0        |\n",
    "|     1     |     0     |         0        |\n",
    "|     1     |     1     |         1        |\n",
    "\n",
    "Since $x_{u,n}=1$ if vertex $u$ is colored by $n$ as defined above, $x_{u,n}x_{v,n}=1$ in the table above only when both $x_{u,n}$ and $x_{v,n}$ are 1, and 0 otherwise.\n",
    "When two vertices on every edge have different colors, the value of this objective function is 0.\n",
    "Therefore, this objective function is an indicator of the degree to which graph coloring has been achieved."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Modeling by JijModeling\n",
    "\n",
    "### Variables\n",
    "\n",
    "Let us define the variables used in equations (1) and (2) as follows:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import jijmodeling as jm\n",
    "\n",
    "# define variables\n",
    "V = jm.Placeholder('V')\n",
    "E = jm.Placeholder('E', dim=2)\n",
    "N = jm.Placeholder('N')\n",
    "x = jm.Binary('x', shape=(V, N))\n",
    "n = jm.Element('i', (0, N))\n",
    "v = jm.Element('v', (0, V))\n",
    "e = jm.Element('e', E)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`V=jm.Placeholder('V')` represents the number of vertices. \n",
    "We denote `E=jm.Placeholder('E', dim=2)` a set of edges.\n",
    "`N` is the number of colors.\n",
    "We define a two-dimensional list of binary variables `x=jm.Binary('x', shape=(V, N))`, and we set the subscripts `n` and `v` used in the mathematical model.\n",
    "`e` represents the variable for edges. `e[0]` and `e[1]` mean the vertex $u$ and $v$ on the edge, respectively."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Constraint\n",
    "\n",
    "Let us implement the constraint in equation (1)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# set problem\n",
    "problem = jm.Problem('Graph Coloring')\n",
    "# set one-hot constraint that each vertex has only one color\n",
    "const = x[v, :]\n",
    "problem += jm.Constraint('one-color', const==1, forall=v)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`x[v, :]` implements `Sum(n, x[v, n])` in a concise way."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Objective Function\n",
    "\n",
    "Next, we implement the objective function of equation (2).\n",
    "We write $\\sum_n \\sum_e$ as `Sum([n, e], ...)`.\n",
    "JijModeling easily formulates the summation over nodes in edges."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$$\\begin{alignat*}{4}\\text{Problem} & \\text{: Graph Coloring} \\\\\\min & \\quad \\sum_{ i = 0 }^{ N - 1 } \\sum_{ e \\in E } x_{e_{0},i} \\cdot x_{e_{1},i} \\\\\\text{s.t.} & \\\\& \\text{one-color} :\\\\ &\\quad \\quad \\sum_{ \\bar{i}_{1} = 0 }^{ N - 1 } x_{v,\\bar{i}_{1}} = 1,\\ \\forall v \\in \\left\\{ 0 ,\\ldots , V - 1 \\right\\} \\\\[8pt]& x_{i_{0},i_{1}} \\in \\{0, 1\\}\\end{alignat*}$$"
      ],
      "text/plain": [
       "<jijmodeling.problem.problem.Problem at 0x105c60c40>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# set objective function: minimize edges whose vertices connected by edges are the same color\n",
    "sum_list = [n, e]\n",
    "problem += jm.Sum(sum_list, x[e[0], n]*x[e[1], n])\n",
    "problem"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Instance\n",
    "\n",
    "Here we create a random graph with 12 vertices."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import networkx as nx\n",
    "\n",
    "# set the number of vertices\n",
    "inst_V = 12\n",
    "# set the number of colors\n",
    "inst_N = 4\n",
    "# create a random graph\n",
    "inst_G = nx.gnp_random_graph(inst_V, 0.4)\n",
    "# get information of edges\n",
    "inst_E = [list(edge) for edge in inst_G.edges]\n",
    "instance_data = {'V': inst_V, 'N': inst_N, 'E': inst_E, 'G': inst_G}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this code, the number of vertices in the graph and the number of colors are 12 and 4, respectively. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Undetermined Multiplier\n",
    "\n",
    "This problem has one constraint, and we need to set the weight of that constraint.\n",
    "We will set it to match the name we gave in the `Constraint` part earlier using a dictionary type."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# set multipliers\n",
    "lam1 = 1.0\n",
    "multipliers = {'one-color': lam1}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Conversion to PyQUBO by JijModeling Transpiler\n",
    "\n",
    "JijModeling has executed all the implementations so far.\n",
    "By converting this to [PyQUBO](https://pyqubo.readthedocs.io/en/latest/), it is possible to perform combinatorial optimization calculations using OpenJij and other solvers."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "from jijmodeling.transpiler.pyqubo import to_pyqubo\n",
    "\n",
    "# convert to pyqubo\n",
    "pyq_model, pyq_chache = to_pyqubo(problem, instance_data, {})\n",
    "qubo, bias = pyq_model.compile().to_qubo(feed_dict=multipliers)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The PyQUBO model is created by `to_pyqubo` with the `problem` created by JijModeling and the `instance_data` we set to a value as arguments.\n",
    "Next, we compile it into a QUBO model that can be computed by OpenJij or other solver.\n",
    "\n",
    "### Optimization by OpenJij\n",
    "\n",
    "This time, we will use OpenJij's simulated annealing to solve the optimization problem.\n",
    "We set the `SASampler` and input the QUBO into that sampler to get the result of the calculation."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "import openjij as oj\n",
    "# set sampler\n",
    "sampler = oj.SASampler(num_reads=100)\n",
    "# solve problem\n",
    "response = sampler.sample_qubo(qubo)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Decoding and Displaying the Solution\n",
    "\n",
    "Decode the returned results to facilitate analysis."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# decode solution\n",
    "result = pyq_chache.decode(response)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "From the result thus obtained, let us visualize the graph.\n",
    "We prepare a graph using [NetworkX](https://networkx.org/). "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "# get indices of x = 1\n",
    "indices, _, _ = result.lowest().record.solution['x'][0]\n",
    "# get vertex number and color\n",
    "vertices, colors = indices\n",
    "# sort lists by vertex number\n",
    "zip_lists = zip(vertices, colors)\n",
    "zip_sort = sorted(zip_lists)\n",
    "sorted_vertices, sorted_colors = zip(*zip_sort)\n",
    "# initialize vertex color list\n",
    "node_colors = [-1] * len(vertices)\n",
    "# set color list for visualization\n",
    "colorlist = ['gold', 'violet', 'limegreen', 'darkorange']\n",
    "# set vertex color list\n",
    "for i, j in zip(sorted_vertices, sorted_colors):\n",
    "    node_colors[i] = colorlist[j]\n",
    "# make figure\n",
    "fig = plt.figure()\n",
    "nx.draw_networkx(instance_data['G'], node_color=node_colors, with_labels=True)"
   ]
  }
 ],
 "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.9.15"
  },
  "vscode": {
   "interpreter": {
    "hash": "2e8d7574d7ec71e14cb1575cf43673432d6fae464c836a7b3733d4f6c20243fb"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}