Compare commits
1 Commits
d85fbe0318
...
typst-quan
| Author | SHA1 | Date | |
|---|---|---|---|
| df91fd9f96 |
@@ -26,7 +26,7 @@ jobs:
|
||||
|
||||
- name: "Download Typstyle"
|
||||
run: |
|
||||
wget -q "https://github.com/Enter-tainer/typstyle/releases/download/v0.13.17/typstyle-x86_64-unknown-linux-musl"
|
||||
wget -q "https://github.com/Enter-tainer/typstyle/releases/download/v0.12.14/typstyle-x86_64-unknown-linux-musl"
|
||||
chmod +x typstyle-x86_64-unknown-linux-musl
|
||||
|
||||
- name: Check typst formatting
|
||||
@@ -62,7 +62,7 @@ jobs:
|
||||
# more control anyway.
|
||||
- name: "Download Typst"
|
||||
run: |
|
||||
wget -q "https://github.com/typst/typst/releases/download/v0.13.1/typst-x86_64-unknown-linux-musl.tar.xz"
|
||||
wget -q "https://github.com/typst/typst/releases/download/v0.12.0/typst-x86_64-unknown-linux-musl.tar.xz"
|
||||
tar -xf "typst-x86_64-unknown-linux-musl.tar.xz"
|
||||
mv "typst-x86_64-unknown-linux-musl/typst" .
|
||||
rm "typst-x86_64-unknown-linux-musl.tar.xz"
|
||||
|
||||
@@ -3,10 +3,13 @@
|
||||
// Re-exports
|
||||
// All functions that maybe used by client code are listed here
|
||||
#import "misc.typ": *
|
||||
#import "object.typ": definition, example, generic, problem, remark, theorem
|
||||
#import "object.typ": problem, definition, theorem, example, remark, generic
|
||||
#import "solution.typ": (
|
||||
if_no_solutions, if_solutions, if_solutions_else, instructornote,
|
||||
sample_solution, solution,
|
||||
if_solutions,
|
||||
if_no_solutions,
|
||||
if_solutions_else,
|
||||
solution,
|
||||
instructornote,
|
||||
)
|
||||
|
||||
|
||||
@@ -35,7 +38,10 @@
|
||||
margin: 20mm,
|
||||
width: 8.5in,
|
||||
height: 11in,
|
||||
footer: align(center, context counter(page).display()),
|
||||
footer: align(
|
||||
center,
|
||||
context counter(page).display(),
|
||||
),
|
||||
footer-descent: 5mm,
|
||||
)
|
||||
|
||||
@@ -96,8 +102,8 @@
|
||||
|
||||
// Make handout title
|
||||
{
|
||||
import "header.typ": make_header, short_solution_warning, solution_warning
|
||||
import "solution.typ": reset_solutions, solutions_state
|
||||
import "header.typ": make_header, solution_warning, short_solution_warning
|
||||
import "solution.typ": solutions_state, reset_solutions
|
||||
|
||||
reset_solutions()
|
||||
|
||||
|
||||
@@ -29,7 +29,11 @@
|
||||
}
|
||||
|
||||
// Render the object
|
||||
block(above: 8mm, below: 2mm, text(weight: "bold", obj_content))
|
||||
block(
|
||||
above: 8mm,
|
||||
below: 2mm,
|
||||
text(weight: "bold", obj_content),
|
||||
)
|
||||
|
||||
// Generate labeled metadata for this object.
|
||||
//
|
||||
@@ -53,7 +57,7 @@
|
||||
if not (
|
||||
it.element != none
|
||||
and it.element.has("value")
|
||||
and type(it.element.value) == dictionary
|
||||
and type(it.element.value) == "dictionary"
|
||||
and it.element.value.keys().contains(magic_key)
|
||||
) {
|
||||
// This label is not attached to object metadata
|
||||
@@ -96,5 +100,9 @@
|
||||
#let remark = _mkobj("Remark")
|
||||
|
||||
#let generic(obj_content) = {
|
||||
block(above: 8mm, below: 2mm, text(weight: "bold", obj_content))
|
||||
block(
|
||||
above: 8mm,
|
||||
below: 2mm,
|
||||
text(weight: "bold", obj_content),
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#import "misc.typ": oblue, ored
|
||||
#import "misc.typ": ored, oblue
|
||||
|
||||
|
||||
/// If false, hide instructor info.
|
||||
@@ -61,7 +61,10 @@
|
||||
}
|
||||
|
||||
#let solution(content) = {
|
||||
if_solutions(align(center, stack(
|
||||
if_solutions(
|
||||
align(
|
||||
center,
|
||||
stack(
|
||||
block(
|
||||
width: 100%,
|
||||
breakable: false,
|
||||
@@ -80,35 +83,16 @@
|
||||
inset: 3mm,
|
||||
align(left, content),
|
||||
),
|
||||
)))
|
||||
}
|
||||
|
||||
#let sample_solution(content) = {
|
||||
align(center, stack(
|
||||
block(
|
||||
width: 100%,
|
||||
breakable: false,
|
||||
fill: oblue,
|
||||
stroke: oblue + 2pt,
|
||||
inset: 1.5mm,
|
||||
align(left, text(fill: white, weight: "bold", [Sample Solution:])),
|
||||
),
|
||||
|
||||
block(
|
||||
width: 100%,
|
||||
height: auto,
|
||||
breakable: false,
|
||||
fill: oblue.lighten(80%).desaturate(10%),
|
||||
stroke: oblue + 2pt,
|
||||
inset: 3mm,
|
||||
align(left, content),
|
||||
),
|
||||
))
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
#let instructornote(content) = {
|
||||
if_solutions(align(center, stack(
|
||||
if_solutions(
|
||||
align(
|
||||
center,
|
||||
stack(
|
||||
block(
|
||||
width: 100%,
|
||||
breakable: false,
|
||||
@@ -127,5 +111,7 @@
|
||||
inset: 3mm,
|
||||
align(left, content),
|
||||
),
|
||||
)))
|
||||
),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
#import "@preview/cetz:0.3.1"
|
||||
|
||||
= Floats
|
||||
#definition()
|
||||
@@ -31,11 +31,13 @@ Rewrite the following binary decimals in base 10: \
|
||||
#definition(label: "floatbits")
|
||||
Another way we can interpret a bit string is as a _signed floating-point decimal_, or a `float` for short. \
|
||||
Floats represent a subset of the real numbers, and are interpreted as follows: \
|
||||
#note(
|
||||
[The following only applies to floats that consist of 32 bits. We won't encounter any others today.],
|
||||
)
|
||||
#note([The following only applies to floats that consist of 32 bits. We won't encounter any others today.])
|
||||
|
||||
#align(center, box(inset: 2mm, cetz.canvas({
|
||||
#align(
|
||||
center,
|
||||
box(
|
||||
inset: 2mm,
|
||||
cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
let chars = (
|
||||
@@ -94,7 +96,9 @@ Floats represent a subset of the real numbers, and are interpreted as follows: \
|
||||
|
||||
line((3.10, y), (9.4, y))
|
||||
content((6.3, y - 0.2), [fraction])
|
||||
})))
|
||||
}),
|
||||
),
|
||||
)
|
||||
|
||||
- The first bit denotes the sign of the float's value
|
||||
We'll label it $s$. \
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
#import "@preview/cetz-plot:0.1.2": chart, plot
|
||||
#import "@preview/cetz:0.3.1"
|
||||
#import "@preview/cetz-plot:0.1.0": plot, chart
|
||||
|
||||
= Integers and Floats
|
||||
|
||||
@@ -44,11 +44,19 @@ This allows us to improve the average error of our linear approximation:
|
||||
{
|
||||
let domain = (0, 1)
|
||||
|
||||
plot.add(f1, domain: domain, label: $log(1+x)$, style: (
|
||||
stroke: ogrape,
|
||||
))
|
||||
plot.add(
|
||||
f1,
|
||||
domain: domain,
|
||||
label: $log(1+x)$,
|
||||
style: (stroke: ogrape),
|
||||
)
|
||||
|
||||
plot.add(f2, domain: domain, label: $x$, style: (stroke: oblue))
|
||||
plot.add(
|
||||
f2,
|
||||
domain: domain,
|
||||
label: $x$,
|
||||
style: (stroke: oblue),
|
||||
)
|
||||
},
|
||||
)
|
||||
})
|
||||
@@ -82,11 +90,19 @@ This allows us to improve the average error of our linear approximation:
|
||||
{
|
||||
let domain = (0, 1)
|
||||
|
||||
plot.add(f1, domain: domain, label: $log(1+x)$, style: (
|
||||
stroke: ogrape,
|
||||
))
|
||||
plot.add(
|
||||
f1,
|
||||
domain: domain,
|
||||
label: $log(1+x)$,
|
||||
style: (stroke: ogrape),
|
||||
)
|
||||
|
||||
plot.add(f2, domain: domain, label: $x$, style: (stroke: oblue))
|
||||
plot.add(
|
||||
f2,
|
||||
domain: domain,
|
||||
label: $x$,
|
||||
style: (stroke: oblue),
|
||||
)
|
||||
},
|
||||
)
|
||||
})
|
||||
@@ -104,13 +120,16 @@ We won't bother with this---we'll simply leave the correction term as an opaque
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#note(type: "Note", [
|
||||
#note(
|
||||
type: "Note",
|
||||
[
|
||||
"Average error" above is simply the area of the region between the two graphs:
|
||||
$
|
||||
integral_0^1 abs( #v(1mm) log(1+x)_2 - (x+epsilon) #v(1mm))
|
||||
$
|
||||
Feel free to ignore this note, it isn't a critical part of this handout.
|
||||
])
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
#pagebreak()
|
||||
@@ -130,7 +149,8 @@ $
|
||||
Let $E$ and $F$ be the exponent and float bits of $x_f$. \
|
||||
We then have:
|
||||
$
|
||||
log_2(x_f) & = log_2 ( 2^(E-127) times (1 + (F) / (2^23)) ) \
|
||||
log_2(x_f)
|
||||
&= log_2 ( 2^(E-127) times (1 + (F) / (2^23)) ) \
|
||||
&= E - 127 + log_2(1 + F / (2^23)) \
|
||||
& approx E-127 + F / (2^23) + epsilon \
|
||||
&= 1 / (2^23)(2^23 E + F) - 127 + epsilon \
|
||||
|
||||
35
src/Advanced/Introduction to Quantum/main.typ
Normal file
35
src/Advanced/Introduction to Quantum/main.typ
Normal file
@@ -0,0 +1,35 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
|
||||
#show: handout.with(
|
||||
title: [Intro to Quantum Computing],
|
||||
by: "Mark",
|
||||
)
|
||||
|
||||
// Define quantum notation macros
|
||||
#let ket(content) = $|#content angle.r$
|
||||
#let bra(content) = $angle.l #content|$
|
||||
|
||||
#include "src/parts/01 bits.typ"
|
||||
#pagebreak()
|
||||
|
||||
#include "src/parts/02 qubit.typ"
|
||||
#pagebreak()
|
||||
|
||||
#include "src/parts/03 two qubits.typ"
|
||||
#pagebreak()
|
||||
|
||||
// DONE UNTIL HERE
|
||||
|
||||
#include "src/parts/04 logic gates.typ"
|
||||
#pagebreak()
|
||||
|
||||
#include "src/parts/05 quantum gates.typ"
|
||||
#pagebreak()
|
||||
|
||||
#include "src/parts/06 hxh.typ"
|
||||
#pagebreak()
|
||||
|
||||
#include "src/parts/07 superdense.typ"
|
||||
#pagebreak()
|
||||
|
||||
#include "src/parts/08 teleport.typ"
|
||||
@@ -230,7 +230,7 @@ The \textit{tensor product} of two vectors is defined as follows:
|
||||
That is, we take our first vector, multiply the second
|
||||
vector by each of its components, and stack the result.
|
||||
You could think of this as a generalization of scalar
|
||||
multiplication, where scalar multiplication is a
|
||||
mulitiplication, where scalar mulitiplication is a
|
||||
tensor product with a vector in $\mathbb{R}^1$:
|
||||
\begin{equation*}
|
||||
a
|
||||
|
||||
349
src/Advanced/Introduction to Quantum/src/parts/01 bits.typ
Normal file
349
src/Advanced/Introduction to Quantum/src/parts/01 bits.typ
Normal file
@@ -0,0 +1,349 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
|
||||
= Probabilistic Bits
|
||||
|
||||
#definition()
|
||||
As we already know, a _classical bit_ may take the values `0` and `1`.
|
||||
|
||||
We can model this with a two-sided coin, one face of which is labeled `0`, and the other, `1`.
|
||||
|
||||
#v(2mm)
|
||||
|
||||
Of course, if we toss such a "bit-coin," we'll get either `0` or `1`.
|
||||
|
||||
We'll denote the probability of getting `0` as $p_0$, and the probability of getting `1` as $p_1$.
|
||||
|
||||
As with all probabilities, $p_0 + p_1$ must be equal to 1.
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#definition()
|
||||
Say we toss a "bit-coin" and don't observe the result. We now have a _probabilistic bit_, with a probability $p_0$ of being `0`, and a probability $p_1$ of being `1`.
|
||||
|
||||
#v(2mm)
|
||||
|
||||
We'll represent this probabilistic bit's _state_ as a vector: $mat(p_0; p_1)$
|
||||
|
||||
We do *not* assume this coin is fair, and thus $p_0$ might not equal $p_1$.
|
||||
|
||||
#note[This may seem a bit redundant: since $p_0 + p_1 = 1$, we can always calculate one probability given the other. We'll still include both probabilities in the state vector, since this provides a clearer analogy to quantum bits.]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#definition()
|
||||
The simplest probabilistic bit states are of course $[0]$ and $[1]$, defined as follows:
|
||||
- $[0] = mat(1; 0)$
|
||||
- $[1] = mat(0; 1)$
|
||||
|
||||
That is, $[0]$ represents a bit that we known to be `0`, and $[1]$ represents a bit we know to be `1`.
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#definition()
|
||||
$[0]$ and $[1]$ form a _basis_ for all possible probabilistic bit states:
|
||||
|
||||
Every other probabilistic bit can be written as a _linear combination_ of $[0]$ and $[1]$:
|
||||
|
||||
$ mat(p_0; p_1) = p_0 mat(1; 0) + p_1 mat(0; 1) = p_0 [0] + p_1 [1] $
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
#problem()
|
||||
Every possible state of a probabilistic bit is a two-dimensional vector.
|
||||
|
||||
Draw all possible states on the axis below.
|
||||
|
||||
#table(
|
||||
columns: (1fr,),
|
||||
align: center,
|
||||
stroke: none,
|
||||
align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
set-style(content: (frame: "rect", stroke: none, fill: none, padding: .25))
|
||||
scale(200%)
|
||||
|
||||
line(
|
||||
(0, 1.5),
|
||||
(0, 0),
|
||||
(1.5, 0),
|
||||
stroke: black + 0.25mm,
|
||||
)
|
||||
mark((0, 1.5), (0, 2), symbol: ")>", fill: black)
|
||||
mark((1.5, 0), (2, 0), symbol: ")>", fill: black)
|
||||
|
||||
content((0, 1.5), $p_1$, anchor: "south")
|
||||
content((1.5, 0), $p_0$, anchor: "west")
|
||||
|
||||
circle((0, 0), radius: 0.6mm, fill: black, name: "00")
|
||||
content("00.south", $mat(0; 0)$, anchor: "north")
|
||||
|
||||
circle((0, 1), radius: 0.6mm, fill: oblue, stroke: oblue, name: "00")
|
||||
content("00.west", $[1]$, anchor: "east")
|
||||
|
||||
circle((1, 0), radius: 0.6mm, fill: oblue, stroke: oblue, name: "00")
|
||||
content("00.south", $[0]$, anchor: "north")
|
||||
})),
|
||||
)
|
||||
|
||||
#solution[
|
||||
#table(
|
||||
columns: (1fr,),
|
||||
align: center,
|
||||
stroke: none,
|
||||
align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
set-style(content: (
|
||||
frame: "rect",
|
||||
stroke: none,
|
||||
fill: none,
|
||||
padding: .25,
|
||||
))
|
||||
scale(200%)
|
||||
|
||||
line(
|
||||
(0, 1.5),
|
||||
(0, 0),
|
||||
(1.5, 0),
|
||||
stroke: black + 0.25mm,
|
||||
)
|
||||
mark((0, 1.5), (0, 2), symbol: ")>", fill: black)
|
||||
mark((1.5, 0), (2, 0), symbol: ")>", fill: black)
|
||||
|
||||
content((0, 1.5), $p_1$, anchor: "south")
|
||||
content((1.5, 0), $p_0$, anchor: "west")
|
||||
|
||||
|
||||
line(
|
||||
(1, 0),
|
||||
(0, 1),
|
||||
stroke: ored + 1mm,
|
||||
)
|
||||
|
||||
circle((0, 0), radius: 0.6mm, fill: black, name: "00")
|
||||
content("00.south", $mat(0; 0)$, anchor: "north")
|
||||
|
||||
circle((0, 1), radius: 0.6mm, fill: oblue, stroke: oblue, name: "00")
|
||||
content("00.west", $[1]$, anchor: "east")
|
||||
|
||||
circle((1, 0), radius: 0.6mm, fill: oblue, stroke: oblue, name: "00")
|
||||
content("00.south", $[0]$, anchor: "north")
|
||||
})),
|
||||
)
|
||||
|
||||
]
|
||||
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
= Measuring Probabilistic Bits
|
||||
|
||||
#definition()
|
||||
As we noted before, a probabilistic bit represents a coin we've tossed but haven't looked at.
|
||||
|
||||
We do not know whether the bit is `0` or `1`, but we do know the probability of both of these outcomes.
|
||||
|
||||
#v(2mm)
|
||||
|
||||
If we _measure_ (or _observe_) a probabilistic bit, we see either `0` or `1`—and thus our knowledge of its state is updated to either $[0]$ or $[1]$, since we now certainly know what face the coin landed on.
|
||||
|
||||
#v(2mm)
|
||||
|
||||
Since measurement changes what we know about a probabilistic bit, it changes the probabilistic bit's state. When we measure a bit, its state _collapses_ to either $[0]$ or $[1]$, and the original state of the bit vanishes. We _cannot_ recover the state $[x_0, x_1]$ from a measured probabilistic bit.
|
||||
|
||||
#definition("Multiple bits")
|
||||
Say we have two probabilistic bits, $x$ and $y$, with states $[x] = [x_0, x_1]$ and $[y] = [y_0, y_1]$
|
||||
|
||||
#v(2mm)
|
||||
|
||||
The _compound state_ of $[x]$ and $[y]$ is exactly what it sounds like: It is the probabilistic two-bit state $|x y angle.r$, where the probabilities of the first bit are determined by $[x]$, and the probabilities of the second are determined by $[y]$.
|
||||
|
||||
#problem(label: "firstcompoundstate")
|
||||
Say $[x] = [2/3, 1/3]$ and $[y] = [3/4, 1/4]$.
|
||||
|
||||
- If we measure $x$ and $y$ simultaneously, what is the probability of getting each of `00`, `01`, `10`, and `11`?
|
||||
|
||||
- If we measure $y$ first and observe `1`, what is the probability of getting each of `00`, `01`, `10`, and `11`?
|
||||
|
||||
#note[*Note:* $[x]$ and $[y]$ are column vectors, but I've written them horizontally to save space.]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
Say $[x] = [2/3, 1/3]$ and $[y] = [3/4, 1/4]$.
|
||||
|
||||
What is the probability that $x$ and $y$ produce different outcomes?
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
= Tensor Products
|
||||
|
||||
#definition("Tensor Products")
|
||||
The _tensor product_ of two vectors is defined as follows:
|
||||
$
|
||||
mat(x_1; x_2) times.circle mat(y_1; y_2) = mat(x_1 mat(y_1; y_2); x_2 mat(y_1; y_2)) = mat(x_1 y_1; x_1 y_2; x_2 y_1; x_2 y_2)
|
||||
$
|
||||
|
||||
That is, we take our first vector, multiply the second vector by each of its components, and stack the result. You could think of this as a generalization of scalar multiplication, where scalar multiplication is a tensor product with a vector in $RR^1$:
|
||||
|
||||
$
|
||||
a mat(x_1; x_2) = mat(a_1) times.circle mat(y_1; y_2) = mat(a_1 mat(y_1; y_2)) = mat(a_1 y_1; a_1 y_2)
|
||||
$
|
||||
|
||||
#problem()
|
||||
Say $x in RR^n$ and $y in RR^m$.
|
||||
|
||||
What is the dimension of $x times.circle y$?
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem(label: "basistp")
|
||||
What is the following pairwise tensor product?
|
||||
#v(4mm)
|
||||
$
|
||||
{mat(1; 0; 0), mat(0; 1; 0), mat(0; 0; 1)}
|
||||
times.circle
|
||||
{mat(1; 0), mat(0; 1)}
|
||||
$
|
||||
#v(4mm)
|
||||
|
||||
#hint[Distribute the tensor product between every pair of vectors.]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
What is the _span_ of the vectors we found in @basistp?
|
||||
|
||||
In other words, what is the set of vectors that can be written as linear combinations of the vectors above?
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#pagebreak()
|
||||
|
||||
#problem()
|
||||
Say $[x] = [2/3, 1/3]$ and $[y] = [3/4, 1/4]$.
|
||||
|
||||
What is $[x] times.circle [y]$? How does this relate to @firstcompoundstate?
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
The compound state of two vector-form bits is their tensor product.
|
||||
|
||||
Compute the following. Is the result what we'd expect?
|
||||
- $[0] times.circle [0]$
|
||||
- $[0] times.circle [1]$
|
||||
- $[1] times.circle [0]$
|
||||
- $[1] times.circle [1]$
|
||||
|
||||
#hint[Remember that $[0] = mat(1; 0)$ and $[1] = mat(0; 1)$.]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem(label: "fivequant")
|
||||
Writing $[0] times.circle [1]$ is a bit tedious. We'll shorten this notation to $[01]$.
|
||||
|
||||
In fact, we could go further: if we wanted to write the set of bits $[1] times.circle [1] times.circle [0] times.circle [1]$, \
|
||||
we could write $[1101]$—but a shorter alternative is $[13]$, since $13$ is `1101` in binary.
|
||||
|
||||
#v(2mm)
|
||||
|
||||
Write $[5]$ as a three-bit probabilistic state.
|
||||
|
||||
#solution[
|
||||
$[5] = [101] = [1] times.circle [0] times.circle [1] = [0,0,0,0,0,1,0,0]^T$ \
|
||||
|
||||
Notice how we're counting from the top, with $[000] = [1,0,...,0]$ and $[111] = [0, ..., 0, 1]$.
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
Write the three-bit states $[0]$ through $[7]$ as column vectors.
|
||||
|
||||
#hint[You do not need to compute every tensor product. Do a few and find the pattern.]
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
|
||||
|
||||
= Operations on Probabilistic Bits
|
||||
|
||||
Now that we can write probabilistic bits as vectors, we can represent operations on these bits with linear transformations—in other words, as matrices.
|
||||
|
||||
#definition()
|
||||
Consider the NOT gate, which operates as follows:
|
||||
- $"NOT"[0] = [1]$
|
||||
- $"NOT"[1] = [0]$
|
||||
|
||||
What should NOT do to a probabilistic bit $[x_0, x_1]$?
|
||||
|
||||
If we return to our coin analogy, we can think of the NOT operation as flipping a coin we have already tossed, without looking at its state. Thus,
|
||||
$ "NOT" mat(x_0; x_1) = mat(x_1; x_0) $
|
||||
|
||||
#review_box("Review: Multiplying vectors by matrices")[
|
||||
#v(2mm)
|
||||
|
||||
$
|
||||
A v = mat(1, 2; 3, 4) mat(v_0; v_1) = mat(1 v_0 + 2 v_1; 3 v_0 + 4 v_1)
|
||||
$
|
||||
|
||||
#v(2mm)
|
||||
|
||||
Note that each element of $A v$ is the dot product of a row in $A$ and a column in $v$.
|
||||
]
|
||||
|
||||
#problem()
|
||||
Compute the following product:
|
||||
$ mat(1, 0.5; 0, 1) mat(3; 2) $
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#remark()
|
||||
Also, recall that every matrix is linear map, and that every linear map may be written as a matrix. We often use the terms _matrix_, _transformation_, and _linear map_ interchangeably.
|
||||
|
||||
#pagebreak()
|
||||
|
||||
#problem()
|
||||
Find the matrix that represents the NOT operation on one probabilistic bit.
|
||||
|
||||
#solution[
|
||||
$
|
||||
mat(0, 1; 1, 0)
|
||||
$
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem("Extension by linearity")
|
||||
Say we have an arbitrary operation $M$.
|
||||
|
||||
If we know how $M$ acts on $[1]$ and $[0]$, can we compute $M[x]$ for an arbitrary state $[x]$?
|
||||
|
||||
Say $[x] = [x_0, x_1]$.
|
||||
- What is the probability we observe $0$ when we measure $x$?
|
||||
- What is the probability that we observe $M[0]$ when we measure $M x$?
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem(label: "linearextension")
|
||||
Write $M[x_0, x_1]$ in terms of $M[0]$, $M[1]$, $x_0$, and $x_1$.
|
||||
|
||||
#solution[
|
||||
$
|
||||
M mat(x_0; x_1) = x_0 M mat(1; 0) + x_1 M mat(0; 1) = x_0 M[0] + x_1 M[1]
|
||||
$
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#remark() Every matrix represents a _linear_ map, so the following is always true:
|
||||
$ A times (p x + q y) = p A x + q A y $
|
||||
|
||||
@linearextension is just a special case of this fact.
|
||||
514
src/Advanced/Introduction to Quantum/src/parts/02 qubit.typ
Normal file
514
src/Advanced/Introduction to Quantum/src/parts/02 qubit.typ
Normal file
@@ -0,0 +1,514 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
|
||||
// Define quantum notation macros
|
||||
#let ket(content) = $|#content angle.r$
|
||||
#let bra(content) = $angle.l #content|$
|
||||
|
||||
= One Qubit
|
||||
|
||||
Quantum bits (or _qubits_) are very similar to probabilistic bits, but have one major difference: probabilities are replaced with _amplitudes_.
|
||||
|
||||
#v(2mm)
|
||||
|
||||
Of course, a qubit can take the values `0` and `1`, which are denoted $#ket("0")$ and $#ket("1")$.
|
||||
|
||||
Like probabilistic bits, a quantum bit is written as a linear combination of $#ket("0")$ and $#ket("1")$:
|
||||
$ #ket([$psi$]) = psi_0 #ket("0") + psi_1 #ket("1") $
|
||||
|
||||
Such linear combinations are called _superpositions_.
|
||||
|
||||
#v(2mm)
|
||||
|
||||
The $#ket("")$ you see in the expressions above is called a "ket," and denotes a column vector.
|
||||
|
||||
$#ket("0")$ is pronounced "ket zero," and $#ket("1")$ is pronounced "ket one." This is called bra-ket notation.
|
||||
|
||||
#note[*Note:* $#bra("0")$ is called a "bra," but we won't worry about that for now.]
|
||||
|
||||
#v(2mm)
|
||||
|
||||
This is very similar to the "box" $[#h(1.5mm)]$ notation we used for probabilistic bits.
|
||||
|
||||
As before, we will write $#ket("0") = mat(1; 0)$ and $#ket("1") = mat(0; 1)$.
|
||||
|
||||
#v(8mm)
|
||||
|
||||
Recall that probabilistic bits are subject to the restriction that $p_0 + p_1 = 1$.
|
||||
|
||||
Quantum bits have a similar condition: $psi_0^2 + psi_1^2 = 1$.
|
||||
|
||||
Note that this implies that $psi_0$ and $psi_1$ are both in $[-1, 1]$.
|
||||
|
||||
Quantum amplitudes may be negative, but probabilistic bit probabilities cannot.
|
||||
|
||||
#v(2mm)
|
||||
|
||||
If we plot the set of valid quantum states on our plane, we get a unit circle centered at the origin:
|
||||
|
||||
#table(
|
||||
columns: (1fr,),
|
||||
align: center,
|
||||
stroke: none,
|
||||
align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
set-style(content: (frame: "rect", stroke: none, fill: none, padding: .25))
|
||||
scale(150%)
|
||||
|
||||
line(
|
||||
(0, 1.5),
|
||||
(0, 0),
|
||||
(1.5, 0),
|
||||
stroke: black + 0.25mm,
|
||||
)
|
||||
mark((0, 1.5), (0, 2), symbol: ")>", fill: black)
|
||||
mark((1.5, 0), (2, 0), symbol: ")>", fill: black)
|
||||
|
||||
circle((0, 0), radius: 1, stroke: (
|
||||
paint: black,
|
||||
thickness: 0.25mm,
|
||||
dash: "dashed",
|
||||
))
|
||||
|
||||
content((0, 1.5), $p_1$, anchor: "south")
|
||||
content((1.5, 0), $p_0$, anchor: "west")
|
||||
|
||||
circle((0, 1), radius: 0.6mm, fill: oblue, stroke: oblue, name: "00")
|
||||
content("00.west", $#ket("1")$, anchor: "east")
|
||||
|
||||
circle((1, 0), radius: 0.6mm, fill: oblue, stroke: oblue, name: "00")
|
||||
content("00.south", $#ket("0")$, anchor: "north")
|
||||
|
||||
circle((0.87, 0.5), radius: 0.6mm, fill: ored, stroke: ored, name: "00")
|
||||
content("00.east", $#ket(math.psi)$, anchor: "west")
|
||||
})),
|
||||
)
|
||||
|
||||
|
||||
Recall that the set of probabilistic bits forms a line instead:
|
||||
|
||||
#table(
|
||||
columns: (1fr,),
|
||||
align: center,
|
||||
stroke: none,
|
||||
align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
set-style(content: (frame: "rect", stroke: none, fill: none, padding: .25))
|
||||
scale(150%)
|
||||
|
||||
line(
|
||||
(0, 1.5),
|
||||
(0, 0),
|
||||
(1.5, 0),
|
||||
stroke: black + 0.25mm,
|
||||
)
|
||||
mark((0, 1.5), (0, 2), symbol: ")>", fill: black)
|
||||
mark((1.5, 0), (2, 0), symbol: ")>", fill: black)
|
||||
|
||||
|
||||
line(
|
||||
(1, 0),
|
||||
(0, 1),
|
||||
stroke: ored + 1mm,
|
||||
)
|
||||
|
||||
content((0, 1.5), $p_1$, anchor: "south")
|
||||
content((1.5, 0), $p_0$, anchor: "west")
|
||||
|
||||
circle((0, 0), radius: 0.6mm, fill: black, name: "00")
|
||||
content("00.south", $mat(0; 0)$, anchor: "north")
|
||||
|
||||
circle((0, 1), radius: 0.6mm, fill: oblue, stroke: oblue, name: "00")
|
||||
content("00.west", $[1]$, anchor: "east")
|
||||
|
||||
circle((1, 0), radius: 0.6mm, fill: oblue, stroke: oblue, name: "00")
|
||||
content("00.south", $[0]$, anchor: "north")
|
||||
})),
|
||||
)
|
||||
|
||||
|
||||
#problem()
|
||||
In the above unit circle, the counterclockwise angle from $#ket("0")$ to $#ket([$psi$])$ is $30°$.
|
||||
|
||||
Write $#ket([$psi$])$ as a linear combination of $#ket("0")$ and $#ket("1")$.
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
#definition("Measurement I")
|
||||
Just like a probabilistic bit, we must observed $#ket("0")$ or $#ket("1")$ when we measure a qubit.
|
||||
|
||||
If we were to measure $#ket([$psi$]) = psi_0 #ket("0") + psi_1 #ket("1")$, we'd observe either $#ket("0")$ or $#ket("1")$, with the following probabilities:
|
||||
- $cal(P)(#ket("1")) = psi_1^2$
|
||||
- $cal(P)(#ket("0")) = psi_0^2$
|
||||
|
||||
#note[Note that $cal(P)(#ket("0")) + cal(P)(#ket("1")) = 1$.]
|
||||
|
||||
#v(2mm)
|
||||
|
||||
As before, $#ket([$psi$])$ _collapses_ when it is measured: its state becomes that which we observed in our measurement, leaving no trace of the previous superposition.
|
||||
|
||||
#problem()
|
||||
- What is the probability we observe $#ket("0")$ when we measure $#ket([$psi$])$?
|
||||
- What can we observe if we measure $#ket([$psi$])$ a second time?
|
||||
- What are these probabilities for $#ket([$phi$])$?
|
||||
|
||||
|
||||
#table(
|
||||
columns: (1fr,),
|
||||
align: center,
|
||||
stroke: none,
|
||||
align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
set-style(content: (frame: "rect", stroke: none, fill: none, padding: .25))
|
||||
scale(200%)
|
||||
|
||||
line(
|
||||
(0, 1.5),
|
||||
(0, 0),
|
||||
(1.5, 0),
|
||||
stroke: black + 0.25mm,
|
||||
)
|
||||
mark((0, 1.5), (0, 2), symbol: ")>", fill: black)
|
||||
mark((1.5, 0), (2, 0), symbol: ")>", fill: black)
|
||||
|
||||
circle((0, 0), radius: 1, stroke: (
|
||||
paint: black,
|
||||
thickness: 0.25mm,
|
||||
dash: "dashed",
|
||||
))
|
||||
|
||||
content((0, 1.5), $p_1$, anchor: "south")
|
||||
content((1.5, 0), $p_0$, anchor: "west")
|
||||
|
||||
circle((0, 1), radius: 0.6mm, fill: oblue, stroke: oblue, name: "00")
|
||||
content("00.west", $#ket("1")$, anchor: "east")
|
||||
|
||||
circle((1, 0), radius: 0.6mm, fill: oblue, stroke: oblue, name: "00")
|
||||
content("00.south", $#ket("0")$, anchor: "north")
|
||||
|
||||
circle((0.87, 0.5), radius: 0.6mm, fill: ored, stroke: ored, name: "00")
|
||||
content("00.east", $#ket(math.psi)$, anchor: "west")
|
||||
|
||||
arc(
|
||||
(0, 0),
|
||||
start: 0deg,
|
||||
stop: -135deg,
|
||||
anchor: "origin",
|
||||
radius: 0.3,
|
||||
name: "a135",
|
||||
stroke: gray,
|
||||
)
|
||||
mark(
|
||||
"a135.end",
|
||||
135deg,
|
||||
symbol: ")>",
|
||||
fill: gray,
|
||||
stroke: gray,
|
||||
)
|
||||
content("a135.center", text(fill: gray)[$135degree$], anchor: "north")
|
||||
|
||||
|
||||
line((0, 0), (-0.607, -0.607), stroke: (
|
||||
paint: gray,
|
||||
thickness: 0.4mm,
|
||||
dash: "dotted",
|
||||
))
|
||||
mark(
|
||||
(-0.627, -0.627),
|
||||
(-0.708, -0.708),
|
||||
symbol: ")>",
|
||||
fill: gray,
|
||||
stroke: gray,
|
||||
)
|
||||
|
||||
|
||||
arc(
|
||||
(0, 0),
|
||||
start: 0deg,
|
||||
stop: 30deg,
|
||||
anchor: "origin",
|
||||
radius: 0.6,
|
||||
name: "a30",
|
||||
stroke: gray,
|
||||
)
|
||||
mark(
|
||||
"a30.end",
|
||||
120deg,
|
||||
symbol: ")>",
|
||||
fill: gray,
|
||||
stroke: gray,
|
||||
)
|
||||
content("a30.end", text(fill: gray)[$30degree$], anchor: "south")
|
||||
|
||||
|
||||
line((0, 0), (0.87, 0.5), stroke: (
|
||||
paint: gray,
|
||||
thickness: 0.4mm,
|
||||
dash: "dotted",
|
||||
))
|
||||
mark(
|
||||
(0.80, 0.46),
|
||||
(0.87, 0.5),
|
||||
symbol: ")>",
|
||||
fill: gray,
|
||||
stroke: gray,
|
||||
)
|
||||
|
||||
circle(
|
||||
(-0.707, -0.707),
|
||||
radius: 0.6mm,
|
||||
fill: ored,
|
||||
stroke: ored,
|
||||
name: "00",
|
||||
)
|
||||
content("00.west", $#ket(math.phi)$, anchor: "east")
|
||||
})),
|
||||
)
|
||||
|
||||
|
||||
|
||||
#v(1fr)
|
||||
|
||||
As you may have noticed, we don't need two coordinates to fully define a qubit's state. We can get by with one coordinate just as well.
|
||||
|
||||
Instead of referring to each state using its cartesian coordinates $psi_0$ and $psi_1$, we can address it using its _polar angle_ $theta$, measured from $#ket("0")$ counterclockwise:
|
||||
|
||||
#table(
|
||||
columns: (1fr,),
|
||||
align: center,
|
||||
stroke: none,
|
||||
align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
set-style(content: (frame: "rect", stroke: none, fill: none, padding: .25))
|
||||
scale(180%)
|
||||
|
||||
line(
|
||||
(0, 1.5),
|
||||
(0, 0),
|
||||
(1.5, 0),
|
||||
stroke: black + 0.25mm,
|
||||
)
|
||||
mark((0, 1.5), (0, 2), symbol: ")>", fill: black)
|
||||
mark((1.5, 0), (2, 0), symbol: ")>", fill: black)
|
||||
|
||||
circle((0, 0), radius: 1, stroke: (
|
||||
paint: black,
|
||||
thickness: 0.25mm,
|
||||
dash: "dashed",
|
||||
))
|
||||
|
||||
content((0, 1.5), $p_1$, anchor: "south")
|
||||
content((1.5, 0), $p_0$, anchor: "west")
|
||||
|
||||
circle((0, 1), radius: 0.6mm, fill: oblue, stroke: oblue, name: "00")
|
||||
content("00.west", $#ket("1")$, anchor: "east")
|
||||
|
||||
circle((1, 0), radius: 0.6mm, fill: oblue, stroke: oblue, name: "00")
|
||||
content("00.south", $#ket("0")$, anchor: "north")
|
||||
|
||||
circle((0.87, 0.5), radius: 0.6mm, fill: ored, stroke: ored, name: "00")
|
||||
content("00.east", $#ket(math.psi)$, anchor: "west")
|
||||
|
||||
|
||||
arc(
|
||||
(0, 0),
|
||||
start: 0deg,
|
||||
stop: 30deg,
|
||||
anchor: "origin",
|
||||
radius: 0.6,
|
||||
name: "a30",
|
||||
stroke: gray,
|
||||
)
|
||||
mark(
|
||||
"a30.end",
|
||||
120deg,
|
||||
symbol: ")>",
|
||||
fill: gray,
|
||||
stroke: gray,
|
||||
)
|
||||
content("a30.mid", text(fill: gray)[$theta$], anchor: "west")
|
||||
|
||||
|
||||
line((0, 0), (0.87, 0.5), stroke: (
|
||||
paint: gray,
|
||||
thickness: 0.4mm,
|
||||
dash: "dotted",
|
||||
))
|
||||
mark(
|
||||
(0.80, 0.46),
|
||||
(0.87, 0.5),
|
||||
symbol: ")>",
|
||||
fill: gray,
|
||||
stroke: gray,
|
||||
)
|
||||
})),
|
||||
)
|
||||
|
||||
|
||||
#problem()
|
||||
Find $psi_0$ and $psi_1$ in terms of $theta$ for an arbitrary qubit $psi$.
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
#problem()
|
||||
Consider the following qubit states:
|
||||
|
||||
#grid(
|
||||
columns: (1fr, 1fr),
|
||||
$ #ket("+") = (#ket("0") + #ket("1"))/sqrt(2) $,
|
||||
$ #ket("-") = (#ket("0") - #ket("1"))/sqrt(2) $,
|
||||
)
|
||||
|
||||
- Where are these on the unit circle?
|
||||
- What are their polar angles?
|
||||
- What are the probabilities of observing $#ket("0")$ and $#ket("1")$ when measuring $#ket("+")$ and $#ket("-")$?
|
||||
|
||||
|
||||
|
||||
#table(
|
||||
columns: (1fr,),
|
||||
align: center,
|
||||
stroke: none,
|
||||
align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
set-style(content: (frame: "rect", stroke: none, fill: none, padding: .25))
|
||||
scale(300%)
|
||||
|
||||
line(
|
||||
(0, 1.3),
|
||||
(0, 0),
|
||||
(1.3, 0),
|
||||
stroke: black + 0.25mm,
|
||||
)
|
||||
mark((0, 1.3), (0, 2), symbol: ")>", fill: black)
|
||||
mark((1.3, 0), (2, 0), symbol: ")>", fill: black)
|
||||
|
||||
circle((0, 0), radius: 1, stroke: (
|
||||
paint: black,
|
||||
thickness: 0.25mm,
|
||||
dash: "dashed",
|
||||
))
|
||||
|
||||
content((0, 1.3), $p_1$, anchor: "south")
|
||||
content((1.3, 0), $p_0$, anchor: "west")
|
||||
|
||||
circle((0, 1), radius: 0.4mm, fill: oblue, stroke: oblue, name: "00")
|
||||
content("00.west", $#ket("1")$, anchor: "east")
|
||||
|
||||
circle((1, 0), radius: 0.4mm, fill: oblue, stroke: oblue, name: "00")
|
||||
content("00.south", $#ket("0")$, anchor: "north")
|
||||
})),
|
||||
)
|
||||
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#v(1fr)
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
= Operations on One Qubit
|
||||
|
||||
We may apply transformations to qubits just as we apply transformations to probabilistic bits. Again, we'll represent transformations as $2 times 2$ matrices, since we want to map one qubit state to another.
|
||||
|
||||
#note[In other words, we want to map elements of $RR^2$ to elements of $RR^2$.]
|
||||
|
||||
We will call such maps _quantum gates,_ since they are the quantum equivalent of classical logic gates.
|
||||
|
||||
#v(2mm)
|
||||
|
||||
There are two conditions a valid quantum gate $G$ must satisfy:
|
||||
- For any valid state $#ket([$psi$])$, $G #ket([$psi$])$ is a valid state. Namely, $G$ must preserve the length of any vector it is applied to. Recall that the set of valid quantum states is the set of unit vectors in $RR^2$
|
||||
|
||||
- Any quantum gate must be _invertible_. We'll skip this condition for now, and return to it later.
|
||||
|
||||
In short, a quantum gate is a linear map that maps the unit circle to itself. There are only two kinds of linear maps that do this: reflections and rotations.
|
||||
|
||||
#problem()
|
||||
The $X$ gate is the quantum analog of the `not` gate, defined by the following table:
|
||||
- $X #ket("0") = #ket("1")$
|
||||
- $X #ket("1") = #ket("0")$
|
||||
|
||||
Find the matrix $X$.
|
||||
|
||||
#solution[
|
||||
$
|
||||
mat(0, 1; 1, 0)
|
||||
$
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
What is $X #ket("+")$ and $X #ket("-")$?
|
||||
|
||||
#hint[Remember that all matrices are linear maps. What does this mean?]
|
||||
|
||||
#solution[
|
||||
$X #ket("+") = #ket("+")$ and $X #ket("-") = - #ket("-")$ (that is, a negative ket-minus). \
|
||||
Most notably, rememver that $G(a#ket("0") + b #ket("1")) = a G #ket("0") + b G #ket("1")$.
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
In terms of geometric transformations, what does $X$ do to the unit circle?
|
||||
|
||||
#solution[
|
||||
It is a reflection about the $45degree$ axis.
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
#problem()
|
||||
Let $Z$ be a quantum gate defined by the following table:
|
||||
- $Z #ket("0") = #ket("0")$,
|
||||
- $Z #ket("1") = -#ket("1")$.
|
||||
|
||||
What is the matrix $Z$? What are $Z #ket("+")$ and $Z #ket("-")$?
|
||||
|
||||
What is $Z$ as a geometric transformation?
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
Is the map $B$ defined by the table below a valid quantum gate?
|
||||
- $B #ket("0") = #ket("0")$
|
||||
- $B #ket("1") = #ket("+")$
|
||||
|
||||
#hint[Find a $#ket([$psi$])$ so that $B #ket([$psi$])$ is not a valid qubit state]
|
||||
|
||||
#solution[
|
||||
$ B #ket("+") = (1 + sqrt(2))/(2) #ket("0") + 1/2 #ket("1") $
|
||||
|
||||
This has a non-unit length of
|
||||
$
|
||||
(sqrt(2) + 1)/(2)
|
||||
$
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem("Rotation")
|
||||
As we noted earlier, any rotation about the center is a valid quantum gate. Let's derive all transformations of this form.
|
||||
|
||||
- Let $U_theta$ be the matrix that represents a counterclockwise rotation of $theta$ degrees. What is $U #ket("0")$ and $U #ket("1")$?
|
||||
|
||||
- Find the matrix $U_theta$ for an arbitrary $theta$.
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
Say we have a qubit that is either $#ket("+")$ or $#ket("-")$. We do not know which of the two states it is in.
|
||||
|
||||
Using one operation and one measurement, how can we find out, for certain, which qubit we received?
|
||||
|
||||
#v(1fr)
|
||||
126
src/Advanced/Introduction to Quantum/src/parts/03 two qubits.typ
Normal file
126
src/Advanced/Introduction to Quantum/src/parts/03 two qubits.typ
Normal file
@@ -0,0 +1,126 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
|
||||
// Define quantum notation macros
|
||||
#let ket(content) = $|#content angle.r$
|
||||
#let bra(content) = $angle.l #content|$
|
||||
|
||||
= Two Qubits
|
||||
|
||||
#definition()
|
||||
Just as before, we'll represent multi-qubit states as linear combinations of multi-qubit basis states.
|
||||
|
||||
For example, a two-qubit state $#ket("ab")$ is the four-dimensional unit vector
|
||||
$ mat(a; b; c; d) = a #ket("00") + b #ket("01") + c #ket("10") + d #ket("11") $
|
||||
|
||||
As always, multi-qubit states are unit vectors. Thus, $a^2 + b^2 + c^2 + d^2 = 1$ in the two-bit case above.
|
||||
|
||||
#problem()
|
||||
Say we have two qubits $#ket([$psi$])$ and $#ket([$phi$])$.
|
||||
|
||||
Show that $#ket([$psi$]) times.circle #ket([$phi$])$ is always a unit vector (and is thus a valid quantum state).
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#definition("Measurement II")<measureii>
|
||||
Measurement of a two-qubit state works just like measurement of a one-qubit state:
|
||||
|
||||
If we measure $a #ket("00") + b #ket("01") + c #ket("10") + d #ket("11")$, we get one of the four basis states with the following probabilities:
|
||||
|
||||
- $cal(P)(#ket("00")) = a^2$
|
||||
- $cal(P)(#ket("01")) = b^2$
|
||||
- $cal(P)(#ket("10")) = c^2$
|
||||
- $cal(P)(#ket("11")) = d^2$
|
||||
|
||||
As before, the sum of all the above probabilities is $1$.
|
||||
|
||||
#problem()
|
||||
Consider the two-qubit state
|
||||
$#ket([$psi$]) = 1/sqrt(2) #ket("00") + 1/2 #ket("01") + sqrt(3)/4 #ket("10") + 1/4 #ket("11")$
|
||||
|
||||
- If we measure both bits of $#ket([$psi$])$ simultaneously, what is the probability of getting each of $#ket("00")$, $#ket("01")$, $#ket("10")$, and $#ket("11")$?
|
||||
|
||||
- If we measure the ONLY the first qubit, what is the probability we get $#ket("0")$? How about $#ket("1")$?
|
||||
|
||||
#hint[There are two basis states in which the first qubit is $#ket("0")$.]
|
||||
|
||||
- Say we measured the second bit and read $#ket("1")$. If we now measure the first bit, what is the probability of getting $#ket("0")$?
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
#problem()
|
||||
Again, consider the two-qubit state
|
||||
$#ket([$psi$]) = 1/sqrt(2) #ket("00") + 1/2 #ket("01") + sqrt(3)/4 #ket("10") + 1/4 #ket("11")$
|
||||
|
||||
If we measure the first qubit of $#ket([$psi$])$ and get $#ket("0")$, what is the resulting state of $#ket([$psi$])$?
|
||||
|
||||
What would the state be if we'd measured $#ket("1")$ instead?
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
Consider the three-qubit state $#ket([$psi$]) = c_0 #ket("000") + c_1 #ket("001") + ... + c_7 #ket("111")$.
|
||||
|
||||
Say we measure the first two qubits and get $#ket("00")$. What is the resulting state of $#ket([$psi$])$?
|
||||
|
||||
#solution[
|
||||
We measure $#ket("00")$ with probability $c_0^2 + c_1^2$, and $#ket(math.psi)$ collapses to
|
||||
|
||||
#v(3mm)
|
||||
|
||||
$
|
||||
(c_0 #ket("000") + c_1 #ket("001"))/(sqrt(c_0^2 + c_1^2))
|
||||
$
|
||||
]
|
||||
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
#definition("Entanglement")
|
||||
Some product states can be factored into a tensor product of individual qubit states. For example,
|
||||
$
|
||||
1/2 (#ket("00") + #ket("01") + #ket("10") + #ket("11")) = 1/sqrt(2) (#ket("0") + #ket("1")) times.circle 1/sqrt(2) (#ket("0") + #ket("1"))
|
||||
$
|
||||
|
||||
Such states are called _product states._ States that aren't product states are called _entangled_ states.
|
||||
|
||||
#problem()
|
||||
Factor the following product state:
|
||||
$
|
||||
1/(2sqrt(2)) (sqrt(3) #ket("00") - sqrt(3) #ket("01") + #ket("10") - #ket("11"))
|
||||
$
|
||||
|
||||
#solution[
|
||||
|
||||
$
|
||||
(1)/(2 sqrt(2)) (sqrt(3) #ket("00") - sqrt(3) #ket("01") + #ket("10") - #ket("11"))
|
||||
= (sqrt(3)/2 #ket("0") + 1/2 #ket("1") )
|
||||
times.circle
|
||||
( 1/sqrt(2) #ket(0) - 1/sqrt(2) #ket("1"))
|
||||
$
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
Show that the following is an entangled state.
|
||||
$ 1/sqrt(2) #ket("00") + 1/sqrt(2) #ket("11") $
|
||||
|
||||
#solution[
|
||||
$
|
||||
mat(a_0; a_1)
|
||||
times.circle
|
||||
mat(b_0; b_1)
|
||||
=
|
||||
a_0b_0 #ket(00) + a_0b_1 #ket(01) + a_1b_0 #ket(10) + a_1b_1 #ket(11)
|
||||
$
|
||||
|
||||
#v(2mm)
|
||||
|
||||
So, we have that $a_1b_1 = a_0b_0 = sqrt(2)^(-1)$ \
|
||||
But $a_0b_1 = a_1b_0 = 0$, so one of $a_0$ and $b_1$ must be zero. \
|
||||
We thus have a contradiction.
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
@@ -0,0 +1,169 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
|
||||
// Define quantum notation macros
|
||||
#let ket(content) = $|#content angle.r$
|
||||
#let bra(content) = $angle.l #content|$
|
||||
|
||||
= Logic Gates
|
||||
|
||||
#definition("Matrices")
|
||||
Throughout this handout, we've been using matrices. Again, recall that every linear map may be written as a matrix, and that every matrix represents a linear map. For example, if $f: RR^2 -> RR^2$ is a linear map, we can write it as follows:
|
||||
|
||||
$
|
||||
f(#ket("x")) = mat(m_1, m_2; m_3, m_4) mat(x_1; x_2) = mat(m_1 x_1 + m_2 x_2; m_3 x_1 + m_4 x_2)
|
||||
$
|
||||
|
||||
#definition()
|
||||
Before we discussing multi-qubit quantum gates, we need to review to classical logic.
|
||||
|
||||
Of course, a classical logic gate is a linear map from ${0,1}^m$ to ${0,1}^n$
|
||||
|
||||
#problem()<notgatex>
|
||||
The `not` gate is a map defined by the following table:
|
||||
|
||||
- $X #ket("0") = #ket("1")$
|
||||
- $X #ket("1") = #ket("0")$
|
||||
|
||||
Write the `not` gate as a matrix that operates on single-bit vector states.
|
||||
|
||||
That is, find a matrix $X$ so that $X mat(1; 0) = mat(0; 1)$ and $X mat(0; 1) = mat(1; 0)$
|
||||
|
||||
#solution[
|
||||
$
|
||||
X = mat(0, 1; 1, 0)
|
||||
$
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
The `and` gate is a map $BB^2 -> BB$ defined by the following table:
|
||||
|
||||
#align(center, table(
|
||||
columns: 3,
|
||||
stroke: none,
|
||||
table.hline(),
|
||||
[`a`], [`b`], [`a` and `b`],
|
||||
table.hline(),
|
||||
[0], [0], [0],
|
||||
[0], [1], [0],
|
||||
[1], [0], [0],
|
||||
[1], [1], [1],
|
||||
table.hline(),
|
||||
))
|
||||
|
||||
Find a matrix $A$ so that $A #ket("ab")$ works as expected.
|
||||
|
||||
#hint[Remember, we write bits as vectors.]
|
||||
|
||||
#solution[
|
||||
$
|
||||
A = mat(1, 1, 1, 0; 0, 0, 0, 1)
|
||||
$
|
||||
|
||||
#instructornote[
|
||||
Because of the way we represent bits here, we also have the following property: \
|
||||
The columns of $A$ correspond to the output for each input---i.e, $A$ is just a table of outputs. \
|
||||
|
||||
#v(2mm)
|
||||
|
||||
For example, if we look at the first column of $A$ (which is $[1, 0]$), we see: \
|
||||
$A#ket(00) = A[1,0,0,0] = [1,0] = #ket(0)$
|
||||
|
||||
#v(2mm)
|
||||
|
||||
Also with the last column (which is $[0,1]$): \
|
||||
$A#ket(00) = A[0,0,0,1] = [0,1] = #ket(1)$
|
||||
]
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
#remark()
|
||||
The way a quantum circuit handles information is a bit different than the way a classical circuit does. We usually think of logic gates as _functions_: they consume one set of bits, and return another/
|
||||
|
||||
// TODO: and gate (input a, input b, output)
|
||||
|
||||
#v(2mm)
|
||||
|
||||
This model, however, won't work for quantum logic. If we want to understand quantum gates, we need to see them not as _functions_, but as _transformations_. This distinction is subtle, but significant:
|
||||
- functions _consume_ a set of inputs and _produce_ a set of outputs
|
||||
- transformations _change_ a set of objects, without adding or removing any elements
|
||||
|
||||
#v(2mm)
|
||||
|
||||
Our usual logic circuit notation models logic gates as functions—we thus can't use it. We'll need a different diagram to draw quantum circuits.
|
||||
|
||||
#v(1fr)
|
||||
|
||||
First, we'll need a set of bits. For this example, we'll use two, drawn in a vertical array. We'll also add a horizontal time axis, moving from left to right:
|
||||
|
||||
#align(center)[
|
||||
// Quantum circuit diagram showing two qubits over time
|
||||
#box(width: 10cm, height: 4cm)[
|
||||
_[Quantum circuit diagram with time axis would go here]_
|
||||
]
|
||||
]
|
||||
|
||||
In the diagram above, we didn't change our bits—so the labels at the start match those at the end.
|
||||
|
||||
#v(1fr)
|
||||
|
||||
Thus, our circuit forms a grid, with bits ordered vertically and time horizontally. If we want to change our state, we draw transformations as vertical boxes. Every column represents a single transformation on the entire state:
|
||||
|
||||
#align(center)[
|
||||
// Quantum circuit with transformations
|
||||
#box(width: 10cm, height: 4cm)[
|
||||
_[Quantum circuit with transformations $T_1$, $T_2$, $T_3$ would go here]_
|
||||
]
|
||||
]
|
||||
|
||||
Note that the transformations above span the whole state. This is important: we cannot apply transformations to individual bits—we always transform the _entire_ state.
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
*Setup:* Say we want to invert the first bit of a two-bit state. That is, we want a transformation $T$ so that
|
||||
|
||||
#align(center)[
|
||||
// Circuit showing bit flip
|
||||
#box(width: 8cm, height: 3cm)[
|
||||
_[Circuit diagram showing first bit flip would go here]_
|
||||
]
|
||||
]
|
||||
|
||||
In other words, we want a matrix $T$ satisfying the following equalities:
|
||||
- $T #ket("00") = #ket("10")$
|
||||
- $T #ket("01") = #ket("11")$
|
||||
- $T #ket("10") = #ket("00")$
|
||||
- $T #ket("11") = #ket("01")$
|
||||
|
||||
#problem()
|
||||
Find the matrix that corresponds to the above transformation.
|
||||
|
||||
#hint[Remember that $#ket("0") = mat(1; 0)$ and $#ket("1") = mat(0; 1)$. Also, we found earlier that $X = mat(0, 1; 1, 0)$, and of course $I = mat(1, 0; 0, 1)$.]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
*Remark:* We could draw the above transformation as a combination $X$ and $I$ (identity) gate:
|
||||
|
||||
#align(center)[
|
||||
// Circuit with X and I gates
|
||||
#box(width: 6cm, height: 3cm)[
|
||||
_[Circuit diagram with X gate on first qubit, I gate on second would go here]_
|
||||
]
|
||||
]
|
||||
|
||||
We can even omit the $I$ gate, since we now know that transformations affect the whole state:
|
||||
|
||||
#align(center)[
|
||||
// Simplified circuit with just X gate
|
||||
#box(width: 6cm, height: 3cm)[
|
||||
_[Simplified circuit diagram with just X gate on first qubit would go here]_
|
||||
]
|
||||
]
|
||||
|
||||
We're now done: this is how we draw quantum circuits. Don't forget that transformations _always_ affect the whole state—even if our diagram doesn't explicitly state this.
|
||||
|
||||
#pagebreak()
|
||||
@@ -0,0 +1,42 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
|
||||
// Define quantum notation macros
|
||||
#let ket(content) = $|#content angle.r$
|
||||
#let bra(content) = $angle.l #content|$
|
||||
|
||||
= Quantum Gates
|
||||
|
||||
In the previous section, we stated that a quantum gate is a linear map. Let's complete that definition.
|
||||
|
||||
#definition()
|
||||
A quantum gate is a _orthonormal matrix_, which means any gate $G$ satisfies $G G^T = I$.
|
||||
|
||||
This implies the following:
|
||||
|
||||
- $G$ is square. In other words, it has as many rows as it has columns.
|
||||
|
||||
#note[If we think of $G$ as a map, this means that $G$ has as many inputs as it has outputs. This is to be expected: we stated earlier that quantum gates do not destroy or create qubits.]
|
||||
|
||||
- $G$ preserves lengths; i.e $|x| = |G x|$.
|
||||
|
||||
#note[This ensures that $G #ket([$psi$])$ is always a valid state.]
|
||||
|
||||
(You will prove all these properties in any introductory linear algebra course. This isn't a lesson on linear algebra, so you may take them as given today.)
|
||||
|
||||
*Remark:* Let $G$ be a quantum gate. Since quantum gates are, by definition, _linear_ maps, the following holds:
|
||||
|
||||
$ G(a_0 #ket("0") + a_1 #ket("1")) = a_0 G #ket("0") + a_1 G #ket("1") $
|
||||
|
||||
#problem()<cnot>
|
||||
Consider the _controlled not_ (or _cnot_) gate, defined by the following table:
|
||||
- $X_c #ket("00") = #ket("00")$
|
||||
- $X_c #ket("01") = #ket("01")$
|
||||
- $X_c #ket("10") = #ket("11")$
|
||||
- $X_c #ket("11") = #ket("10")$
|
||||
|
||||
In other words, the cnot gate inverts its second bit if its first bit is $#ket("1")$.
|
||||
|
||||
Find the matrix that applies the cnot gate.
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
53
src/Advanced/Introduction to Quantum/src/parts/06 hxh.typ
Normal file
53
src/Advanced/Introduction to Quantum/src/parts/06 hxh.typ
Normal file
@@ -0,0 +1,53 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
|
||||
// Define quantum notation macros
|
||||
#let ket(content) = $|#content angle.r$
|
||||
#let bra(content) = $angle.l #content|$
|
||||
|
||||
= HXH
|
||||
|
||||
Let's return to the quantum circuit diagrams we discussed a few pages ago. Keep in mind that we're working with quantum gates and proper qubits—not classical bits, as we were before.
|
||||
|
||||
#definition("Controlled Inputs")
|
||||
A _control input_ or _inverted control input_ may be attached to any gate. These are drawn as filled and empty circles in our circuit diagrams:
|
||||
|
||||
#align(center)[
|
||||
#grid(columns: (1fr, 1fr),
|
||||
[
|
||||
// Non-inverted control circuit diagram would go here
|
||||
#box(width: 6cm, height: 4cm)[
|
||||
_[Non-inverted control input circuit would go here]_
|
||||
]
|
||||
],
|
||||
[
|
||||
// Inverted control circuit diagram would go here
|
||||
#box(width: 6cm, height: 4cm)[
|
||||
_[Inverted control input circuit would go here]_
|
||||
]
|
||||
]
|
||||
)]
|
||||
|
||||
#v(2mm)
|
||||
|
||||
An $X$ gate with a (non-inverted) control input behaves like an $X$ gate if _all_ its control inputs are $#ket("1")$, and like $I$ otherwise. An $X$ gate with an inverted control inputs does the opposite, behaving like $I$ if its input is $#ket("1")$ and like $X$ otherwise. The two circuits above illustrate this fact—take a look at their inputs and outputs.
|
||||
|
||||
#v(2mm)
|
||||
|
||||
Of course, we can give a gate multiple controls. An $X$ gate with multiple controls behaves like an $X$ gate if...
|
||||
- all non-inverted controls are $#ket("1")$, and
|
||||
- all inverted controls are $#ket("0")$
|
||||
|
||||
...and like $I$ otherwise.
|
||||
|
||||
#problem()
|
||||
What are the final states of the qubits in the diagram below?
|
||||
|
||||
#align(center)[
|
||||
// Multi-control circuit diagram would go here
|
||||
#box(width: 8cm, height: 6cm)[
|
||||
_[Multi-control circuit diagram would go here]_
|
||||
]
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
@@ -0,0 +1,48 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
|
||||
// Define quantum notation macros
|
||||
#let ket(content) = $|#content angle.r$
|
||||
#let bra(content) = $angle.l #content|$
|
||||
|
||||
= Superdense Coding
|
||||
|
||||
Consider the following entangled two-qubit states, called the _bell states_:
|
||||
- $#ket([$Phi^+$]) = 1/sqrt(2) #ket("00") + 1/sqrt(2) #ket("11")$
|
||||
- $#ket([$Phi^-$]) = 1/sqrt(2) #ket("00") - 1/sqrt(2) #ket("11")$
|
||||
- $#ket([$Psi^+$]) = 1/sqrt(2) #ket("01") + 1/sqrt(2) #ket("10")$
|
||||
- $#ket([$Psi^-$]) = 1/sqrt(2) #ket("01") - 1/sqrt(2) #ket("10")$
|
||||
|
||||
#problem()
|
||||
The probabilistic bits we get when measuring any of the above may be called _anticorrelated bits_.
|
||||
|
||||
If we measure the first bit of any of these states and observe $1$, what is the resulting compound state?
|
||||
|
||||
What if we observe $0$ instead?
|
||||
|
||||
Do you see why we can call these bits anticorrelated?
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
Show that the bell states are orthogonal
|
||||
|
||||
#hint[Dot product]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()<bellmeasure>
|
||||
Say we have a pair of qubits in one of the four bell states.
|
||||
|
||||
How can we find out which of the four states we have, with certainty?
|
||||
|
||||
#hint[$H #ket("+") = #ket("0")$, and $H #ket("-") = #ket("1")$]
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
#definition()
|
||||
The $Z$ gate is defined as follows:
|
||||
$ Z mat(psi_0; psi_1) = mat(psi_0; -psi_1) $
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
@@ -0,0 +1,31 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
|
||||
// Define quantum notation macros
|
||||
#let ket(content) = $|#content angle.r$
|
||||
#let bra(content) = $angle.l #content|$
|
||||
|
||||
= Quantum Teleportation
|
||||
|
||||
Superdense coding lets us convert quantum bandwidth into classical bandwidth. Quantum teleportation does the opposite, using two classical bits and an entangled pair to transmit a quantum state.
|
||||
|
||||
*Setup:* Again, suppose Alice and Bob each have half of a $#ket([$Phi^+$])$ state. We'll call the state Alice wants to teleport $#ket(math.psi) = psi_0 #ket("0") + psi_1 #ket("1")$.
|
||||
|
||||
#problem()
|
||||
What is the three-qubit state $#ket(math.psi) #ket([$Phi^+$])$ in terms of $psi_0$ and $psi_1$?
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
To teleport $#ket(math.psi)$, Alice applies the following circuit to her two qubits, where $#ket([$Phi^+_"A"$])$ is her half of $#ket([$Phi^+$])$. She then measures both qubits and sends the result to Bob.
|
||||
|
||||
#align(center)[
|
||||
// Teleportation circuit diagram would go here
|
||||
#box(width: 8cm, height: 4cm)[
|
||||
_[Quantum teleportation circuit diagram would go here]_
|
||||
]
|
||||
]
|
||||
|
||||
What should Bob do so that $#ket([$Phi^+_"B"$])$ takes the state $#ket(math.psi)$ had initially?
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
@@ -251,7 +251,7 @@ What is it, and what is its color? \par
|
||||
\textbf{Part 4:}
|
||||
|
||||
The promoted black bishop on H2 must have been promoted on G1. The pawn which was promoted must have come from G7,
|
||||
since neither of the pawns from F6 or H6 could make a capture to get to the G-file (all six missing white pieces have been accounted for).
|
||||
since neither of the pawns from F6 or H6 could make a capture to get to the G-file (all six missing white pieces have been accouted for).
|
||||
The Pawn from E7 has promoted to the bishop on A2.
|
||||
|
||||
What happened was this: the white pawn from G2 made its capture on H3 while the pawn on G3 was still on H2. This allowed the black pawn
|
||||
|
||||
@@ -1,134 +0,0 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
|
||||
#let markline(s, from, to, c: oblue) = {
|
||||
import cetz.draw: *
|
||||
let del = 0.4 // small line
|
||||
|
||||
let arrow = (
|
||||
symbol: ")>",
|
||||
scale: s * 2.2,
|
||||
fill: c,
|
||||
stroke: c,
|
||||
)
|
||||
|
||||
line(
|
||||
from + ".south",
|
||||
(v => cetz.vector.add(v, (0, -del * s)), from + ".south"),
|
||||
(v => cetz.vector.add(v, (0, (del + 0.4) * s)), to + ".north"),
|
||||
(v => cetz.vector.add(v, (0, 0.4 * s)), to + ".north"),
|
||||
stroke: c + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
to + ".north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
#let marklinetop(s, from, to, del: 0.8, c: oblue) = {
|
||||
import cetz.draw: *
|
||||
|
||||
let arrow = (
|
||||
symbol: ")>",
|
||||
scale: s * 2.2,
|
||||
fill: c,
|
||||
stroke: c,
|
||||
)
|
||||
|
||||
line(
|
||||
from + ".north",
|
||||
(v => cetz.vector.add(v, (0, del * s)), from + ".north"),
|
||||
(v => cetz.vector.add(v, (0, del * s)), to + ".north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2 * s)), to + ".north"),
|
||||
stroke: c + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
to + ".north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
|
||||
#let marklinebot(s, from, to, del: 0.8, c: oblue) = {
|
||||
import cetz.draw: *
|
||||
|
||||
let arrow = (
|
||||
symbol: ")>",
|
||||
scale: s * 2.2,
|
||||
fill: c,
|
||||
stroke: c,
|
||||
)
|
||||
|
||||
line(
|
||||
from + ".south",
|
||||
(v => cetz.vector.add(v, (0, -del * s)), from + ".south"),
|
||||
(v => cetz.vector.add(v, (0, -del * s)), to + ".south"),
|
||||
(v => cetz.vector.add(v, (0, -0.4 * s)), to + ".south"),
|
||||
stroke: c + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
to + ".south",
|
||||
90deg,
|
||||
..arrow,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
|
||||
#let marklinebotswap(s, from, to, del: 0.8, c: oblue) = {
|
||||
import cetz.draw: *
|
||||
|
||||
let arrow = (
|
||||
symbol: ")>",
|
||||
scale: s * 2.2,
|
||||
fill: c,
|
||||
stroke: c,
|
||||
)
|
||||
|
||||
line(
|
||||
from + ".south",
|
||||
(v => cetz.vector.add(v, (0, -del * s)), from + ".south"),
|
||||
(v => cetz.vector.add(v, (0.5 * s, -del * s)), to + ".south"),
|
||||
(v => cetz.vector.add(v, (0.5 * s, -del * s)), to + ".south"),
|
||||
(v => cetz.vector.add(v, (0.5 * s, del * s)), to + ".north"),
|
||||
(v => cetz.vector.add(v, (0, del * s)), to + ".north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2 * s)), to + ".north"),
|
||||
stroke: c + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
to + ".north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
}
|
||||
|
||||
#let marklinetopswap(s, from, to, del: 0.8, c: oblue) = {
|
||||
import cetz.draw: *
|
||||
|
||||
let arrow = (
|
||||
symbol: ")>",
|
||||
scale: s * 2.2,
|
||||
fill: c,
|
||||
stroke: c,
|
||||
)
|
||||
|
||||
line(
|
||||
from + ".north",
|
||||
(v => cetz.vector.add(v, (0, del * s)), from + ".north"),
|
||||
(v => cetz.vector.add(v, (0.5 * s, del * s)), to + ".north"),
|
||||
(v => cetz.vector.add(v, (0.5 * s, del * s)), to + ".north"),
|
||||
(v => cetz.vector.add(v, (0.5 * s, -del * s)), to + ".south"),
|
||||
(v => cetz.vector.add(v, (0, -del * s)), to + ".south"),
|
||||
(v => cetz.vector.add(v, (0, -0.2 * s)), to + ".south"),
|
||||
stroke: c + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
to + ".south",
|
||||
90deg,
|
||||
..arrow,
|
||||
)
|
||||
}
|
||||
58
src/Advanced/Symmetric Groups/main.tex
Executable file
58
src/Advanced/Symmetric Groups/main.tex
Executable file
@@ -0,0 +1,58 @@
|
||||
% use [nosolutions] flag to hide solutions.
|
||||
% use [solutions] flag to show solutions.
|
||||
\documentclass[
|
||||
solutions,
|
||||
singlenumbering
|
||||
]{../../../lib/tex/handout}
|
||||
\usepackage{../../../lib/tex/macros}
|
||||
\usetikzlibrary{calc}
|
||||
|
||||
\uptitlel{Advanced 2}
|
||||
\uptitler{\smallurl{}}
|
||||
\title{Symmetric Groups}
|
||||
\subtitle{Prepared by Mark on \today{}}
|
||||
|
||||
|
||||
|
||||
\def\line#1#2{
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(#1)
|
||||
-- ($(#1) + (0, -1)$)
|
||||
-- ($(#2) + (0,1)$)
|
||||
-- (#2);
|
||||
}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\maketitle
|
||||
|
||||
\input{parts/0 intro}
|
||||
\input{parts/1 cycle}
|
||||
\input{parts/2 groups}
|
||||
\input{parts/3 subgroup}
|
||||
|
||||
|
||||
\section{Bonus problems}
|
||||
|
||||
\problem{}
|
||||
Show that $x \in \mathbb{Z}^+$ has a multiplicative inverse mod $n$ iff $\text{gcd}(x, n) = 1$
|
||||
|
||||
\vfill
|
||||
|
||||
\problem{}
|
||||
Let $\sigma = (\sigma_1 \sigma_2 ... \sigma_k)$ be a $k$-cycle in $S_n$, and let $\tau$ be an arbitrary element of $S_n$. \par
|
||||
Show that $\tau \sigma \tau^{-1}$ = $\bigl(\tau(\sigma_1), \tau(\sigma_2), ..., \tau(\sigma_k)\bigr)$ \par
|
||||
\hint{As usual, $\tau$ is a permutation. Thus, $\tau(x)$ is the value at position $x$ after applying $\tau$.}
|
||||
|
||||
\vfill
|
||||
|
||||
\problem{}
|
||||
Show that the set $\Bigl\{ (1, 2),~ (1,2,...,n) \Bigr\}$ generates $S_n$.
|
||||
\vfill
|
||||
|
||||
% TODO: (a second day?)
|
||||
% alternating group
|
||||
% type and sign and conjugation
|
||||
% isomorphisms & automorphisms
|
||||
% automorphism groups
|
||||
\end{document}
|
||||
@@ -1,35 +0,0 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
|
||||
#show: handout.with(
|
||||
title: [Symmetric Groups],
|
||||
by: "Mark",
|
||||
)
|
||||
|
||||
#include "parts/00 intro.typ"
|
||||
#pagebreak()
|
||||
|
||||
#include "parts/01 cycle.typ"
|
||||
#pagebreak()
|
||||
|
||||
#include "parts/02 groups.typ"
|
||||
#pagebreak()
|
||||
|
||||
#include "parts/03 subgroup.typ"
|
||||
#pagebreak()
|
||||
|
||||
= Bonus problems
|
||||
|
||||
#problem()
|
||||
Show that $x in ZZ^+$ has a multiplicative inverse mod $n$ iff $gcd(x, n) = 1$
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
Let $sigma = (sigma_1 sigma_2 ... sigma_k)$ be a $k$-cycle in $S_n$, and let $tau$ be an arbitrary element of $S_n$. \
|
||||
Show that $tau sigma tau^(-1)$ = $(tau(sigma_1), tau(sigma_2), ..., tau(sigma_k))$ \
|
||||
#hint[$tau$ is a permutation, so $tau(x)$ is the value at position $x$ after applying $tau$.]
|
||||
|
||||
#v(1fr)
|
||||
#problem()
|
||||
Show that the set ${ (1, 2), (1,2,...,n)}$ generates $S_n$.
|
||||
#v(1fr)
|
||||
199
src/Advanced/Symmetric Groups/parts/0 intro.tex
Normal file
199
src/Advanced/Symmetric Groups/parts/0 intro.tex
Normal file
@@ -0,0 +1,199 @@
|
||||
\section{Introduction}
|
||||
|
||||
|
||||
\definition{}
|
||||
Informally, a \textit{permutation} of a collection of $n$ objects is an ordering of these $n$ objects. \par
|
||||
For example, a few permutations of $\texttt{A}, \texttt{B}, \texttt{C}, \texttt{D}$ are $\texttt{ABCD}$,
|
||||
$\texttt{BCDA}$, and $\texttt{DACB}$. \par
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
This, however, isn't the definition we'll use today. Instead of defining permutations as \say{ordered lists,}
|
||||
(as we do above), we'll define them as functions. Our first goal today is to make sense of this definition.
|
||||
|
||||
|
||||
|
||||
\definition{Permutations}
|
||||
Let $\Omega$ be an arbitrary set of $n$ objects. \par
|
||||
A \textit{permutation} on $\Omega$ is a map from $\Omega$ to itself that produces a \textit{unique} output for each input. \par
|
||||
\note{In other words, if $a$ and $b$ are different, $f(a)$ and $f(b)$ must also be different.}
|
||||
|
||||
|
||||
\footnotetext{The words \say{function} and \say{map} are equivalent.}
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
For example, consider $\{1, 2, 3\}$. \par
|
||||
One permutation on this set can be defined as follows: \par
|
||||
\begin{itemize}
|
||||
\item $f(1) = 3$
|
||||
\item $f(2) = 1$
|
||||
\item $f(3) = 2$
|
||||
\end{itemize}
|
||||
|
||||
If we take the array $123$ and apply
|
||||
|
||||
|
||||
\problem{}
|
||||
List all permutations on three objects. \par
|
||||
How many permutations of $n$ objects are there?
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
\problem{}
|
||||
What map corresponds to the permutation $[321]$?
|
||||
|
||||
|
||||
\vfill
|
||||
|
||||
\problem{}
|
||||
What map corresponds to the \say{do-nothing} permutation? \par
|
||||
Write it as a function and in square-bracket notation. \par
|
||||
\note[Note]{We usually call this the \textit{trivial permutation}}
|
||||
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
|
||||
|
||||
We can visualize permutations with a \textit{string diagram}, shown below. \par
|
||||
The arrows in this diagram denote the image of $f$ for each possible input.
|
||||
Two examples are below:
|
||||
|
||||
\vspace{2mm}
|
||||
\hfill
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (1a) at (0, 0.5) {1};
|
||||
\node (2a) at (1, 0.5) {2};
|
||||
\node (3a) at (2, 0.5) {3};
|
||||
\node (4a) at (3, 0.5) {4};
|
||||
|
||||
\node (1b) at (0, -2) {1};
|
||||
\node (3b) at (1, -2) {3};
|
||||
\node (4b) at (2, -2) {4};
|
||||
\node (2b) at (3, -2) {2};
|
||||
|
||||
\line{1a}{1b}
|
||||
\line{2a}{2b}
|
||||
\line{3a}{3b}
|
||||
\line{4a}{4b}
|
||||
\end{tikzpicture}
|
||||
\hfill
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (1a) at (0, 0.5) {1};
|
||||
\node (2a) at (1, 0.5) {2};
|
||||
\node (3a) at (2, 0.5) {3};
|
||||
\node (4a) at (3, 0.5) {4};
|
||||
|
||||
\node (2b) at (0, -2) {2};
|
||||
\node (1b) at (1, -2) {1};
|
||||
\node (3b) at (2, -2) {3};
|
||||
\node (4b) at (3, -2) {4};
|
||||
|
||||
\line{1a}{1b}
|
||||
\line{2a}{2b}
|
||||
\line{3a}{3b}
|
||||
\line{4a}{4b}
|
||||
\end{tikzpicture}
|
||||
\hfill\null
|
||||
\vspace{2mm}
|
||||
|
||||
|
||||
Note that in all our examples thus far, the objects in our set have an implicit order.
|
||||
This is only for convenience. The elements of $\Omega$ are not ordered (it is a \textit{set}, after all),
|
||||
and we may present them however we wish.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\vspace{1cm}
|
||||
|
||||
For example, consider the diagrams below. \par
|
||||
On the left, 1234 are ordered as usual. In the middle, they are ordered alphabetically. \par
|
||||
The rightmost diagram uses arbitrary, meaningless labels.
|
||||
|
||||
\vspace{2mm}
|
||||
\hfill
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (1a) at (0, 0.5) {1};
|
||||
\node (2a) at (1, 0.5) {2};
|
||||
\node (3a) at (2, 0.5) {3};
|
||||
\node (4a) at (3, 0.5) {4};
|
||||
|
||||
\node (2b) at (0, -2) {2};
|
||||
\node (1b) at (1, -2) {1};
|
||||
\node (3b) at (2, -2) {3};
|
||||
\node (4b) at (3, -2) {4};
|
||||
|
||||
\line{1a}{1b}
|
||||
\line{2a}{2b}
|
||||
\line{3a}{3b}
|
||||
\line{4a}{4b}
|
||||
\end{tikzpicture}
|
||||
\hfill
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (4a) at (0, 0.5) {4};
|
||||
\node (1a) at (1, 0.5) {1};
|
||||
\node (3a) at (2, 0.5) {3};
|
||||
\node (2a) at (3, 0.5) {2};
|
||||
|
||||
\node (1b) at (0, -2) {1};
|
||||
\node (4b) at (1, -2) {4};
|
||||
\node (3b) at (2, -2) {3};
|
||||
\node (2b) at (3, -2) {2};
|
||||
|
||||
\line{1a}{1b}
|
||||
\line{2a}{2b}
|
||||
\line{3a}{3b}
|
||||
\line{4a}{4b}
|
||||
\end{tikzpicture}
|
||||
\hfill
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (1a) at (0, 0.5) {$\triangle$};
|
||||
\node (2a) at (1, 0.5) {$\divideontimes$};
|
||||
\node (3a) at (2, 0.5) {$\circledcirc$};
|
||||
\node (4a) at (3, 0.5) {$\boxdot$};
|
||||
|
||||
\node (2b) at (0, -2) {$\divideontimes$};
|
||||
\node (1b) at (1, -2) {$\triangle$};
|
||||
\node (3b) at (2, -2) {$\circledcirc$};
|
||||
\node (4b) at (3, -2) {$\boxdot$};
|
||||
|
||||
\line{1a}{1b}
|
||||
\line{2a}{2b}
|
||||
\line{3a}{3b}
|
||||
\line{4a}{4b}
|
||||
\end{tikzpicture}
|
||||
\hfill\null
|
||||
\vspace{2mm}
|
||||
|
||||
|
||||
It shouldn't be hard to see that despite the different \say{output} order (2134 and 1432), \par
|
||||
the same permutation is depicted in all three diagrams. This example demonstrates two things:
|
||||
\begin{itemize}[itemsep=2mm]
|
||||
\item First, the names of the items in our set do not have any meaning. \par
|
||||
$\Omega$ is just a set of $n$ arbitrary things, which we may label however we like.
|
||||
|
||||
\item Second, permutations are verbs. We do not care about the \say{output} of a certain permutation,
|
||||
we care about what it \textit{does}. We could, for example, describe the permutation above as
|
||||
\say{swap the first two of four elements.}
|
||||
\end{itemize}
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
|
||||
Why, then, do we order our elements when we talk about permutations? As noted before, this is for convenience.
|
||||
If we assign a natural order to the elements of $\Omega$ (say, 1234), we can identify permutations by simply listing
|
||||
their output:
|
||||
Clearly, $[1234]$ represents the trivial permutation, $[2134]$ represents \say{swap first two,}
|
||||
and $[4123]$ represents \say{cycle right.}
|
||||
|
||||
\problem{}
|
||||
Draw string diagrams for $[4123]$ and $[2341]$.
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
@@ -1,378 +0,0 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
#import "../macros.typ": *
|
||||
|
||||
= Introduction
|
||||
|
||||
#definition()
|
||||
Informally, a _permutation_ on a collection of $n$ objects is an ordering of these $n$ objects.
|
||||
|
||||
For example, a few permutations of `A`, `B`, `C`, and `D` are `ABCD`, `BCDA`, and `DACB`.
|
||||
|
||||
#v(2mm)
|
||||
|
||||
This, however, isn't the definition we'll use today.
|
||||
Instead of defining permutations as "ordered lists" \
|
||||
(like we do above), we'll define them as _functions_ on finite sets. \
|
||||
Our first goal today is to make sense of this definition.
|
||||
|
||||
|
||||
#definition("Permutations")
|
||||
Let $Omega$ be a set of $n$ arbitrary objects.
|
||||
|
||||
A _permutation_ $f$ on $Omega$ is a map#footnote[The words "function" and "map" are equivalent.]
|
||||
from $Omega$ to itself that produces a _unique_ output for each input.
|
||||
|
||||
#note[This means that if $a$ and $b$ are different, $f(a)$ and $f(b)$ must also be different.]
|
||||
|
||||
|
||||
|
||||
#v(2mm)
|
||||
|
||||
For example, consider ${1, 2, 3}$. \
|
||||
One permutation on this set can be defined as follows:
|
||||
- $f(1) = 3$
|
||||
- $f(2) = 1$
|
||||
- $f(3) = 2$
|
||||
|
||||
If we take the array $123$ and apply $f$, we get $312$.
|
||||
|
||||
#problem()
|
||||
List all permutations on three objects. \
|
||||
How many permutations of $n$ objects are there?
|
||||
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
What map corresponds to the permutation that produces the array `312` from the array `123`?
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
What map corresponds to the "do-nothing" permutation?
|
||||
|
||||
Write it as a function and in square-bracket notation.
|
||||
|
||||
#note([We will call this the _trivial permutation_])
|
||||
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
We can visualize a permutation using a _string diagram_.
|
||||
The arrows in this diagram denote \
|
||||
the output of $f$ for each possible input.
|
||||
Two examples are below:
|
||||
|
||||
#table(
|
||||
columns: (1fr, 1fr),
|
||||
align: center,
|
||||
stroke: none,
|
||||
align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
let s = 0.5 // scale
|
||||
|
||||
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), $1$, name: "1b")
|
||||
content((1 * s, 0 * s), $3$, name: "3b")
|
||||
content((2 * s, 0 * s), $4$, name: "4b")
|
||||
content((3 * s, 0 * s), $2$, name: "2b")
|
||||
|
||||
markline(s, "1a", "1b")
|
||||
markline(s, "2a", "2b")
|
||||
markline(s, "3a", "3b")
|
||||
markline(s, "4a", "4b")
|
||||
})),
|
||||
|
||||
align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
let s = 0.5 // scale
|
||||
|
||||
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")
|
||||
|
||||
markline(s, "1a", "1b")
|
||||
markline(s, "2a", "2b")
|
||||
markline(s, "3a", "3b")
|
||||
markline(s, "4a", "4b")
|
||||
})),
|
||||
)
|
||||
|
||||
Note that the elements of the set we are permuting are not ordered. (it is a _set_, after all!) \
|
||||
For example, consider the diagrams below.
|
||||
On the left, 1234 are ordered as usual. \
|
||||
In the middle, they are ordered alphabetically. \
|
||||
The rightmost diagram uses arbitrary, meaningless labels.
|
||||
|
||||
#v(2mm)
|
||||
|
||||
#table(
|
||||
columns: (1fr, 1fr, 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")
|
||||
|
||||
line(
|
||||
"1a.south",
|
||||
(v => cetz.vector.add(v, (0, -del)), "1a.south"),
|
||||
(v => cetz.vector.add(v, (0, del + 0.2)), "1b.north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2)), "1b.north"),
|
||||
stroke: oblue + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
"1b.north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
|
||||
line(
|
||||
"2a.south",
|
||||
(v => cetz.vector.add(v, (0, -del)), "2a.south"),
|
||||
(v => cetz.vector.add(v, (0, del + 0.2)), "2b.north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2)), "2b.north"),
|
||||
stroke: oblue + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
"2b.north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
|
||||
line(
|
||||
"3a.south",
|
||||
(v => cetz.vector.add(v, (0, -del)), "3a.south"),
|
||||
(v => cetz.vector.add(v, (0, del + 0.2)), "3b.north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2)), "3b.north"),
|
||||
stroke: oblue + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
"3b.north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
|
||||
line(
|
||||
"4a.south",
|
||||
(v => cetz.vector.add(v, (0, -del)), "4a.south"),
|
||||
(v => cetz.vector.add(v, (0, del + 0.2)), "4b.north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2)), "4b.north"),
|
||||
stroke: oblue + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
"4b.north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
})),
|
||||
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), $4$, name: "4a")
|
||||
content((1 * s, 3 * s), $1$, name: "1a")
|
||||
content((2 * s, 3 * s), $3$, name: "3a")
|
||||
content((3 * s, 3 * s), $2$, name: "2a")
|
||||
|
||||
content((0 * s, 0 * s), $1$, name: "1b")
|
||||
content((1 * s, 0 * s), $4$, name: "4b")
|
||||
content((2 * s, 0 * s), $3$, name: "3b")
|
||||
content((3 * s, 0 * s), $2$, name: "2b")
|
||||
|
||||
line(
|
||||
"1a.south",
|
||||
(v => cetz.vector.add(v, (0, -del)), "1a.south"),
|
||||
(v => cetz.vector.add(v, (0, del + 0.2)), "1b.north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2)), "1b.north"),
|
||||
stroke: oblue + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
"1b.north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
|
||||
line(
|
||||
"2a.south",
|
||||
(v => cetz.vector.add(v, (0, -del)), "2a.south"),
|
||||
(v => cetz.vector.add(v, (0, del + 0.2)), "2b.north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2)), "2b.north"),
|
||||
stroke: oblue + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
"2b.north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
|
||||
line(
|
||||
"3a.south",
|
||||
(v => cetz.vector.add(v, (0, -del)), "3a.south"),
|
||||
(v => cetz.vector.add(v, (0, del + 0.2)), "3b.north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2)), "3b.north"),
|
||||
stroke: oblue + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
"3b.north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
|
||||
line(
|
||||
"4a.south",
|
||||
(v => cetz.vector.add(v, (0, -del)), "4a.south"),
|
||||
(v => cetz.vector.add(v, (0, del + 0.2)), "4b.north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2)), "4b.north"),
|
||||
stroke: oblue + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
"4b.north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
})),
|
||||
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), $ast.circle$, name: "4a")
|
||||
content((1 * s, 3 * s), $hexa.stroked$, name: "1a")
|
||||
content((2 * s, 3 * s), $triangle.stroked.b$, name: "3a")
|
||||
content((3 * s, 3 * s), $\#$, name: "2a")
|
||||
|
||||
content((0 * s, 0 * s), $hexa.stroked$, name: "1b")
|
||||
content((1 * s, 0 * s), $ast.circle$, name: "4b")
|
||||
content((2 * s, 0 * s), $triangle.stroked.b$, name: "3b")
|
||||
content((3 * s, 0 * s), $\#$, name: "2b")
|
||||
|
||||
line(
|
||||
"1a.south",
|
||||
(v => cetz.vector.add(v, (0, -del)), "1a.south"),
|
||||
(v => cetz.vector.add(v, (0, del + 0.2)), "1b.north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2)), "1b.north"),
|
||||
stroke: oblue + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
"1b.north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
|
||||
line(
|
||||
"2a.south",
|
||||
(v => cetz.vector.add(v, (0, -del)), "2a.south"),
|
||||
(v => cetz.vector.add(v, (0, del + 0.2)), "2b.north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2)), "2b.north"),
|
||||
stroke: oblue + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
"2b.north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
|
||||
line(
|
||||
"3a.south",
|
||||
(v => cetz.vector.add(v, (0, -del)), "3a.south"),
|
||||
(v => cetz.vector.add(v, (0, del + 0.2)), "3b.north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2)), "3b.north"),
|
||||
stroke: oblue + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
"3b.north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
|
||||
line(
|
||||
"4a.south",
|
||||
(v => cetz.vector.add(v, (0, -del)), "4a.south"),
|
||||
(v => cetz.vector.add(v, (0, del + 0.2)), "4b.north"),
|
||||
(v => cetz.vector.add(v, (0, 0.2)), "4b.north"),
|
||||
stroke: oblue + s * 1mm,
|
||||
)
|
||||
mark(
|
||||
"4b.north",
|
||||
270deg,
|
||||
..arrow,
|
||||
)
|
||||
})),
|
||||
)
|
||||
|
||||
#v(2mm)
|
||||
|
||||
It shouldn't be hard to see that despite the different "output" each diagram displays \
|
||||
($2134$, $1432$, and $hexa.stroked ast.circle triangle.stroked.b \#$), the same permutation ("swap first two") is shown in each.
|
||||
|
||||
Observe the following:
|
||||
- The "names" of the items in our set do not have any meaning. \
|
||||
We are interested in sets of $n$ arbitrary things, which we may label however we like.
|
||||
- Permutations are _verbs_. \
|
||||
We do not care about the "output" of a certain permutation. Rather, we care about what it _does_. \
|
||||
We could, for example, describe the permutation in the above three diagrams as "swap the first two elements."
|
||||
|
||||
|
||||
#definition("Square Brackets")
|
||||
However, elements with an implicit order (1, 2, 3, ...) are convenient. \
|
||||
Such sets let us denote a permutation by writing the array it produces \
|
||||
after transforming the "reference order" $123...n$.
|
||||
|
||||
We will call this _square-bracket notation_. \
|
||||
$[312]$ denotes the permutation that produces $312$ when applied to $123$.
|
||||
|
||||
#problem()
|
||||
Draw string diagrams for $[4123]$ and $[2341]$.
|
||||
|
||||
#v(1fr)
|
||||
@@ -1,635 +0,0 @@
|
||||
#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)
|
||||
@@ -1,139 +0,0 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
#import "../macros.typ": *
|
||||
|
||||
= Groups (review)
|
||||
|
||||
#definition()
|
||||
Before we continue, we must introduce a bit of notation:
|
||||
- $S_n$ is the set of permutations on $n$ objects.
|
||||
- $ZZ_n$ is the set of integers mod $n$.
|
||||
|
||||
- $ZZ_n^times$ is the set of integers mod $n$ with multiplicative inverses. \
|
||||
In other words, it is the set of integers smaller than $n$ and coprime to $n$.#footnote[We proved this in another handout, but you may take it as fact here.] \
|
||||
For example, $ZZ_12^times = {1, 5, 7, 11}$.
|
||||
|
||||
#problem()
|
||||
What are the elements of $S_3$? #hint[Use cycle notation] \
|
||||
How about $ZZ_17^times$?
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#definition()
|
||||
A _group_ $(G, *)$ consists of a set $G$ and an operator $*$. \
|
||||
Groups always have the following properties:
|
||||
|
||||
+ $G$ is closed under $*$. In other words, $a, b in G => a * b in G$.
|
||||
+ $*$ is _associative_: $(a * b) * c = a * (b * c)$ for all $a,b,c in G$
|
||||
+ There is an _identity_ $e in G$, so that $a * e = e * a = a$ for all $a in G$.
|
||||
+ For any $a in G$, there exists a $b in G$ so that $a * b = b * a = e$. $b$ is called the _inverse_ of $a$. \
|
||||
This element is written as $-a$ if our operator is addition and $a^(-1)$ otherwise.
|
||||
|
||||
Any pair $(G, *)$ that satisfies these properties is a group.
|
||||
|
||||
#problem()
|
||||
Is $(ZZ_5, +)$ a group? \
|
||||
Is $(ZZ_5, -)$ a group? \
|
||||
#note[$+$ and $-$ refer to the usual operations in modular arithmetic.]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
What is the group with the fewest number of elements?
|
||||
|
||||
#solution[
|
||||
Let $(G, star)$ be our group, where $G = {x}$ and $star$ is defined by $x star x = x$
|
||||
|
||||
Verifying that the trivial group is a group is trivial.
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#problem()
|
||||
Show that function composition is associative
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
Show that $S_n$ is a group under composition.
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
Let $(G, *)$ be a group with finitely many elements, and let $a in G$. \
|
||||
Show that there is an $n$ in $in ZZ^+$ so that $a^n = e$ \
|
||||
#hint[$a^n = a * a * ... * a$ repeated $n$ times.]
|
||||
|
||||
#v(2mm)
|
||||
|
||||
The smallest such $n$ defines the _order_ of $g$.
|
||||
|
||||
#hint[
|
||||
We've already done a special case of this problem! \
|
||||
Find it in this handout, then rewrite your proof for an arbitrary (finite) group.
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
What is the order of 5 in $(ZZ_25, +)$? \
|
||||
What is the order of 2 in $(ZZ_17^times, times)$? \
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
|
||||
|
||||
|
||||
#definition("Generator", label: "gendef")
|
||||
Let $G$ be a group, and let $g$ be an element of $G$. \
|
||||
We say $g$ is a _generator_ if every other element of $G$ may be written as a power of $g$. \
|
||||
|
||||
#problem()
|
||||
Let $G$ be a group of $n$ elements. \
|
||||
If $g$ is a generator, what is its order? \
|
||||
Provide a proof.
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
Find the two generators in $(ZZ, +)$ \
|
||||
Then, find all generators of $(ZZ_5, +)$
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
How many groups have only one generator?
|
||||
|
||||
#solution[
|
||||
Only one: the trivial group. The inverse of a generator is also a generator!
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#definition()
|
||||
Let $S$ be a subset of the elements in $G$. \
|
||||
We say that $S$ _generates_ $G$ if every element of $G$ may be written as a product of elements in $S$. \
|
||||
#note(type: "Note")[This is an extension of @gendef.]
|
||||
|
||||
#problem()
|
||||
We've already found a few generating sets of $S_n$. What are they?
|
||||
|
||||
#solution[
|
||||
The following sets generate $S_n$:
|
||||
- All transpositions
|
||||
- All transpositions of the form $(1, k)$
|
||||
- All adjacent transpositions
|
||||
|
||||
#v(2mm)
|
||||
|
||||
The smallest generating set of $S_n$ consists of the transposition $(12)$ and the $n$-cycle $(1,2,...,n)$. \
|
||||
The proof of this is a bonus problem later in the handout.
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
@@ -1,172 +0,0 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
#import "../macros.typ": *
|
||||
|
||||
= Subgroups
|
||||
|
||||
#problem(label: "s2s3share")
|
||||
What elements do $S_2$ and $S_3$ share?
|
||||
|
||||
#v(2cm)
|
||||
|
||||
|
||||
Consider the sets $\{1, 2\}$ and $\{1,2,3\}$. Clearly, $\{1, 2\} subset \{1, 2, 3\}$. \
|
||||
Can we say something similar about $S_2$ and $S_3$?
|
||||
|
||||
#v(2mm)
|
||||
|
||||
Looking at @s2s3share, we may want to say that $S_2 subset S_3$ since every element of $S_2$ is in $S_3$. \
|
||||
This however, isn't as interesting as it could be. Remember that $S_2$ and $S_3$ are _groups_, not _sets_: \
|
||||
their elements come with structure, which the "subset" relation does not capture.
|
||||
|
||||
#v(2mm)
|
||||
|
||||
To account for this, we'll define a similar relation: subgroups.
|
||||
|
||||
#definition("Subgroup")
|
||||
Let $G$ and $G'$ be groups. We say $G'$ is a _subgroup_ of $G$ (and write $G' subset G$) if the following are true:\
|
||||
(Note that $x, y$ are elements of $G$, and $x y$ is multiplication in $G$)
|
||||
- the set of elements in $G'$ is a subset of the set of elements in $G$.
|
||||
- the identity of $G$ is in $G'$
|
||||
- $x,y in G' => x y in G'$
|
||||
- $x in G' => x^(-1) in G'$
|
||||
|
||||
The above definition may look fairly scary, but the idea behind a subgroup is simple. \
|
||||
Consider $S_3$ and $S_4$, the groups of permutations of $3$ and $4$ elements. \
|
||||
|
||||
#v(2mm)
|
||||
|
||||
Say we have a set of four elements and only look at the first three. \
|
||||
$S_3$ fully describes all the ways we can arrange those three elements:
|
||||
|
||||
#table(
|
||||
columns: (1fr,),
|
||||
align: center,
|
||||
stroke: none,
|
||||
align(center, cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
let s = 0.7
|
||||
|
||||
set-style(content: (frame: "rect", stroke: none, fill: white, padding: .1))
|
||||
content((0 * s, 0.5 * s), $1$, name: "1a")
|
||||
content((1 * s, 0.5 * s), $2$, name: "2a")
|
||||
content((2 * s, 0.5 * s), $3$, name: "3a")
|
||||
content((3 * s, 0.5 * s), $4$, name: "4a")
|
||||
|
||||
content((0 * s, -2 * s), $2$, name: "2b")
|
||||
content((1 * s, -2 * s), $3$, name: "3b")
|
||||
content((2 * s, -2 * s), $1$, name: "1b")
|
||||
content((3 * s, -2 * s), $4$, name: "4b")
|
||||
|
||||
|
||||
// These arrows are wrong,
|
||||
// but create a symmetric picture
|
||||
markline(s, "1a", "1b")
|
||||
markline(s, "2a", "3b")
|
||||
markline(s, "3a", "2b")
|
||||
markline(s, "4a", "4b", c: ogreen)
|
||||
|
||||
content(
|
||||
(1 * s, -0.55 * s),
|
||||
$S_3$,
|
||||
fill: white,
|
||||
stroke: oblue + 0.6mm,
|
||||
padding: 1.3mm,
|
||||
)
|
||||
})),
|
||||
)
|
||||
|
||||
|
||||
#problem()
|
||||
Show that $S_3$ is a subgroup of $S_4$.
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
|
||||
|
||||
#definition("Isomorphism")
|
||||
Let $G$ and $H$ be groups. We say that $G$ and $H$ are _isomorphic_ (and write $G tilde.equiv H$) \
|
||||
if there is a bijection $f: G -> H$ with the following properties:
|
||||
- $f(e_G) = e_H$, where $e_G$ is the identity in $G$
|
||||
- $f(x^(-1)) = f(x)^(-1)$ for all $x$ in $G$
|
||||
- $f(x y) = f(x) f(y)$ for all $x, y$ in $G$
|
||||
|
||||
Intuitively, you can think of isomorphism as a form of equivalence. \
|
||||
If two groups are isomorphic, they only differ by the names of their elements. \
|
||||
The function $f$ above tells us how to map one set of labels to the other.
|
||||
|
||||
|
||||
|
||||
#problem()
|
||||
Show that $ZZ_7^times$ and $ZZ_9^times$ are isomorphic.
|
||||
#hint[
|
||||
Build a bijection with the above properties. \
|
||||
Remember that a group is fully defined by its multiplication table.
|
||||
]
|
||||
#v(1fr)
|
||||
|
||||
|
||||
#problem()
|
||||
Show that $ZZ_10^times$, $ZZ_5^times$, and $ZZ_4$ are isomorphic.
|
||||
#hint[
|
||||
Build a bijection with the above properties. \
|
||||
Remember that a group is fully defined by its multiplication table.
|
||||
]
|
||||
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
Show that isomorphism is transitive. \
|
||||
That is, if $A tilde.equiv B$ and $B tilde.equiv C$, then $A tilde.equiv C$.
|
||||
|
||||
#v(1fr)
|
||||
#pagebreak()
|
||||
|
||||
|
||||
#problem(label: "firstindex")
|
||||
How many subgroups of $S_4$ are isomorphic to $S_3$? \
|
||||
|
||||
#v(1fr)
|
||||
|
||||
|
||||
|
||||
|
||||
#problem()
|
||||
What are the orders of $S_3$ and $S_4$? \
|
||||
How is this related to @firstindex?
|
||||
|
||||
#solution[
|
||||
$|S_4| = |S_3| times [S_4 : S_3]$
|
||||
|
||||
#v(2mm)
|
||||
|
||||
This solution is written using index notation, \
|
||||
but the class doesn't need to know what it means yet.
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
|
||||
#problem()
|
||||
$S_4$ also has $S_2$ and the trivial group as subgroups. \
|
||||
How many instances of each does $S_4$ contain?
|
||||
|
||||
#v(1fr)
|
||||
|
||||
|
||||
#problem()
|
||||
$(ZZ_4, +)$ is also a subgroup of $S_4$. Find it! \
|
||||
How many subgroups of $ZZ_4$ are isomorphic to $S_4$?
|
||||
|
||||
#solution[
|
||||
A good hint is "look at generators."
|
||||
|
||||
#v(4mm)
|
||||
|
||||
There are four instances of $ZZ_4$ in $S_4$, each of which is generated by a 4-cycle of $S_n$. \
|
||||
(i.e, the group generated by $(1234)$ is isomorphic to $ZZ_4$)
|
||||
]
|
||||
|
||||
#v(1fr)
|
||||
536
src/Advanced/Symmetric Groups/parts/1 cycle.tex
Executable file
536
src/Advanced/Symmetric Groups/parts/1 cycle.tex
Executable file
@@ -0,0 +1,536 @@
|
||||
|
||||
\section{Cycle Notation}
|
||||
|
||||
\definition{Order}
|
||||
The \textit{order} of a permutation $f$ is the \textbf{smallest} positive $n$ so that $f^n(x) = x$ for all $x$. \par
|
||||
If we repeatedly apply a permutation with order $n$, we will get back to where we started after $n$ steps. \par
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
For example, consider $[2134]$. This permutation has order $2$, as we clearly see below:
|
||||
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (1a) at (0, 0.5) {1};
|
||||
\node (2a) at (1, 0.5) {2};
|
||||
\node (3a) at (2, 0.5) {3};
|
||||
\node (4a) at (3, 0.5) {4};
|
||||
|
||||
\node (2b) at (0, -2) {2};
|
||||
\node (1b) at (1, -2) {1};
|
||||
\node (3b) at (2, -2) {3};
|
||||
\node (4b) at (3, -2) {4};
|
||||
|
||||
\node (1c) at (0, -4.5) {1};
|
||||
\node (2c) at (1, -4.5) {2};
|
||||
\node (3c) at (2, -4.5) {3};
|
||||
\node (4c) at (3, -4.5) {4};
|
||||
|
||||
\line{1a}{1b}
|
||||
\line{2a}{2b}
|
||||
\line{3a}{3b}
|
||||
\line{4a}{4b}
|
||||
\line{1b}{1c}
|
||||
\line{2b}{2c}
|
||||
\line{3b}{3c}
|
||||
\line{4b}{4c}
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
Swapping the first two elements of a list twice changes nothing. \par
|
||||
Thus, $[2134]$ has an order of two.
|
||||
|
||||
|
||||
\problem{}
|
||||
What is the order of $[2314]$? \par
|
||||
How about $[4321]$? \par
|
||||
\note[Note]{You shouldn't need to draw any strings to solve this problem.}
|
||||
|
||||
|
||||
\vfill
|
||||
|
||||
\problem{}
|
||||
Show that all permutations (on a finite set) have a well-defined order. \par
|
||||
In other words, show that there is always an integer $n$ so that $f^n(x) = x$.
|
||||
|
||||
\vfill
|
||||
|
||||
\definition{Composition}<compdef>
|
||||
The \textit{composition} of two permutations $f$ and $g$ is the permutation $h(x) = f(g(x))$. \par
|
||||
We'll denote this as $fg$---that is, by simply writing the permutations we're composing next to each other.
|
||||
|
||||
\problem{}
|
||||
Show that function composition is associative. \par
|
||||
That is, show that $f(gh) = (fg)h$.
|
||||
|
||||
\vfill
|
||||
|
||||
\problem{}
|
||||
What is $[1324][4321]$? \par
|
||||
How about $[321][213][231]$? \par
|
||||
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
|
||||
|
||||
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 (namely, their output when
|
||||
applied to an ordered sequence of numbers). Our notation fails to capture the meaning of the
|
||||
underlying object.
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
Think about it: is the permutation $[1234]$ different than the permutation $[12345]$? \par
|
||||
Indeed, these permutations operate on different sets---but they are both the identity! \par
|
||||
What should we do if we want to talk about the identity on $\{1, 2, ..., 10\}$?
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
We need something better.
|
||||
|
||||
|
||||
|
||||
|
||||
\definition{Cycles}
|
||||
Any permutation is composed of a number of \textit{cycles}. \par
|
||||
|
||||
For example, consider the permutation $[2134]$, which consists of one two-cycle: $1 \to 2 \to 1$ \par
|
||||
\note[Note]{$3 \to 3$ and $4 \to 4$ are also cycles, but we'll ignore them. One-cycles aren't aren't interesting.}
|
||||
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (1) at (0, 0) {1};
|
||||
\node (2) at (1, 0) {2};
|
||||
\node (3) at (2, 0) {3};
|
||||
\node (4) at (3, 0) {4};
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(1)
|
||||
-- ($(1) + (0,-1)$)
|
||||
-- ($(2) + (0,-1)$)
|
||||
-- (2);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(2)
|
||||
-- ($(2) + (0, 1)$)
|
||||
-- ($(1) + (0, 1)$)
|
||||
-- (1);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
|
||||
|
||||
The permutation $[431265]$ is a bit more interesting---it contains two cycles: \par
|
||||
($1 \to 3 \to 2 \to 4 \to 1$ and $5 \to 6 \to 5$)
|
||||
|
||||
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (1) at (0, 0) {1};
|
||||
\node (2) at (1, 0) {2};
|
||||
\node (3) at (2, 0) {3};
|
||||
\node (4) at (3, 0) {4};
|
||||
\node (5) at (4, 0) {5};
|
||||
\node (6) at (5, 0) {6};
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(3)
|
||||
-- ($(3) + (0,-1)$)
|
||||
-- ($(2) + (0,-1)$)
|
||||
-- (2);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(2)
|
||||
-- ($(2) + (0,1.5)$)
|
||||
-- ($(4) + (0,1.5)$)
|
||||
-- (4);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(4)
|
||||
-- ($(4) + (0,-1.5)$)
|
||||
-- ($(1) + (0,-1.5)$)
|
||||
-- (1);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(1)
|
||||
-- ($(1) + (0,1)$)
|
||||
-- ($(3) + (0,1)$)
|
||||
-- (3);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ogreen]
|
||||
(5)
|
||||
-- ($(5) + (0,-1)$)
|
||||
-- ($(6) + (0,-1)$)
|
||||
-- (6);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ogreen]
|
||||
(6)
|
||||
-- ($(6) + (0,1)$)
|
||||
-- ($(5) + (0,1)$)
|
||||
-- (5);
|
||||
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
|
||||
|
||||
Another name we'll often use for two-cycles is \textit{transposition}. \par
|
||||
Any permutation that swaps two adjacent elements is called a transposition. \par
|
||||
|
||||
|
||||
\problem{}
|
||||
Find all cycles in $[5342761]$.
|
||||
|
||||
\begin{solution}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (1) at (0, 0) {1};
|
||||
\node (2) at (1, 0) {2};
|
||||
\node (3) at (2, 0) {3};
|
||||
\node (4) at (3, 0) {4};
|
||||
\node (5) at (4, 0) {5};
|
||||
\node (6) at (5, 0) {6};
|
||||
\node (7) at (6, 0) {7};
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(1)
|
||||
-- ($(1) + (0,2)$)
|
||||
-- ($(7) + (0,2)$)
|
||||
-- (7);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(7)
|
||||
-- ($(7) + (0,-1.5)$)
|
||||
-- ($(5) + (0,-1.5)$)
|
||||
-- (5);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(5)
|
||||
-- ($(5) + (0,1.5)$)
|
||||
-- ($(1) + (0.5,1.5)$)
|
||||
-- ($(1) + (0.5,-1)$)
|
||||
-- ($(1) + (0,-1)$)
|
||||
-- (1);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ogreen]
|
||||
(2)
|
||||
-- ($(2) + (0,-1.5)$)
|
||||
-- ($(4) + (0,-1.5)$)
|
||||
-- (4);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ogreen]
|
||||
(4)
|
||||
-- ($(4) + (0,1)$)
|
||||
-- ($(3) + (0,1)$)
|
||||
-- (3);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ogreen]
|
||||
(3)
|
||||
-- ($(3) + (0,-1)$)
|
||||
-- ($(2) + (0.5,-1)$)
|
||||
-- ($(2) + (0.5,1)$)
|
||||
-- ($(2) + (0,1)$)
|
||||
-- (2);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{solution}
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
\problem{}
|
||||
What permutation (on five objects) is formed by the cycles $3 \to 5 \to 3$ and $1 \to 2 \to 4 \to 1$?
|
||||
|
||||
|
||||
\begin{solution}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (1) at (0, 0) {1};
|
||||
\node (2) at (1, 0) {2};
|
||||
\node (3) at (2, 0) {3};
|
||||
\node (4) at (3, 0) {4};
|
||||
\node (5) at (4, 0) {5};
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(3)
|
||||
-- ($(3) + (0,1)$)
|
||||
-- ($(5) + (0,1)$)
|
||||
-- (5);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(5)
|
||||
-- ($(5) + (0,-1)$)
|
||||
-- ($(3) + (0,-1)$)
|
||||
-- (3);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ogreen]
|
||||
(1)
|
||||
-- ($(1) + (0,-1)$)
|
||||
-- ($(2) + (0,-1)$)
|
||||
-- (2);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ogreen]
|
||||
(2)
|
||||
-- ($(2) + (0,1.5)$)
|
||||
-- ($(4) + (0,1.5)$)
|
||||
-- (4);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ogreen]
|
||||
(4)
|
||||
-- ($(4) + (0,-1.5)$)
|
||||
-- ($(1) + (0.5,-1.5)$)
|
||||
-- ($(1) + (0.5,1)$)
|
||||
-- ($(1) + (0,1)$)
|
||||
-- (1);
|
||||
\end{tikzpicture}
|
||||
|
||||
This is $[41523]$
|
||||
\end{center}
|
||||
\end{solution}
|
||||
|
||||
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
|
||||
\definition{Cycle Notation}
|
||||
We now have a solution to our problem of notation.
|
||||
Instead of referring to permutations using their output, we will refer to them using their \textit{cycles}.
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
For example, we'll write $[2134]$ as $(12)$, which denotes the cycle $1 \to 2 \to 1$:
|
||||
|
||||
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (1) at (0, 0) {1};
|
||||
\node (2) at (1, 0) {2};
|
||||
\node (3) at (2, 0) {3};
|
||||
\node (4) at (3, 0) {4};
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(1)
|
||||
-- ($(1) + (0,-1)$)
|
||||
-- ($(2) + (0,-1)$)
|
||||
-- (2);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(2)
|
||||
-- ($(2) + (0, 1)$)
|
||||
-- ($(1) + (0, 1)$)
|
||||
-- (1);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
|
||||
|
||||
|
||||
As another example, $[431265]$ is $(1324)(56)$ in cycle notation. \par
|
||||
Note that we write $[431265]$ as a \textit{composition} of two cycles: \par
|
||||
applying the permutation $[431265]$ is the same as applying $(1324)$, then applying $(56)$.
|
||||
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (1) at (0, 0) {1};
|
||||
\node (2) at (1, 0) {2};
|
||||
\node (3) at (2, 0) {3};
|
||||
\node (4) at (3, 0) {4};
|
||||
\node (5) at (4, 0) {5};
|
||||
\node (6) at (5, 0) {6};
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(3)
|
||||
-- ($(3) + (0,-1)$)
|
||||
-- ($(2) + (0,-1)$)
|
||||
-- (2);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(2)
|
||||
-- ($(2) + (0,1.5)$)
|
||||
-- ($(4) + (0,1.5)$)
|
||||
-- (4);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(4)
|
||||
-- ($(4) + (0,-1.5)$)
|
||||
-- ($(1) + (0,-1.5)$)
|
||||
-- (1);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ocyan]
|
||||
(1)
|
||||
-- ($(1) + (0,1)$)
|
||||
-- ($(3) + (0,1)$)
|
||||
-- (3);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ogreen]
|
||||
(5)
|
||||
-- ($(5) + (0,-1)$)
|
||||
-- ($(6) + (0,-1)$)
|
||||
-- (6);
|
||||
|
||||
\draw[line width = 0.3mm, ->, ogreen]
|
||||
(6)
|
||||
-- ($(6) + (0,1)$)
|
||||
-- ($(5) + (0,1)$)
|
||||
-- (5);
|
||||
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
|
||||
Any permutation $\sigma$ may be written as a product (i.e, composition) of disjoint cycles $\sigma_1\sigma_2...\sigma_k$. \par
|
||||
Make sure you believe this fact. If you don't, ask an instructor. \par
|
||||
Also, the identity $f(x) = x$ is written as $()$ in cycle notation.
|
||||
|
||||
|
||||
|
||||
\problem{}
|
||||
Convince yourself that disjoint cycles commute. \par
|
||||
That is, that $(1324)(56) = (56)(1324) = [431265]$ since $(1324)$ and $(56)$ do not overlap. \par
|
||||
|
||||
|
||||
|
||||
|
||||
\problem{}<insquare>
|
||||
Write the following in square-bracket notation.
|
||||
\begin{itemize}
|
||||
\item $(12)$ \tab~\tab on a set of 2 elements
|
||||
\item $(12)(435)$ \tab on a set of 5 elements
|
||||
\vspace{2mm}
|
||||
\item $(321)$ \tab~\tab on a set of 3 elements
|
||||
\item $(321)$ \tab~\tab on a set of 6 elements
|
||||
\vspace{2mm}
|
||||
\item $(1234)$ \tab on a set of 4 elements
|
||||
\item $(3412)$ \tab on a set of 4 elements
|
||||
\end{itemize}
|
||||
\note{
|
||||
Note that $(12)$ refers the \say{swap first two} permutation on a set of \textit{any} size. \\
|
||||
We can now use the same name for the same permutation on two different sets! \\
|
||||
}
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
|
||||
\problem{}
|
||||
Write the following in square-bracket notation.
|
||||
Be careful.
|
||||
\begin{itemize}
|
||||
\item $(13)(243)$ \tab on a set of 4 elements
|
||||
\item $(243)(13)$ \tab on a set of 4 elements
|
||||
\end{itemize}
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
|
||||
\problem{}
|
||||
Look at the last two permutations in \ref{insquare}, $(1234)$ and $(3412)$. \par
|
||||
These are \textit{identical}---they are the same cycle written in two different ways. \par
|
||||
List all other ways to write this cycle. \hint{There are two more.} \par
|
||||
\note{Also, note that the last two permutations in \ref{insquare} are the same.}
|
||||
|
||||
\pagebreak
|
||||
|
||||
|
||||
\problem{}
|
||||
What is the inverse of $(12)$? \par
|
||||
How about $(123)$? And $(4231)$? \par
|
||||
\note{
|
||||
Note that again, we don't need to know how big our set is. \\
|
||||
The inverse of $(12)$ is the same in all sets.
|
||||
}
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
\problem{}
|
||||
Say $\sigma$ is a permutation composed of disjoint cycles $\sigma_1\sigma_2...\sigma_k$. \par
|
||||
Say we know the order of all $\sigma_i$. What is the order of $\sigma$?
|
||||
|
||||
\begin{solution}
|
||||
$\text{lcm}\Bigl(\text{ord}(\sigma_1),~ \text{ord}(\sigma_2),~ ..., ~ \text{ord}(\sigma_k)\Bigr)$
|
||||
\end{solution}
|
||||
|
||||
|
||||
\vfill
|
||||
|
||||
\problem{}<cycletrans>
|
||||
Show that any cycle $(123...n)$ is equal to the product $(12)(23)...(n-1, n)$.
|
||||
|
||||
\begin{solution}
|
||||
TODO
|
||||
\end{solution}
|
||||
|
||||
\vfill
|
||||
|
||||
\problem{}
|
||||
Write $(7126453)$ as a product of transpositions. \par
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
|
||||
\problem{}<simpletrans>
|
||||
Show that any permutation is a product of transpositions.
|
||||
|
||||
\begin{solution}
|
||||
Use \ref{cycletrans}.
|
||||
\end{solution}
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
\problem{}
|
||||
Show that any permutation is a product of transpositions of the form $(1, k)$. \par
|
||||
|
||||
\begin{solution}
|
||||
Use \ref{simpletrans} and rewrite each $(a, b)$ as $(1, a)(1, b)(1, a)$. \par
|
||||
Showing that $(a, b) = (1, a)(1, b)(1, a)$ is fairly easy.
|
||||
\end{solution}
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
|
||||
|
||||
|
||||
\problem{}
|
||||
Show that any transposition $(a, b)$ is equal to the product $(a, a+1)(a+1, b)(a, a+1)$.
|
||||
|
||||
\begin{solution}
|
||||
This is the same as the $(1, a)(1, b)(1, a)$ case above, but we use $a + 1$
|
||||
as a \say{working slot} instead of $1$.
|
||||
\end{solution}
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
|
||||
\problem{}
|
||||
Show that any permutation is a product of adjacent transpositions. \par
|
||||
(An \textit{adjacent transposition} swaps two adjacent elements, and thus looks like $(n, n+1)$)
|
||||
|
||||
\begin{solution}
|
||||
As before, we will use \ref{simpletrans} and rewrite the transpositions it produces in a form that fits the problem.
|
||||
We thus need to show that every transposition $(a, b)$ is a product of adjacent transpositions.
|
||||
|
||||
\vspace{8mm}
|
||||
|
||||
In the proof below, assume that $a < b$ and perform induction on $b - a$. \par
|
||||
|
||||
\textbf{Base Case:}\par
|
||||
If $b - a = 1$, we clearly see that $(a, b)$ is a product of adjacent. \par
|
||||
In fact, it \textit{is} an adjacent transposition.
|
||||
|
||||
\vspace{4mm}
|
||||
|
||||
\textbf{Induction:}\par
|
||||
Now, say $b - a = n + 1$. \par
|
||||
Assume that all $(a, b)$ where $b - a \leq n$ are products of adjacent transpositions.\par
|
||||
Note that $(a, b) = (a, a+1)(a+1, b)(a, a+1)$.
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
$(a, a+1)$ is an adjacent transposition, and $b - (a+1) = n$. \par
|
||||
Thus, $(a, b)$ is a product of adjacent transpositions.
|
||||
\end{solution}
|
||||
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
165
src/Advanced/Symmetric Groups/parts/2 groups.tex
Executable file
165
src/Advanced/Symmetric Groups/parts/2 groups.tex
Executable file
@@ -0,0 +1,165 @@
|
||||
\section{Groups (review)}
|
||||
|
||||
\definition{}
|
||||
Before we continue, we must introduce a bit of notation:
|
||||
\begin{itemize}
|
||||
\item $S_n$ is the set of permutations on $n$ objects.
|
||||
\item $\mathbb{Z}_n$ is the set of integers mod $n$.
|
||||
|
||||
\item $\mathbb{Z}_n^\times$ is the set of integers mod $n$ with multiplicative inverses. \par
|
||||
In other words, it is the set of integers smaller than $n$ and coprime to $n$.\footnotemark{} \par
|
||||
For example, $\mathbb{Z}_{12}^\times = \{1, 5, 7, 11\}$.
|
||||
|
||||
\footnotetext{We proved this in another handout, but you may take it as fact here.}
|
||||
\end{itemize}
|
||||
|
||||
\problem{}
|
||||
What are the elements of $S_3$? \tab\hint{Use cycle notation}\par
|
||||
How about $\mathbb{Z}_{17}^\times$?
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
\definition{}
|
||||
A \textit{group} $(G, \ast)$ consists of a set $G$ and an operator $\ast$. \par
|
||||
Groups always have the following properties:
|
||||
|
||||
\begin{enumerate}
|
||||
\item $G$ is closed under $\ast$. In other words, $a, b \in G \implies a \ast b \in G$.
|
||||
\item $\ast$ is \textit{associative}: $(a \ast b) \ast c = a \ast (b \ast c)$ for all $a,b,c \in G$
|
||||
\item There is an \textit{identity} $e \in G$, so that $a \ast e = a \ast e = a$ for all $a \in G$.
|
||||
\item For any $a \in G$, there exists a $b \in G$ so that $a \ast b = b \ast a = e$. $b$ is called the \textit{inverse} of $a$. \par
|
||||
This element is written as $-a$ if our operator is addition and $a^{-1}$ otherwise.
|
||||
\end{enumerate}
|
||||
|
||||
Any pair $(G, \ast)$ that satisfies these properties is a group.
|
||||
|
||||
\problem{}
|
||||
Is $(\mathbb{Z}_5, +)$ a group? \par
|
||||
Is $(\mathbb{Z}_5, -)$ a group? \par
|
||||
\note[Note]{$+$ and $-$ refer to the usual operations in modular arithmetic.}
|
||||
\vfill
|
||||
|
||||
|
||||
\problem{}
|
||||
What is the group with the fewest elements?
|
||||
|
||||
\begin{solution}
|
||||
Let $(G, \star)$ be our group, where $G = \{x\}$ and $\star$ is defined by $x \star x = x$
|
||||
|
||||
Verifying that the trivial group is a group is trivial.
|
||||
\end{solution}
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\problem{}
|
||||
Show that function composition is associative
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
\problem{}
|
||||
Show that $S_n$ is a group under composition.
|
||||
|
||||
\vfill
|
||||
|
||||
\problem{}
|
||||
Let $(G, \ast)$ be a group with finitely many elements, and let $a \in G$. \par
|
||||
Show that $\exists n \in \mathbb{Z}^+$ so that $a^n = e$ \par
|
||||
\hint{$a^n = a \ast a \ast ... \ast a$ repeated $n$ times.}
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
The smallest such $n$ defines the \textit{order} of $g$.
|
||||
|
||||
\begin{examplesolution}
|
||||
We've already done a special case of this problem! \par
|
||||
Find it in this handout, then rewrite your proof for an arbitrary (finite) group.
|
||||
\end{examplesolution}
|
||||
|
||||
|
||||
\vfill
|
||||
|
||||
\problem{}
|
||||
What is the order of 5 in $(\mathbb{Z}_{25}, +)$? \par
|
||||
What is the order of 2 in $(\mathbb{Z}_{17}^\times, \times)$? \par
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\definition{}<gendef>
|
||||
Let $G$ be a group, and let $g$ be an element of $G$. \par
|
||||
We say $g$ is a \textit{generator} if every other element of $G$ may be written as a power of $g$. \par
|
||||
|
||||
\problem{}
|
||||
Say the size of a group $G$ is $n$. \par
|
||||
If $g$ is a generator, what is its order? \par
|
||||
Provide a proof.
|
||||
\vfill
|
||||
|
||||
|
||||
|
||||
\problem{}
|
||||
Find the two generators in $(\mathbb{Z}, +)$ \par
|
||||
Then, find all generators of $(\mathbb{Z}_5, +)$
|
||||
\vfill
|
||||
|
||||
|
||||
\problem{}
|
||||
How many groups have only one generator?
|
||||
|
||||
\begin{solution}
|
||||
Only one: the trivial group. The inverse of a generator is also a generator!
|
||||
\end{solution}
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
\definition{}
|
||||
Let $S$ be a subset of the elements in $G$. \par
|
||||
We say that $S$ \textit{generates} $G$ if every element of $G$ may be written as a product of elements in $S$. \par
|
||||
\note{Note that this is an extension of \ref{gendef}.}
|
||||
|
||||
\problem{}
|
||||
We've already found a few generating sets of $S_n$. What are they?
|
||||
|
||||
\begin{solution}
|
||||
The following sets generate $S_n$:
|
||||
\begin{itemize}
|
||||
\item All transpositions
|
||||
\item All transpositions of the form $(1, k)$
|
||||
\item All adjacent transpositions
|
||||
\end{itemize}
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
The smallest generating set of $S_n$ consists of the transposition $(12)$ and the $n$-cycle $(1,2,...,n)$. \par
|
||||
The proof of this is a bonus problem later in the handout.
|
||||
\end{solution}
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
163
src/Advanced/Symmetric Groups/parts/3 subgroup.tex
Normal file
163
src/Advanced/Symmetric Groups/parts/3 subgroup.tex
Normal file
@@ -0,0 +1,163 @@
|
||||
\section{Subgroups}
|
||||
|
||||
\problem{}<s2s3share>
|
||||
What elements do $S_2$ and $S_3$ share?
|
||||
\vspace{2cm}
|
||||
|
||||
|
||||
|
||||
Consider the sets $\{1, 2\}$ and $\{1,2,3\}$. Clearly, $\{1, 2\} \subset \{1, 2, 3\}$. \par
|
||||
Can we say something similar about $S_2$ and $S_3$?
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
Looking at \ref{s2s3share}, we may want to say that $S_2 \subset S_3$ since every element of $S_2$ is in $S_3$. \par
|
||||
This however, isn't as interesting as it could be. Remember that $S_2$ and $S_3$ are \textit{groups}, not \textit{sets}: \par
|
||||
their elements come with structure, which the \say{subset} relation does not capture.
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
To account for this, we'll define a similar relation: subgroups.
|
||||
|
||||
\definition{}
|
||||
Let $G$ and $G'$ be groups. We say $G'$ is a \textit{subgroup} of $G$ (and write $G' \subset G$) if the following are true:\par
|
||||
(Note that $x, y$ are elements of $G$, and $xy$ is multiplication in $G$)
|
||||
\begin{itemize}
|
||||
\item the set of elements in $G'$ is a subset of the set of elements in $G$.
|
||||
\item the identity of $G$ is in $G'$
|
||||
\item $x,y \in G' \implies xy \in G'$
|
||||
\item $x \in G' \implies x^{-1} \in G'$
|
||||
\end{itemize}
|
||||
|
||||
The above definition may look faily scary, but the idea behind a subgroup is simple. \par
|
||||
Consider $S_3$ and $S_4$, the groups of permutations of $3$ and $4$ elements. \par
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
Say we have a set of four elements and only look at the first three. \par
|
||||
$S_3$ fully describes all the ways we can arrange those three elements:
|
||||
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[scale=0.5]
|
||||
\node (1a) at (0, 0.5) {1};
|
||||
\node (2a) at (1, 0.5) {2};
|
||||
\node (3a) at (2, 0.5) {3};
|
||||
\node (4a) at (3, 0.5) {4};
|
||||
|
||||
\node (2b) at (0, -2) {2};
|
||||
\node (3b) at (1, -2) {3};
|
||||
\node (1b) at (2, -2) {1};
|
||||
\node (4b) at (3, -2) {4};
|
||||
|
||||
\draw[line width = 0.3mm, ->, ogreen]
|
||||
(4a)
|
||||
-- ($(4a) + (0, -1)$)
|
||||
-- ($(4b) + (0,1)$)
|
||||
-- (4b);
|
||||
|
||||
\line{1a}{1b}
|
||||
\line{2a}{2b}
|
||||
\line{3a}{3b}
|
||||
|
||||
\node[fill=white,draw=oblue,line width=0.3mm] at (1, -0.75) {$S_3$};
|
||||
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
|
||||
|
||||
\problem{}
|
||||
Show that $S_3$ is a subgroup of $S_4$.
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
|
||||
|
||||
|
||||
\definition{}
|
||||
Let $G$ and $H$ be groups. We say that $G$ and $H$ are \textit{isomorphic} (and write $A \simeq B$) \par
|
||||
if there is a bijection $f: G \to H$ with the following properties:
|
||||
\begin{itemize}
|
||||
\item $f(e_G) = e_H$, where $e_G$ is the identity in $G$
|
||||
\item $f(x^{-1}) = f(x)^{-1}$ for all $x$ in $G$
|
||||
\item $f(xy) = f(x)f(y)$ for all $x, y$ in $G$
|
||||
\end{itemize}
|
||||
|
||||
Intuitively, you can think of isomorphism as a form of equivalence. \par
|
||||
If two groups are isomorphic, they only differ by the names of their elements. \par
|
||||
The function $f$ above tells us how to map one set of labels to the other.
|
||||
|
||||
|
||||
|
||||
\problem{}
|
||||
Show that $\mathbb{Z}_7^\times$ and $\mathbb{Z}_9^\times$ are isomorphic.
|
||||
\hint{
|
||||
Build a bijection with the above properties. \\
|
||||
Remember that a group is fully defined by its multiplication table.
|
||||
}
|
||||
\vfill
|
||||
|
||||
|
||||
\problem{}
|
||||
Show that $\mathbb{Z}_{10}^\times$ and $\mathbb{Z}_5^\times$, and $\mathbb{Z}_4$ are isomorphic.
|
||||
\hint{
|
||||
Build a bijection with the above properties. \\
|
||||
Remember that a group is fully defined by its multiplication table.
|
||||
}
|
||||
|
||||
|
||||
\vfill
|
||||
|
||||
\problem{}
|
||||
Show that isomorphism is transitive. \par
|
||||
That is, if $A \simeq B$ and $B \simeq C$, then $A \simeq C$.
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
|
||||
|
||||
\problem{}<firstindex>
|
||||
How many subgroups of $S_4$ are isomorphic to $S_3$? \par
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
|
||||
|
||||
\problem{}
|
||||
What are the orders of $S_3$ and $S_4$? \par
|
||||
How is this related to \ref{firstindex}?
|
||||
|
||||
\begin{solution}
|
||||
$|S_4| = |S_3| \times [S_4 : S_3]$
|
||||
|
||||
\vspace{2mm}
|
||||
|
||||
This solution is written using index notation, \par
|
||||
but the class doesn't need to know what it means yet.
|
||||
\end{solution}
|
||||
|
||||
\vfill
|
||||
|
||||
\problem{}
|
||||
$S_4$ also has $S_2$ and the trivial group as subgroups. \par
|
||||
How many instances of each does $S_4$ contain?
|
||||
|
||||
\vfill
|
||||
|
||||
|
||||
\problem{}
|
||||
$(\mathbb{Z}_4, +)$ is also a subgroup of $S_4$. Find it! \par
|
||||
How many subgroups of $\mathbb{Z}_4$ are isomorphic to $S_4$?.
|
||||
|
||||
\begin{solution}
|
||||
A good hint is \say{look at generators.}
|
||||
|
||||
\vspace{4mm}
|
||||
|
||||
There are four instances of $\mathbb{Z}_4$ in $S_4$, each of which is generated by a 4-cycle of $S_n$. \par
|
||||
(i.e, the group generated by $(1234)$ is isomorphic to $\mathbb{Z}_4$)
|
||||
\end{solution}
|
||||
|
||||
|
||||
\vfill
|
||||
\pagebreak
|
||||
@@ -1,5 +1,5 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
#import "@preview/cetz:0.3.1"
|
||||
|
||||
|
||||
// Shorthand, we'll be using these a lot.
|
||||
@@ -7,15 +7,17 @@
|
||||
#let tm = sym.times.circle
|
||||
|
||||
#let graphgrid(inner_content) = {
|
||||
align(center, box(inset: 3mm, cetz.canvas({
|
||||
align(
|
||||
center,
|
||||
box(
|
||||
inset: 3mm,
|
||||
cetz.canvas({
|
||||
import cetz.draw: *
|
||||
let x = 5.25
|
||||
|
||||
grid(
|
||||
(0, 0),
|
||||
(x, x),
|
||||
step: 0.75,
|
||||
stroke: luma(100) + 0.3mm,
|
||||
(0, 0), (x, x), step: 0.75,
|
||||
stroke: luma(100) + 0.3mm
|
||||
)
|
||||
|
||||
if (inner_content != none) {
|
||||
@@ -31,7 +33,9 @@
|
||||
(x + 0.25, 0),
|
||||
stroke: 0.75mm + black,
|
||||
)
|
||||
})))
|
||||
}),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
/// Adds extra padding to an equation.
|
||||
@@ -44,16 +48,23 @@
|
||||
/// Note that there are newlines between the $ and content,
|
||||
/// this gives us display math (which is what we want when using this macro)
|
||||
#let eqnbox(eqn) = {
|
||||
align(center, box(
|
||||
align(
|
||||
center,
|
||||
box(
|
||||
inset: 3mm,
|
||||
eqn,
|
||||
))
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
#let dotline(a, b) = {
|
||||
cetz.draw.line(a, b, stroke: (
|
||||
cetz.draw.line(
|
||||
a,
|
||||
b,
|
||||
stroke: (
|
||||
dash: "dashed",
|
||||
thickness: 0.5mm,
|
||||
paint: ored,
|
||||
))
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
@@ -134,7 +134,14 @@ Fill the following tropical addition and multiplication tables
|
||||
table(
|
||||
columns: (col, col, col, col, col, col),
|
||||
align: center,
|
||||
table.header([$#tp$], [$1$], [$2$], [$3$], [$4$], [$#sym.infinity$]),
|
||||
table.header(
|
||||
[$#tp$],
|
||||
[$1$],
|
||||
[$2$],
|
||||
[$3$],
|
||||
[$4$],
|
||||
[$#sym.infinity$],
|
||||
),
|
||||
|
||||
box(inset: 3pt, $1$), [], [], [], [], [],
|
||||
box(inset: 3pt, $2$), [], [], [], [], [],
|
||||
@@ -145,7 +152,14 @@ Fill the following tropical addition and multiplication tables
|
||||
table(
|
||||
columns: (col, col, col, col, col, col),
|
||||
align: center,
|
||||
table.header([$#tm$], [$0$], [$1$], [$2$], [$3$], [$4$]),
|
||||
table.header(
|
||||
[$#tm$],
|
||||
[$0$],
|
||||
[$1$],
|
||||
[$2$],
|
||||
[$3$],
|
||||
[$4$],
|
||||
),
|
||||
|
||||
box(inset: 3pt, $0$), [], [], [], [], [],
|
||||
box(inset: 3pt, $1$), [], [], [], [], [],
|
||||
@@ -164,7 +178,14 @@ Fill the following tropical addition and multiplication tables
|
||||
table(
|
||||
columns: (col, col, col, col, col, col),
|
||||
align: center,
|
||||
table.header([$#tp$], [$1$], [$2$], [$3$], [$4$], [$#sym.infinity$]),
|
||||
table.header(
|
||||
[$#tp$],
|
||||
[$1$],
|
||||
[$2$],
|
||||
[$3$],
|
||||
[$4$],
|
||||
[$#sym.infinity$],
|
||||
),
|
||||
|
||||
box(inset: 3pt, $1$),
|
||||
box(inset: 3pt, $1$),
|
||||
@@ -204,7 +225,14 @@ Fill the following tropical addition and multiplication tables
|
||||
table(
|
||||
columns: (col, col, col, col, col, col),
|
||||
align: center,
|
||||
table.header([$#tm$], [$0$], [$1$], [$2$], [$3$], [$4$]),
|
||||
table.header(
|
||||
[$#tm$],
|
||||
[$0$],
|
||||
[$1$],
|
||||
[$2$],
|
||||
[$3$],
|
||||
[$4$],
|
||||
),
|
||||
|
||||
box(inset: 3pt, $0$),
|
||||
box(inset: 3pt, $0$),
|
||||
@@ -253,7 +281,8 @@ Adjacent parenthesis imply tropical multiplication
|
||||
|
||||
#solution([
|
||||
$
|
||||
(x #tp 2)(x #tp 3) & = x^2 #tp 2x #tp 3x #tp (2 #tm 3) \
|
||||
(x #tp 2)(x #tp 3)
|
||||
&= x^2 #tp 2x #tp 3x #tp (2 #tm 3) \
|
||||
&= x^2 #tp (2 #tp 3)x #tp (2 #tm 3) \
|
||||
&= x^2 #tp 2x #tp 5
|
||||
$
|
||||
|
||||
@@ -1,18 +1,21 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "../macros.typ": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
#import "@preview/cetz:0.3.1"
|
||||
|
||||
= Tropical Polynomials
|
||||
|
||||
#definition()
|
||||
A _polynomial_ is an expression formed by adding and multiplying numbers and a variable $x$. \
|
||||
Every polynomial can be written as
|
||||
#align(center, box(
|
||||
#align(
|
||||
center,
|
||||
box(
|
||||
inset: 3mm,
|
||||
$
|
||||
c_0 + c_1 x + c_2 x^2 + ... + c_n x^n
|
||||
$,
|
||||
))
|
||||
),
|
||||
)
|
||||
for some nonnegative integer $n$ and coefficients $c_0, c_1, ..., c_n$. \
|
||||
The _degree_ of a polynomial is the largest $n$ for which $c_n$ is nonzero.
|
||||
|
||||
@@ -40,12 +43,15 @@ In this section, we will analyze tropical polynomials:
|
||||
#definition()
|
||||
A _tropical_ polynomial is a polynomial that uses tropical addition and multiplication. \
|
||||
In other words, it is an expression of the form
|
||||
#align(center, box(
|
||||
#align(
|
||||
center,
|
||||
box(
|
||||
inset: 3mm,
|
||||
$
|
||||
c_0 #tp (c_1 #tm x) #tp (c_2 #tm x^2) #tp ... #tp (c_n #tm x^n)
|
||||
$,
|
||||
))
|
||||
),
|
||||
)
|
||||
where all exponents represent repeated tropical multiplication.
|
||||
|
||||
#pagebreak() // MARK: page
|
||||
@@ -84,12 +90,15 @@ Draw a graph of the tropical polynomial $f(x) = x^2 #tp 1x #tp 4$. \
|
||||
#problem()
|
||||
Now, factor $f(x) = x^2 #tp 1x #tp 4$ into two polynomials with degree 1. \
|
||||
In other words, find $r$ and $s$ so that
|
||||
#align(center, box(
|
||||
#align(
|
||||
center,
|
||||
box(
|
||||
inset: 3mm,
|
||||
$
|
||||
x^2 #tp 1x #tp 4 = (x #tp r)(x #tp s)
|
||||
$,
|
||||
))
|
||||
),
|
||||
)
|
||||
|
||||
we will call $r$ and $s$ the _roots_ of $f$.
|
||||
|
||||
@@ -150,19 +159,15 @@ Find a factorization of $f$ in the form $a(x #tp r)(x#tp s)$.
|
||||
#solution([
|
||||
We (tropically) factor out $-2$ to get
|
||||
|
||||
#eqnbox(
|
||||
$
|
||||
#eqnbox($
|
||||
f(x) = -2(x^2 #tp 2x #tp 10)
|
||||
$,
|
||||
)
|
||||
$)
|
||||
|
||||
|
||||
by the same process as the previous problem, we get
|
||||
#eqnbox(
|
||||
$
|
||||
#eqnbox($
|
||||
f(x) = -2(x #tp 2)(x #tp 8)
|
||||
$,
|
||||
)
|
||||
$)
|
||||
])
|
||||
|
||||
#v(1fr)
|
||||
@@ -231,11 +236,11 @@ Graph $f(x) = 1x^2 #tp 3x #tp 5$.
|
||||
#problem()
|
||||
Find a factorization of $f$ in the form $a(x #tp r)(x#tp s)$.
|
||||
|
||||
#solution(eqnbox(
|
||||
$
|
||||
#solution(
|
||||
eqnbox($
|
||||
f(x) = 1x^2 #tp 3 x #tp 5 = 1(x #tp 2)^2
|
||||
$,
|
||||
))
|
||||
$),
|
||||
)
|
||||
|
||||
#v(1fr)
|
||||
|
||||
@@ -258,7 +263,8 @@ Graph $f(x) = 2x^2 #tp 4x #tp 4$.
|
||||
|
||||
#if_no_solutions(graphgrid(none))
|
||||
|
||||
#solution(graphgrid({
|
||||
#solution(
|
||||
graphgrid({
|
||||
import cetz.draw: *
|
||||
let step = 0.75
|
||||
|
||||
@@ -272,7 +278,8 @@ Graph $f(x) = 2x^2 #tp 4x #tp 4$.
|
||||
(7.5 * step, 4 * step),
|
||||
stroke: 1mm + oblue,
|
||||
)
|
||||
}))
|
||||
}),
|
||||
)
|
||||
|
||||
|
||||
#problem()
|
||||
@@ -334,7 +341,8 @@ Find a formula for $B$ in terms of $a$, $b$, and $c$. \
|
||||
|
||||
*Case 2:* If $b > (a + c #sym.div) 2$, then
|
||||
$
|
||||
accent(f, macron)(x) & = a x^2 #tp ((a+c)/2)x #tp c \
|
||||
accent(f, macron)(x)
|
||||
&= a x^2 #tp ((a+c)/2)x #tp c \
|
||||
&= a(x #tp (c-a)/2)^2
|
||||
$
|
||||
has the same graph as $f$, and thus $B = (a+c) #sym.div 2$
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "../macros.typ": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
#import "@preview/cetz:0.3.1"
|
||||
|
||||
= Tropical Cubic Polynomials
|
||||
|
||||
@@ -131,12 +131,15 @@ Using the last three problems, find formulas for $B$ and $C$ in terms of $a$, $b
|
||||
#problem()
|
||||
What are the roots of the following polynomial?
|
||||
|
||||
#align(center, box(
|
||||
#align(
|
||||
center,
|
||||
box(
|
||||
inset: 3mm,
|
||||
$
|
||||
3 x^6 #tp 4 x^5 #tp 2 x^4 #tp x^3 #tp x^2 #tp 4 x #tp 5
|
||||
$,
|
||||
))
|
||||
),
|
||||
)
|
||||
|
||||
#solution([
|
||||
We have
|
||||
@@ -166,7 +169,8 @@ Find a formula for each $C_i$ in terms of $c_0, c_1, ..., c_n$.
|
||||
|
||||
#solution([
|
||||
$
|
||||
A_j & = min_(l<=j<k)( (a_l - a_k) / (k-l) (k-j) + a_k ) \
|
||||
A_j
|
||||
&= min_(l<=j<k)( (a_l - a_k) / (k-l) (k-j) + a_k ) \
|
||||
&= min_(l<=j<k)( a_l (k-j) / (k-l) + a_k (j-l) / (k-l) )
|
||||
$
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
#import "@preview/cetz:0.3.1"
|
||||
|
||||
= Wallpaper Symmetries
|
||||
|
||||
@@ -12,9 +12,7 @@ There are four classes of Euclidean isometries:
|
||||
- reflections
|
||||
- rotations
|
||||
- glide reflections
|
||||
#note(
|
||||
[We can prove there are no others, but this is beyond the scope of this handout.],
|
||||
) \
|
||||
#note([We can prove there are no others, but this is beyond the scope of this handout.]) \
|
||||
A simple example of each isometry is shown below:
|
||||
|
||||
#let demo(c) = {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
#import "@preview/cetz:0.3.1"
|
||||
|
||||
= Mirror Symmetry
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
#import "@preview/cetz:0.3.1"
|
||||
|
||||
= Rotational Symmetry
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
#import "@preview/cetz:0.3.1"
|
||||
|
||||
#let pat(img, sol) = {
|
||||
problem()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
#import "@preview/cetz:0.3.1"
|
||||
|
||||
= The Signature-Cost Theorem
|
||||
|
||||
@@ -7,7 +7,9 @@
|
||||
First, we'll associate a _cost_ to each type of symmetry in orbifold notation:
|
||||
|
||||
#v(4mm)
|
||||
#align(center, table(
|
||||
#align(
|
||||
center,
|
||||
table(
|
||||
stroke: (1pt, 1pt),
|
||||
align: center,
|
||||
columns: (auto, auto, auto, auto),
|
||||
@@ -20,7 +22,8 @@ First, we'll associate a _cost_ to each type of symmetry in orbifold notation:
|
||||
[$(n-1) / n$],
|
||||
[#sym.convolve`n`],
|
||||
[$(n-1) / (2n)$],
|
||||
))
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
We then calculate the total "cost" of a signature by adding up the costs of each component.
|
||||
|
||||
@@ -331,7 +331,7 @@
|
||||
representing all four cubes. \\
|
||||
|
||||
\begin{center} \begin{small}
|
||||
\begin{tikzpicture} \label{pic:II_configuration}
|
||||
\begin{tikzpicture} \label{pic:II_comfiguration}
|
||||
\filldraw [blue] (0,5) -- (1,5) -- (1,6) --
|
||||
(0,6) -- (0,5);
|
||||
\draw [line width = 1.5pt] (0,5) --
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
#import "@preview/cetz:0.3.1"
|
||||
|
||||
#show: handout.with(
|
||||
title: [Warm-Up: Big-Tac-Toe],
|
||||
@@ -75,7 +75,9 @@ How does your strategy change? \
|
||||
#if extra_boards {
|
||||
pagebreak()
|
||||
|
||||
align(center, grid(
|
||||
align(
|
||||
center,
|
||||
grid(
|
||||
stroke: none,
|
||||
align: center,
|
||||
columns: (1fr, 1fr),
|
||||
@@ -83,5 +85,6 @@ How does your strategy change? \
|
||||
btt(0.35), btt(0.35),
|
||||
btt(0.35), btt(0.35),
|
||||
btt(0.35), btt(0.35),
|
||||
))
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
|
||||
#show: handout.with(
|
||||
title: [Warm-Up: Cosa Nostra],
|
||||
by: "Mark",
|
||||
)
|
||||
|
||||
|
||||
#problem()
|
||||
There are 36 gangsters in a certain district of Chicago.
|
||||
Some pairs of gangsters have feuds.
|
||||
|
||||
- Each gangster is part of at least one outfit, and no two outfits share the same members.
|
||||
- If two gangsters are both in one outfit, there is no feud between them.
|
||||
- A gangster that is not in a certain outfit must have a feud with at least one if its members.
|
||||
|
||||
What is the maximum number of outfits that can exist in this district?
|
||||
|
||||
|
||||
|
||||
#solution[
|
||||
*Definition:* Let the _authority_ of a gangster be the number of oufits they are a part of.
|
||||
|
||||
#v(5mm)
|
||||
|
||||
*Lemma:* Say two gangsters have a feud. Label them $x$ and $y$ so that $#text(`authority`) (x) > #text(`authority`) (y)$. \
|
||||
Then, replacing $y$ with a clone of $x$ will strictly increase the number of outfits. \
|
||||
If $#text(`authority`) (x) = #text(`authority`) (y)$, replacing $y$ with $x$ will not change the number of outfits.
|
||||
|
||||
#v(5mm)
|
||||
|
||||
*Proof:*
|
||||
Let $A$ be the set of outfits that $y$ is a part of, and $B$ its complement (that is, all outfits that $a$ is _not_ a part of). If we delete $y$...
|
||||
- all outfits in $B$ remain outfits.
|
||||
- some outfits in $A$ cease to be outfits (as they are no longer maximal)
|
||||
|
||||
Also, no new outfits are formed. If a new outfit $o$ contains any enemies of $y$, it existed previously and is a member of $B$. If $o$ contains no enemies of $y$, it must have contained $y$ prior to deletion, and is thus a member of $A$. Therefore, the number of outfits is reduced by at most `authority(y)` when $y$ is deleted.
|
||||
|
||||
If we add a clone of $x$ after deleting $y$ (this clone has a feud with $x$), All previous outfits remain outfits, and `authority(x)` new outfits are created.
|
||||
Therefore, replacing $y$ with a clone of $x$ strictly increases the number of outfits that exist.
|
||||
We thus conclude that in the maximal case, all pairs of feuding gangsters have equal authority.
|
||||
|
||||
#v(5mm)
|
||||
|
||||
*Solution:* Consider an arbitrary gangster $g$. By the previous lemma, we can replace all gangsters $g$ has a feud with clones of itself. Repeat this for all gangsters, and we are left with groups of feuding gangsters who are friends with everyone outside their group. The total number of outfits is the product of the sizes of these groups.
|
||||
|
||||
#v(5mm)
|
||||
|
||||
This problem is now equivalent to the "Partition Products" warm-up. We want the list of numbers whose sum is 36 and whose product is maximal. The solution is to form 12 groups of three gangsters for a total of $3^12$ outfits.
|
||||
]
|
||||
@@ -1,6 +0,0 @@
|
||||
[metadata]
|
||||
title = "Cosa Nostra"
|
||||
|
||||
[publish]
|
||||
handout = true
|
||||
solutions = true
|
||||
@@ -1,5 +1,5 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
#import "@preview/cetz:0.3.1"
|
||||
|
||||
|
||||
#show: handout.with(
|
||||
@@ -43,7 +43,10 @@ Now, consider the set of six-sided dice below:
|
||||
- Die $E$: $0, 5, 5, 5, 5, 5$
|
||||
On average, which die beats each of the others? Draw a diagram.
|
||||
|
||||
#solution(align(center, cetz.canvas({
|
||||
#solution(
|
||||
align(
|
||||
center,
|
||||
cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
let s = 0.8 // Scale
|
||||
@@ -92,7 +95,9 @@ On average, which die beats each of the others? Draw a diagram.
|
||||
content(c, text(fill: white, size: t, [*C*]))
|
||||
content(d, text(fill: white, size: t, [*D*]))
|
||||
content(e, text(fill: white, size: t, [*E*]))
|
||||
})))
|
||||
}),
|
||||
),
|
||||
)
|
||||
|
||||
#v(1fr)
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
#import "@preview/cetz:0.3.1"
|
||||
|
||||
#show: handout.with(
|
||||
title: [Warm-Up: What's an AST?],
|
||||
@@ -18,7 +18,9 @@ You may detach the string as you hang the painting, but it must be re-attached o
|
||||
|
||||
#v(2mm)
|
||||
|
||||
#align(center, cetz.canvas({
|
||||
#align(
|
||||
center,
|
||||
cetz.canvas({
|
||||
import cetz.draw: *
|
||||
let s = 2.5
|
||||
|
||||
@@ -67,7 +69,8 @@ You may detach the string as you hang the painting, but it must be re-attached o
|
||||
)
|
||||
|
||||
circle((0.66 * s, 0.66 * s), radius: 0.07 * s, fill: white)
|
||||
}))
|
||||
}),
|
||||
)
|
||||
|
||||
#solution([
|
||||
Say we have a left nail and a right nail. The path of the string is as follows:
|
||||
|
||||
@@ -17,9 +17,7 @@ Maximize the product $a_1 #sym.times a_2 #sym.times ... #sym.times a_k$
|
||||
Of course, all $a_i$ should be greater than $1$. \
|
||||
Also, all $a_i$ should be smaller than four, since $x <= x(x-2)$ if $x >= 4$. \
|
||||
Thus, we're left with sequences that only contain 2 and 3. \
|
||||
#note(
|
||||
[Note that two twos are the same as one four, but we exclude fours for simplicity.],
|
||||
)
|
||||
#note([Note that two twos are the same as one four, but we exclude fours for simplicity.])
|
||||
|
||||
#v(2mm)
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
#import "@preview/cetz:0.3.1"
|
||||
|
||||
#show: handout.with(
|
||||
title: [Warm-Up: Passing Balls],
|
||||
@@ -78,7 +78,10 @@ Participant 1 has a black ball. Which balls are held by participants 2, 3, and 4
|
||||
|
||||
let i = 1
|
||||
for p in pts {
|
||||
circle(p, radius: radius * s, fill: if i == 1 {
|
||||
circle(
|
||||
p,
|
||||
radius: radius * s,
|
||||
fill: if i == 1 {
|
||||
ored
|
||||
} else if i == 2 {
|
||||
ogreen
|
||||
@@ -86,9 +89,12 @@ Participant 1 has a black ball. Which balls are held by participants 2, 3, and 4
|
||||
oorange
|
||||
} else if i == 4 {
|
||||
oblue
|
||||
} else { white })
|
||||
} else { white },
|
||||
)
|
||||
|
||||
content(p, text(
|
||||
content(
|
||||
p,
|
||||
text(
|
||||
fill: if i <= 4 {
|
||||
white
|
||||
} else {
|
||||
@@ -96,7 +102,8 @@ Participant 1 has a black ball. Which balls are held by participants 2, 3, and 4
|
||||
},
|
||||
size: t,
|
||||
[*#i*],
|
||||
))
|
||||
),
|
||||
)
|
||||
i = i + 1
|
||||
}
|
||||
}),
|
||||
@@ -111,7 +118,10 @@ Participant 1 has a black ball. Which balls are held by participants 2, 3, and 4
|
||||
let l = calc.rem(((i - 1) * 5), 12) + 1
|
||||
|
||||
|
||||
circle(p, radius: radius * s, fill: if l == 1 {
|
||||
circle(
|
||||
p,
|
||||
radius: radius * s,
|
||||
fill: if l == 1 {
|
||||
ored
|
||||
} else if l == 2 {
|
||||
ogreen
|
||||
@@ -119,9 +129,12 @@ Participant 1 has a black ball. Which balls are held by participants 2, 3, and 4
|
||||
oorange
|
||||
} else if l == 4 {
|
||||
oblue
|
||||
} else { white })
|
||||
} else { white },
|
||||
)
|
||||
|
||||
content(p, text(
|
||||
content(
|
||||
p,
|
||||
text(
|
||||
fill: if l <= 4 {
|
||||
white
|
||||
} else {
|
||||
@@ -129,7 +142,8 @@ Participant 1 has a black ball. Which balls are held by participants 2, 3, and 4
|
||||
},
|
||||
size: t,
|
||||
[*#l*],
|
||||
))
|
||||
),
|
||||
)
|
||||
i = i + 1
|
||||
}
|
||||
}),
|
||||
@@ -144,7 +158,10 @@ Participant 1 has a black ball. Which balls are held by participants 2, 3, and 4
|
||||
let l = calc.rem(((i - 1) * 5), 12) + 1
|
||||
|
||||
|
||||
circle(p, radius: radius * s, fill: if l == 1 {
|
||||
circle(
|
||||
p,
|
||||
radius: radius * s,
|
||||
fill: if l == 1 {
|
||||
oblue
|
||||
} else if l == 2 {
|
||||
oorange
|
||||
@@ -152,9 +169,12 @@ Participant 1 has a black ball. Which balls are held by participants 2, 3, and 4
|
||||
ored
|
||||
} else if l == 4 {
|
||||
ogreen
|
||||
} else { white })
|
||||
} else { white },
|
||||
)
|
||||
|
||||
content(p, text(
|
||||
content(
|
||||
p,
|
||||
text(
|
||||
fill: if l <= 4 {
|
||||
white
|
||||
} else {
|
||||
@@ -162,7 +182,8 @@ Participant 1 has a black ball. Which balls are held by participants 2, 3, and 4
|
||||
},
|
||||
size: t,
|
||||
[*#l*],
|
||||
))
|
||||
),
|
||||
)
|
||||
i = i + 1
|
||||
}
|
||||
}),
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
#import "@preview/cetz:0.3.1"
|
||||
|
||||
#show: handout.with(
|
||||
title: [Warm-Up: What's an AST?],
|
||||
@@ -24,7 +24,9 @@ respecting the order of operations $[and, times, div, +, -]$.
|
||||
|
||||
#v(2mm)
|
||||
|
||||
#align(center, cetz.canvas({
|
||||
#align(
|
||||
center,
|
||||
cetz.canvas({
|
||||
import cetz.draw: *
|
||||
|
||||
// spell:off
|
||||
@@ -68,4 +70,5 @@ respecting the order of operations $[and, times, div, +, -]$.
|
||||
line("bb", "bba")
|
||||
line("bb", "bbb")
|
||||
// spell:on
|
||||
}))
|
||||
}),
|
||||
)
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
#import "@local/handout:0.1.0": *
|
||||
#import "@preview/cetz:0.4.2"
|
||||
#import "@preview/cetz:0.3.1"
|
||||
|
||||
#show: handout.with(
|
||||
title: [Warm-Up: Wild Tic-Tac-Toe],
|
||||
by: "Mark",
|
||||
)
|
||||
|
||||
#let ttt = align(center, cetz.canvas({
|
||||
#let ttt = align(
|
||||
center,
|
||||
cetz.canvas({
|
||||
import cetz.draw: *
|
||||
let s = 0.7 // scale
|
||||
|
||||
@@ -15,7 +17,8 @@
|
||||
line((1 * s, 3 * s), (1 * s, -3 * s))
|
||||
line((3 * s, -1 * s), (-3 * s, -1 * s))
|
||||
line((3 * s, 1 * s), (-3 * s, 1 * s))
|
||||
}))
|
||||
}),
|
||||
)
|
||||
|
||||
|
||||
#problem()
|
||||
|
||||
Reference in New Issue
Block a user