Skip to content

Instantly share code, notes, and snippets.

@rndmcnlly
Created October 7, 2016 17:55
Show Gist options
  • Save rndmcnlly/5f9d60280f9c825666963022c7d530dc to your computer and use it in GitHub Desktop.
Save rndmcnlly/5f9d60280f9c825666963022c7d530dc to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Overwriting graph_coloring_instance.lp\n"
]
}
],
"source": [
"%%file graph_coloring_instance.lp\n",
"\n",
"color(red;blue;green;yellow).\n",
"\n",
"node(1..6).\n",
"\n",
"edge(1,2).\n",
"edge(2,3).\n",
"edge(1,3).\n",
"edge(2,5).\n",
"edge(3,5).\n",
"edge(3,4).\n",
"edge(3,6).\n",
"edge(5,4).\n",
"edge(5,6).\n",
"edge(4,6)."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Overwriting graph_coloring_encoding.lp\n"
]
}
],
"source": [
"%%file graph_coloring_encoding.lp\n",
"\n",
"1 { assign(N,C) : color(C) } 1 :- node(N).\n",
":- color(C); edge(N1,N2); assign(N1,C); assign(N2,C)."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{\r\n",
" \"Solver\": \"clingo version 4.5.0\",\r\n",
" \"Input\": [\r\n",
" \"graph_coloring_encoding.lp\",\"graph_coloring_instance.lp\"\r\n",
" ],\r\n",
" \"Call\": [\r\n",
" {\r\n",
" \"Witnesses\": [\r\n",
" {\r\n",
" \"Value\": [\r\n",
" \"edge(1,2)\", \"edge(2,3)\", \"edge(1,3)\", \"edge(2,5)\", \"edge(3,5)\", \"edge(3,4)\", \"edge(3,6)\", \"edge(5,4)\", \"edge(5,6)\", \"edge(4,6)\", \"color(red)\", \"color(blue)\", \"color(green)\", \"color(yellow)\", \"node(1)\", \"node(2)\", \"node(3)\", \"node(4)\", \"node(5)\", \"node(6)\", \"assign(2,red)\", \"assign(6,red)\", \"assign(1,blue)\", \"assign(4,blue)\", \"assign(3,green)\", \"assign(5,yellow)\"\r\n",
" ]\r\n",
" }\r\n",
" ]\r\n",
" }\r\n",
" ],\r\n",
" \"Result\": \"SATISFIABLE\",\r\n",
" \"Models\": {\r\n",
" \"Number\": 1,\r\n",
" \"More\": \"yes\"\r\n",
" },\r\n",
" \"Calls\": 1,\r\n",
" \"Time\": {\r\n",
" \"Total\": 0.003,\r\n",
" \"Solve\": 0.000,\r\n",
" \"Model\": 0.000,\r\n",
" \"Unsat\": 0.000,\r\n",
" \"CPU\": 0.000\r\n",
" }\r\n",
"}\r\n"
]
}
],
"source": [
"!./clingo-4.5.0-macos-10.9/clingo graph_coloring_encoding.lp graph_coloring_instance.lp --outf=2"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"{u'Call': [{u'Witnesses': [{u'Value': [u'edge(1,2)',\n",
" u'edge(2,3)',\n",
" u'edge(1,3)',\n",
" u'edge(2,5)',\n",
" u'edge(3,5)',\n",
" u'edge(3,4)',\n",
" u'edge(3,6)',\n",
" u'edge(5,4)',\n",
" u'edge(5,6)',\n",
" u'edge(4,6)',\n",
" u'color(red)',\n",
" u'color(blue)',\n",
" u'color(green)',\n",
" u'color(yellow)',\n",
" u'node(1)',\n",
" u'node(2)',\n",
" u'node(3)',\n",
" u'node(4)',\n",
" u'node(5)',\n",
" u'node(6)',\n",
" u'assign(2,red)',\n",
" u'assign(4,red)',\n",
" u'assign(1,blue)',\n",
" u'assign(6,blue)',\n",
" u'assign(3,green)',\n",
" u'assign(5,yellow)']}]}],\n",
" u'Calls': 1,\n",
" u'Input': [u'graph_coloring_encoding.lp', u'graph_coloring_instance.lp'],\n",
" u'Models': {u'More': u'yes', u'Number': 1},\n",
" u'Result': u'SATISFIABLE',\n",
" u'Solver': u'clingo version 4.4.0',\n",
" u'Time': {u'CPU': 0.0,\n",
" u'Model': 0.0,\n",
" u'Solve': 0.0,\n",
" u'Total': 0.002,\n",
" u'Unsat': 0.0}}"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lines = !clingo graph_coloring_encoding.lp graph_coloring_instance.lp --outf=2\n",
"json_text = '\\n'.join(lines)\n",
"import json\n",
"res = json.loads(json_text)\n",
"res"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"graph {\r\n",
"\tnode [style=filled]\r\n",
"\t1 -- 2\r\n",
"\t2 -- 3\r\n",
"\t1 -- 3\r\n",
"\t2 -- 5\r\n",
"\t3 -- 5\r\n",
"\t3 -- 4\r\n",
"\t3 -- 6\r\n",
"\t5 -- 4\r\n",
"\t5 -- 6\r\n",
"\t4 -- 6\r\n",
"\t2 [fillcolor=red]\r\n",
"\t4 [fillcolor=red]\r\n",
"\t1 [fillcolor=blue]\r\n",
"\t6 [fillcolor=blue]\r\n",
"\t3 [fillcolor=green]\r\n",
"\t5 [fillcolor=yellow]\r\n",
"}\r\n"
]
}
],
"source": [
"solution = res['Call'][0]['Witnesses'][0]['Value']\n",
"\n",
"dot_lines = []\n",
"\n",
"dot_lines.append(\"graph {\")\n",
"dot_lines.append(\"\\tnode [style=filled]\")\n",
"\n",
"for atom in solution:\n",
" if atom.startswith('assign'):\n",
" node, color = atom[atom.index('(')+1:-1].split(',')\n",
" dot_lines.append(\"\\t%s [fillcolor=%s]\" % (node, color))\n",
" elif atom.startswith('edge'):\n",
" src, dst = atom[atom.index('(')+1:-1].split(',')\n",
" dot_lines.append(\"\\t%s -- %s\" % (src, dst))\n",
" \n",
"dot_lines.append(\"}\")\n",
"\n",
"with open('asp_graph.dot','w') as f:\n",
" f.write('\\n'.join(dot_lines) + '\\n')\n",
"\n",
"!cat asp_graph.dot\n",
"!neato asp_graph.dot -Tpng -o asp_graph.png"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nRU5ErkJggg==\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from IPython.display import Image\n",
"Image(filename=\"asp_graph.png\")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.12"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment