{ "cells": [ { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "\n", "
Applied Discrete Structures by Alan Doerr & Kenneth Levasseur is licensed under a Creative Commons Attribution - Noncommercial - ShareAlike 3.0 United States License.
\n", "This document describes the basic ways in which a relation can be represented with Sage. These topics are introduced in chapter 6 of Applied Discrete Structures.
\n", "\n", "Example 1. Consider the \"random relation\" the set of digits, 0 through 9, which each pair of digits is related with probablity 0.25. The list of digits, which we call A, is created using range. In Python, the default first number in range is 0 and the list specification is \"open on the right\" so that the upper limit is not included. Therefore range(10) produces the digits 0 through 9.
" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "range(0, 10)" ] }, "execution_count": 10, "metadata": { }, "output_type": "execute_result" } ], "source": [ "A=range(10)\n", "A" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "Here is the complete list of pairs from which we draw approximately 25% for our relation.
" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[(0, 0),\n", " (0, 1),\n", " (0, 2),\n", " (0, 3),\n", " (0, 4),\n", " (0, 5),\n", " (0, 6),\n", " (0, 7),\n", " (0, 8),\n", " (0, 9),\n", " (1, 0),\n", " (1, 1),\n", " (1, 2),\n", " (1, 3),\n", " (1, 4),\n", " (1, 5),\n", " (1, 6),\n", " (1, 7),\n", " (1, 8),\n", " (1, 9),\n", " (2, 0),\n", " (2, 1),\n", " (2, 2),\n", " (2, 3),\n", " (2, 4),\n", " (2, 5),\n", " (2, 6),\n", " (2, 7),\n", " (2, 8),\n", " (2, 9),\n", " (3, 0),\n", " (3, 1),\n", " (3, 2),\n", " (3, 3),\n", " (3, 4),\n", " (3, 5),\n", " (3, 6),\n", " (3, 7),\n", " (3, 8),\n", " (3, 9),\n", " (4, 0),\n", " (4, 1),\n", " (4, 2),\n", " (4, 3),\n", " (4, 4),\n", " (4, 5),\n", " (4, 6),\n", " (4, 7),\n", " (4, 8),\n", " (4, 9),\n", " (5, 0),\n", " (5, 1),\n", " (5, 2),\n", " (5, 3),\n", " (5, 4),\n", " (5, 5),\n", " (5, 6),\n", " (5, 7),\n", " (5, 8),\n", " (5, 9),\n", " (6, 0),\n", " (6, 1),\n", " (6, 2),\n", " (6, 3),\n", " (6, 4),\n", " (6, 5),\n", " (6, 6),\n", " (6, 7),\n", " (6, 8),\n", " (6, 9),\n", " (7, 0),\n", " (7, 1),\n", " (7, 2),\n", " (7, 3),\n", " (7, 4),\n", " (7, 5),\n", " (7, 6),\n", " (7, 7),\n", " (7, 8),\n", " (7, 9),\n", " (8, 0),\n", " (8, 1),\n", " (8, 2),\n", " (8, 3),\n", " (8, 4),\n", " (8, 5),\n", " (8, 6),\n", " (8, 7),\n", " (8, 8),\n", " (8, 9),\n", " (9, 0),\n", " (9, 1),\n", " (9, 2),\n", " (9, 3),\n", " (9, 4),\n", " (9, 5),\n", " (9, 6),\n", " (9, 7),\n", " (9, 8),\n", " (9, 9)]" ] }, "execution_count": 11, "metadata": { }, "output_type": "execute_result" } ], "source": [ "tuples(A,2)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "The result of the next expression is random. The output represents a fundamental way to represent any relation as a set of ordered pairs.
" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[(0, 7),\n", " (0, 8),\n", " (1, 6),\n", " (2, 0),\n", " (2, 1),\n", " (2, 9),\n", " (3, 3),\n", " (3, 5),\n", " (3, 9),\n", " (4, 6),\n", " (5, 5),\n", " (5, 9),\n", " (6, 1),\n", " (6, 8),\n", " (6, 9),\n", " (7, 1),\n", " (7, 5),\n", " (8, 6),\n", " (9, 4),\n", " (9, 5)]" ] }, "execution_count": 12, "metadata": { }, "output_type": "execute_result" } ], "source": [ "r=random_sublist(tuples(A,2),0.25)\n", "r" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "\n", " Next, we'll be creating a dictionary and will need to extract the entries of pairs.\n", "
" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "4" ] }, "execution_count": 13, "metadata": { }, "output_type": "execute_result" } ], "source": [ "pair=(4,5)\n", "pair[0]" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "There are several wasy to create a directed graph (DiGraph) in Sage. The most basic as a dictionary. The following code creates a dictionary corresponding to the relation.
" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "rd={}\n", "for p in r:\n", " if p[0] in rd:\n", " rd[p[0]].append(p[1])\n", " else:\n", " rd[p[0]]=[p[1]]" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "To recover the information defined within a (small) dictionary, use the
We can plot the graph. For larger relations, the information you get may not be very easy to read, but here it is clear.
" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "Graphics object consisting of 40 graphics primitives" ] }, "execution_count": 17, "metadata": { }, "output_type": "execute_result" } ], "source": [ "g.plot()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "13/50" ] }, "execution_count": 12, "metadata": { }, "output_type": "execute_result" } ], "source": [ "g.density()" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 0\n", "1 2\n", "2 +Infinity\n", "3 +Infinity\n", "4 4\n", "5 2\n", "6 2\n", "7 1\n", "8 1\n", "9 3\n" ] } ], "source": [ "for k in range(10):\n", " print(k, g.distance(0,k))" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "+Infinity" ] }, "execution_count": 14, "metadata": { }, "output_type": "execute_result" } ], "source": [ "g.distance(9,1)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "Here is the adjacency matrix of the graph. Row i column j is 1 if the edge [i,j] is part of the relation. Recall that in Python, indexing of matrices starts at 0 just as with lists; so the first row is row 0, corresponding to the digit 0. This is why we used the digits as our vertex set.
" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[0 0 0 0 0 0 0 1 1 0]\n", "[0 0 0 0 0 0 1 0 0 0]\n", "[1 1 0 0 0 0 0 0 0 1]\n", "[0 0 0 1 0 1 0 0 0 1]\n", "[0 0 0 0 0 0 1 0 0 0]\n", "[0 0 0 0 0 1 0 0 0 1]\n", "[0 1 0 0 0 0 0 0 1 1]\n", "[0 1 0 0 0 1 0 0 0 0]\n", "[0 0 0 0 0 0 1 0 0 0]\n", "[0 0 0 0 1 1 0 0 0 0]" ] }, "execution_count": 22, "metadata": { }, "output_type": "execute_result" } ], "source": [ "R=g.adjacency_matrix()\n", "R" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "The square of this matrix gives us information on the number of paths of length 2 between any two vertices.
" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[0 1 0 0 0 1 1 0 0 0]\n", "[0 1 0 0 0 0 0 0 1 1]\n", "[0 0 0 0 1 1 1 1 1 0]\n", "[0 0 0 1 1 3 0 0 0 2]\n", "[0 1 0 0 0 0 0 0 1 1]\n", "[0 0 0 0 1 2 0 0 0 1]\n", "[0 0 0 0 1 1 2 0 0 0]\n", "[0 0 0 0 0 1 1 0 0 1]\n", "[0 1 0 0 0 0 0 0 1 1]\n", "[0 0 0 0 0 1 1 0 0 1]" ] }, "execution_count": 23, "metadata": { }, "output_type": "execute_result" } ], "source": [ "R*R" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "The cube gives us information on paths of length 3.
" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[0 1 0 0 0 1 1 0 1 2]\n", "[0 0 0 0 1 1 2 0 0 0]\n", "[0 2 0 0 0 2 2 0 1 2]\n", "[0 0 0 1 2 6 1 0 0 4]\n", "[0 0 0 0 1 1 2 0 0 0]\n", "[0 0 0 0 1 3 1 0 0 2]\n", "[0 2 0 0 0 1 1 0 2 3]\n", "[0 1 0 0 1 2 0 0 1 2]\n", "[0 0 0 0 1 1 2 0 0 0]\n", "[0 1 0 0 1 2 0 0 1 2]" ] }, "execution_count": 24, "metadata": { }, "output_type": "execute_result" } ], "source": [ "R*R*R" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "The matrices above are technically not adjacencly matrices since they are not 0-1 matrices. See Example 3, below, for how to remedy this situation.
" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "g.transitive_closure().adjacency_matrix()" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "\n", " We define $r$ on the divisors of 60 by $ a r b \\Leftrightarrow \\frac{b}{a}$ is a prime.\n", "
" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60]" ] }, "execution_count": 4, "metadata": { }, "output_type": "execute_result" } ], "source": [ "D=60.divisors();D" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{1: [2, 3, 5],\n", " 2: [4, 5, 6, 10, 15],\n", " 3: [6, 10, 15],\n", " 4: [10, 12, 15, 20, 30],\n", " 5: [10, 12, 15],\n", " 6: [12, 15, 20, 30],\n", " 10: [20, 30],\n", " 12: [30, 60],\n", " 15: [30],\n", " 20: [60],\n", " 30: [60]}" ] }, "execution_count": 5, "metadata": { }, "output_type": "execute_result" } ], "source": [ "r={};\n", "for p in tuples(D,2):\n", " if (p[1]//p[0]).is_prime():\n", " if p[0] in r:\n", " r[p[0]]=r[p[0]]+[p[1]]\n", " else:\n", " r[p[0]]=[p[1]]\n", "r" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "6f5b9eeca810673c4f2aa96c8596aee79de89141", "text/plain": [ "Graphics object consisting of 43 graphics primitives" ] }, "execution_count": 6, "metadata": { }, "output_type": "execute_result" } ], "source": [ "DiGraph(r).plot(tree_root=1)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "\n", "\n", "
This short example illustrates the transitive closure of a relation. We start by defining a relation directly as a simple dictionary. The graph is a \"chain\" of length 4." ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "s={}\n", "s[0]=[1]\n", "s[1]=[2]\n", "s[2]=[3]\n", "s[3]=[4]" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "DiGraph(s).plot()" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "The transitive closure of a relation is the smallest transitive relation containing that relation.
" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "DiGraph(s).transitive_closure().plot()" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "Example 3. This next example is of a relation that is defined in terms of a boolean function. It is based on mod 17 arithmetic, where $a\\cdot b (mod 17)$ is defined to be the remainder when 17 is divided into $a\\cdot b$. For example $5\\cdot 10 (mod 17) = 16$ since $5\\cdot 10 = 50 = 17\\cdot 2 + 16$
\n", "\n", "The set of remainders when you divide by 17 is $\\{0, 1, 2, \\ldots , 16\\}$ but since 17 is prime and we start with the positive remainders, products will never equal 0 mod 17.
" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]" ] }, "execution_count": 9, "metadata": { }, "output_type": "execute_result" } ], "source": [ "B=range(1,17)\n", "B" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "We define the relation $m$ on $B$ by $(a, b)\\in m$ if $3\\cdot x (mod 17) = y$ or $5\\cdot x (mod 17) = y$. In Sage, this translates to the following function.
" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "def m(x,y):\n", " return (3*x).mod(17)==y or (5*x).mod(17)==y" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "Changing the number 3 and 5 in the definition above to 3 and 6 creates an interesting alternative relation. Also changing the modulus can be interesting, but if you use a non-prime modulus, you have to include 0 as a possible remainder.
\n", "Again, we build a dictionary based on the boolean function.
" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "md={}\n", "for k in B:\n", " for j in B:\n", " if m(k,j):\n", " if k in md:\n", " md[k].append(j)\n", " else:\n", " md[k]=[j]" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "aaa1798907679c3acbfd5f35b229506dd093edfe", "text/plain": [ "Graphics object consisting of 49 graphics primitives" ] }, "execution_count": 12, "metadata": { }, "output_type": "execute_result" } ], "source": [ "g=DiGraph(md)\n", "g.plot()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0]\n", "[0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0]\n", "[0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0]\n", "[0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0]\n", "[0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0]\n", "[1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0]\n", "[1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0]\n", "[0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0]\n", "[0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0]\n", "[0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1]\n", "[0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1]\n", "[0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0]\n", "[0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0]\n", "[0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0]\n", "[0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0]\n", "[0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0]" ] }, "execution_count": 13, "metadata": { }, "output_type": "execute_result" } ], "source": [ "G=g.adjacency_matrix()\n", "G" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "The square of relation m can be determined by squaring the adjacency matrix of m. Thanks to Jason Grout, who pointed out how to turn all nonzero entries in the product to a 1. By doing that you lose the information about the number of paths of length two between any pair of vertices, but the plot of the graph is much nicer.
" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0]\n", "[1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1]\n", "[0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0]\n", "[0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0]\n", "[0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0]\n", "[0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0]\n", "[0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0]\n", "[1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0]\n", "[0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1]\n", "[0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0]\n", "[0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0]\n", "[0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0]\n", "[0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0]\n", "[0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0]\n", "[1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1]\n", "[0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0]" ] }, "execution_count": 14, "metadata": { }, "output_type": "execute_result" } ], "source": [ "H=(G*G).apply_map(lambda x: 1 if x!=0 else 0)\n", "H" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "Here is the graph of the square of m, but with multiple edges.
" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "7083039f15d58083d6bc388722afee4ed523e585", "text/plain": [ "Graphics object consisting of 80 graphics primitives" ] }, "execution_count": 15, "metadata": { }, "output_type": "execute_result" } ], "source": [ "DiGraph(H).plot()" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ ] } ], "metadata": { "kernelspec": { "display_name": "SageMath 9.2", "language": "sagemath", "metadata": { "cocalc": { "description": "Open-source mathematical software system", "priority": 10, "url": "https://www.sagemath.org/" } }, "name": "sage-9.2", "resource_dir": "/ext/jupyter/kernels/sage-9.2" }, "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.5" } }, "nbformat": 4, "nbformat_minor": 4 }