<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="../feed.xsl" type="text/xsl"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">

<channel>
<title>Susam's Monthly Notes</title>
<link>https://susam.net/tag/monthly.html</link>
<atom:link rel="self" type="application/rss+xml" href="https://susam.net/tag/monthly-full.xml"/>
<description>Feed for Susam's Monthly Pages</description>

<item>
<title>Feb '26 Notes</title>
<link>https://susam.net/26b.html</link>
<guid isPermaLink="false">ntfts</guid>
<pubDate>Fri, 27 Feb 2026 00:00:00 +0000</pubDate>
<description>
<![CDATA[
<p>
  Since last month, I have been collecting brief notes on ideas and
  references that caught my attention during each month but did not
  make it into full articles.  Some of these fragments may eventually
  grow into standalone posts, though most will probably remain as they
  are.  At the very least, this approach allows me to keep a record of
  them.
</p>
<p>
  Most of <a href="26a.html">last month's notes</a> grew out of my
  reading of <em>Algebraic Graph Theory</em> by Godsil and Royle.  I
  am still exploring and learning this subject.  This month, however,
  I dove into another book with the same title but this book is
  written by Norman Biggs.  As a result, many of the notes that follow
  are drawn from Biggs's treatment of the topic.
</p>
<p>
  Since I already had a good understanding of the subject from the
  earlier book, I decided to skip the first fourteen chapters of the
  new book.  I began with Chapter 15, which discusses automorphisms of
  graphs and then moved on to the following chapters on graph
  symmetries.  My main reason for picking up Biggs's book was to
  understand Tutte's well known result that any \( s \)-arc-transitive
  finite cubic graph must satisfy \( s \le 5.  \)  While I did not
  reach that chapter this month, I made substantial progress with the
  book.  I hope to work through the proof of Tutte's theorem next
  month.
</p>
<h2 id="contents">Contents<a href="#contents"></a></h2>
<ol>
  <li><a href="#degree-of-vertices-in-an-orbit">Degree of Vertices in an Orbit</a></li>
  <li><a href="#regular-non-vertex-transitive-graphs">Regular Non-Vertex-Transitive Graphs</a></li>
  <li><a href="#vertex-transitive-but-not-edge-transitive">Vertex-Transitive But Not Edge-Transitive</a></li>
  <li><a href="#edge-transitive-but-not-vertex-transitive">Edge-Transitivex But Not Vertex-Transitive</a></li>
  <li><a href="#bipartiteness-as-a-necessary-condition">Bipartiteness as a Necessary Condition</a></li>
  <li><a href="#graph-with-an-automorphism-group">Graph with an Automorphism Group</a></li>
  <li><a href="#permutation-groups-need-not-be-automorphism-groups">Permutation Groups Need Not Be Automorphism Groups</a></li>
  <li><a href="#symmetric-graphs">Symmetric Graphs</a></li>
</ol>
<h2 id="degree-of-vertices-in-an-orbit">Degree of Vertices in an Orbit<a href="#degree-of-vertices-in-an-orbit"></a></h2>
<p>
  If two vertices of a graph belong to the same orbit, then they have
  the same degree.  In other words, for a graph \( X, \) if \( x, y
  \in V(X) \) and there is an automorphism \( \alpha \) such that \(
  \alpha(x) = y, \) then \( \deg(x) = \deg(y).  \)
</p>
<p>
  The proof is quite straightforward.  Let

  \begin{align*}
    N(x) &amp;= \{ v_1, \dots, v_r \}, \\
    N(y) &amp;= \{ w_1, \dots, w_s \}
  \end{align*}

  represent the neighbours of \( x \) and \( y \) respectively.
  Therefore we have

  \[
    x \sim v_1, \; \dots, \; x \sim v_r.
  \]

  Since an automorphism preserves adjacency, we get

  \[
    \alpha(x) \sim \alpha(v_1), \; \dots, \;
    \alpha(x) \sim \alpha(v_r).
  \]

  Substituting \( \alpha(x) = y, \) we get

  \[
    y \sim \alpha(v_1), \; \dots, \; y \sim \alpha(v_r).
  \]

  Thus

  \[
    \alpha(N(x))
    = \{ \alpha(v_1), \; \dots, \; \alpha(v_r) \}
    \subseteq N(y).
  \]

  A similar argument works in reverse as well.  By the definition of
  automorphism, if \( \alpha \) is an automorphism, so is \(
  \alpha^{-1}.  \)  From the definition of \( N(y) \) above, we have

  \[
    y \sim w_1, \; \dots, \; y \sim w_s.
  \]

  Therefore

  \[
    \alpha^{-1}(y) \sim \alpha^{-1}(w_1), \; \dots, \;
    \alpha^{-1}(y) \sim \alpha^{-1}(w_s).
  \]

  This is equivalent to

  \[
    x \sim \alpha^{-1}(w_1), \; \dots, \; x \sim \alpha^{-1}(w_s).
  \]

  Thus

  \[
    \alpha^{-1}(N(y))
    = \{ \alpha^{-1}(w_1), \; \dots, \; \alpha^{-1}(w_s) \}
    \subseteq N(x)
  \]

  This can be rewritten as

  \[
    \{ \alpha^{-1}(w_1), \; \dots, \; \alpha^{-1}(w_s) \}
    \subseteq \{ v_1, \dots, v_r \}.
  \]

  Therefore

  \[
    N(y)
    = \{ w_1, \dots, w_s \}
    \subseteq \{ \alpha(v_1), \dots, \alpha(v_r) \}
    = \alpha(N(x)).
  \]

  We have shown that \( \alpha(N(x)) \subseteq N(y) \) and \( N(y)
  \subseteq \alpha(N(x)).  \)  Thus

  \[
    \alpha(N(x)) = N(y).
  \]

  Thus

  \[
    \lvert N(y) \rvert = \lvert \alpha(N(x)) \rvert = r.
  \]

  Therefore both \( x \) and \( y \) have \( r \) neighbours each.
  Hence \( \deg(x) = \deg(y).  \)
</p>
<h2 id="regular-non-vertex-transitive-graphs">Regular Non-Vertex-Transitive Graphs<a href="#regular-non-vertex-transitive-graphs"></a></h2>
<p>
  The <a href="https://en.wikipedia.org/wiki/Frucht_graph">Frucht graph</a>
  and the
  <a href="https://en.wikipedia.org/wiki/Folkman_graph">Folkman
  graph</a> are examples of graphs that are \( k \)-regular but not
  vertex-transitive.  In fact, the Folkman graph is a semi-symmetric
  graph, i.e. it is regular and edge-transitive but not
  vertex-transitive.
</p>
<h2 id="vertex-transitive-but-not-edge-transitive">Vertex-Transitive But Not Edge-Transitive<a href="#vertex-transitive-but-not-edge-transitive"></a></h2>
<p>
  The circular ladder graph \( CL_3, \) i.e. the triangular prism
  graph, is vertex-transitive but not edge-transitive.
</p>
<p>
  Every vertex has the same local structure.  Every vertex has degree
  \( 3 \) and it lies on exactly one of the two triangles and it has
  exactly one 'vertical' edge connecting it to the corresponding edge
  on the other triangle.  Any vertex can be sent to any other by an
  automorphism.
</p>
<p>
  Since triangle edges are in a triangle and vertical edges are in no
  triangle, no automorphism can send a triangle edge to a vertical
  edge or vice versa.  Therefore the graph is not edge-transitive.
</p>
<h2 id="edge-transitive-but-not-vertex-transitive">Edge-Transitivex But Not Vertex-Transitive<a href="#edge-transitive-but-not-vertex-transitive"></a></h2>
<p>
  The complete bipartite graphs \( K_{m,n} \) with \( m \ne n \) are
  edge-transitive but not vertex-transitive.
</p>
<p>
  Every edge connects one vertex from the \( m \)-part to one vertex
  from the \( n \)-part.  Any permutation of vertices inside the \( m
  \)-part preserves adjacency.  Similarly, any permutation of vertices
  inside the \( n \)-part preserves adjacency.
</p>
<p>
  Take two arbitrary edges

  \[
    uv, \; u'v' \in E(K_{m,n})
  \]

  where \( u, u' \) are vertices that lie in the \( m \)-part and \(
  v, v' \) are vertices that lie in the \( n \)-part.  Permute
  vertices within the \( m \)-part to send \( u \) to \( u'.  \)
  Similarly, permute vertices within the \( n \)-part to send \( v \)
  to \( v'.  \)  This gives an automorphism that sends the edge \( uv
  \) to \( u'v'.  \)  In this manner we can find an automorphism that
  sends any edge to any other.  Therefore, \( K_{m,n} \) is
  edge-transitive.
</p>
<p>
  However, \( K_{m,n} \) is not vertex-transitive since no
  automorphism can send a vertex in the \( m \)-part to a vertex in
  the \( n \)-part since the vertices in the \( m \)-part have degree
  \( n \) and the vertices in the \( n \)-part have degree \( m.  \)
</p>
<h2 id="bipartiteness-as-a-necessary-condition">Bipartiteness as a Necessary Condition<a href="#bipartiteness-as-a-necessary-condition"></a></h2>
<p>
  If a connected graph is edge-transitive but not vertex-transitive,
  then it must be bipartite.
</p>
<h2 id="graph-with-an-automorphism-group">Graph with an Automorphism Group<a href="#graph-with-an-automorphism-group"></a></h2>
<p>
  In 1938, Frucht proved that for every finite abstract group \( G, \)
  there exists a graph whose automorphism group is isomorphic to \( G
 .  \)
</p>
<p>
  Remarkably, this result remains valid even when we restrict our
  attention to cubic graphs.  That is, for every finite abstract group
  \( G, \) there exists a cubic graph whose automorphism group is
  isomorphic to \( G.  \)  Moreover, the result has been extended to
  graphs satisfying various additional graph-theoretical properties,
  such as \( k \)-connectivity, \( k \)-regularity and prescribed
  chromatic number.
</p>
<h2 id="permutation-groups-need-not-be-automorphism-groups">Permutation Groups Need Not Be Automorphism Groups<a href="#permutation-groups-need-not-be-automorphism-groups"></a></h2>
<p>
  Consider the following specialised version of the problem discussed
  in the previous section: Given a permutation group on a set \( X, \)
  must there exist a graph with vertex set \( X \) whose automorphism
  group is precisely that permutation group?
</p>
<p>
  The answer is no.  Consider the cyclic group \( C_3 \) acting on \(
  X = \{ a, b, c \}.  \)  There is no graph \( \Gamma \) with \(
  V(\Gamma) = X \) and \( \operatorname{Aut}(\Gamma) \cong C_3.  \)  If
  we take \( \Gamma = K_3, \) then \( C_3 \subset S_3 =
  \operatorname{Aut}(K_3) \) but \( C_3 \ne \operatorname{Aut}(K_3)
 .  \)
</p>
<h2 id="symmetric-graphs">Symmetric Graphs<a href="#symmetric-graphs"></a></h2>
<p>
  It is interesting that while we study graph symmetry through
  concepts such as graph automorphisms, vertex-transitivity,
  edge-transitivity, etc. the name <em>symmetric graph</em> is
  reserved for graphs that are \( 1 \)-arc-transitive.  A
  vertex-transitive graph or an edge-transitive graph need not be
  \(1\)-arc-transitive and therefore need not be symmetric.
</p>
<p>
  However, every \( s \)-arc-transitive graph is \(1 \)-arc-transitive
  for \( s \ge 1.  \)  Consequently, every \( s \)-arc-transitive graph
  is symmetric.  Moreover, every distance-transitive graph is also \(
  1 \)-arc-transitive and hence symmetric.
</p>
<p>
  Formally, we say that a graph \( \Gamma \) is \( 1 \)-arc-transitive
  (or equivalently, symmetric) if for all \( 1 \)-arcs \( uv \) and \(
  u'v' \) of \( \Gamma, \) there is an automorphism \( \alpha \in
  \operatorname{Aut}(\Gamma) \) such that \( \alpha(uv) = u'v'.  \)
</p>
<p>
  Stated in more basic terms, we can say that \( \Gamma \) is
  symmetric if for all \( u, v, u', v' \in V(\Gamma) \) satisfying \(
  u \sim v \) and \( u' \sim v', \) there exists \( \alpha \in
  \operatorname{Aut}(\Gamma) \) such that \( \alpha(u) = u' \) and \(
  \alpha(v) = v'.  \)
</p>
<p>
  Switching gears now, we say that \( \Gamma \) is distance-transitive
  if for all \( u, v, u', v' \in V(\Gamma) \) satisfying \( d(u, v) =
  d(u', v'), \) there exists \( \alpha \in \operatorname{Aut}(\Gamma)
  \) such that \( \alpha(u) = u' \) and \( \alpha(v) = v'.  \)  Since
  all \( 1 \)-arcs \( uv \) and \( u'v' \) satisfy \( d(u, v) = d(u',
  v') = 1, \) distance-transitivity implies that there is an
  automorphism that sends \( uv \) to \( u'v'.  \)  Therefore a
  distance-transitive graph is also \( 1 \)-arc-transitive.
</p>
<p>
  To summarise, a graph must possess a certain degree of symmetry in
  order to be called symmetric.  It turns out that merely having a
  non-trivial automorphism group is not sufficient.  Even being
  vertex-transitive or edge-transitive is not enough for a graph to be
  called symmetric.  The graph needs to be at least \( 1
  \)-arc-transitive to be called symmetric.
</p>
<p>
  Another interesting aspect of this terminology is that the property
  of being asymmetric is not the exact opposite of being symmetric.
  For example, a vertex-transitive graph need not be symmetric.
  However, that does not make it asymmetric.  A graph is called
  asymmetric if it has no non-trivial automorphisms, i.e. its
  automorphism group contains only the identity permutation.  Thus, if
  a graph has at least two vertices and is vertex-transitive, it must
  admit a non-trivial automorphism that maps one vertex to another.
  So while such a vertex-transitive may not be symmetric, it isn't
  asymmetric either.
</p>
<!-- ### -->
<p>
  <a href="https://susam.net/26b.html">Read on website</a> |
  <a href="https://susam.net/tag/monthly.html">#monthly</a> |
  <a href="https://susam.net/tag/mathematics.html">#mathematics</a>
</p>
]]>
</description>
</item>
<item>
<title>Jan '26 Notes</title>
<link>https://susam.net/26a.html</link>
<guid isPermaLink="false">ntjts</guid>
<pubDate>Thu, 29 Jan 2026 00:00:00 +0000</pubDate>
<description>
<![CDATA[
<p>
  In these monthly notes, I jot down ideas and references I
  encountered during the month that I did not have time to expand into
  their own posts.  A few of these may later develop into independent
  posts but most of them will likely not.  In any case, this format
  ensures that I record them here.  I spent a significant part of this
  month studying the book <em>Algebraic Graph Theory</em> by Godsil
  and Royle, so many of the notes here are about it.  There are a few
  non-mathematical, technical notes towards the end.
</p>
<h2 id="contents">Contents<a href="#contents"></a></h2>
<ol>
  <li><a href="#cayley-graphs">Cayley Graphs</a></li>
  <li><a href="#vertex-transitive-graphs">Vertex-Transitive Graphs</a></li>
  <li><a href="#arc-transitive-graphs">Arc-Transitive Graphs</a></li>
  <li><a href="#bipartite-graphs-and-cycle-parity">Bipartite Graphs and Cycle Parity</a></li>
  <li><a href="#tutte-theorem">Tutte's Theorem</a></li>
  <li><a href="#tutte-8-cage">Tutte's 8-Cage</a></li>
  <li><a href="#lcg">Linear Congruential Generator</a></li>
  <li><a href="#cat-n">Numbering Lines</a></li>
</ol>
<h2 id="cayley-graphs">Cayley Graphs<a href="#cayley-graphs"></a></h2>
<p>
  Let \( G \) be a group and let \( C \subseteq G \) such that \( C \)
  is closed under taking inverses and does not contain the identity,
  i.e.

  \[
    \forall x \in C, \; x^{-1} \in C, \qquad e \notin C.
  \]

  Then the Cayley graph \( X(G, C) \) is the graph with the vertex set
  \( V(X(G, C)) \) and edge set \( E(X(G, C)) \) defined by

  \begin{align*}
    V(X(G, C)) &amp;= G, \\
    E(X(G, C)) &amp;= \{ gh : hg^{-1} \in C \}.
  \end{align*}

  The set \( C \) is known as the connection set.
</p>
<h2 id="vertex-transitive-graphs">Vertex-Transitive Graphs<a href="#vertex-transitive-graphs"></a></h2>
<p>
  A graph \( X \) is <em>vertex-transitive</em> if its automorphism
  group acts transitively on its set of vertices \( V(X).  \)
  Intuitively, this means that no vertex has a special role.  We can
  'move' the graph around so that any chosen vertex becomes any other
  vertex.  In other words, all vertices are indistinguishable.  The
  graph looks the same from each vertex.
</p>
<p>
  The \( k \)-cube \( Q_k \) is vertex-transitive.  So are the Cayley
  graphs \( X(G, C).  \)  However the path graph \( P_3 \) is not
  vertex-transitive since no automorphism can send the middle vertex
  of valency \( 2 \) to an end vertex of valency \( 1.  \)
</p>
<h2 id="arc-transitive-graphs">Arc-Transitive Graphs<a href="#arc-transitive-graphs"></a></h2>
<p>
  The cube \( Q_3 \) is \( 2 \)-arc-transitive but not \( 3
  \)-arc-transitive.  In \( Q_3, \) a \( 3 \)-arc belonging to a \( 4
  \)-cycle cannot be sent to a \( 3 \)-arc that does not belong to a
  \( 4 \)-cycle.  This is easy to explain.  The end vertices of a \( 3
  \)-arc belonging to a \( 4 \)-cycle are adjacent but the end
  vertices of a \( 3 \)-arc not belonging to a \( 4 \)-cycle are not
  adjacent.  Therefore, no automorphism can map the end vertices of
  the first \( 3 \)-arc to those of the second \( 3 \)-arc.
</p>
<p>
  For intuition, imagine that a traveller stands on a vertex and
  chooses an edge to move along.  They do this \( s \) times thereby
  walking along an arc of length \( s, \) also known as an \( s
  \)-arc.  By the definition of \( s \)-arcs, the traveller is not
  allowed to backtrack from one vertex to the previous one
  immediately.  In an \( s \)-arc-transitive graph, these arcs look
  the same no matter which vertex they start from or which edges they
  choose.  In the cube, this is indeed true for \( s = 2.  \)  All arcs
  of length \( 2 \) are indistinguishable.  No matter which arc of
  length \( 2 \) the traveller has walked along, the graph would look
  the same from their perspective at each vertex along the arc.
  However, this no longer holds good for arcs of length \( 3 \) since
  there are two distinct kinds of arcs of length \( 3.  \)  The first
  kind ends at a distance of \( 1 \) from the starting vertex of the
  arc (when the arc belongs to a \( 4 \)-cycle).  The second kind ends
  at a distance \( 3 \) from the starting vertex of the arc (when the
  arc does not belong to a \( 4 \)-cycle).  Therefore the cube is not
  \( 3 \)-arc-transitive.
</p>
<h2 id="bipartite-graphs-and-cycle-parity">Bipartite Graphs and Cycle Parity<a href="#bipartite-graphs-and-cycle-parity"></a></h2>
<p>
  A graph is bipartite if and only if it contains no cycles of odd
  length.  Equivalently, every cycle in a bipartite graph has even
  length.  Conversely, if every cycle in a graph has even length, then
  the graph is bipartite.
</p>
<h2 id="tutte-theorem">Tutte's Theorem<a href="#tutte-theorem"></a></h2>
<p>
  For any \( s \)-arc-transitive cubic graph, \( s \le 5.  \)  This was
  demonstrated by W. T. Tutte in 1947.  A proof can be found in
  Chapter 18 of <em>Algebraic Graph Theory</em> by Norman Biggs.
</p>
<p>
  In 1973, Richward Weiss established a more general theorem that
  proves that for any \( s \)-arc-transitive graph, \( s \le 7.  \)
  The bound is weaker but it applies to all graphs rather than only to
  cubic ones.
</p>
<h2 id="tutte-8-cage">Tutte's 8-Cage<a href="#tutte-8-cage"></a></h2>
<p>
  The book <em>Algebraic Graph Theory</em> by Godsil and Royle offers
  the following two descriptions of Tutte's 8-cage on 30 vertices:
</p>
<blockquote>
  Take the cube and an additional vertex \( \infty.  \)  In each set of
  four parallel edges, join the midpoint of each pair of opposite
  edges by an edge, then join the midpoint of the two new edges by an
  edge, and finally join the midpoint of this edge to \( \infty.  \)
</blockquote>
<blockquote>
  Construct a bipartite graph \( T \) with the fifteen edges as one
  colour class and the fifteen \( 1 \)-factors as the other, where
  each edge is adjacent to the three \( 1 \)-factors that contain it.
</blockquote>
<p>
  It can be shown that both descriptions construct a cubic bipartite
  graph on \( 30 \) vertices of girth \( 8.  \)  It can be further
  shown that there is a unique cubic bipartite graph on \( 30 \)
  vertices with girth \( 8.  \)  As a result both descriptions above
  construct the same graph.
</p>
<h2 id="lcg">Linear Congruential Generator<a href="#lcg"></a></h2>
<p>
  Here is a simple linear congruential generator (LCG) implementation
  in JavaScript:
</p>
<pre><code>function srand (seed) {
  let x = seed
  return function () {
    x = (1664525 * x + 1013904223) % 4294967296
    return x
  }
}</code></pre>
<p>
  Here is an example usage:
</p>
<pre><samp>&gt; <kbd>const rand = srand(0)</kbd>
undefined
&gt; <kbd>rand()</kbd>
1013904223
&gt; <kbd>rand()</kbd>
1196435762
&gt; <kbd>rand()</kbd>
3519870697</samp></pre>
<h2 id="cat-n">Numbering Lines<a href="#cat-n"></a></h2>
<p>
  Both BSD and GNU <code>cat</code> can number output lines with
  the <code>-n</code> option.  For example:
</p>
<pre><samp>$ <kbd>printf 'foo\nbar\nbaz\n' | cat -n</kbd>
     1  foo
     2  bar
     3  baz</samp></pre>
<p>
  However I have always used <code>nl</code> for this.  For example:
</p>
<pre><samp>$ <kbd>printf 'foo\nbar\nbaz\n' | nl</kbd>
     1  foo
     2  bar
     3  baz</samp></pre>
<p>
  While <code>nl</code> is
  <a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/nl.html">specified
  in POSIX</a>, the <code>cat -n</code> option
  <a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/cat.html">is
  not</a>.
</p>
<!-- ### -->
<p>
  <a href="https://susam.net/26a.html">Read on website</a> |
  <a href="https://susam.net/tag/monthly.html">#monthly</a> |
  <a href="https://susam.net/tag/mathematics.html">#mathematics</a> |
  <a href="https://susam.net/tag/programming.html">#programming</a> |
  <a href="https://susam.net/tag/javascript.html">#javascript</a> |
  <a href="https://susam.net/tag/shell.html">#shell</a>
</p>
]]>
</description>
</item>


</channel>
</rss>
