12 lines
31 KiB
JSON
12 lines
31 KiB
JSON
{
|
||
"hash": "cfab1947f023fe38d9c86abc8bb49fc3",
|
||
"result": {
|
||
"engine": "jupyter",
|
||
"markdown": "---\ntitle: \"A Game of Permutations, Part 2\"\ndescription: |\n Notes on an operation which makes some very large graphs.\nformat:\n html:\n html-math-method: katex\njupyter: python3\ndate: \"2022-01-18\"\ndate-modified: \"2025-07-06\"\ncategories:\n - graph theory\n - group theory\n---\n\n<style>\n.narrow {\n max-width: 640px;\n}\n</style>\n\n\n\nThis post assumes you have read (or at least skimmed over parts of) the [first post](../1),\n which talks about graphs and the symmetric group.\nThis post will contain some more \"empirical\" results, since I'm not an expert on graph theory.\nHowever, one hardly needs to be an expert to learn or to make computations, observations, and predictions.\n\nWe left off talking about producing a group from a graph, so we begin now by considering how to do the reverse.\n\n\nCayley Graphs\n-------------\n\nFor a given generating set, we can assign every element in the group it generates to a vertex in a graph.\nStarting with each of the generators, we draw edges from one vertex to another when\n the product of the initial vertex and a generator (in that order) is the product vertex.\nThis process continues until there are no more arrows to draw.\nThe resulting figure is known as a [Cayley graph](https://mathworld.wolfram.com/CayleyGraph.html)[^1].\n\n[^1]: The construction implies a labelling of edges by its generating set and a labelling\n of vertices by the generated elements.\n It is also common to describe an unlabelled graph as \"Cayley\" if it could\n be generated by this procedure.\n\nCayley graphs depend on the generating set used, so they can take a wide variety of shapes.\nHere are a few examples of Cayley graphs made from elements of $S_4$:\n\n\n\nOwing to the way in which they are defined, Cayley graphs have a few useful properties as graphs.\nAt every vertex, we have as many outward edges as we do generators in the generating set,\n so the outward (and in fact, inward) degree of each vertex is the same.\nIn other words, it is a regular graph.\nMore than that, it is [vertex-transitive](https://mathworld.wolfram.com/Vertex-TransitiveGraph.html),\n since labelling a single vertex's outward edges will label that of the entire graph.\n\nIn general, the Cayley graph is a directed graph.\nHowever, if for every member of the generating set, we also include its inverse,\n every directed edge will be matched by an edge in the opposite direction,\n and the Cayley graph may be considered undirected.\n\n\nGraphs to Graphs\n----------------\n\nAll 2-cycles are their own inverse, so generating sets which include only them\n produce undirected Cayley graphs.\nSince this kind of generating set can itself be thought of as a graph,\n we may consider an operation on graphs that maps a swap diagram to its Cayley graph.\n\n\n\nIt seems to be the case that $\\exp( A \\oplus B ) = \\exp( A ) \\times \\exp( B )$,\n where $\\oplus$ signifies the disjoint uinion and $\\times$ signifies the\n [Cartesian (box) product of graphs](https://en.wikipedia.org/wiki/Cartesian_product_of_graphs)[^2].\nUnlike *γ* from the previous post, both the input and output of this operation are graphs.\nBecause of this and the sum/product relationship, I've taken to calling this operation the\n \"graph exponential\"[^3].\n\n[^2]: Graphs have many product structures, such as the tensor product and strong product.\n The Cartesian product is (categorically) more natural when paired with disjoint unions.\n\n[^3]: Originally, I called this operation the \"graph factorial\", since it involves permutations\n and the number of vertices in the resulting graph grows factorially.\n\nThis operation is my own invention, so I am unsure whether or not\n it constitutes anything useful.\nIn fact, the possible graphs grow so rapidly that computing anything about the exponential\n of order 8 graphs starts to overwhelm a single computer.\nIt is, however, interesting, as I will hopefully be able to convince.\n\nA random graph will not generally correspond to an interesting generating set,\n and therefore, will also generally have an uninteresting exponential graph.\nHence, I will continue with the examples used previously: paths, stars, and complete graphs.\nThey are among the simplest graphs one can consider, and as we will see shortly,\n have exponentials which appear to have natural correspondences to other graph families.\n\n\nSome Small Exponential Graphs\n-----------------------------\n\nBecause of [the difficulty in determining graph isomorphism](\n https://en.wikipedia.org/wiki/Graph_isomorphism_problem\n ), it is challenging for a computer to find a graph in an encyclopedia.\nComputers think of graphs as a list of vertices and their outward edges,\n but this implementation faces inherent labelling issues.\nThese persist even if the graph is described as a list of (un)ordered pairs,\n an adjacency matrix, or an incidence matrix,\n the latter two of which have very large memory footprints[^4].\n\n[^4]: I was able to locate a project named the\n [Encyclopedia of Finite Graphs](https://github.com/thoppe/Encyclopedia-of-Finite-Graphs),\n but it is only able to build a database simple connected graphs which\n can be queried by invariants (and is outdated since it uses Python 2).\n\nHowever, as visual objects, humans can compare graphs fairly easily\n -- the name means \"drawing\" after all.\nExponentials of order 3 and order 4 graphs are neither so small as to be uninteresting\n nor so big as to be unparsable by humans.\n\n\n### Order 3\n\n{.narrow}\n\nAt this stage, we only really have two graphs to consider, since $P_3 = \\bigstar_3$.\nImmediately, one can see that $\\exp( P_3 ) = \\exp( \\bigstar_3 ) = C_6$,\n the 6-cycle graph (or hexagonal graph).\nIt is also apparent that $\\exp( K_3 )$ is the utility graph, $K_{3,3}$.\n\n\n\nHere, we can again demonstrate the sum rule of the graph exponential with $\\exp( P_3 \\oplus P_2 )$.\nSimplifying, since we know $\\exp( P_3 ) = C_6$, the result is $C_6 \\times P_2 = \\text{Prism}_6$,\n the hexagonal prism graph.\n\n\n### Order 4 (and beyond)\n\n::: {layout=\"[[1,1],[1]]\"}\n\n\n\n\n\n:::\n\nWith some effort, $\\exp( P_4 )$ can be imagined as a projection of a 3D object,\n the [truncated octahedron](https://en.wikipedia.org/wiki/Truncated_octahedron).\nBecause of its correspondence to a 3D solid, this graph is planar.\nBoth the hexagon and this solid belong to a class of polytopes called\n [*permutohedra*](https://en.wikipedia.org/wiki/Permutohedron), which are figures\n that are also formed by permutations of the coordinate (1, 2, 3, ..., *n*) in Euclidean space[^5].\nTechnically, there is a distinction between the Cayley graphs and permutohedra\n since their labellings differ.\nBoth have edges generated by swaps, but in the latter case, the connected vertices are expected to be\n separated by a certain distance.\nMore information about the distinction can be found at this article on [Wikimedia](\n https://commons.wikimedia.org/wiki/Category:Permutohedron_of_order_4_%28raytraced%29#Permutohedron_vs._Cayley_graph\n )[^6].\n\n[^5]: In fact, these figures are able to completely tessellate the $n-1$ dimensional subspace of\n $\\mathbb{R}^n$ where the coordinates sum to the $n-1$th triangular number.\n Note also that the previous graph in the sequence of $\\exp(P_n)$, the hexagonal graph,\n is visible in the truncated octahedron.\n This corresponds to the projection $(x,y,z,w) \\mapsto (x,y,z)$ over\n the coordinates of the permutohedra.\n\n[^6]: Actually, if one considers a *right* Cayley graph, where each generator is right-multiplied\n to the permutation at a node rather than left-multiplied, then a true correspondence is obtained,\n at least for order 4.\n\nMeanwhile, $\\exp( \\bigstar_4 )$ is more difficult to identify, at least without rearranging its vertices.\nIt turns out to be isomorphic to the [Nauru graph](https://mathworld.wolfram.com/NauruGraph.html),\n a graph with many strange properties.\nNotably, whereas the graph isomorphic to the permutohedron is obviously a spherical polyhedron,\n the Nauru graph can be topologically embedded on a torus.\nThe Nauru graph also belongs to the family of\n [permutation star graphs](https://mathworld.wolfram.com/PermutationStarGraph.html)\n $PS_n$ (*n* = 4), which also includes the hexagonal graph (*n* = 3).\nThe MathWorld article confirms some kind of correspondence, stating graphs of this form\n are generated by pairwise swaps.\n\nMy attempts at finding a graph isomorphic to $\\exp( K_4 )$ have thus far ended in failure.\nIt is certainly *not* isomorphic to $K_{4,4}$, since this graph has 8 vertices,\n as opposed to 24 in $\\exp( K_4 )$.\n\n\nGraph Invariants\n----------------\n\nWhile I have managed to identify the families to which some of these graphs belong,\n I am rather fond of computing (and conjecturing) sequences from objects.\nNot only is it much easier to consult something like [the OEIS](https://oeis.org/) for these quantities,\n but after finding a matching sequence, there are ample articles to consult for more information.\nBy linking to their respective entries, I hope you'll consider reading more there.\n\nEven though I have obtained these values empirically, I am certain that the sequences for\n $\\exp( P_n )$ and $\\exp( \\bigstar_n )$ match the corresponding OEIS entries.\nI also have great confidence in the sequences I found for $\\exp( K_n )$.\n\n\n### Edge Counts\n\nDespite knowing how many vertices there are (*n*!, the order of the symmetric group),\n we don't necessarily know how many edges there are.\n\n::: {#a412d7a0 .cell .plain execution_count=3}\n\n::: {.cell-output .cell-output-display .cell-output-markdown execution_count=7}\n*n* $\\#E(\\exp( P_n ))$ $\\#E(\\exp( \\bigstar_n ))$ $\\#E(\\exp( K_n ))$\n-------- ------------------------------------------------------------------------- --------------------------- --------------------------------------\n3 6 6 9\n4 36 36 72\n5 240 240 600\n6 1800 1800 5400\n7 15120 15120 52920\nSequence Second column of Lah numbers <br> [OEIS A001286](http://oeis.org/A001286) Same as previous [OEIS 001809](http://oeis.org/A001809)\nRule $L(n,2) = n!{(n-1)(n-2) \\over 4}$ $n!{n(n-1) \\over 4}$\n:::\n:::\n\n\n### Radius and Distance Classes\n\nThe radius of a graph is the smallest possible distance which separates two maximally-separated vertices.\nDue to vertex transitivity, the greatest distance between two vertices is the same for every vertex.\n\n::: {#8a1cc334 .cell .plain execution_count=4}\n\n::: {.cell-output .cell-output-display .cell-output-markdown execution_count=8}\n*n* $r(\\exp( P_n ))$ $r(\\exp( \\bigstar_n ))$ $r(\\exp( K_n ))$\n-------- --------------------------------------------------------------- -------------------------------------------------------------------------------- ------------------\n3 4 4 3\n4 7 5 4\n5 11 7 5\n6 16 8 6\n7 22 10 7\nSequence Triangular numbers <br> [OEIS A000217](http://oeis.org/A000217) Integers not congruent to 2 (mod 3) <br> [OEIS A032766](http://oeis.org/A032766) *n* - 1\nRule $\\Delta_{n-1} = {n(n-1) \\over 2}$ $\\lfloor {n-1 \\over 2} \\rfloor + n -\\ 1$\n:::\n:::\n\n\nThese quantities are somewhat reductive.\nIf a vertex is distinguished, the remaining vertices may be partitioned into classes by their\n distance from it.\nIncluding the vertex itself (which is distance 0 away), there will be $r + 1$ such classes,\n where *r* is the radius.\nThese classes are the same for every vertex due to transitivity.\n\nIn the case of these graphs, they are a partition of *n*!.\n\n::: {#b3698cfa .cell .plain execution_count=5}\n\n::: {.cell-output .cell-output-display .cell-output-markdown execution_count=9}\n*n* $\\text{dists}(\\exp( P_n ))$ $\\text{dists}(\\exp( \\bigstar_n ))$ $\\text{dists}(\\exp( K_n ))$\n-------- -------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------\n3 [1, 2, 2, 1] [1, 2, 2, 1] [1, 3, 2]\n4 [1, 3, 5, 6, 5, 3, 1] [1, 3, 6, 9, 5] [1, 6, 11, 6]\n5 [1, 4, 9, 15, 20, 22, 20, 15, 9, 4, 1] [1, 4, 12, 30, 44, 26, 3] [1, 10, 35, 50, 24]\n6 [1, 5, 14, 29, 49, 71, 90, 101<br>101, 90, 71, 49, 29, 14, 5, 1] [1, 5, 20, 70, 170, 250, 169, 35] [1, 15, 85, 225, 274, 120]\n7 [1, 6, 20, 49, 98, 169, 259, 359, 455, 531, 573<br>573, 531, 455, 359, 259, 169, 98, 49, 20, 6, 1] [1, 6, 30, 135, 460, 1110, 1689, 1254, 340, 15] [1, 21, 175, 735, 1624, 1764, 720]\nSequence Mahonian numbers <br> [OEIS A008302](http://oeis.org/A008302) Whitney numbers of the second kind (star poset) <br> [OEIS A007799](http://oeis.org/A007799) Stirling numbers of the first kind <br> [OEIS A132393](http://oeis.org/A132393)\n:::\n:::\n\n\nI am certain that the appearance of the Stirling numbers here is legitimate,\n since these numbers count the number of permutations of *n* objects with *k* disjoint cycles.\nObviously, the identity element is distance 1 from all 2-cycles since they are all in the generating set;\n likewise, all 3-cycles are distance 2 from the identity (but distance 1 from the 2-cycles),\n and so on until the entire graph has been mapped.\nThe shapes induced by these classes were used to create the diagrams\n of $\\exp( K_3 )$ and $\\exp( K_4 )$ above.\n\n\n#### Spectrum\n\nThe eigenvalues of the adjacency matrix of a graph can be interesting\n and sometimes help in identifying a graph.\nUnfortunately, eigenvalues are not necessarily integers, and therefore not easily\n found in the OEIS (though they are always real for graphs).\n\n::: {#1ce3c98e .cell .plain execution_count=6}\n\n::: {.cell-output .cell-output-display .cell-output-markdown execution_count=10}\n *n* $\\text{Spec}(\\exp( P_n ))$ $\\text{Spec}(\\exp( \\bigstar_n )$ $\\text{Spec}(\\exp( K_n ))$\n----- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n 3 $$\\begin{gather*}(\\pm1)^{2\\phantom{0}} \\\\ (\\pm2)^{1\\phantom{0}}\\end{gather*}$$ $$\\begin{gather*}(\\pm1)^{2\\phantom{0}} \\\\ (\\pm2)^{1\\phantom{0}}\\end{gather*}$$ $$\\begin{gather*}(0)^{4\\phantom{0}} \\\\ (\\pm3)^{1\\phantom{0}}\\end{gather*}$$\n 4 $$\\begin{gather*}(\\pm1)^{3} (\\pm3)^{1} \\\\ \\left(x^{2} - 3\\right)^{2} \\\\ \\left(x^{2} + 2 x - 1\\right)^{3} \\\\ \\left(x^{2} - 2 x - 1\\right)^{3} \\\\ \\left(x^{2} + 2 x - 1\\right)^{3} \\\\ \\left(x^{2} - 2 x - 1\\right)^{3}\\end{gather*}$$ $$\\begin{gather*}(0)^{4\\phantom{0}} \\\\ (\\pm1)^{3\\phantom{0}} \\\\ (\\pm2)^{6\\phantom{0}} \\\\ (\\pm3)^{1\\phantom{0}}\\end{gather*}$$ $$\\begin{gather*}(0)^{4\\phantom{0}} \\\\ (\\pm2)^{9\\phantom{0}} \\\\ (\\pm6)^{1\\phantom{0}}\\end{gather*}$$\n 5 $$\\begin{gather*}(0)^{12} (\\pm1)^{6} (\\pm4)^{1} \\\\ \\left(x^{2} - 5\\right)^{6} \\\\ \\left(x^{2} - 5 x + 5\\right)^{4} \\\\ \\left(x^{2} + 5 x + 5\\right)^{4} \\\\ \\left(x^{2} - 3 x + 1\\right)^{4} \\\\ \\left(x^{2} + 3 x + 1\\right)^{4} \\\\ \\left(x^{2} + 2 x - 1\\right)^{5} \\\\ \\left(x^{2} - 2 x - 1\\right)^{5} \\\\ \\left(x^{3} + 2 x^{2} - 5 x - 4\\right)^{5} \\\\ \\left(x^{3} - 2 x^{2} - 5 x + 4\\right)^{5}\\end{gather*}$$ $$\\begin{gather*}(0)^{30\\phantom{00}} \\\\ (\\pm1)^{4\\phantom{00}} \\\\ (\\pm2)^{28\\phantom{00}} \\\\ (\\pm3)^{12\\phantom{00}} \\\\ (\\pm4)^{1\\phantom{00}}\\end{gather*}$$ $$\\begin{gather*}(0)^{36\\phantom{00}} \\\\ (\\pm2)^{25\\phantom{00}} \\\\ (\\pm5)^{16\\phantom{00}} \\\\ (\\pm10)^{1\\phantom{00}}\\end{gather*}$$\n 6 $$\\begin{gather*}(0)^{20} (\\pm1)^{25} (\\pm2)^{15}\\\\(\\pm3)^{5} (\\pm4)^{5} (\\pm5)^{1} \\\\ \\left(x^{2} - 3\\right)^{20}\\end{gather*}$$Not shown: 558 other roots $$\\begin{gather*}(0)^{168\\phantom{000}} \\\\ (\\pm1)^{30\\phantom{000}} \\\\ (\\pm2)^{120\\phantom{000}} \\\\ (\\pm3)^{105\\phantom{000}} \\\\ (\\pm4)^{20\\phantom{000}} \\\\ (\\pm5)^{1\\phantom{000}}\\end{gather*}$$ $$\\begin{gather*}(0)^{256\\phantom{000}} \\\\ (\\pm3)^{125\\phantom{000}} \\\\ (\\pm5)^{81\\phantom{000}} \\\\ (\\pm9)^{25\\phantom{000}} \\\\ (\\pm15)^{1\\phantom{000}}\\end{gather*}$$\n 7 $$\\begin{gather*}(0)^{35\\phantom{00}} \\\\ (\\pm1)^{20\\phantom{00}} \\\\ (\\pm2)^{45\\phantom{00}} \\\\ (\\pm6)^{1\\phantom{00}}\\end{gather*}$$Not shown: 4873 other roots $$\\begin{gather*}(0)^{840\\phantom{000}} \\\\ (\\pm1)^{468\\phantom{000}} \\\\ (\\pm2)^{495\\phantom{000}} \\\\ (\\pm3)^{830\\phantom{000}} \\\\ (\\pm4)^{276\\phantom{000}} \\\\ (\\pm5)^{30\\phantom{000}} \\\\ (\\pm6)^{1\\phantom{000}}\\end{gather*}$$ $$\\begin{gather*}(0)^{400\\phantom{0000}} \\\\ (\\pm1)^{441\\phantom{0000}} \\\\ (\\pm3)^{1225\\phantom{0000}} \\\\ (\\pm6)^{196\\phantom{0000}} \\\\ (\\pm7)^{225\\phantom{0000}} \\\\ (\\pm9)^{196\\phantom{0000}} \\\\ (\\pm14)^{36\\phantom{0000}} \\\\ (\\pm21)^{1\\phantom{0000}}\\end{gather*}$$\n 8 Not shown: all 40320 roots $$\\begin{gather*}(0)^{3960\\phantom{0000}} \\\\ (\\pm1)^{5691\\phantom{0000}} \\\\ (\\pm2)^{2198\\phantom{0000}} \\\\ (\\pm3)^{6321\\phantom{0000}} \\\\ (\\pm4)^{3332\\phantom{0000}} \\\\ (\\pm5)^{595\\phantom{0000}} \\\\ (\\pm6)^{42\\phantom{0000}} \\\\ (\\pm7)^{1\\phantom{0000}}\\end{gather*}$$ $$\\begin{gather*}(0)^{9864\\phantom{0000}} \\\\ (\\pm2)^{3136\\phantom{0000}} \\\\ (\\pm4)^{6125\\phantom{0000}} \\\\ (\\pm7)^{4096\\phantom{0000}} \\\\ (\\pm8)^{196\\phantom{0000}} \\\\ (\\pm10)^{784\\phantom{0000}} \\\\ (\\pm12)^{441\\phantom{0000}} \\\\ (\\pm20)^{49\\phantom{0000}} \\\\ (\\pm28)^{1\\phantom{0000}}\\end{gather*}$$\n:::\n:::\n\n\nFrom what I have been able to identify, the spectrum of an exponential graph is symmetric about 0,\n by which I mean that the characteristic polynomial is even.\nThis has been the case for all graphs I have tried testing, even outside these graph families.\n\nSince all eigenvalues of $\\exp( \\bigstar_n )$ calculated are integers,\n it appears they are integral graphs, a fact of which I am reasonably sure\n because of the aforementioned correspondence to permutation star graphs.\nAdditionally, the eigenvalues are very conveniently the integers up to $n-1$ and down to $-n+1$.\nUnfortunately, despite the ease of reading the eigenvalues themselves,\n there isn't an OEIS entry for the multiplicities.\nI was able to identify the multiplicity of the 0 eigenvalue with\n [OEIS A217213](http://oeis.org/A217213), which counts orderings on Dyck paths.\nIf this is truly the sequence being generated, it means there is a 1:1 correspondence between\n these orderings and a basis of the nullspace of the adjacency matrix.\n\nIt seems to be the case that $\\exp( K_n )$ are also integral graphs.\nPerplexingly, the multiplicities for each of the eigenvalues appear to mostly be perfect powers.\nThis is the case until n = 8, which ruins the pattern because neither of\n $9864 = 2^3 \\cdot 3^2 \\cdot 137$ or $6125 = 5^3 \\cdot 7^2$ are perfect powers.\nI find both this[^7] and the fact that such a large prime appears among the factorization of the former\n rather creepy since all other primes which appear here are small -- 2, 3, 5, and 7.\n\n[^7]: Some physicists are fond of 137 for its closeness to the reciprocal\n of the fine structure constant (a bit of mostly-harmless numerology).\n\n\n### Notes about Spectral Computation\n\nFor *n* = 3 through 6, exactly computing the spectrum\n (or more accurately, the characteristic polynomial)\n is possible, although it takes upwards of 10 minutes for *n* = 6 on my machine using `sympy`.\nThe spectra of *n* = 7, 8 are marked with an asterisk because they were computed numerically,\n which still took nearly 8 hours in the case of the latter.\nIn fact, these graphs grow so quickly that it becomes nearly impossible to compute\n the spectrum without an explicit formula.\n\nFor *n* = 8, even storing the adjacency matrix in memory is a problem.\nAssuming the use of single-precision floating point, this behemoth of a matrix is\n $(8!)^2 \\cdot 4 \\text{ bytes} = 6.5\\text{GB}$.\nThis doesn't even factor in additional space requirements for eigenvalue algorithms,\n and is the reason I certainly won't be attempting to compute the spectrum for *n* = 9.\n\n\nGallery of Adjacency Matrices\n-----------------------------\n\nThe patterns in adjacency matrices depend on an enumeration of $S_n$ so that the vertices\n can be labelled from 1 to *n*!.\nWhile this is a fascinating topic unto itself, this post is already long enough,\n and I feel comfortable with just sharing the pictures.\n\n\n### [Plain Changes](https://en.wikipedia.org/wiki/Steinhaus%E2%80%93Johnson%E2%80%93Trotter_algorithm)\n\n::: {layout-ncol=\"3\"}\n\n\n\n\n\n\n\n\n\n\n\n:::\n\n\n### [Heap's Algorithm](https://en.wikipedia.org/wiki/Heap%27s_algorithm)\n\n:::: {}\n::: {layout-ncol=\"3\"}\n\n\n\n\n\n\n\n\n\n\n\n:::\n\nNote: GHC's `Data.List.permutations` is slightly different from Heap's algorithm as displayed on Wikipedia\n::::\n\n\nClosing\n-------\n\nAs previously stated, I am only mostly sure of the validity of the exponential law for graphs.\nIt *seems* too good to be true, but testing it directly on some graphs by comparing the spectra\n of the exponential of the sum against the product of the exponentials shows that they are at least cospectral.\nTry it yourself, preferably with a better tool than [the ones I made in Haskell](https://github.com/queue-miscreant/SymmetricGraph).\n\nFrom the articles I was able to find, permutation star graphs have applications to parallel computing,\n which is somewhat ironic considering how little care I had for the topic when writing this article.\nIf I needed ruthless efficiency, I probably could have used a library with GPU algorithms\n (or taken a stab at writing a shader myself).\nHowever, I *was* able to use this as a learning experience regarding mutable objects in Haskell.\nWith only immutable objects (and enough garbage to create an island in the Pacific),\n I was running out of memory even with 16GB of RAM and 16GB of swap.\nIntroducing mutability not only brought improvements in space, but also a great deal of speedup,\n enough to make rendering adjacency matrix images of order 8 graphs just barely doable within\n a reasonable time span.\n\nSaid images are cursed.\nRemember, as raw bitmaps, these files are on the order of *gigabytes* big.\nOn a much weaker computer than I used to render the images, merely opening my file explorer\n to the folder containing *the folder containing* the images\n caused its all-too-eager thumbnailer to run.\nThis started consuming all of my system resources, crashed all of my browser's tabs,\n distorted audio, and finally locked up the computer.\nDespite this, PNG is a wonderful format that is able to compress them down to just 4MB,\n which demonstrates just how sparse these matrices are.\n\nDespite everything I was able to find about permutation star graphs and permutohedra,\n I was surprised that there is no information about the Cayley graphs generated by *all*\n 2-cycles (or at least information which is easy to find).\nThis is especially disappointing considering the phantom pattern which gets destroyed by 137,\n and I would love to know more about why this happens in the first place.\n\nGraph diagrams made with GeoGebra and NetworkX (GraphViz).\n\n\n### Additional Links\n\n- [Whitney Numbers of the Second Kind for the Star Poset (\n Paper from ScienceDirect\n )](https://www.sciencedirect.com/science/article/pii/S0195669813801278)\n - This article includes a section about representing a list of generators as a graph,\n making me wonder if someone has tried defining this operation before\n- [Whitney Numbers (Josh Cooper's Mathpages)](https://people.math.sc.edu/cooper/graph.html)\n- [\n The Many Faces of the Nauru Graph (Blogpost by David Eppstein)\n ](https://11011110.github.io/blog/2007/12/12/many-faces-of.html)\n\n",
|
||
"supporting": [
|
||
"index_files"
|
||
],
|
||
"filters": [],
|
||
"includes": {}
|
||
}
|
||
} |