#import "@local/handout:0.1.0": * #import "@preview/cetz:0.4.2" #import "../macros.typ": * = Cycle Notation #definition("Order") The _order_ of a permutation $f$ is the smallest positive $n$ where $f^n (x) = x$ for all $x$. \ In other words, if we repeatedly apply a permutation with order $n$, \ we will get back to where we started after $n$ steps. \ #v(2mm) For example, consider $[2134]$. This permutation has order $2$, as we can see below: #table( columns: (1fr,), align: center, stroke: none, align(center, cetz.canvas({ import cetz.draw: * let s = 0.5 // scale let del = 0.2 // small line let arrow = ( symbol: ")>", scale: s * 2.2, fill: oblue, stroke: oblue, ) set-style(content: (frame: "rect", stroke: none, fill: white, padding: .1)) content((0 * s, 3 * s), $1$, name: "1a") content((1 * s, 3 * s), $2$, name: "2a") content((2 * s, 3 * s), $3$, name: "3a") content((3 * s, 3 * s), $4$, name: "4a") content((0 * s, 0 * s), $2$, name: "2b") content((1 * s, 0 * s), $1$, name: "1b") content((2 * s, 0 * s), $3$, name: "3b") content((3 * s, 0 * s), $4$, name: "4b") content((0 * s, -3 * s), $1$, name: "1c") content((1 * s, -3 * s), $2$, name: "2c") content((2 * s, -3 * s), $3$, name: "3c") content((3 * s, -3 * s), $4$, name: "4c") markline(s, "1a", "1b") markline(s, "2a", "2b") markline(s, "3a", "3b") markline(s, "4a", "4b") markline(s, "1b", "1c") markline(s, "2b", "2c") markline(s, "3b", "3c") markline(s, "4b", "4c") })), ) Swapping the first two elements of a list twice changes nothing. \ Thus, $[2134]$ has an order of two. #problem() What is the order of $[2314]$? \ How about $[4321]$? \ #note(type: "Note")[Try to solve this problem without drawing any strings!] #v(1fr) #problem() Find a permutation on five elements with order 4. #v(1fr) #problem(label: "finiteorder") Show that all permutations on a finite set have a well-defined order. \ In other words, show that there must always be an integer $n$ where $f^n (x) = x$. #v(1fr) #pagebreak() #definition("Composition", label: "compdef") The _composition_ of two permutations $f$ and $g$ is the permutation $h(x) = f(g(x))$. \ We'll denote this by simply writing the permutations we're composing next to each other, like $f g$. \ Note that $g$ is applied _before_ $f$ in $f g$. #problem() Show that function composition is associative. \ That is, show that $f(g h) = (f g)h$. #v(1fr) #problem() What is $[1324][4321]$? \ How about $[321][213][231]$? \ Rewrite these compositions as one permutation in square brackets. #solution([ - $[1324][4321]$ is $[4321]$ - $[321][213][231]$ is $[123]$ ]) #v(1fr) As you may have noticed, the square-bracket notation we've been using thus far is a bit unwieldy. Permutations are verbs---but we've been referring to them using a noun (i.e, their output). Square-bracket notation fails to capture the structure of the permutation it identifies. #v(2mm) Is the permutation $[1234]$ different than the permutation $[12345]$? \ These permutations operate on different sets---but they are both the identity! \ Are $[5342761]$ and $[1342567][5234761]$ similar? What are their orders? #v(2mm) Good notation should help us understand the objects we are studying. \ We need something better than square brackets. #pagebreak() #remark("Cycles") Any permutation is composed of a number of _cycles_. \ Reread @finiteorder to convince yourself of this fact. #example() Consider the permutation $[2134]$. \ It consists of one two-cycle: $1 arrow.r 2 arrow.r 1$, which we can see in the diagram below. \ #note( type: "Note", )[ $3 arrow.r 3$ and $4 arrow.r 4$ are also cycles, but we'll ignore them. One-cycles aren't interesting. ] #table( columns: (1fr,), align: center, stroke: none, align(center, cetz.canvas({ import cetz.draw: * let s = 0.6 // scale let del = 0.4 // small line let arrow = ( symbol: ")>", scale: s * 2.2, fill: oblue, stroke: oblue, ) set-style(content: (frame: "rect", stroke: none, fill: white, padding: .1)) content((0 * s, 3 * s), $1$, name: "1a") content((1 * s, 3 * s), $2$, name: "2a") content((2 * s, 3 * s), $3$, name: "3a") content((3 * s, 3 * s), $4$, name: "4a") marklinetop(s, "1a", "2a") marklinebot(s, "2a", "1a") })), ) #v(4mm) The permutation $[431265]$ is a bit more interesting---it contains two cycles: \ #table( columns: (1fr,), align: center, stroke: none, align(center, cetz.canvas({ import cetz.draw: * let s = 0.6 // scale let arrow = ( symbol: ")>", scale: s * 2.2, fill: oblue, stroke: oblue, ) set-style(content: (frame: "rect", stroke: none, fill: white, padding: .1)) content((0 * s, 3 * s), $1$, name: "1a") content((1 * s, 3 * s), $2$, name: "2a") content((2 * s, 3 * s), $3$, name: "3a") content((3 * s, 3 * s), $4$, name: "4a") content((4 * s, 3 * s), $5$, name: "5a") content((5 * s, 3 * s), $6$, name: "6a") marklinetop(s, "3a", "2a", del: 0.8) marklinebot(s, "2a", "4a", del: 1.3) marklinetop(s, "4a", "1a", del: 1.3) marklinebot(s, "1a", "3a", del: 0.8) marklinebot(s, "5a", "6a", del: 0.8, c: ogreen) marklinetop(s, "6a", "5a", del: 0.8, c: ogreen) })), ) #remark() Two-cycles may also be called _transpositions_. \ Any permutation that swaps two elements is a transposition. #problem() Find all cycles in $[5342761]$. #solution[ #table( columns: (1fr,), align: center, stroke: none, align(center, cetz.canvas({ import cetz.draw: * let s = 0.5 // scale let arrow = ( symbol: ")>", scale: s * 2.2, fill: oblue, stroke: oblue, ) set-style(content: ( frame: "rect", stroke: none, padding: .1, )) content((0 * s, 3 * s), $1$, name: "1a") content((1 * s, 3 * s), $2$, name: "2a") content((2 * s, 3 * s), $3$, name: "3a") content((3 * s, 3 * s), $4$, name: "4a") content((4 * s, 3 * s), $5$, name: "5a") content((5 * s, 3 * s), $6$, name: "6a") content((6 * s, 3 * s), $7$, name: "7a") marklinetop(s, "1a", "7a", del: 1.6) marklinebot(s, "7a", "5a", del: 1.2) marklinetopswap(s, "5a", "1a", del: 1.2) marklinebot(s, "2a", "4a", del: 1.2, c: ogreen) marklinetop(s, "4a", "3a", del: 0.8, c: ogreen) marklinebotswap(s, "3a", "2a", del: 0.8, c: ogreen) })), ) There are two non-trivial cycles: - $4 arrow.r 3 arrow.r 2 arrow.r 4$ - $1 arrow.r 7 arrow.r 5 arrow.r 1$ ] #v(1fr) #problem() What permutation on five objects is formed by the cycles $3 arrow.r 5 arrow.r 3$ and $1 arrow.r 2 arrow.r 4 arrow.r 1$? \ Write it in square-bracket notation. #solution[ #table( columns: (1fr,), align: center, stroke: none, align(center, cetz.canvas({ import cetz.draw: * let s = 0.6 // scale let arrow = ( symbol: ")>", scale: s * 2.2, fill: oblue, stroke: oblue, ) set-style(content: ( frame: "rect", stroke: none, padding: .1, )) content((0 * s, 3 * s), $1$, name: "1a") content((1 * s, 3 * s), $2$, name: "2a") content((2 * s, 3 * s), $3$, name: "3a") content((3 * s, 3 * s), $4$, name: "4a") content((4 * s, 3 * s), $5$, name: "5a") marklinetop(s, "3a", "5a", del: 0.8, c: ogreen) marklinebot(s, "5a", "3a", del: 0.8, c: ogreen) marklinebot(s, "1a", "2a", del: 0.8) marklinetop(s, "2a", "4a", del: 1.2) marklinebotswap(s, "4a", "1a", del: 1.2) })), ) This is $[41523]$. ] #v(1fr) #pagebreak() #definition("Cycle Notation") We can use cycles to develop better notation: \ Instead of identifying permutations using their output, we'll identify them using their _cycles_. #v(2mm) For example, we'll write $[2134]$ is $(12)$ in cycle notation, \ since it consists only of the cycle $1 arrow.r 2 arrow.r 1$: #table( columns: (1fr,), align: center, stroke: none, align(center, cetz.canvas({ import cetz.draw: * let s = 0.6 // scale let arrow = ( symbol: ")>", scale: s * 2.2, fill: oblue, stroke: oblue, ) set-style(content: ( frame: "rect", stroke: none, padding: .1, )) content((0 * s, 3 * s), $1$, name: "1a") content((1 * s, 3 * s), $2$, name: "2a") content((2 * s, 3 * s), $3$, name: "3a") content((3 * s, 3 * s), $4$, name: "4a") marklinebot(s, "1a", "2a", del: 0.8) marklinetop(s, "2a", "1a", del: 0.8) })), ) #v(2mm) Permutations that consist of more than one cycle are written as a composition. \ $[2143]$ is written as $(12)(34)$. Applying the permutation $[2143]$ has the same effect as applying $(34)$, then applying $(12)$. #table( columns: (1fr,), align: center, stroke: none, align(center, cetz.canvas({ import cetz.draw: * let s = 0.6 // scale let arrow = ( symbol: ")>", scale: s * 2.2, fill: oblue, stroke: oblue, ) set-style(content: ( frame: "rect", stroke: none, padding: .1, )) content((0 * s, 3 * s), $1$, name: "1a") content((1 * s, 3 * s), $2$, name: "2a") content((2 * s, 3 * s), $3$, name: "3a") content((3 * s, 3 * s), $4$, name: "4a") marklinetop(s, "1a", "2a", del: 0.8) marklinebot(s, "2a", "1a", del: 0.8) marklinetop(s, "3a", "4a", del: 0.8, c: ogreen) marklinebot(s, "4a", "3a", del: 0.8, c: ogreen) })), ) #remark() According to @finiteorder, any permutation may be written as a composition of disjoint cycles. \ Convince yourself of this fact. #problem() Rewrite $[431265]$ in cycle notation. #solution[ $[431265]$ is $(1324)(56)$: #table( columns: (1fr,), align: center, stroke: none, align(center, cetz.canvas({ import cetz.draw: * let s = 0.6 // scale let arrow = ( symbol: ")>", scale: s * 2.2, fill: oblue, stroke: oblue, ) set-style(content: ( frame: "rect", stroke: none, padding: .1, )) content((0 * s, 3 * s), $1$, name: "1a") content((1 * s, 3 * s), $2$, name: "2a") content((2 * s, 3 * s), $3$, name: "3a") content((3 * s, 3 * s), $4$, name: "4a") content((4 * s, 3 * s), $5$, name: "5a") content((5 * s, 3 * s), $6$, name: "6a") marklinetop(s, "1a", "3a", del: 0.8, c: ogreen) marklinebot(s, "4a", "1a", del: 1.3, c: ogreen) marklinebot(s, "3a", "2a", del: 0.8, c: ogreen) marklinetop(s, "2a", "4a", del: 1.3, c: ogreen) marklinetop(s, "5a", "6a", del: 0.8) marklinebot(s, "6a", "5a", del: 0.8) })), ) ] #remark() The identity permutation $f(x) = x$ is written as $()$ in cycle notation. #problem() Convince yourself that disjoint cycles commute. \ That is, that $(1324)(56) = (56)(1324) = [431265]$ since $(1324)$ and $(56)$ do not overlap. \ #v(1fr) #pagebreak() #problem(label: "insquare") Write the following in square-bracket notation. - $(12)$ on a set of 2 elements - $(12)(435)$ on a set of 5 elements #v(2mm) - $(321)$ on a set of 3 elements - $(321)$ on a set of 6 elements #v(2mm) - $(1234)$ on a set of 4 elements - $(3412)$ on a set of 4 elements #note[ Note that $(12)$ refers the "swap first two" permutation on a set of _any_ size. \ We can use consistent notation for the same action on two different sets! \ ] #v(1fr) #problem() Write the following in square-bracket notation. Pay attention! - $(13)(243)$ on a set of 4 elements - $(243)(13)$ on a set of 4 elements #v(1fr) #problem() Consider the last two permutations in @insquare, $(1234)$ and $(3412)$. \ These are _identical_---they are the same cycle written in two different ways. \ List all other ways to write this cycle. \ #hint[There are two more.] #v(1fr) #pagebreak() #definition("Inverse") The _inverse_ of a permitation $f$ is a permutation $g$ that "un-does" $f$. \ This means that $g(f(x)) = x$ for all $x$. #problem() What is the inverse of $(12)$? \ How about $(123)$? And $(4231)$? \ #note[ Note we do not need to know the size of the set we are operating on. \ The inverse of $(12)$ is the same in sets of all sizes! ] #v(1fr) #problem() Let $sigma$ be a permutation composed of disjoint cycles $sigma_1sigma_2...sigma_k$. \ Say we know the order of all $sigma_i$. What is the order of $sigma$? #solution[ $ #text[lcm]\(#text[ord]\(sigma_1),#h(0.5em) #text[ord]\(sigma_2),#h(0.5em) ...,#h(0.5em) #text[ord]\(sigma_k)) $ ] #v(1fr) #problem(label: "cycletrans") Show that any cycle $(123...n)$ is equal to the product $(12)(23)...(n-1, n)$. #solution[ *Intuition:*\ $(123...n)$ is a right-shift. Swapping all pairs from right to left achieves the same effect. #v(2mm) *Complete solution:* \ Consider $n-1$. After applying $(123...n)$, it takes the position of $n$. After applying $(n-1, n)$, $n-1$ moves to the same position _and is never moved again!_ \ Repeat this argument for all other $n$. ] #v(1fr) #problem() Write $(7126453)$ as a product of transpositions. \ #solution[ Move elements one at a time, and using the last position as temporary storage. We get $(71)(72)(76)(74)(75)(73)$. Other solutions are possible. \ #v(2mm) *Bonus:* How can we do this in the fewest number of transpositions? ] #v(1fr) #pagebreak() #problem(label: "simpletrans") Show that any permutation is a product of transpositions. #solution[ Re-use the argument in @cycletrans. \ Pick an arbitrary "working slot," and re-build all cycles. \ Use the "not touched again" argument for a proper proof. ] #v(1fr) #problem(label: "onetrans") Show that any permutation is a product of transpositions of the form $(1, k)$. \ #solution[ Use @simpletrans to rewrite each $(a, b)$ as $(1, a)(1, b)(1, a)$. \ Showing that $(a, b) = (1, a)(1, b)(1, a)$ is fairly easy. ] #v(1fr) #pagebreak() #problem(label: "oneplustrans") Show that any transposition $(a, b)$ is equal to the product $(a, a+1)(a+1, b)(a, a+1)$. #solution[ This is the same as @onetrans, but we use $a + 1$ as a "working slot" instead of $1$. ] #v(1fr) #problem() Show that any permutation is a product of adjacent transpositions. \ An _adjacent transposition_ swaps two adjacent elements, and thus looks like $(n, n+1)$. #solution[ As before, we will use @simpletrans and rewrite the transpositions it produces in a convenient fashion. To do this, we must show that every transposition $(a, b)$ is a product of adjacent transpositions. #v(2mm) In the proof below, assume that $a < b$ and perform induction on $b - a$. \ #v(4mm) *Base Case:*\ If $b - a = 1$, $(a, b)$ is a product of adjacent transpositions. \ In fact, it _is_ an adjacent transposition. #v(4mm) *Induction:*\ Now, say $b - a = n + 1$. \ Assume that all $(a, b)$ where $b - a <= n$ are products of adjacent transpositions.\ By @oneplustrans, $(a, b) = (a, a+1)(a+1, b)(a, a+1)$. #v(2mm) $(a, a+1)$ is an adjacent transposition, and $b - (a+1) = n$. \ Thus, $(a, b)$ is a product of adjacent transpositions. ] #v(1fr)