{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Commutators\n", "======\n", "\n", "We study the distribution of a commutator $c = r u r^{-1} u^{-1}$ when both $r$ and $u$ are taken at random in some symmetric group $S_n$ with $n$ large. Note that $c \\in A_n$, the alternating group. We compare the distribution of $c$ with the uniform distribution in $A_n$ looking at two statistics:\n", "\n", "- the number of fixed points\n", "- the number of cycles" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Empirical distributions of commutators\n", "------------------------------------------\n", "\n", "The first approach to generate random permutations is to use `SymmetricGroup(n)`. However this is dramatically slow..." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 2.45 s, sys: 793 ms, total: 3.24 s\n", "Wall time: 3.5 s\n" ] } ], "source": [ "%%time \n", "n = 5\n", "S = SymmetricGroup(5)\n", "for _ in range(1000):\n", " r = S.random_element() # pick r at random\n", " u = S.random_element() # pick u at random\n", " c = r*u*r^-1*u^-1 # commutator\n", " t = c.cycle_tuples() # decomposition in cycles" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Instead we use the functions `perm_compose`, `perm_compose_i`, `perm_cycle_tuples` that belongs to the package `surface_dynamics`. These functions operate on lists of integers in $\\{0, 1, \\ldots, n-1\\}$." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from surface_dynamics.misc.permutation import perm_compose, perm_compose_i, perm_cycle_tuples\n", "\n", "def sample(n, size):\n", " r\"\"\"\n", " Return the distribution of number of fixed points and number of cycles\n", " for a random commutator.\n", " \n", " INPUT:\n", " \n", " - ``n`` - rank of the symmetric group\n", " \n", " - ``size`` - size of the sample\n", " \"\"\"\n", " r = range(n)\n", " u = range(n)\n", " fps = [0] * (n+1) # number of fixed points\n", " ts = [0] * (n+1) # number of cycles\n", " for _ in range(size):\n", " shuffle(r) # randomly mix r\n", " shuffle(u) # randomly mix u\n", " c = perm_compose(perm_compose(r, u), perm_compose_i(r, u)) # commutator\n", "\n", " # count fixed points\n", " fp = sum(c[i] == i for i in range(n))\n", " fps[fp] += 1\n", " \n", " # count number of cycles (~ genus)\n", " t = len(perm_cycle_tuples(c,True))\n", " ts[t] += 1\n", "\n", " return (fps, ts)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "([3, 2, 5, 0, 0, 0], [0, 3, 0, 7, 0, 0])" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample(5, 10)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# Fix the size of the symmetric group and the size of the sample\n", "n = 50\n", "size = 50000" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 3.23 s, sys: 293 µs, total: 3.23 s\n", "Wall time: 3.23 s\n" ] } ], "source": [ "%%time\n", "fps, ncycs = sample(n, size)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# renormalize our samples\n", "for i in range(n+1):\n", " fps[i] /= size\n", " ncycs[i] /= size" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 1 graphics primitive" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "L = list_plot(fps, plotjoined=True, color='blue')\n", "L.show(xmax=8, figsize=4)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 1 graphics primitive" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "L = list_plot(ncycs, plotjoined=True, color='blue')\n", "L.show(xmax=15, figsize=4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One can remark that the number of cycles is always an even number... this is because a commutator belongs to the alternating group. To get a nicer graph, we can plot only the values at even points." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 2 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ncycs2 = [(i,ncycs[i]) for i in range(0,n+1,2)]\n", "G = line2d(ncycs2, color='blue') + point2d(ncycs2, color='red', pointsize=20)\n", "G.show(xmax=15, figsize=4)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Exact distributions in $A_n$\n", "----------------------------\n", "\n", "Now we want to compare our empirical distribution of commutatoris with the exact distribution in the alternating group $A_n$. For that purpose, we list partitions (that correspond to conjugacy classes of permutations). Note that for $n = 50$ we already have 204226 partitions and 102162 of them are even and corresponds to conjugacy classes in $A_n$." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "204226\n", "102162\n" ] } ], "source": [ "P = Partitions(n)\n", "print P.cardinality()\n", "P0 = [p for p in P if p.sign() == 1]\n", "print len(P0)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 1.36 s, sys: 70.9 ms, total: 1.43 s\n", "Wall time: 1.35 s\n" ] }, { "data": { "text/plain": [ "True" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%time\n", "# small check: the sum of conjugacy class sizes should be the cardinality of An\n", "sum(p.conjugacy_class_size() for p in P0) == factorial(n) / 2" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 5.56 s, sys: 52.2 ms, total: 5.62 s\n", "Wall time: 5.56 s\n" ] } ], "source": [ "%%time\n", "# now compute distributions\n", "distrib_fp = [0] * (n+1)\n", "distrib_ncyc = [0] * (n+1)\n", "for p in P:\n", " if p.sign() == -1:\n", " continue\n", " \n", " distrib_fp[p._list.count(1)] += p.conjugacy_class_size()\n", " distrib_ncyc[len(p._list)] += p.conjugacy_class_size()\n", "for i in range(n+1):\n", " distrib_fp[i] *= 2/factorial(n)\n", " distrib_ncyc[i] *= 2/factorial(n)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "L1 = list_plot(fps, plotjoined=True, color='blue', legend_label='empirical commutator')\n", "L2 = list_plot(distrib_fp, plotjoined=True, color='red', legend_label='uniform distrib in $A_{%d}$' % n)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 2 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "(L1 + L2).show(title='Number of fixed point', xmax=8, figsize=4)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "# for number of cycles, we only consider even sizes\n", "ncycs2 = [(i,ncycs[i]) for i in range(0,n+1,2)]\n", "distrib_ncyc2 = [(i,distrib_ncyc[i]) for i in range(0,n+1,2)]\n", "L3 = line2d(ncycs2, color='blue', legend_label='empirical commutator')\n", "L4 = line2d(distrib_ncyc2, color='red', legend_label='uniform distrib in $A_{%d}$' % n)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "Graphics object consisting of 2 graphics primitives" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "(L3 + L4).show(title='Number of cycles', xmax=15, figsize=4)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "SageMath 8.3.beta6", "language": "", "name": "sagemath" }, "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.15" } }, "nbformat": 4, "nbformat_minor": 2 }