secondary revisions to permutations

This commit is contained in:
queue-miscreant 2025-07-19 19:53:55 -05:00
parent 9b8f133133
commit d833f66ebb
4 changed files with 225 additions and 187 deletions

View File

@ -14,6 +14,11 @@ categories:
- sorting algorithms - sorting algorithms
--- ---
<style>
.narrow {
max-width: 512px;
}
</style>
In the time since [my last post](../chebyshev/2) discussing graphs, In the time since [my last post](../chebyshev/2) discussing graphs,
I have been spurred on to continue playing with them, with a slight focus on abstract algebra. I have been spurred on to continue playing with them, with a slight focus on abstract algebra.
@ -53,7 +58,7 @@ There is a group element for each permutation, so the order of the group is the
On the other hand, the lists differ in the first element and cannot be equal. On the other hand, the lists differ in the first element and cannot be equal.
Sets are still useful as a container. Sets are still useful as a container.
For example, the elements of a group unordered. For example, the elements of a group are unordered.
To keep vocabulary simple, I will do my best to refer to objects in a group as To keep vocabulary simple, I will do my best to refer to objects in a group as
"group elements" and the objects in a list as "items". "group elements" and the objects in a list as "items".
</details> </details>
@ -74,7 +79,7 @@ Take the element of $S_3$ which can be described as the action
Our canonical list in this case is $[1, 2, 3]$, matching the degree of the group. Our canonical list in this case is $[1, 2, 3]$, matching the degree of the group.
This results in $[3, 1, 2]$, since "1" is in now in position two, and similarly for the other items. This results in $[3, 1, 2]$, since "1" is in now in position two, and similarly for the other items.
Unfortunately, this choice is too results-oriented. Unfortunately, this choice is too result-oriented.
This choice makes it difficult to compose group elements in a meaningful way, since all This choice makes it difficult to compose group elements in a meaningful way, since all
of the information about the permutation is in the position of items in the list, of the information about the permutation is in the position of items in the list,
rather than the items of the list themselves. rather than the items of the list themselves.
@ -84,20 +89,19 @@ For example, under the same rule, $[c, b, a]$ is mapped to $[a, c, b]$.
### True List Notations (Two- and One-line Notation) ### True List Notations (Two- and One-line Notation)
Instead, let's go back to the definition of the element. Instead, let's go back to the definition of the element.
We have pairs of indices before and after the permutation is applied.
All we have to do is list out every index on one line, then the destination All we have to do is list out every index on one line, then the destination
of every index on the next. of every index on the next.
This is known as *two-line notation*. This is known as *two-line notation*.
$$ $$
\begin{bmatrix} \begin{pmatrix}
1 & 2 & 3 \\ 1 & 2 & 3 \\
p(1) & p(2) & p(3) p(1) & p(2) & p(3)
\end{bmatrix} \end{pmatrix}
= \begin{bmatrix} = \begin{pmatrix}
1 & 2 & 3 \\ 1 & 2 & 3 \\
2 & 3 & 1 2 & 3 & 1
\end{bmatrix} \end{pmatrix}
$$ $$
For simplicity, the first row is kept as a list whose items match their indices. For simplicity, the first row is kept as a list whose items match their indices.
@ -107,18 +111,18 @@ All we have to do is sort the columns of the permutation by the second row,
then swap the two rows. then swap the two rows.
$$ $$
\begin{bmatrix} \begin{pmatrix}
1 & 2 & 3 \\ 1 & 2 & 3 \\
2 & 3 & 1 2 & 3 & 1
\end{bmatrix}^{-1} \end{pmatrix}^{-1}
= \begin{bmatrix} = \begin{pmatrix}
3 & 1 & 2 \\ 3 & 1 & 2 \\
1 & 2 & 3 1 & 2 & 3
\end{bmatrix}^{-1} \end{pmatrix}^{-1}
= \begin{bmatrix} = \begin{pmatrix}
1 & 2 & 3 \\ 1 & 2 & 3 \\
3 & 1 & 2 3 & 1 & 2
\end{bmatrix} = \end{pmatrix}
$$ $$
Note that the second row is now the same as the result from the naive notation. Note that the second row is now the same as the result from the naive notation.
@ -129,14 +133,14 @@ The *n*th item in the list now describes the position in which *n* can be found
the permutation. the permutation.
$$ $$
\begin{bmatrix} \begin{pmatrix}
1 & 2 & 3 \\ 1 & 2 & 3 \\
2 & 3 & 1 2 & 3 & 1
\end{bmatrix} \end{pmatrix}
\equiv [\![2, 3, 1]\!] \equiv [\![2, 3, 1]\!]
$$ $$
Double brackets are used to distinguish this as a pertation from ordinary lists. Double brackets are used to distinguish this as a permutation and not an ordinary list.
These notations make it straightforward to encode symmetric group elements on a computer. These notations make it straightforward to encode symmetric group elements on a computer.
After all, we only have to read the items of a list by the indices in another. After all, we only have to read the items of a list by the indices in another.
@ -147,7 +151,7 @@ Here's a compact definition in Haskell:
newtype Permutation = P { unP :: [Int] } newtype Permutation = P { unP :: [Int] }
apply :: Permutation -> [a] -> [a] apply :: Permutation -> [a] -> [a]
apply = flip $ (\xs -> apply = flip (\xs ->
map ( -- for each item of the permutation, map it to... map ( -- for each item of the permutation, map it to...
(xs !!) -- the nth item of the first list (xs !!) -- the nth item of the first list
. (+(-1)) -- (indexed starting with 1) . (+(-1)) -- (indexed starting with 1)
@ -155,7 +159,7 @@ apply = flip $ (\xs ->
-- written in a non-point free form -- written in a non-point free form
apply' (P xs) ys = map ( \n -> ys !! (n-1) ) xs apply' (P xs) ys = map ( \n -> ys !! (n-1) ) xs
print $ (P [2,3,1]) `apply` [1,2,3] print $ P [2,3,1] `apply` [1,2,3]
``` ```
Note that this means `P [2,3,1]` is actually equivalent to $[\![2, 3, 1]\!]^{-1}$, Note that this means `P [2,3,1]` is actually equivalent to $[\![2, 3, 1]\!]^{-1}$,
@ -175,29 +179,29 @@ The verbosity of these notations also makes composing group elements difficult[^
by looking at the first and last rows. by looking at the first and last rows.
For example, with group inverses: For example, with group inverses:
$$ $$
\begin{bmatrix} \begin{pmatrix}
1 & 2 & 3 \\ 1 & 2 & 3 \\
2 & 3 & 1 2 & 3 & 1
\end{bmatrix} \end{pmatrix}
\begin{bmatrix} \begin{pmatrix}
1 & 2 & 3 \\ 1 & 2 & 3 \\
2 & 3 & 1 2 & 3 & 1
\end{bmatrix}^{-1} \end{pmatrix}^{-1}
= \begin{matrix} = \begin{matrix}
\begin{bmatrix} \begin{pmatrix}
1 & 2 & 3 \\ 1 & 2 & 3 \\
2 & 3 & 1 \cancel{2} & \cancel{3} & \cancel{1}
\end{bmatrix} \end{pmatrix}
\\ \\
\begin{bmatrix} \begin{pmatrix}
2 & 3 & 1 \\ \cancel{2} & \cancel{3} & \cancel{1} \\
1 & 2 & 3 1 & 2 & 3
\end{bmatrix} \end{pmatrix}
\end{matrix} \end{matrix}
= \begin{bmatrix} = \begin{pmatrix}
1 & 2 & 3 \\ 1 & 2 & 3 \\
1 & 2 & 3 1 & 2 & 3
\end{bmatrix} \end{pmatrix}
$$ $$
@ -205,17 +209,24 @@ The verbosity of these notations also makes composing group elements difficult[^
*Cycle notation* addresses all of these issues, but gets rid of the transparency with respect to lists. *Cycle notation* addresses all of these issues, but gets rid of the transparency with respect to lists.
Let's try phrasing the element we've been describing differently. Let's try phrasing the element we've been describing differently.
> assign the first item to the second index, the second to the third, and the third to the first
We start at index 1 and follow it to index 2, and from there follow it to index 3. We start at index 1 and follow it to index 2, and from there follow it to index 3.
Continuing from index 3, we return to 1, and continuing in this manner would go on forever. Continuing from index 3, we return to index 1, and from then we'd loop forever.
This describes a *cycle*, denoted as $(1 ~ 2 ~ 3)$. This describes a *cycle*, denoted as $(1 ~ 2 ~ 3)$.
Cycle notation is much more delicate than list notation, since the notation is nonunique: Cycle notation is much more delicate than list notation, since the notation is nonunique:
- Naturally, the elements of a cycle may be cycled to produce an equivalent ones. - Naturally, the elements of a cycle may be cycled to produce an equivalent one.
- $(1 ~ 2 ~ 3) = (3 ~ 1 ~ 2) = (2 ~ 3 ~ 1)$ - $(1 ~ 2 ~ 3) = (3 ~ 1 ~ 2) = (2 ~ 3 ~ 1)$
- Cycles which have no common elements (i.e., are disjoint) commute, since they act on separate parts of the list. - Cycles which have no common elements (i.e., are disjoint) commute,
since they act on separate parts of the list.
- $(1 ~ 2 ~ 3)(4 ~ 5) = (4 ~ 5)(1 ~ 2 ~ 3)$ - $(1 ~ 2 ~ 3)(4 ~ 5) = (4 ~ 5)(1 ~ 2 ~ 3)$
#### Cycle Algebra
The true benefit of cycles is that they are easy to manipulate algebraically. The true benefit of cycles is that they are easy to manipulate algebraically.
For some reason, [Wikipedia](https://en.wikipedia.org/wiki/Permutation#Cycle_notation) For some reason, [Wikipedia](https://en.wikipedia.org/wiki/Permutation#Cycle_notation)
does not elaborate on the composition rules for cycles, does not elaborate on the composition rules for cycles,
@ -226,7 +237,7 @@ While playing around with them and deriving these rules oneself *is* a good idea
- Cycles can be inverted by reversing their order. - Cycles can be inverted by reversing their order.
- $(1 ~ 2 ~ 3)^{-1} = (3 ~ 2 ~ 1) = (1 ~ 3 ~ 2)$ - $(1 ~ 2 ~ 3)^{-1} = (3 ~ 2 ~ 1) = (1 ~ 3 ~ 2)$
- Cycles may be composed if the last element in the first is the first index on the right. - Cycles may be composed if the last element in the first is the first index on the right.
Inversely, cycles may also be decomposed by partitioning it on an index and duplicating. Inversely, cycles may also be decomposed by partitioning on an index and duplicating.
- $(1 ~ 2 ~ 3) = (1 ~ 2)(2 ~ 3)$ - $(1 ~ 2 ~ 3) = (1 ~ 2)(2 ~ 3)$
- If an index in a cycle is repeated twice, it may be omitted from the cycle. - If an index in a cycle is repeated twice, it may be omitted from the cycle.
- $(1 ~ 2 ~ 3)(1 ~ 3) = (1 ~ 2 ~ 3)(3 ~ 1) = (1 ~ 2 ~ 3 ~ 1) = (1 ~ 1 ~ 2 ~ 3) = (2 ~ 3)$ - $(1 ~ 2 ~ 3)(1 ~ 3) = (1 ~ 2 ~ 3)(3 ~ 1) = (1 ~ 2 ~ 3 ~ 1) = (1 ~ 1 ~ 2 ~ 3) = (2 ~ 3)$
@ -234,9 +245,9 @@ While playing around with them and deriving these rules oneself *is* a good idea
Going back to $(1 ~ 2 ~ 3)$, if we apply this permutation to the list $[1, 2, 3]$: Going back to $(1 ~ 2 ~ 3)$, if we apply this permutation to the list $[1, 2, 3]$:
$$ $$
(1 ~ 2 ~ 3) \left( \vphantom{0 \over 1} [1, 2, 3] \right) (1 ~ 2 ~ 3) \left( \vphantom{0^{0^0}} [1, 2, 3] \right)
= (1 ~ 2)(2 ~ 3) \left( \vphantom{0 \over 1} [1, 2, 3] \right) = (1 ~ 2)(2 ~ 3) \left( \vphantom{0^{0^0}} [1, 2, 3] \right)
= (1 ~ 2) \left( \vphantom{0 \over 1} [1, 3, 2] \right) = (1 ~ 2) \left( \vphantom{0^{0^0}} [1, 3, 2] \right)
= [3, 1, 2] = [3, 1, 2]
$$ $$
@ -250,7 +261,7 @@ If we have a group *G*, then we can select a set of elements
$\langle g_1, g_2, g_3, ... \rangle$ as *generators*. $\langle g_1, g_2, g_3, ... \rangle$ as *generators*.
If we form all possible products -- not only the pairwise ones $g_1 g_2$, If we form all possible products -- not only the pairwise ones $g_1 g_2$,
but also $g_1 g_2 g_3$ and all powers of any $g_n$ -- then the products form a subgroup of *G*. but also $g_1 g_2 g_3$ and all powers of any $g_n$ -- then the products form a subgroup of *G*.
Naturally, the set is called a *generating set*. Naturally, such a set is called a *generating set*.
Symmetric groups are of primary interest because of their subgroups, also known as permutation groups. Symmetric groups are of primary interest because of their subgroups, also known as permutation groups.
[Cayley's theorem](https://en.wikipedia.org/wiki/Cayley%27s_theorem), [Cayley's theorem](https://en.wikipedia.org/wiki/Cayley%27s_theorem),
@ -295,12 +306,12 @@ In this algorithm, we swap two items when the latter is less than the former,
looping over the list until it is sorted. looping over the list until it is sorted.
Until the list is sorted, the algorithm finds all such adjacent inversions. Until the list is sorted, the algorithm finds all such adjacent inversions.
In the worst case, it will swap every pair of adjacent items, some possibly multiple times. In the worst case, it will swap every pair of adjacent items, some possibly multiple times.
This corresponding to the generating set This corresponds to the generating set
$\langle (1 ~ 2), (2 ~ 3), (3 ~ 4), (4 ~ 5), …, (n-1 ~\ ~ n) \rangle$. $\langle (1 ~ 2), (2 ~ 3), (3 ~ 4), (4 ~ 5), …, (n-1 ~\ ~ n) \rangle$.
![ ![
Bubble sort ordering a reverse-sorted list Bubble sort ordering a reverse-sorted list
](./bubble_sort.gif) ](./bubble_sort.gif){.narrow}
### Selection Sort ### Selection Sort
@ -315,7 +326,7 @@ Continuing until the last item, this gives the generating set
![ ![
Selection sort ordering a particular list, using only swaps with the final item Selection sort ordering a particular list, using only swaps with the final item
](./selection_sort.gif) ](./selection_sort.gif){.narrow}
This behavior for selection sort is uncommon, and this animation omits the selection of a swap candidate. This behavior for selection sort is uncommon, and this animation omits the selection of a swap candidate.
The animation below shows a more destructive selection sort, in which the The animation below shows a more destructive selection sort, in which the
@ -326,7 +337,7 @@ Once the algorithm hits the end of the list, the candidate is swapped to the lea
![ ![
"Destructive" selection sort. "Destructive" selection sort.
The actual list being sorted consists of the initial four items, with the final item as temporary storage. The actual list being sorted consists of the initial four items, with the final item as temporary storage.
](./destructive_selection_sort.gif) ](./destructive_selection_sort.gif){.narrow}
Swap Diagrams Swap Diagrams
@ -391,7 +402,7 @@ In other words, if we have have two adjacent edges, the new edge corresponds to
a product of elements from the generating set. a product of elements from the generating set.
Graph theory has a name for this operation: when we produce *all* new edges by linking vertices Graph theory has a name for this operation: when we produce *all* new edges by linking vertices
that were separated by a distance of 2, the result is called the *square of that graph*. that were separated by a distance of 2, the result is called the *square of that graph*.
In fact, [higher graph](https://en.wikipedia.org/wiki/Graph_power) powers will reflect connections In fact, higher [graph powers](https://en.wikipedia.org/wiki/Graph_power) will reflect connections
induced by more conjugations of adjacent edges. induced by more conjugations of adjacent edges.
![ ![
@ -400,8 +411,8 @@ In fact, [higher graph](https://en.wikipedia.org/wiki/Graph_power) powers will r
](./P4_powers.png) ](./P4_powers.png)
If our graph is connected, then repeating this operation will tend toward a complete graph. If our graph is connected, then repeating this operation will tend toward a complete graph.
Complete graphs contain every possible edge, and correspond to all possible 2-cycles, Complete graphs contain every possible edge, and so correspond to all possible 2-cycles,
which in turn generate the symmetric group. which trivially generate the symmetric group.
Conversely, if a graph has *n* vertices, then for it to be connected, it must have at least $n - 1$ edges. Conversely, if a graph has *n* vertices, then for it to be connected, it must have at least $n - 1$ edges.
Thus, a generating set of 2-cycles must have at least $n - 1$ items to generate the symmetric group. Thus, a generating set of 2-cycles must have at least $n - 1$ items to generate the symmetric group.
@ -423,11 +434,12 @@ Under graph powers, we know that each connected graph tends toward a complete gr
But what groups do cluster graphs correspond to? But what groups do cluster graphs correspond to?
The simplest case to consider is what happens when the graph is $P_2 \oplus P_2$. The simplest case to consider is what happens when the graph is $P_2 \oplus P_2$.
One of the generating sets it corresponds to is $\langle (1 ~ 2), (3 ~ 4) \rangle$, a pair of disjoint cycles. If there is an edge connecting vertices 1 and 2 and an edge connecting vertices 3 and 4,
The group they generate is it corresponds to the generating set $\langle (1 ~ 2), (3 ~ 4) \rangle$.
This is a pair of disjoint cycles, and the group they generate is
$$ $$
\{id, (1 ~ 2), (3 ~ 4), (1 ~ 2)(3 ~ 4) \} \{e, (1 ~ 2), (3 ~ 4), (1 ~ 2)(3 ~ 4) \}
\cong S_2 \times S_2 \cong S_2 \times S_2
\cong C_2 \times C_2 \cong C_2 \times C_2
$$ $$
@ -438,16 +450,17 @@ One way to look at this is by considering paths on each component:
or both at the same time. or both at the same time.
This independence means that one group's structure is duplicated over the other's, This independence means that one group's structure is duplicated over the other's,
or more succinctly, gives the direct product. or more succinctly, gives the direct product.
In general, if we denote γ as the map which "runs" the swap diagram and produces the group, then In general, if we denote *γ* as the map which "runs" the swap diagram and produces the group, then
$$ $$
\gamma( A \oplus B ) = S_{|A|} \times S_{|B|}, ~ A, B \text{ connected} \gamma( A \oplus B ) = S_{|A|} \times S_{|B|},
~ A, B \text{ connected}
$$ $$
where $|A|$ is the number of vertices in *A*. where $|A|$ is the number of vertices in *A*.
γ has the interesting property of mapping a sum-like object onto a product-like object. *γ* has the interesting property of mapping a sum-like object onto a product-like object.
If we express a disconnected graph *U* as the disjoint union of its connected components $V_i$ If we express a disconnected graph *U* as the disjoint union of its connected components $V_i$, then
$$ $$
\begin{gather*} \begin{gather*}
@ -457,7 +470,7 @@ $$
\end{gather*} \end{gather*}
$$ $$
Which takes care of every simple graph. This describes *γ* for every simple graph.
It also shows that we're rather limited in the kinds of groups which can be expressed by a swap diagram. It also shows that we're rather limited in the kinds of groups which can be expressed by a swap diagram.

View File

@ -1,7 +1,7 @@
--- ---
title: "A Game of Permutations, Part 2" title: "A Game of Permutations, Part 2"
description: | description: |
Notes on permutohedra and some very large graphs. Notes on an operation which makes some very large graphs.
format: format:
html: html:
html-math-method: katex html-math-method: katex
@ -13,6 +13,12 @@ categories:
- group theory - group theory
--- ---
<style>
.narrow {
max-width: 640px;
}
</style>
```{python} ```{python}
#| echo: false #| echo: false
@ -45,13 +51,6 @@ The resulting figure is known as a [Cayley graph](https://mathworld.wolfram.com/
It is also common to describe an unlabelled graph as "Cayley" if it could It is also common to describe an unlabelled graph as "Cayley" if it could
be generated by this procedure. be generated by this procedure.
Owing to the way in which they are defined, Cayley graphs have a few useful properties as graphs.
At every vertex, we have as many outward edges as we do generators in the generating set,
so the outward (and in fact, inward) degree of each vertex is the same.
In other words, it is a regular graph.
More than that, it is [vertex-transitive](https://mathworld.wolfram.com/Vertex-TransitiveGraph.html),
since labelling a single vertex's outward edges will label that of the entire graph.
Cayley graphs depend on the generating set used, so they can take a wide variety of shapes. Cayley graphs depend on the generating set used, so they can take a wide variety of shapes.
Here are a few examples of Cayley graphs made from elements of $S_4$: Here are a few examples of Cayley graphs made from elements of $S_4$:
@ -62,6 +61,13 @@ Here are a few examples of Cayley graphs made from elements of $S_4$:
Generating sets obtained from the previous MathWorld article. Generating sets obtained from the previous MathWorld article.
](./s4_cayley_graphs.png) ](./s4_cayley_graphs.png)
Owing to the way in which they are defined, Cayley graphs have a few useful properties as graphs.
At every vertex, we have as many outward edges as we do generators in the generating set,
so the outward (and in fact, inward) degree of each vertex is the same.
In other words, it is a regular graph.
More than that, it is [vertex-transitive](https://mathworld.wolfram.com/Vertex-TransitiveGraph.html),
since labelling a single vertex's outward edges will label that of the entire graph.
In general, the Cayley graph is a directed graph. In general, the Cayley graph is a directed graph.
However, if for every member of the generating set, we also include its inverse, However, if for every member of the generating set, we also include its inverse,
every directed edge will be matched by an edge in the opposite direction, every directed edge will be matched by an edge in the opposite direction,
@ -74,30 +80,32 @@ Graphs to Graphs
All 2-cycles are their own inverse, so generating sets which include only them All 2-cycles are their own inverse, so generating sets which include only them
produce undirected Cayley graphs. produce undirected Cayley graphs.
Since this kind of generating set can itself be thought of as a graph, Since this kind of generating set can itself be thought of as a graph,
we may consider an operation from graphs to graphs that maps a swap diagram to its Cayley graph. we may consider an operation on graphs that maps a swap diagram to its Cayley graph.
![ ![
An example of this operation, denoted as $\exp$. An example of this operation, denoted as $\exp$.
While the proper Cayley graphs for $(1 ~ 2)$ and $(3 ~ 4)$ are not shown (they are also 2-paths), The proper Cayley graphs for $(1 ~ 2)$ and $(3 ~ 4)$ are not shown;
their product, the 4-cycle graph, is in the center. they are isomorphic to the corresponding swap graphs, but have different vertex labels.
](./exp_p2_oplus_p2.png) ](./exp_p2_oplus_p2.png)
I've taken to calling this operation the "graph exponential"[^1] because of its apparent relationship It seems to be the case that $\exp( A \oplus B ) = \exp( A ) \times \exp( B )$,
with the disjoint union. where $\oplus$ signifies the disjoint uinion and $\times$ signifies the
Namely, it seems to be the case that $\exp( A \oplus B ) = \exp( A ) \times \exp( B )$,
where $\times$ signifies the
[Cartesian (box) product of graphs](https://en.wikipedia.org/wiki/Cartesian_product_of_graphs)[^2]. [Cartesian (box) product of graphs](https://en.wikipedia.org/wiki/Cartesian_product_of_graphs)[^2].
Unlike *γ* from the previous post, both the input and output of this operation are graphs.
[^1]: Originally, I called this operation the "graph factorial", since it involves permutations Because of this and the sum/product relationship, I've taken to calling this operation the
and the number of vertices in the resulting graph grows factorially. "graph exponential"[^3].
[^2]: Graphs have many product structures, such as the tensor product and strong product. [^2]: Graphs have many product structures, such as the tensor product and strong product.
The Cartesian product is (categorically) more natural when paired with disjoint unions. The Cartesian product is (categorically) more natural when paired with disjoint unions.
[^3]: Originally, I called this operation the "graph factorial", since it involves permutations
and the number of vertices in the resulting graph grows factorially.
This operation is my own invention, so I am unsure whether or not This operation is my own invention, so I am unsure whether or not
it constitutes anything useful. it constitutes anything useful.
In fact, the possible graphs grow so rapidly that computing anything about the exponential In fact, the possible graphs grow so rapidly that computing anything about the exponential
of order 8 graphs starts to overwhelm a single computer. of order 8 graphs starts to overwhelm a single computer.
It is, however, interesting, as I will hopefully be able to convince.
A random graph will not generally correspond to an interesting generating set, A random graph will not generally correspond to an interesting generating set,
and therefore, will also generally have an uninteresting exponential graph. and therefore, will also generally have an uninteresting exponential graph.
@ -109,71 +117,79 @@ They are among the simplest graphs one can consider, and as we will see shortly,
Some Small Exponential Graphs Some Small Exponential Graphs
----------------------------- -----------------------------
Because of [the difficulty in determining graph isomorphism](https://en.wikipedia.org/wiki/Graph_isomorphism_problem), Because of [the difficulty in determining graph isomorphism](
it is challenging for a computer to find a graph in an encyclopedia. https://en.wikipedia.org/wiki/Graph_isomorphism_problem
), it is challenging for a computer to find a graph in an encyclopedia.
Computers think of graphs as a list of vertices and their outward edges, Computers think of graphs as a list of vertices and their outward edges,
but this implementation faces inherent labelling issues. but this implementation faces inherent labelling issues.
These persist even if the graph is described as a list of (un)ordered pairs, These persist even if the graph is described as a list of (un)ordered pairs,
an adjacency matrix, or an incidence matrix, an adjacency matrix, or an incidence matrix,
the latter two of which have very large memory footprints. the latter two of which have very large memory footprints[^4].
I was able to locate a project named the
[^4]: I was able to locate a project named the
[Encyclopedia of Finite Graphs](https://github.com/thoppe/Encyclopedia-of-Finite-Graphs), [Encyclopedia of Finite Graphs](https://github.com/thoppe/Encyclopedia-of-Finite-Graphs),
but it is only able to build a database simple connected graphs which but it is only able to build a database simple connected graphs which
can be queried by invariants (and is outdated since it uses Python 2). can be queried by invariants (and is outdated since it uses Python 2).
However, as visual objects, humans can compare graphs fairly easily However, as visual objects, humans can compare graphs fairly easily
-- the name means "drawing" after all. -- the name means "drawing" after all.
Exponentials of 3- and 4-graphs are neither so small as to be uninteresting Exponentials of order 3 and order 4 graphs are neither so small as to be uninteresting
nor so big as to be unparsable by humans. nor so big as to be unparsable by humans.
### Order 3 ### Order 3
![&nbsp;](./exp_order_3.png) ![&nbsp;](./exp_order_3.png){.narrow}
At this stage, we only really have two graphs to consider, since $P_3 = \bigstar_3$. At this stage, we only really have two graphs to consider, since $P_3 = \bigstar_3$.
Immediately, one can see that $\exp( P_3 ) = \exp( \bigstar_3 ) = C_6$, Immediately, one can see that $\exp( P_3 ) = \exp( \bigstar_3 ) = C_6$,
the 6-cycle graph (or hexagonal graph). the 6-cycle graph (or hexagonal graph).
It is also apparent that $\exp( K_3 )$ is the utility graph, $K_{3,3}$. It is also apparent that $\exp( K_3 )$ is the utility graph, $K_{3,3}$.
![&nbsp;](./exp_p3_oplus_p2.png) ![
Graph exponential of a disconnected graph. <br>
Note that the red element commutes with the green and blue ones.
This produces two types of squares in the exponential graph.
Meanwhile, the green and blue elements have an order 3 product, and produce the hexagon.
](./exp_p3_oplus_p2.png)
We can again demonstrate the sum rule of the graph exponential with $\exp( P_3 \oplus P_2 )$. Here, we can again demonstrate the sum rule of the graph exponential with $\exp( P_3 \oplus P_2 )$.
Simplifying, since we know $\exp( P_3 ) = C_6$, the result is $C_6 \times P_2 = \text{Prism}_6$, Simplifying, since we know $\exp( P_3 ) = C_6$, the result is $C_6 \times P_2 = \text{Prism}_6$,
the hexagonal prism graph. the hexagonal prism graph.
### Order 4 (and beyond) ### Order 4 (and beyond)
::: {layout-ncol="2"} ::: {layout="[[1,1],[1]]"}
![$\exp( P_4 )$](./exp_p4_networkx.png) ![$\exp( P_4 )$](./exp_p4_networkx.png)
![$\exp( \bigstar_4 )$](./exp_star4_networkx.png) ![$\exp( \bigstar_4 )$](./exp_star4_networkx.png)
:::
![&nbsp;](./exp_order_4.png) ![](./exp_order_4.png)
:::
With some effort, $\exp( P_4 )$ can be imagined as a projection of a 3D object, With some effort, $\exp( P_4 )$ can be imagined as a projection of a 3D object,
the [truncated octahedron](https://en.wikipedia.org/wiki/Truncated_octahedron). the [truncated octahedron](https://en.wikipedia.org/wiki/Truncated_octahedron).
Because of its correspondence to a 3D solid, this graph is planar. Because of its correspondence to a 3D solid, this graph is planar.
Both the hexagon and this solid belong to a class of polytopes called Both the hexagon and this solid belong to a class of polytopes called
[*permutohedra*](https://en.wikipedia.org/wiki/Permutohedron), which are figures [*permutohedra*](https://en.wikipedia.org/wiki/Permutohedron), which are figures
that are also formed by permutations of the coordinate (1, 2, 3, ..., *n*) in Euclidean space. that are also formed by permutations of the coordinate (1, 2, 3, ..., *n*) in Euclidean space[^5].
In fact, they are able to completely tessellate the $n-1$ dimensional subspace of Technically, there is a distinction between the Cayley graphs and permutohedra
since their labellings differ.
Both have edges generated by swaps, but in the latter case, the connected vertices are expected to be
separated by a certain distance.
More information about the distinction can be found at this article on [Wikimedia](
https://commons.wikimedia.org/wiki/Category:Permutohedron_of_order_4_%28raytraced%29#Permutohedron_vs._Cayley_graph
)[^6].
[^5]: In fact, these figures are able to completely tessellate the $n-1$ dimensional subspace of
$\mathbb{R}^n$ where the coordinates sum to the $n-1$th triangular number. $\mathbb{R}^n$ where the coordinates sum to the $n-1$th triangular number.
Note that the previous graph in the sequence of $\exp(P_n)$, the hexagonal graph, Note also that the previous graph in the sequence of $\exp(P_n)$, the hexagonal graph,
is visible in the truncated octahedron. is visible in the truncated octahedron.
This corresponds to the projection $(x,y,z,w) \mapsto (x,y,z)$ over This corresponds to the projection $(x,y,z,w) \mapsto (x,y,z)$ over
the coordinates of the permutohedra. the coordinates of the permutohedra.
Technically, there is a distinction between the Cayley graphs and permutohedra [^6]: Actually, if one considers a *right* Cayley graph, where each generator is right-multiplied
since their labellings differ.
Both have edges generated by swaps, but in the latter case, the connected vertices are expected to be
separated by a certain Euclidean distance.
More information about the distinction can be found at this article on
[Wikimedia](https://commons.wikimedia.org/wiki/Category:Permutohedron_of_order_4_%28raytraced%29#Permutohedron_vs._Cayley_graph)[^3].
[^3]: Actually, if one considers a *right* Cayley graph, where each generator is right-multiplied
to the permutation at a node rather than left-multiplied, then a true correspondence is obtained, to the permutation at a node rather than left-multiplied, then a true correspondence is obtained,
at least for order 4. at least for order 4.
@ -193,12 +209,13 @@ It is certainly *not* isomorphic to $K_{4,4}$, since this graph has 8 vertices,
as opposed to 24 in $\exp( K_4 )$. as opposed to 24 in $\exp( K_4 )$.
### Graph Invariants Graph Invariants
----------------
While I have managed to identify the families to which some of these graphs belong, While I have managed to identify the families to which some of these graphs belong,
I am rather fond of computing (and conjecturing) sequences from objects. I am rather fond of computing (and conjecturing) sequences from objects.
Not only is it much easier to consult something like the OEIS for these quantities, Not only is it much easier to consult something like [the OEIS](https://oeis.org/) for these quantities,
but when finding a matching sequence, there are ample articles to consult for more information. but after finding a matching sequence, there are ample articles to consult for more information.
By linking to their respective entries, I hope you'll consider reading more there. By linking to their respective entries, I hope you'll consider reading more there.
Even though I have obtained these values empirically, I am certain that the sequences for Even though I have obtained these values empirically, I am certain that the sequences for
@ -206,9 +223,9 @@ Even though I have obtained these values empirically, I am certain that the sequ
I also have great confidence in the sequences I found for $\exp( K_n )$. I also have great confidence in the sequences I found for $\exp( K_n )$.
#### Edge Counts ### Edge Counts
Despite knowing how many vertices there are ($n!$, the order of the symmetric group), Despite knowing how many vertices there are (*n*!, the order of the symmetric group),
we don't necessarily know how many edges there are. we don't necessarily know how many edges there are.
```{python} ```{python}
@ -246,7 +263,7 @@ Markdown(tabulate(
``` ```
#### Radius and Distance Classes ### Radius and Distance Classes
The radius of a graph is the smallest possible distance which separates two maximally-separated vertices. The radius of a graph is the smallest possible distance which separates two maximally-separated vertices.
Due to vertex transitivity, the greatest distance between two vertices is the same for every vertex. Due to vertex transitivity, the greatest distance between two vertices is the same for every vertex.
@ -291,7 +308,7 @@ Including the vertex itself (which is distance 0 away), there will be $r + 1$ su
where *r* is the radius. where *r* is the radius.
These classes are the same for every vertex due to transitivity. These classes are the same for every vertex due to transitivity.
In the case of these graphs, they are a partition of the factorial numbers. In the case of these graphs, they are a partition of *n*!.
```{python} ```{python}
#| echo: false #| echo: false
@ -379,15 +396,14 @@ It seems to be the case that $\exp( K_n )$ are also integral graphs.
Perplexingly, the multiplicities for each of the eigenvalues appear to mostly be perfect powers. Perplexingly, the multiplicities for each of the eigenvalues appear to mostly be perfect powers.
This is the case until n = 8, which ruins the pattern because neither of This is the case until n = 8, which ruins the pattern because neither of
$9864 = 2^3 \cdot 3^2 \cdot 137$ or $6125 = 5^3 \cdot 7^2$ are perfect powers. $9864 = 2^3 \cdot 3^2 \cdot 137$ or $6125 = 5^3 \cdot 7^2$ are perfect powers.
I find both this and the fact that such a large prime appears among the factorization I find both this[^7] and the fact that such a large prime appears among the factorization of the former
of the former rather creepy[^4]. rather creepy since all other primes which appear here are small -- 2, 3, 5, and 7.
All other primes appearing in the factorization of the other numbers are small -- 2, 3, 5, and 7.
[^4]: Some physicists are fond of 137 for its closeness to the reciprocal [^7]: Some physicists are fond of 137 for its closeness to the reciprocal
of the fine structure constant (a bit of harmless numerology). of the fine structure constant (a bit of mostly-harmless numerology).
#### Notes about Spectral Computation ### Notes about Spectral Computation
For *n* = 3 through 6, exactly computing the spectrum For *n* = 3 through 6, exactly computing the spectrum
(or more accurately, the characteristic polynomial) (or more accurately, the characteristic polynomial)

View File

@ -36,7 +36,7 @@ To summarize from the first post, a swap diagram is a graph where each vertex re
I singled out three graph families for their symmetry: I singled out three graph families for their symmetry:
- Paths, which link adjacent swaps - Paths, which link adjacent swaps
- Stars, in which all swaps are "adjacent" to a distinguished index - Stars, in which all swaps contain a distinguished index
- Complete graphs, which contain all possible swaps - Complete graphs, which contain all possible swaps
Swap diagrams are ultimately limited by only being able to describe collections of 2-cycles. Swap diagrams are ultimately limited by only being able to describe collections of 2-cycles.
@ -98,8 +98,6 @@ Furthermore, *disconnected* vertices correspond to elements which commute with o
However, each vertex need not correspond to a single 2-cycle, However, each vertex need not correspond to a single 2-cycle,
and can instead be *any* element of order 2, i.e., a product of disjoint 2-cycles. and can instead be *any* element of order 2, i.e., a product of disjoint 2-cycles.
The most important Coxeter diagrams can be seen below.
The $A_n$ diagrams are just the familiar path graphs.
<!-- TODO: better wikimedia imports --> <!-- TODO: better wikimedia imports -->
<div class="quarto-figure quarto-figure-center"> <div class="quarto-figure quarto-figure-center">
@ -109,7 +107,8 @@ The $A_n$ diagrams are just the familiar path graphs.
</a> </a>
<figcaption> <figcaption>
Some important Coxeter diagrams The most important Coxeter diagrams.
Note that the $A_n$ diagrams are just the familiar path graphs.
<br> <br>
Source: Rgugliel, via Wikimedia Commons Source: Rgugliel, via Wikimedia Commons
</figcaption> </figcaption>
@ -147,40 +146,39 @@ What we need is some way to measure the effect this has on the rest of the group
Coxeter-Todd Algorithm Coxeter-Todd Algorithm
---------------------- ----------------------
The procedure for creating Cayley graphs contains a fragment of what we need. This is exactly what the [*Coxeter-Todd algorithm*](
Namely, we convert products between group generators to paths in a graph. https://en.wikipedia.org/wiki/Todd%E2%80%93Coxeter_algorithm
Following from the definition, our generators are the vertices of the Coxeter diagram[^2]. ) does.
This procedure is known as the It more-or-less generalizes the procedure for creating Cayley graphs.
[*Coxeter-Todd algorithm*](https://en.wikipedia.org/wiki/Todd%E2%80%93Coxeter_algorithm). Using the vertices of the Coxeter diagram as generators[^2], we convert products between
them to paths in a graph.
[^2]: For clarity, I'll try to refer to these vertices specifically as "generators". [^2]: For clarity, I'll try to refer to these vertices specifically as "generators".
Let's apply the algorithm to the diagram $A_3$. Let's apply the algorithm to the diagram $A_3$.
First, we need to label our generators. First, we need to label our generators as *a*, *b*, and *c*.
Then, we select a select a generator to remove and create a graph according to the following steps: Then, we select a select a generator to remove and create a graph according to the following steps:
### 1. Initialization ### 1. Initialization
In a Cayley graph, where we start out with a single vertex representing the identity. In a Cayley graph, we start out with a single vertex representing the identity.
Here, we do something similar. Here, the first vertex instead corresponds to the subgroup generated by all other generators.
The first vertex instead corresponds to the subdiagram formed by removing the generator
being considered, or more directly, the subgroup generated by all other generators.
For each of the remaining generators, we attach loops to the vertex. For each generator other than the one being removed, we attach loops to the vertex.
This is because the subgroup is closed -- when we multiply the set of all elements This is because the subgroup is closed -- when we multiply the set of all elements
of the subgroup by any of its elements, it doesn't change the set. of the subgroup by any of its elements, it doesn't change the set.
In other words, $hH = H, h \in H$. In other words, $hH = H, h \in H$.
This doesn't apply to the generator we removed, so we draw an edge connecting to a new vertex, For the remaining generator, we draw an edge connecting to a new vertex,
which represents a new set of elements. which represents a new set of elements.
This set is a coset of the subgroup -- that is, each vertex we make in this new graph This is a coset of the subgroup -- that is, each vertex we make in this new graph
corresponds to a disjoint partition of elements of the whole group. corresponds to a disjoint partition of elements of the whole group.
![ ![
Left: the Coxeter diagram $A_3$ <br> Left: the Coxeter diagram $A_3$ <br>
Right: the first step of generating a graph from removing generator *a*. Right: the first step of generating a graph from removing generator *a*.
The *bc* subdiagram is represented by the vertex with the *b* and *c* loops. The (group generated by the) *bc* subdiagram is represented by the vertex with the *b* and *c* loops.
](./steps/coxeter_todd_1.png) ](./steps/coxeter_todd_1.png)
Note that all loops and edges we draw will be undirected, since all generators have order 2. Note that all loops and edges we draw will be undirected, since all generators have order 2.
@ -191,8 +189,9 @@ Performing the same operation twice just takes us back to where we started.
At the new vertex, we transfer over every loop whose label is not connected to the label of the edge. At the new vertex, we transfer over every loop whose label is not connected to the label of the edge.
This is due to the rule stating that non-adjacent generators commute. This is due to the rule stating that non-adjacent generators commute.
In other words, their product has order 2, since $acac = a^2 c^2 = \text{id} = (ac)^2$. In other words, their product has order 2.
In the graph, this means we can follow the path *acac* and see that we don't end up going anywhere. For our graph, this can be seen for $acac = a^2 c^2 = \text{id} = (ac)^2$, and means after following
labels *acac*, we end up at the same vertex we started at.
![&nbsp;](./steps/coxeter_todd_step_2.png) ![&nbsp;](./steps/coxeter_todd_step_2.png)
@ -211,12 +210,12 @@ $$
$$ $$
![ ![
Attaching a loop so that $ababab = \text{id}$ Attaching a *b* edge to a new vertex with an *a* loop so that $ababab = \text{id}$
](./steps/coxeter_todd_step_3.png) ](./steps/coxeter_todd_step_3.png)
If the Coxeter diagram branches, then so does the generated graph. If the Coxeter diagram branches, then so does the generated graph.
The labels of these generated branches have products with a known order, The labels of each pair of branching edges have a product with a known order,
and following a path which alternates between two of them must return to the same vertex. so following a path alternating between two of them must return to the same vertex.
Since it alternates between the two labels *n* times, this ends up producing even-sided polygons Since it alternates between the two labels *n* times, this ends up producing even-sided polygons
in our generated graph. in our generated graph.
Commuting vertices form either a square or a pair of loops connected by an edge. Commuting vertices form either a square or a pair of loops connected by an edge.
@ -232,7 +231,7 @@ The latter is actually a special case of the former, which can be seen by matchi
### 4. Finalization ### 4. Finalization
If we ensure at each new vertex that we can follow a valid path for every pair of generators, If we ensure at each new vertex that we can follow a valid path for every pair of generators,
then this process either terminates or continues indefinitely with a repeating pattern. then this process will either terminate or continue indefinitely with a repeating pattern.
A quick sanity check on the resulting graph is to add the number of loops and edges at a vertex. A quick sanity check on the resulting graph is to add the number of loops and edges at a vertex.
The sum should be the number of generators. The sum should be the number of generators.
@ -254,7 +253,7 @@ We can remove vertices one-by-one until we eventually reduce the graph to a sing
Multiplying all of the indices at each stage together gives us the order of the group we are after. Multiplying all of the indices at each stage together gives us the order of the group we are after.
![ ![
Coxeter diagrams (right) and the graphs generated by removing the a vertex (left). <br> Coxeter diagrams (left) and the graphs generated by removing the a vertex (right). <br>
Permutations shown above vertices which give a permutation group embedding. Permutations shown above vertices which give a permutation group embedding.
](./coxeter_an.png){.narrow} ](./coxeter_an.png){.narrow}
@ -295,14 +294,7 @@ This group is isomorphic to the [Klein four-group](https://en.wikipedia.org/wiki
We can remove more than one generator from the Coxeter diagram at once, as long as we follow all the rules. We can remove more than one generator from the Coxeter diagram at once, as long as we follow all the rules.
Instead, the initial vertex in the new graph branches immediately and has fewer loops. Instead, the initial vertex in the new graph branches immediately and has fewer loops.
If we remove adjacent generators in $A_2$, we end up with a hexagon. For example, removing two generators from $A_3$ produces a figure with squares and hexagons:
![
Graph generated by removing generators *a* and *b* from $A_2$.
All starting vertices in the graph to the right are equivalent.
](./coxeter_a2_both.png){.narrow}
Similarly, removing two generators from $A_3$ produces a figure with squares and hexagons:
![ ![
Graph generated by removing any two vertices from $A_3$. <br> Graph generated by removing any two vertices from $A_3$. <br>
@ -314,12 +306,21 @@ Similarly, removing two generators from $A_3$ produces a figure with squares and
which both have a *b* loop. which both have a *b* loop.
](./coxeter_a3_pair.png){.narrow} ](./coxeter_a3_pair.png){.narrow}
A figure composed of squares and hexagons should be familiar from the second post. A figure composed of squares and hexagons should be familiar from the previous post.
The truncated octahedron also contains only squares and hexagons and is generated by $S_4$. The truncated octahedron also contains only squares and hexagons and is generated by $S_4$.
In fact, the figure above is the truncated octahedron folded in half. In fact, the figure above is the truncated octahedron folded in half.
It is folded in "half" specifically because the single remaining vertex in the Coxeter diagram has order 2. It is folded in "half" specifically because the single remaining vertex in the Coxeter diagram has order 2.
Consequently, the number of vertices in the graph must be half that Consequently, the number of vertices in the graph must be half that
of the whole group (or complete permutahedron). of the whole group (or complete permutahedron).
If we remove both generators in $A_2$, we end up with a hexagon.
![
Graph generated by removing both generators from $A_2$.
All vertices are identical, so all may be considered "starting" vertices.
](./coxeter_a2_both.png){.narrow}
Also from the previous post, we know this to be the Cayley graph for $S_3$ generated by a pair of swaps.
In this way, the Cayley graph can be thought of as a sort of "limiting" graph of the Coxeter diagram, In this way, the Cayley graph can be thought of as a sort of "limiting" graph of the Coxeter diagram,
where each coset contains only a single element. where each coset contains only a single element.
@ -381,7 +382,7 @@ Connecting the triangular faces of the cuboctahedron to the origin gives
At this point the reflections become clearer, since certain reflections At this point the reflections become clearer, since certain reflections
do the same thing as in the plane above, while others will "double" a tetrahedron. do the same thing as in the plane above, while others will "double" a tetrahedron.
::: {layout-ncol="2"} ::: {layout-ncol="2" layout-valign="center"}
![Cuboctahedron](./roots/cuboctahedron.png) ![Cuboctahedron](./roots/cuboctahedron.png)
![ ![
@ -393,7 +394,7 @@ At this point the reflections become clearer, since certain reflections
Personally, I think the geometric way of thinking becomes is difficult even in 3D. Personally, I think the geometric way of thinking becomes is difficult even in 3D.
Every axis describes a separate rotation, which is simple enough. Every axis describes a separate rotation, which is simple enough.
But we're trying to create infinite cones of symmetry domains in 3D space, But we're trying to create infinite cones of symmetry domains in 3D space,
and we only have a 2D screen with which to attempt interacting. and we can only try to interact with this using a 2D screen.
We're running out of room before even getting to 4D space, We're running out of room before even getting to 4D space,
where the visualization problems are even worse. where the visualization problems are even worse.
Also, while the angle between two mirrors is 60°, it's easy to slip into thinking Also, while the angle between two mirrors is 60°, it's easy to slip into thinking

View File

@ -13,9 +13,13 @@ categories:
--- ---
<style> <style>
.figure-img.narrow { .figure-img.narrower, img.narrower {
max-width: 512px; max-width: 512px;
} }
.figure-img.narrow, img.narrow {
max-width: 768px;
}
</style> </style>
@ -61,17 +65,18 @@ Other Platonic solids and their higher-dimensional analogues have different Schl
Adding an order-4 product into the mix makes things a lot more interesting. Adding an order-4 product into the mix makes things a lot more interesting.
The cube (Schläfli symbol {4, 3}) and octahedron ({3, 4}) share a symmetry group, $O_h$, The cube (Schläfli symbol {4, 3}) and octahedron ({3, 4}) share a symmetry group, $O_h$,
which corresponds to the Coxeter diagram $B_3$[^1]. which corresponds to the $B_3$ diagram[^1].
[^1]: For groups without a common name, I'll instead use *W*(*diagram*) to represent the generated group. [^1]: For groups without a common name, I'll instead use *W*(*diagram*)
(for [Weyl](https://en.wikipedia.org/wiki/Weyl_group)) to represent the generated group.
For example, in this case, $W(B_3) \cong O_h$. For example, in this case, $W(B_3) \cong O_h$.
::: {layout-ncol="3"} ::: {layout-ncol="3" layout-valign="center"}
![&nbsp;](./b3/coxeter_b3_generator_a.png) ![](./b3/coxeter_b3_generator_a.png){.lightbox group="b3"}
![&nbsp;](./b3/coxeter_b3_generator_b.png) ![](./b3/coxeter_b3_generator_b.png){.lightbox group="b3"}
![&nbsp;](./b3/coxeter_b3_generator_c.png) ![](./b3/coxeter_b3_generator_c.png){.lightbox group="b3"}
::: :::
The center graph is the first to have a hexagon created by removing a single generator. The center graph is the first to have a hexagon created by removing a single generator.
@ -118,7 +123,7 @@ Since all of these generators are in $S_4$, it only has half the number of verti
as the truncated cuboctahedron. as the truncated cuboctahedron.
<!-- TODO: embeddings are graphviz diagrams and could use python --> <!-- TODO: embeddings are graphviz diagrams and could use python -->
::: {layout-ncol="3"} ::: {layout="[[1,1,1],[1]]"}
![ ![
False embedding False embedding
](./b3/false_octahedral_symmetry_graph.png) ](./b3/false_octahedral_symmetry_graph.png)
@ -130,10 +135,11 @@ Since all of these generators are in $S_4$, it only has half the number of verti
![ ![
Edge-generated Edge-generated
](./b3/rhombicuboctahedral_graph.png) ](./b3/rhombicuboctahedral_graph.png)
:::
<!-- TODO: swap diagrams are wrong: 1 2 4 3 should be nonconvex quadrilateral --> ![
![&nbsp;](./b3/octahedral_embedding.png) Left: false embedding, right: good embedding
](./b3/octahedral_embedding.png){.narrow}
:::
### $H_3$: Icosahedral Group ### $H_3$: Icosahedral Group
@ -142,12 +148,12 @@ Continuing with groups based on 3D shapes, the dodecahedron (Schläfli symbol {5
and icosahedron ({3, 5}) also share a symmetry group. and icosahedron ({3, 5}) also share a symmetry group.
It is known as $I_h$ and corresponds to Coxeter diagram $H_3$. It is known as $I_h$ and corresponds to Coxeter diagram $H_3$.
::: {layout-ncol="3"} ::: {layout-ncol="3" layout-valign="center"}
![&nbsp;](./h3/coxeter_h3_generator_a.png) ![](./h3/coxeter_h3_generator_a.png){.lightbox group="h3"}
![&nbsp;](./h3/coxeter_h3_generator_b.png) ![](./h3/coxeter_h3_generator_b.png){.lightbox group="h3"}
![&nbsp;](./h3/coxeter_h3_generator_c.png) ![](./h3/coxeter_h3_generator_c.png){.lightbox group="h3"}
::: :::
Two of these graphs are similar to the cube/octahedron graphs. Two of these graphs are similar to the cube/octahedron graphs.
@ -185,7 +191,7 @@ In this case, the edges generate the
[rhombicosidodecahedronal graph](https://en.wikipedia.org/wiki/Rhombicosidodecahedron). [rhombicosidodecahedronal graph](https://en.wikipedia.org/wiki/Rhombicosidodecahedron).
<!-- TODO: embeddings are graphviz diagrams and could use python --> <!-- TODO: embeddings are graphviz diagrams and could use python -->
::: {layout-ncol="3"} ::: {layout="[[1,1,1],[1]]" layout-valign="center"}
![ ![
False embedding False embedding
](./h3/false_icosahedral_symmetry_graph.png) ](./h3/false_icosahedral_symmetry_graph.png)
@ -197,9 +203,11 @@ In this case, the edges generate the
![ ![
Edge-generated Edge-generated
]( ./h3/rhomicosidodecahedral_graph.png) ]( ./h3/rhomicosidodecahedral_graph.png)
:::
![&nbsp;](h3/icosahedral_embedding.png) ![
Left: false embedding, right: good embedding
](./h3/icosahedral_embedding.png){.narrow}
:::
It is remarkable that the truncations of the rectifications[^2] have skeleta that are the same It is remarkable that the truncations of the rectifications[^2] have skeleta that are the same
as the Cayley graphs generated by their respective Platonic solids' Coxeter diagrams. as the Cayley graphs generated by their respective Platonic solids' Coxeter diagrams.
@ -217,14 +225,14 @@ Up a dimension from the cube and octahedron lie their 4D counterparts:
and 16-cell ({3, 3, 4}, four tetrahedra ({3, 3}) around an edge). and 16-cell ({3, 3, 4}, four tetrahedra ({3, 3}) around an edge).
They correspond to Coxeter diagram $B_4$. They correspond to Coxeter diagram $B_4$.
::: {layout-ncol="2"} ::: {layout-ncol="2" layout-valign="center"}
![&nbsp;](./b4/coxeter_b4_generator_a.png) ![](./b4/coxeter_b4_generator_a.png){.lightbox group="b4"}
![&nbsp;](./b4/coxeter_b4_generator_b.png) ![](./b4/coxeter_b4_generator_b.png){.lightbox group="b4"}
![&nbsp;](./b4/coxeter_b4_generator_c.png) ![](./b4/coxeter_b4_generator_c.png){.lightbox group="b4"}
![&nbsp;](./b4/coxeter_b4_generator_d.png) ![](./b4/coxeter_b4_generator_d.png){.lightbox group="b4"}
::: :::
Three of these graphs (those starting with *a*, *c*, and *d*) are *also* similar Three of these graphs (those starting with *a*, *c*, and *d*) are *also* similar
@ -262,7 +270,7 @@ A similar computer search yielded an insufficient embedding in $S_8$, with order
- $c = (1 ~ 2)(3 ~ 4)(5 ~ 7)(6 ~ 8)$ - $c = (1 ~ 2)(3 ~ 4)(5 ~ 7)(6 ~ 8)$
- $d = (1 ~ 2)(3 ~ 5)(4 ~ 6)(7 ~ 8)$ - $d = (1 ~ 2)(3 ~ 5)(4 ~ 6)(7 ~ 8)$
This false embedding *cannot* be "fixed" by multiplying some generators by $(9 ~ 10)$[^3] This false embedding *cannot* be "fixed" by multiplying some generators[^3] by $(9 ~ 10)$
(implicitly embedding in $S_{10}$ instead). (implicitly embedding in $S_{10}$ instead).
Quickly "running" the generators shows that the order of the group is unchanged by this maneuver. Quickly "running" the generators shows that the order of the group is unchanged by this maneuver.
Much of the structure permutations ensures that nonadjacent vertices still have order-2 products. Much of the structure permutations ensures that nonadjacent vertices still have order-2 products.
@ -270,7 +278,7 @@ Much of the structure permutations ensures that nonadjacent vertices still have
[^3]: The only candidate choices are *a* and nothing else, every generator but *a*, or all generators. [^3]: The only candidate choices are *a* and nothing else, every generator but *a*, or all generators.
All other choices violate edge/product constraints from the diagram. All other choices violate edge/product constraints from the diagram.
![&nbsp;](./b4/hyperoctahedral_embedding.png) ![](./b4/hyperoctahedral_embedding.png){.narrow}
I won't try to identify either of these generating sets' Cayley graphs since it is impractical I won't try to identify either of these generating sets' Cayley graphs since it is impractical
to try comparing graphs of this size (and they likely correspond to a 4D object's skeleton). to try comparing graphs of this size (and they likely correspond to a 4D object's skeleton).
@ -294,10 +302,10 @@ $D_4$ is the first Coxeter diagram with a branch.
Like $B_4$ before it, it is corresponds to the symmetries of a 4D object. Like $B_4$ before it, it is corresponds to the symmetries of a 4D object.
We only really have two choices in which generator to remove, which generate the following graphs: We only really have two choices in which generator to remove, which generate the following graphs:
::: {layout-ncol="2"} ::: {layout-ncol="2" layout-valign="center"}
![&nbsp;](./de/coxeter_d4_generator_a.png) ![](./de/coxeter_d4_generator_a.png){.lightbox group="d4"}
![&nbsp;](./de/coxeter_d4_generator_b.png) ![](./de/coxeter_d4_generator_b.png){.lightbox group="d4"}
::: :::
While we could also remove *c* or *d*, this would just produce a graph identical While we could also remove *c* or *d*, this would just produce a graph identical
@ -318,7 +326,7 @@ Fortunately, a computer search yields a correct embedding immediately:
- $c = (1 ~ 5)(2 ~ 7)(3 ~ 4)(6 ~ 8)$ - $c = (1 ~ 5)(2 ~ 7)(3 ~ 4)(6 ~ 8)$
- $d = (1 ~ 8)(2 ~ 4)(3 ~ 7)(5 ~ 6)$ - $d = (1 ~ 8)(2 ~ 4)(3 ~ 7)(5 ~ 6)$
![&nbsp;](./de/d4_embedding.png){.narrow} ![&nbsp;](./de/d4_embedding.png){.narrower}
In fact, the group generated by this diagram is isomorphic to the even permutation subgroup of $W(B_4)$. In fact, the group generated by this diagram is isomorphic to the even permutation subgroup of $W(B_4)$.
This can be verified by selecting order 2 elements from the latter which obey the laws in $D_4$. This can be verified by selecting order 2 elements from the latter which obey the laws in $D_4$.
@ -332,10 +340,10 @@ On the other hand, *H* and the edge-generated subgroup do not satisfy this diagr
*D*-type diagrams continue by elongating one of the paths. *D*-type diagrams continue by elongating one of the paths.
The next diagram, $D_5$, has really only four distinct graphs, of which I will show only two: The next diagram, $D_5$, has really only four distinct graphs, of which I will show only two:
::: {layout-ncol="2"} ::: {layout-ncol="2" layout-valign="center"}
![&nbsp;](./de/coxeter_d5_generator_a.png) ![](./de/coxeter_d5_generator_a.png){.lightbox group="d5"}
![&nbsp;](./de/coxeter_d5_generator_de.png) ![](./de/coxeter_d5_generator_de.png){.lightbox group="d5"}
::: :::
First, note how the graph to the right is generated by removing the generator *e*, First, note how the graph to the right is generated by removing the generator *e*,
@ -413,7 +421,7 @@ This graph is also the line graph of $\bigstar_3$ so it might make sense to assi
However, $S_3$ already has a diagram, $A_2$, which is clearly a subdiagram of However, $S_3$ already has a diagram, $A_2$, which is clearly a subdiagram of
$\widetilde A_2$, so the new group must be larger. $\widetilde A_2$, so the new group must be larger.
![&nbsp;](./affine/coxeter_a2tilde_generator_a.png){.narrow} ![&nbsp;](./affine/coxeter_a2tilde_generator_a.png){.narrower}
Attempting to make a graph by following the generators results in an infinite hexagonal tiling. Attempting to make a graph by following the generators results in an infinite hexagonal tiling.
You might recall that $A_2$ generates a hexagon, so it is intriguing that this generates You might recall that $A_2$ generates a hexagon, so it is intriguing that this generates
@ -429,7 +437,7 @@ Removing a pair of vertices from the diagram would get rid of the initial edge (
The hexagonal tiling has Schläfli symbol {6, 3}, and is dual to the triangular tiling. The hexagonal tiling has Schläfli symbol {6, 3}, and is dual to the triangular tiling.
As a Coxeter diagram, this symbol matches the Coxeter diagram $\widetilde G_2$. As a Coxeter diagram, this symbol matches the Coxeter diagram $\widetilde G_2$.
![&nbsp;](./affine/coxeter_g3tilde_generator_b.png){.narrow} ![&nbsp;](./affine/coxeter_g3tilde_generator_b.png){.narrower}
The graph generated by removing a generator is another infinite tiling, in this case the The graph generated by removing a generator is another infinite tiling, in this case the
[truncated trihexagonal tiling](https://en.wikipedia.org/wiki/Truncated_trihexagonal_tiling). [truncated trihexagonal tiling](https://en.wikipedia.org/wiki/Truncated_trihexagonal_tiling).
@ -443,7 +451,7 @@ Each pair of prodcuts corresponds to a distinct polygon in the graph: *ab* to do
The only remaining regular 2D tiling is the square tiling (Schläfli symbol {4, 4}), The only remaining regular 2D tiling is the square tiling (Schläfli symbol {4, 4}),
whose Coxeter diagram is named $\widetilde C_2$. whose Coxeter diagram is named $\widetilde C_2$.
![&nbsp;](./affine/coxeter_c2tilde_generator_b.png){.narrow} ![&nbsp;](./affine/coxeter_c2tilde_generator_b.png){.narrower}
The tiling generated by this diagram is known as the The tiling generated by this diagram is known as the
[truncated square tiling](https://en.wikipedia.org/wiki/Truncated_square_tiling). [truncated square tiling](https://en.wikipedia.org/wiki/Truncated_square_tiling).
@ -458,10 +466,10 @@ In this tiling, the squares always correspond to the product *ac*,
The above diagrams are the only rank-2 affine diagrams. The above diagrams are the only rank-2 affine diagrams.
The simplest diagram of rank 3 is $\widetilde A_3$, which appears similar to 4-Cycle graph. The simplest diagram of rank 3 is $\widetilde A_3$, which appears similar to 4-Cycle graph.
::: {layout-ncol="2"} ::: {layout-ncol="2" layout-valign="center"}
![&nbsp;](./affine/coxeter_a3tilde_generator_a.png) ![](./affine/coxeter_a3tilde_generator_a.png){.lightbox group="a3_tilde"}
![&nbsp;](./affine/coxeter_a3tilde.png) ![](./affine/coxeter_a3tilde.png){.lightbox group="a3_tilde"}
::: :::
Similar to how $\widetilde A_2$'s graph is the tiling of $A_2$'s, Similar to how $\widetilde A_2$'s graph is the tiling of $A_2$'s,