{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Dominating set.\n", "\n", "**The problem**: Given an undirected graph,\n", "the dominating set problem is to select a subset of vertices such that each remaining vertex is adjacent\n", "to some selected vertex, where the number of selected vertices must not exceed a given threshold.\n", "\n", "**An example:**\n", "The graph $(\\{1,2,3,4,5,6\\},\\{\\{1,2\\},\\{1,3\\},\\{2,4\\},\\{3,5\\},\\{4,5\\},\\{4,6\\}\\})$\n", "has two dominating sets with at most $2$ vertices: $\\{1,4\\}$ and $\\{3,4\\}$.\n", "\n", "**Instance format**: We represent such a problem instance by facts as follows." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": true }, "outputs": [], "source": [ "%%file instances/instance-dominating.lp\n", "vertex(1). vertex(2). vertex(3). vertex(4). vertex(5). vertex(6).\n", "edge(1,2). edge(1,3). edge(2,4). edge(3,5). edge(4,5). edge(4,6).\n", "threshold(2)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**The task**: Specify a uniform problem encoding such that atoms over the predicate ``select/1`` within the stable models correspond to dominating sets for arbitrary instances (see the output under **Help** below)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%%clingo 0 instances/instance-dominating.lp -\n", "\n", "% your encoding goes here...\n", "\n", "% show\n", "#show select/1." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The symbol ``-`` in the command call tells ``clingo`` to read the instance file _and_ the content of the cell. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Help**: The next cell contains a hard to read encoding for the problem that\n", "you can use for testing your solution.\n", "A readable version of it can be found in the ``solutions`` directory." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "clingo version 5.4.0\n", "Reading from instances/instance-dominating.lp ...\n", "Solving...\n", "Answer: 1\n", "select(1) select(4)\n", "Answer: 2\n", "select(3) select(4)\n", "SATISFIABLE\n", "\n", "Models : 2\n", "Calls : 1\n", "Time : 0.002s (Solving: 0.00s 1st Model: 0.00s Unsat: 0.00s)\n", "CPU Time : 0.002s\n" ] } ], "source": [ "%%clingo 0 instances/instance-dominating.lp -\n", "#show select/1.ssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43(RJGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43):-select(RJGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43).sodjhoinfeorfioejoi2423onjnfeiooi454onro3jfo34oi43o43nfo34oi34iofj43(R0JER434343rfeferfergerGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43):-threshold(R0JER434343rfeferfergerGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43).:-vertex(RJGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43),not ssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43(RJGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43).ssdfefcerverversodjhoinfeorfioejoi2423onjnfeiooi454onro3jfo34oi43o43nfo34oi34iofj43(RJGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43,RJER434343rfeferfergerGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43):-edge(RJGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43,RJER434343rfeferfergerGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43).scerverversodjhoinfeorfioejoi2423onjnfeiooi454onro3jfo34oi43o43nfo34oi34iofj43(RJGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43):-vertex(RJGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43).ssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43(RJER434343rfeferfergerGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43):-select(RJGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43),edge(RJER434343rfeferfergerGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43,RJGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43).ssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43(RJER434343rfeferfergerGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43):-select(RJGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43),edge(RJGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43,RJER434343rfeferfergerGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43).select(RJGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43):-ssdfefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43(RJGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43).{ssdfefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43(RJGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43):vertex(RJGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43)}R0JER434343rfeferfergerGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43:-threshold(R0JER434343rfeferfergerGRORGssdergergergregrefefcerverversodjhoinfeorfioejoi2423onjnfeiegegegegdcsvooi454onro3jfo34oi43o43nfo34oi34iofj43)." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.0" } }, "nbformat": 4, "nbformat_minor": 4 }