Compare commits
1 Commits
0b7acaf5ae
...
typst-quan
Author | SHA1 | Date | |
---|---|---|---|
df91fd9f96 |
@ -26,7 +26,7 @@ jobs:
|
|||||||
|
|
||||||
- name: "Download Typstyle"
|
- name: "Download Typstyle"
|
||||||
run: |
|
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
|
chmod +x typstyle-x86_64-unknown-linux-musl
|
||||||
|
|
||||||
- name: Check typst formatting
|
- name: Check typst formatting
|
||||||
@ -62,7 +62,7 @@ jobs:
|
|||||||
# more control anyway.
|
# more control anyway.
|
||||||
- name: "Download Typst"
|
- name: "Download Typst"
|
||||||
run: |
|
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"
|
tar -xf "typst-x86_64-unknown-linux-musl.tar.xz"
|
||||||
mv "typst-x86_64-unknown-linux-musl/typst" .
|
mv "typst-x86_64-unknown-linux-musl/typst" .
|
||||||
rm "typst-x86_64-unknown-linux-musl.tar.xz"
|
rm "typst-x86_64-unknown-linux-musl.tar.xz"
|
||||||
|
@ -3,10 +3,13 @@
|
|||||||
// Re-exports
|
// Re-exports
|
||||||
// All functions that maybe used by client code are listed here
|
// All functions that maybe used by client code are listed here
|
||||||
#import "misc.typ": *
|
#import "misc.typ": *
|
||||||
#import "object.typ": definition, example, generic, problem, remark, theorem
|
#import "object.typ": problem, definition, theorem, example, remark, generic
|
||||||
#import "solution.typ": (
|
#import "solution.typ": (
|
||||||
if_no_solutions, if_solutions, if_solutions_else, instructornote,
|
if_solutions,
|
||||||
sample_solution, solution,
|
if_no_solutions,
|
||||||
|
if_solutions_else,
|
||||||
|
solution,
|
||||||
|
instructornote,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -35,7 +38,10 @@
|
|||||||
margin: 20mm,
|
margin: 20mm,
|
||||||
width: 8.5in,
|
width: 8.5in,
|
||||||
height: 11in,
|
height: 11in,
|
||||||
footer: align(center, context counter(page).display()),
|
footer: align(
|
||||||
|
center,
|
||||||
|
context counter(page).display(),
|
||||||
|
),
|
||||||
footer-descent: 5mm,
|
footer-descent: 5mm,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -96,8 +102,8 @@
|
|||||||
|
|
||||||
// Make handout title
|
// Make handout title
|
||||||
{
|
{
|
||||||
import "header.typ": make_header, short_solution_warning, solution_warning
|
import "header.typ": make_header, solution_warning, short_solution_warning
|
||||||
import "solution.typ": reset_solutions, solutions_state
|
import "solution.typ": solutions_state, reset_solutions
|
||||||
|
|
||||||
reset_solutions()
|
reset_solutions()
|
||||||
|
|
||||||
|
@ -29,7 +29,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Render the object
|
// 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.
|
// Generate labeled metadata for this object.
|
||||||
//
|
//
|
||||||
@ -53,7 +57,7 @@
|
|||||||
if not (
|
if not (
|
||||||
it.element != none
|
it.element != none
|
||||||
and it.element.has("value")
|
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)
|
and it.element.value.keys().contains(magic_key)
|
||||||
) {
|
) {
|
||||||
// This label is not attached to object metadata
|
// This label is not attached to object metadata
|
||||||
@ -96,5 +100,9 @@
|
|||||||
#let remark = _mkobj("Remark")
|
#let remark = _mkobj("Remark")
|
||||||
|
|
||||||
#let generic(obj_content) = {
|
#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.
|
/// If false, hide instructor info.
|
||||||
@ -61,71 +61,57 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#let solution(content) = {
|
#let solution(content) = {
|
||||||
if_solutions(align(center, stack(
|
if_solutions(
|
||||||
block(
|
align(
|
||||||
width: 100%,
|
center,
|
||||||
breakable: false,
|
stack(
|
||||||
fill: ored,
|
block(
|
||||||
stroke: ored + 2pt,
|
width: 100%,
|
||||||
inset: 1.5mm,
|
breakable: false,
|
||||||
align(left, text(fill: white, weight: "bold", [Solution:])),
|
fill: ored,
|
||||||
),
|
stroke: ored + 2pt,
|
||||||
|
inset: 1.5mm,
|
||||||
|
align(left, text(fill: white, weight: "bold", [Solution:])),
|
||||||
|
),
|
||||||
|
|
||||||
block(
|
block(
|
||||||
width: 100%,
|
width: 100%,
|
||||||
height: auto,
|
height: auto,
|
||||||
breakable: false,
|
breakable: false,
|
||||||
fill: ored.lighten(80%).desaturate(10%),
|
fill: ored.lighten(80%).desaturate(10%),
|
||||||
stroke: ored + 2pt,
|
stroke: ored + 2pt,
|
||||||
inset: 3mm,
|
inset: 3mm,
|
||||||
align(left, content),
|
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) = {
|
#let instructornote(content) = {
|
||||||
if_solutions(align(center, stack(
|
if_solutions(
|
||||||
block(
|
align(
|
||||||
width: 100%,
|
center,
|
||||||
breakable: false,
|
stack(
|
||||||
fill: oblue,
|
block(
|
||||||
stroke: oblue + 2pt,
|
width: 100%,
|
||||||
inset: 1.5mm,
|
breakable: false,
|
||||||
align(left, text(fill: white, weight: "bold", [Instructor note:])),
|
fill: oblue,
|
||||||
),
|
stroke: oblue + 2pt,
|
||||||
|
inset: 1.5mm,
|
||||||
|
align(left, text(fill: white, weight: "bold", [Instructor note:])),
|
||||||
|
),
|
||||||
|
|
||||||
block(
|
block(
|
||||||
width: 100%,
|
width: 100%,
|
||||||
height: auto,
|
height: auto,
|
||||||
breakable: false,
|
breakable: false,
|
||||||
fill: oblue.lighten(80%).desaturate(10%),
|
fill: oblue.lighten(80%).desaturate(10%),
|
||||||
stroke: oblue + 2pt,
|
stroke: oblue + 2pt,
|
||||||
inset: 3mm,
|
inset: 3mm,
|
||||||
align(left, content),
|
align(left, content),
|
||||||
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
)))
|
)
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#import "@local/handout:0.1.0": *
|
#import "@local/handout:0.1.0": *
|
||||||
#import "@preview/cetz:0.4.2"
|
#import "@preview/cetz:0.3.1"
|
||||||
|
|
||||||
= Floats
|
= Floats
|
||||||
#definition()
|
#definition()
|
||||||
@ -31,71 +31,75 @@ Rewrite the following binary decimals in base 10: \
|
|||||||
#definition(label: "floatbits")
|
#definition(label: "floatbits")
|
||||||
Another way we can interpret a bit string is as a _signed floating-point decimal_, or a `float` for short. \
|
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: \
|
Floats represent a subset of the real numbers, and are interpreted as follows: \
|
||||||
#note(
|
#note([The following only applies to floats that consist of 32 bits. We won't encounter any others today.])
|
||||||
[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({
|
||||||
|
import cetz.draw: *
|
||||||
|
|
||||||
|
let chars = (
|
||||||
|
`0`,
|
||||||
|
`b`,
|
||||||
|
`0`,
|
||||||
|
`_`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`_`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`_`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`_`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
`0`,
|
||||||
|
)
|
||||||
|
|
||||||
|
let x = 0
|
||||||
|
for c in chars {
|
||||||
|
content((x, 0), c)
|
||||||
|
x += 0.25
|
||||||
|
}
|
||||||
|
|
||||||
|
let y = -0.4
|
||||||
|
line((0.3, y), (0.65, y))
|
||||||
|
content((0.45, y - 0.2), [s])
|
||||||
|
|
||||||
|
line((0.85, y), (2.9, y))
|
||||||
|
content((1.9, y - 0.2), [exponent])
|
||||||
|
|
||||||
|
line((3.10, y), (9.4, y))
|
||||||
|
content((6.3, y - 0.2), [fraction])
|
||||||
|
}),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
#align(center, box(inset: 2mm, cetz.canvas({
|
|
||||||
import cetz.draw: *
|
|
||||||
|
|
||||||
let chars = (
|
|
||||||
`0`,
|
|
||||||
`b`,
|
|
||||||
`0`,
|
|
||||||
`_`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`_`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`_`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`_`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
`0`,
|
|
||||||
)
|
|
||||||
|
|
||||||
let x = 0
|
|
||||||
for c in chars {
|
|
||||||
content((x, 0), c)
|
|
||||||
x += 0.25
|
|
||||||
}
|
|
||||||
|
|
||||||
let y = -0.4
|
|
||||||
line((0.3, y), (0.65, y))
|
|
||||||
content((0.45, y - 0.2), [s])
|
|
||||||
|
|
||||||
line((0.85, y), (2.9, y))
|
|
||||||
content((1.9, y - 0.2), [exponent])
|
|
||||||
|
|
||||||
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
|
- The first bit denotes the sign of the float's value
|
||||||
We'll label it $s$. \
|
We'll label it $s$. \
|
||||||
If $s = #text([`1`])$, this float is negative; if $s = #text([`0`])$, it is positive.
|
If $s = #text([`1`])$, this float is negative; if $s = #text([`0`])$, it is positive.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#import "@local/handout:0.1.0": *
|
#import "@local/handout:0.1.0": *
|
||||||
#import "@preview/cetz:0.4.2"
|
#import "@preview/cetz:0.3.1"
|
||||||
#import "@preview/cetz-plot:0.1.2": chart, plot
|
#import "@preview/cetz-plot:0.1.0": plot, chart
|
||||||
|
|
||||||
= Integers and Floats
|
= Integers and Floats
|
||||||
|
|
||||||
@ -44,11 +44,19 @@ This allows us to improve the average error of our linear approximation:
|
|||||||
{
|
{
|
||||||
let domain = (0, 1)
|
let domain = (0, 1)
|
||||||
|
|
||||||
plot.add(f1, domain: domain, label: $log(1+x)$, style: (
|
plot.add(
|
||||||
stroke: ogrape,
|
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)
|
let domain = (0, 1)
|
||||||
|
|
||||||
plot.add(f1, domain: domain, label: $log(1+x)$, style: (
|
plot.add(
|
||||||
stroke: ogrape,
|
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)
|
#v(1fr)
|
||||||
|
|
||||||
#note(type: "Note", [
|
#note(
|
||||||
"Average error" above is simply the area of the region between the two graphs:
|
type: "Note",
|
||||||
$
|
[
|
||||||
integral_0^1 abs(#v(1mm) log(1+x)_2 - (x+epsilon) #v(1mm))
|
"Average error" above is simply the area of the region between the two graphs:
|
||||||
$
|
$
|
||||||
Feel free to ignore this note, it isn't a critical part of this handout.
|
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()
|
#pagebreak()
|
||||||
@ -130,11 +149,12 @@ $
|
|||||||
Let $E$ and $F$ be the exponent and float bits of $x_f$. \
|
Let $E$ and $F$ be the exponent and float bits of $x_f$. \
|
||||||
We then have:
|
We then have:
|
||||||
$
|
$
|
||||||
log_2(x_f) & = log_2 ( 2^(E-127) times (1 + (F) / (2^23)) ) \
|
log_2(x_f)
|
||||||
& = E - 127 + log_2(1 + F / (2^23)) \
|
&= log_2 ( 2^(E-127) times (1 + (F) / (2^23)) ) \
|
||||||
& approx E-127 + F / (2^23) + epsilon \
|
&= E - 127 + log_2(1 + F / (2^23)) \
|
||||||
& = 1 / (2^23)(2^23 E + F) - 127 + epsilon \
|
& approx E-127 + F / (2^23) + epsilon \
|
||||||
& = 1 / (2^23)(x_i) - 127 + epsilon
|
&= 1 / (2^23)(2^23 E + F) - 127 + epsilon \
|
||||||
|
&= 1 / (2^23)(x_i) - 127 + epsilon
|
||||||
$
|
$
|
||||||
])
|
])
|
||||||
|
|
||||||
|
@ -156,9 +156,9 @@ float Q_rsqrt( float number ) {
|
|||||||
Using a calculator and some basic algebra, we can find the $epsilon$ this code uses: \
|
Using a calculator and some basic algebra, we can find the $epsilon$ this code uses: \
|
||||||
#note[Remember, #text[`0x5f3759df`] is $6240089$ in hexadecimal.]
|
#note[Remember, #text[`0x5f3759df`] is $6240089$ in hexadecimal.]
|
||||||
$
|
$
|
||||||
(3 times 2^22) (127 - epsilon) & = 6240089 \
|
(3 times 2^22) (127 - epsilon) &= 6240089 \
|
||||||
(127 - epsilon) & = 126.955 \
|
(127 - epsilon) &= 126.955 \
|
||||||
epsilon & = 0.0450466
|
epsilon &= 0.0450466
|
||||||
$
|
$
|
||||||
|
|
||||||
So, $0.045$ is the $epsilon$ used by Quake. \
|
So, $0.045$ is the $epsilon$ used by Quake. \
|
||||||
|
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"
|
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()
|
@ -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 "@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.
|
// Shorthand, we'll be using these a lot.
|
||||||
@ -7,31 +7,35 @@
|
|||||||
#let tm = sym.times.circle
|
#let tm = sym.times.circle
|
||||||
|
|
||||||
#let graphgrid(inner_content) = {
|
#let graphgrid(inner_content) = {
|
||||||
align(center, box(inset: 3mm, cetz.canvas({
|
align(
|
||||||
import cetz.draw: *
|
center,
|
||||||
let x = 5.25
|
box(
|
||||||
|
inset: 3mm,
|
||||||
|
cetz.canvas({
|
||||||
|
import cetz.draw: *
|
||||||
|
let x = 5.25
|
||||||
|
|
||||||
grid(
|
grid(
|
||||||
(0, 0),
|
(0, 0), (x, x), step: 0.75,
|
||||||
(x, x),
|
stroke: luma(100) + 0.3mm
|
||||||
step: 0.75,
|
)
|
||||||
stroke: luma(100) + 0.3mm,
|
|
||||||
)
|
|
||||||
|
|
||||||
if (inner_content != none) {
|
if (inner_content != none) {
|
||||||
inner_content
|
inner_content
|
||||||
}
|
}
|
||||||
|
|
||||||
mark((0, x + 0.5), (0, x + 1), symbol: ">", fill: black, scale: 1)
|
mark((0, x + 0.5), (0, x + 1), symbol: ">", fill: black, scale: 1)
|
||||||
mark((x + 0.5, 0), (x + 1, 0), symbol: ">", fill: black, scale: 1)
|
mark((x + 0.5, 0), (x + 1, 0), symbol: ">", fill: black, scale: 1)
|
||||||
|
|
||||||
line(
|
line(
|
||||||
(0, x + 0.25),
|
(0, x + 0.25),
|
||||||
(0, 0),
|
(0, 0),
|
||||||
(x + 0.25, 0),
|
(x + 0.25, 0),
|
||||||
stroke: 0.75mm + black,
|
stroke: 0.75mm + black,
|
||||||
)
|
)
|
||||||
})))
|
}),
|
||||||
|
),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Adds extra padding to an equation.
|
/// Adds extra padding to an equation.
|
||||||
@ -44,16 +48,23 @@
|
|||||||
/// Note that there are newlines between the $ and content,
|
/// Note that there are newlines between the $ and content,
|
||||||
/// this gives us display math (which is what we want when using this macro)
|
/// this gives us display math (which is what we want when using this macro)
|
||||||
#let eqnbox(eqn) = {
|
#let eqnbox(eqn) = {
|
||||||
align(center, box(
|
align(
|
||||||
inset: 3mm,
|
center,
|
||||||
eqn,
|
box(
|
||||||
))
|
inset: 3mm,
|
||||||
|
eqn,
|
||||||
|
),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
#let dotline(a, b) = {
|
#let dotline(a, b) = {
|
||||||
cetz.draw.line(a, b, stroke: (
|
cetz.draw.line(
|
||||||
dash: "dashed",
|
a,
|
||||||
thickness: 0.5mm,
|
b,
|
||||||
paint: ored,
|
stroke: (
|
||||||
))
|
dash: "dashed",
|
||||||
|
thickness: 0.5mm,
|
||||||
|
paint: ored,
|
||||||
|
),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
@ -26,9 +26,9 @@ $
|
|||||||
|
|
||||||
#solution([
|
#solution([
|
||||||
- Is tropical addition commutative?\
|
- Is tropical addition commutative?\
|
||||||
Yes, $min(min(x, y), z) = min(x, y, z) = min(x, min(y, z))$
|
Yes, $min(min(x,y),z) = min(x,y,z) = min(x,min(y,z))$
|
||||||
- Is tropical addition associative? \
|
- Is tropical addition associative? \
|
||||||
Yes, $min(x, y) = min(y, x)$
|
Yes, $min(x,y) = min(y,x)$
|
||||||
- Is there a tropical additive identity? \
|
- Is there a tropical additive identity? \
|
||||||
No. There is no $n$ where $x <= n$ for all real $x$
|
No. There is no $n$ where $x <= n$ for all real $x$
|
||||||
])
|
])
|
||||||
@ -117,7 +117,7 @@ Do tropical multiplicative inverses always exist? \
|
|||||||
Is tropical multiplication distributive over addition? \
|
Is tropical multiplication distributive over addition? \
|
||||||
#note([Does $x #tm (y #tp z) = x #tm y #tp x #tm z$?])
|
#note([Does $x #tm (y #tp z) = x #tm y #tp x #tm z$?])
|
||||||
|
|
||||||
#solution([Yes, $x + min(y, z) = min(x+y, x+z)$])
|
#solution([Yes, $x + min(y,z) = min(x+y, x+z)$])
|
||||||
|
|
||||||
#v(1fr)
|
#v(1fr)
|
||||||
|
|
||||||
@ -134,7 +134,14 @@ Fill the following tropical addition and multiplication tables
|
|||||||
table(
|
table(
|
||||||
columns: (col, col, col, col, col, col),
|
columns: (col, col, col, col, col, col),
|
||||||
align: center,
|
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$), [], [], [], [], [],
|
||||||
box(inset: 3pt, $2$), [], [], [], [], [],
|
box(inset: 3pt, $2$), [], [], [], [], [],
|
||||||
@ -145,7 +152,14 @@ Fill the following tropical addition and multiplication tables
|
|||||||
table(
|
table(
|
||||||
columns: (col, col, col, col, col, col),
|
columns: (col, col, col, col, col, col),
|
||||||
align: center,
|
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$), [], [], [], [], [],
|
||||||
box(inset: 3pt, $1$), [], [], [], [], [],
|
box(inset: 3pt, $1$), [], [], [], [], [],
|
||||||
@ -164,7 +178,14 @@ Fill the following tropical addition and multiplication tables
|
|||||||
table(
|
table(
|
||||||
columns: (col, col, col, col, col, col),
|
columns: (col, col, col, col, col, col),
|
||||||
align: center,
|
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$),
|
||||||
box(inset: 3pt, $1$),
|
box(inset: 3pt, $1$),
|
||||||
@ -204,7 +225,14 @@ Fill the following tropical addition and multiplication tables
|
|||||||
table(
|
table(
|
||||||
columns: (col, col, col, col, col, col),
|
columns: (col, col, col, col, col, col),
|
||||||
align: center,
|
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$),
|
||||||
box(inset: 3pt, $0$),
|
box(inset: 3pt, $0$),
|
||||||
@ -253,9 +281,10 @@ Adjacent parenthesis imply tropical multiplication
|
|||||||
|
|
||||||
#solution([
|
#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 (2 #tp 3)x #tp (2 #tm 3) \
|
&= x^2 #tp 2x #tp 3x #tp (2 #tm 3) \
|
||||||
& = x^2 #tp 2x #tp 5
|
&= x^2 #tp (2 #tp 3)x #tp (2 #tm 3) \
|
||||||
|
&= x^2 #tp 2x #tp 5
|
||||||
$
|
$
|
||||||
|
|
||||||
Also, $f(1) = 2$ and $f(4) = 5$.
|
Also, $f(1) = 2$ and $f(4) = 5$.
|
||||||
|
@ -1,18 +1,21 @@
|
|||||||
#import "@local/handout:0.1.0": *
|
#import "@local/handout:0.1.0": *
|
||||||
#import "../macros.typ": *
|
#import "../macros.typ": *
|
||||||
#import "@preview/cetz:0.4.2"
|
#import "@preview/cetz:0.3.1"
|
||||||
|
|
||||||
= Tropical Polynomials
|
= Tropical Polynomials
|
||||||
|
|
||||||
#definition()
|
#definition()
|
||||||
A _polynomial_ is an expression formed by adding and multiplying numbers and a variable $x$. \
|
A _polynomial_ is an expression formed by adding and multiplying numbers and a variable $x$. \
|
||||||
Every polynomial can be written as
|
Every polynomial can be written as
|
||||||
#align(center, box(
|
#align(
|
||||||
inset: 3mm,
|
center,
|
||||||
$
|
box(
|
||||||
c_0 + c_1 x + c_2 x^2 + ... + c_n x^n
|
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$. \
|
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.
|
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()
|
#definition()
|
||||||
A _tropical_ polynomial is a polynomial that uses tropical addition and multiplication. \
|
A _tropical_ polynomial is a polynomial that uses tropical addition and multiplication. \
|
||||||
In other words, it is an expression of the form
|
In other words, it is an expression of the form
|
||||||
#align(center, box(
|
#align(
|
||||||
inset: 3mm,
|
center,
|
||||||
$
|
box(
|
||||||
c_0 #tp (c_1 #tm x) #tp (c_2 #tm x^2) #tp ... #tp (c_n #tm x^n)
|
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.
|
where all exponents represent repeated tropical multiplication.
|
||||||
|
|
||||||
#pagebreak() // MARK: page
|
#pagebreak() // MARK: page
|
||||||
@ -60,7 +66,7 @@ Draw a graph of the tropical polynomial $f(x) = x^2 #tp 1x #tp 4$. \
|
|||||||
#if_no_solutions(graphgrid(none))
|
#if_no_solutions(graphgrid(none))
|
||||||
|
|
||||||
#solution([
|
#solution([
|
||||||
$f(x) = min(2x, 1+x, 4)$, which looks like:
|
$f(x) = min(2x , 1+x, 4)$, which looks like:
|
||||||
|
|
||||||
#graphgrid({
|
#graphgrid({
|
||||||
import cetz.draw: *
|
import cetz.draw: *
|
||||||
@ -84,12 +90,15 @@ Draw a graph of the tropical polynomial $f(x) = x^2 #tp 1x #tp 4$. \
|
|||||||
#problem()
|
#problem()
|
||||||
Now, factor $f(x) = x^2 #tp 1x #tp 4$ into two polynomials with degree 1. \
|
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
|
In other words, find $r$ and $s$ so that
|
||||||
#align(center, box(
|
#align(
|
||||||
inset: 3mm,
|
center,
|
||||||
$
|
box(
|
||||||
x^2 #tp 1x #tp 4 = (x #tp r)(x #tp s)
|
inset: 3mm,
|
||||||
$,
|
$
|
||||||
))
|
x^2 #tp 1x #tp 4 = (x #tp r)(x #tp s)
|
||||||
|
$,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
we will call $r$ and $s$ the _roots_ of $f$.
|
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([
|
#solution([
|
||||||
We (tropically) factor out $-2$ to get
|
We (tropically) factor out $-2$ to get
|
||||||
|
|
||||||
#eqnbox(
|
#eqnbox($
|
||||||
$
|
f(x) = -2(x^2 #tp 2x #tp 10)
|
||||||
f(x) = -2(x^2 #tp 2x #tp 10)
|
$)
|
||||||
$,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
by the same process as the previous problem, we get
|
by the same process as the previous problem, we get
|
||||||
#eqnbox(
|
#eqnbox($
|
||||||
$
|
f(x) = -2(x #tp 2)(x #tp 8)
|
||||||
f(x) = -2(x #tp 2)(x #tp 8)
|
$)
|
||||||
$,
|
|
||||||
)
|
|
||||||
])
|
])
|
||||||
|
|
||||||
#v(1fr)
|
#v(1fr)
|
||||||
@ -231,11 +236,11 @@ Graph $f(x) = 1x^2 #tp 3x #tp 5$.
|
|||||||
#problem()
|
#problem()
|
||||||
Find a factorization of $f$ in the form $a(x #tp r)(x#tp s)$.
|
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
|
f(x) = 1x^2 #tp 3 x #tp 5 = 1(x #tp 2)^2
|
||||||
$,
|
$),
|
||||||
))
|
)
|
||||||
|
|
||||||
#v(1fr)
|
#v(1fr)
|
||||||
|
|
||||||
@ -258,21 +263,23 @@ Graph $f(x) = 2x^2 #tp 4x #tp 4$.
|
|||||||
|
|
||||||
#if_no_solutions(graphgrid(none))
|
#if_no_solutions(graphgrid(none))
|
||||||
|
|
||||||
#solution(graphgrid({
|
#solution(
|
||||||
import cetz.draw: *
|
graphgrid({
|
||||||
let step = 0.75
|
import cetz.draw: *
|
||||||
|
let step = 0.75
|
||||||
|
|
||||||
dotline((0, 2 * step), (3 * step, 8 * step))
|
dotline((0, 2 * step), (3 * step, 8 * step))
|
||||||
dotline((0, 4 * step), (5 * step, 8 * step))
|
dotline((0, 4 * step), (5 * step, 8 * step))
|
||||||
dotline((0, 4 * step), (8 * step, 4 * step))
|
dotline((0, 4 * step), (8 * step, 4 * step))
|
||||||
|
|
||||||
line(
|
line(
|
||||||
(0, 2 * step),
|
(0, 2 * step),
|
||||||
(1 * step, 4 * step),
|
(1 * step, 4 * step),
|
||||||
(7.5 * step, 4 * step),
|
(7.5 * step, 4 * step),
|
||||||
stroke: 1mm + oblue,
|
stroke: 1mm + oblue,
|
||||||
)
|
)
|
||||||
}))
|
}),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
#problem()
|
#problem()
|
||||||
@ -318,7 +325,7 @@ Find a formula for $B$ in terms of $a$, $b$, and $c$. \
|
|||||||
|
|
||||||
#solution([
|
#solution([
|
||||||
If we want to factor $a(x^2 #tp (b-a)x #tp (c-a))$, we need to find $r$ and $s$ so that
|
If we want to factor $a(x^2 #tp (b-a)x #tp (c-a))$, we need to find $r$ and $s$ so that
|
||||||
- $min(r, s) = b-a$, and
|
- $min(r,s) = b-a$, and
|
||||||
- $r + s = c - a$
|
- $r + s = c - a$
|
||||||
|
|
||||||
#v(2mm)
|
#v(2mm)
|
||||||
@ -334,8 +341,9 @@ Find a formula for $B$ in terms of $a$, $b$, and $c$. \
|
|||||||
|
|
||||||
*Case 2:* If $b > (a + c #sym.div) 2$, then
|
*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 #tp (c-a)/2)^2
|
&= 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$
|
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 "@local/handout:0.1.0": *
|
||||||
#import "../macros.typ": *
|
#import "../macros.typ": *
|
||||||
#import "@preview/cetz:0.4.2"
|
#import "@preview/cetz:0.3.1"
|
||||||
|
|
||||||
= Tropical Cubic Polynomials
|
= Tropical Cubic Polynomials
|
||||||
|
|
||||||
@ -131,12 +131,15 @@ Using the last three problems, find formulas for $B$ and $C$ in terms of $a$, $b
|
|||||||
#problem()
|
#problem()
|
||||||
What are the roots of the following polynomial?
|
What are the roots of the following polynomial?
|
||||||
|
|
||||||
#align(center, box(
|
#align(
|
||||||
inset: 3mm,
|
center,
|
||||||
$
|
box(
|
||||||
3 x^6 #tp 4 x^5 #tp 2 x^4 #tp x^3 #tp x^2 #tp 4 x #tp 5
|
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([
|
#solution([
|
||||||
We have
|
We have
|
||||||
@ -166,8 +169,9 @@ Find a formula for each $C_i$ in terms of $c_0, c_1, ..., c_n$.
|
|||||||
|
|
||||||
#solution([
|
#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 (k-j) / (k-l) + a_k (j-l) / (k-l) )
|
&= 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) )
|
||||||
$
|
$
|
||||||
|
|
||||||
#v(2mm)
|
#v(2mm)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#import "@local/handout:0.1.0": *
|
#import "@local/handout:0.1.0": *
|
||||||
#import "@preview/cetz:0.4.2"
|
#import "@preview/cetz:0.3.1"
|
||||||
|
|
||||||
= Wallpaper Symmetries
|
= Wallpaper Symmetries
|
||||||
|
|
||||||
@ -12,9 +12,7 @@ There are four classes of Euclidean isometries:
|
|||||||
- reflections
|
- reflections
|
||||||
- rotations
|
- rotations
|
||||||
- glide reflections
|
- glide reflections
|
||||||
#note(
|
#note([We can prove there are no others, but this is beyond the scope of this handout.]) \
|
||||||
[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:
|
A simple example of each isometry is shown below:
|
||||||
|
|
||||||
#let demo(c) = {
|
#let demo(c) = {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#import "@local/handout:0.1.0": *
|
#import "@local/handout:0.1.0": *
|
||||||
#import "@preview/cetz:0.4.2"
|
#import "@preview/cetz:0.3.1"
|
||||||
|
|
||||||
= Mirror Symmetry
|
= Mirror Symmetry
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#import "@local/handout:0.1.0": *
|
#import "@local/handout:0.1.0": *
|
||||||
#import "@preview/cetz:0.4.2"
|
#import "@preview/cetz:0.3.1"
|
||||||
|
|
||||||
= Rotational Symmetry
|
= Rotational Symmetry
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#import "@local/handout:0.1.0": *
|
#import "@local/handout:0.1.0": *
|
||||||
#import "@preview/cetz:0.4.2"
|
#import "@preview/cetz:0.3.1"
|
||||||
|
|
||||||
#let pat(img, sol) = {
|
#let pat(img, sol) = {
|
||||||
problem()
|
problem()
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#import "@local/handout:0.1.0": *
|
#import "@local/handout:0.1.0": *
|
||||||
#import "@preview/cetz:0.4.2"
|
#import "@preview/cetz:0.3.1"
|
||||||
|
|
||||||
= The Signature-Cost Theorem
|
= The Signature-Cost Theorem
|
||||||
|
|
||||||
@ -7,20 +7,23 @@
|
|||||||
First, we'll associate a _cost_ to each type of symmetry in orbifold notation:
|
First, we'll associate a _cost_ to each type of symmetry in orbifold notation:
|
||||||
|
|
||||||
#v(4mm)
|
#v(4mm)
|
||||||
#align(center, table(
|
#align(
|
||||||
stroke: (1pt, 1pt),
|
center,
|
||||||
align: center,
|
table(
|
||||||
columns: (auto, auto, auto, auto),
|
stroke: (1pt, 1pt),
|
||||||
[*Symbol*], [*Cost*], [*Symbol*], [*Cost*],
|
align: center,
|
||||||
[#sym.circle.small], [2], [#sym.times or #sym.convolve], [1],
|
columns: (auto, auto, auto, auto),
|
||||||
[#sym.diamond.stroked.small`2`], [1/2], [#sym.convolve`2`], [1/4],
|
[*Symbol*], [*Cost*], [*Symbol*], [*Cost*],
|
||||||
[#sym.diamond.stroked.small`3`], [2/3], [#sym.convolve`3`], [1/3],
|
[#sym.circle.small], [2], [#sym.times or #sym.convolve], [1],
|
||||||
[#sym.dots], [#sym.dots], [#sym.dots], [#sym.dots],
|
[#sym.diamond.stroked.small`2`], [1/2], [#sym.convolve`2`], [1/4],
|
||||||
[#sym.diamond.stroked.small`n`],
|
[#sym.diamond.stroked.small`3`], [2/3], [#sym.convolve`3`], [1/3],
|
||||||
[$(n-1) / n$],
|
[#sym.dots], [#sym.dots], [#sym.dots], [#sym.dots],
|
||||||
[#sym.convolve`n`],
|
[#sym.diamond.stroked.small`n`],
|
||||||
[$(n-1) / (2n)$],
|
[$(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.
|
We then calculate the total "cost" of a signature by adding up the costs of each component.
|
||||||
|
@ -46,10 +46,10 @@ Use two half adders to construct a full adder.
|
|||||||
|
|
||||||
#solution([
|
#solution([
|
||||||
$
|
$
|
||||||
s_1, c_1 & = "HA"(a, b) \
|
s_1, c_1 &= "HA"(a, b) \
|
||||||
s_2, c_2 & = "HA"(s_1, c_"in") \
|
s_2, c_2 &= "HA"(s_1, c_"in") \
|
||||||
s_"out" & = s_2 \
|
s_"out" &= s_2 \
|
||||||
c_"out" & = "OR"(c_1, c_2)
|
c_"out" &= "OR"(c_1, c_2)
|
||||||
$
|
$
|
||||||
|
|
||||||
#v(2mm)
|
#v(2mm)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#import "@local/handout:0.1.0": *
|
#import "@local/handout:0.1.0": *
|
||||||
#import "@preview/cetz:0.4.2"
|
#import "@preview/cetz:0.3.1"
|
||||||
|
|
||||||
#show: handout.with(
|
#show: handout.with(
|
||||||
title: [Warm-Up: Big-Tac-Toe],
|
title: [Warm-Up: Big-Tac-Toe],
|
||||||
@ -75,13 +75,16 @@ How does your strategy change? \
|
|||||||
#if extra_boards {
|
#if extra_boards {
|
||||||
pagebreak()
|
pagebreak()
|
||||||
|
|
||||||
align(center, grid(
|
align(
|
||||||
stroke: none,
|
center,
|
||||||
align: center,
|
grid(
|
||||||
columns: (1fr, 1fr),
|
stroke: none,
|
||||||
rows: (1fr, 1fr, 1fr),
|
align: center,
|
||||||
btt(0.35), btt(0.35),
|
columns: (1fr, 1fr),
|
||||||
btt(0.35), btt(0.35),
|
rows: (1fr, 1fr, 1fr),
|
||||||
btt(0.35), btt(0.35),
|
btt(0.35), btt(0.35),
|
||||||
))
|
btt(0.35), btt(0.35),
|
||||||
|
btt(0.35), btt(0.35),
|
||||||
|
),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#import "@local/handout:0.1.0": *
|
#import "@local/handout:0.1.0": *
|
||||||
#import "@preview/cetz:0.4.2"
|
#import "@preview/cetz:0.3.1"
|
||||||
|
|
||||||
|
|
||||||
#show: handout.with(
|
#show: handout.with(
|
||||||
@ -43,56 +43,61 @@ Now, consider the set of six-sided dice below:
|
|||||||
- Die $E$: $0, 5, 5, 5, 5, 5$
|
- Die $E$: $0, 5, 5, 5, 5, 5$
|
||||||
On average, which die beats each of the others? Draw a diagram.
|
On average, which die beats each of the others? Draw a diagram.
|
||||||
|
|
||||||
#solution(align(center, cetz.canvas({
|
#solution(
|
||||||
import cetz.draw: *
|
align(
|
||||||
|
center,
|
||||||
|
cetz.canvas({
|
||||||
|
import cetz.draw: *
|
||||||
|
|
||||||
let s = 0.8 // Scale
|
let s = 0.8 // Scale
|
||||||
let t = 13pt * s // text size
|
let t = 13pt * s // text size
|
||||||
let radius = 0.3 * s
|
let radius = 0.3 * s
|
||||||
|
|
||||||
// Points
|
// Points
|
||||||
let a = (-2 * s, 0.2 * s)
|
let a = (-2 * s, 0.2 * s)
|
||||||
let b = (0 * s, 2 * s)
|
let b = (0 * s, 2 * s)
|
||||||
let c = (2 * s, 0.2 * s)
|
let c = (2 * s, 0.2 * s)
|
||||||
let d = (1.2 * s, -2.1 * s)
|
let d = (1.2 * s, -2.1 * s)
|
||||||
let e = (-1.2 * s, -2.1 * s)
|
let e = (-1.2 * s, -2.1 * s)
|
||||||
|
|
||||||
set-style(
|
set-style(
|
||||||
stroke: (thickness: 0.6mm * s),
|
stroke: (thickness: 0.6mm * s),
|
||||||
mark: (
|
mark: (
|
||||||
end: (
|
end: (
|
||||||
symbol: ">",
|
symbol: ">",
|
||||||
fill: black,
|
fill: black,
|
||||||
offset: radius + (0.025 * s),
|
offset: radius + (0.025 * s),
|
||||||
width: 1.2mm * s,
|
width: 1.2mm * s,
|
||||||
length: 1.2mm * s,
|
length: 1.2mm * s,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
line(a, b)
|
line(a, b)
|
||||||
line(b, c)
|
line(b, c)
|
||||||
line(c, d)
|
line(c, d)
|
||||||
line(d, e)
|
line(d, e)
|
||||||
line(e, a)
|
line(e, a)
|
||||||
line(a, c)
|
line(a, c)
|
||||||
line(b, d)
|
line(b, d)
|
||||||
line(c, e)
|
line(c, e)
|
||||||
line(d, a)
|
line(d, a)
|
||||||
line(e, b)
|
line(e, b)
|
||||||
|
|
||||||
circle(a, radius: radius, fill: oblue, stroke: none)
|
circle(a, radius: radius, fill: oblue, stroke: none)
|
||||||
circle(b, radius: radius, fill: oblue, stroke: none)
|
circle(b, radius: radius, fill: oblue, stroke: none)
|
||||||
circle(c, radius: radius, fill: oblue, stroke: none)
|
circle(c, radius: radius, fill: oblue, stroke: none)
|
||||||
circle(d, radius: radius, fill: oblue, stroke: none)
|
circle(d, radius: radius, fill: oblue, stroke: none)
|
||||||
circle(e, radius: radius, fill: oblue, stroke: none)
|
circle(e, radius: radius, fill: oblue, stroke: none)
|
||||||
|
|
||||||
content(a, text(fill: white, size: t, [*A*]))
|
content(a, text(fill: white, size: t, [*A*]))
|
||||||
content(b, text(fill: white, size: t, [*B*]))
|
content(b, text(fill: white, size: t, [*B*]))
|
||||||
content(c, text(fill: white, size: t, [*C*]))
|
content(c, text(fill: white, size: t, [*C*]))
|
||||||
content(d, text(fill: white, size: t, [*D*]))
|
content(d, text(fill: white, size: t, [*D*]))
|
||||||
content(e, text(fill: white, size: t, [*E*]))
|
content(e, text(fill: white, size: t, [*E*]))
|
||||||
})))
|
}),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
#v(1fr)
|
#v(1fr)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#import "@local/handout:0.1.0": *
|
#import "@local/handout:0.1.0": *
|
||||||
#import "@preview/cetz:0.4.2"
|
#import "@preview/cetz:0.3.1"
|
||||||
|
|
||||||
#show: handout.with(
|
#show: handout.with(
|
||||||
title: [Warm-Up: What's an AST?],
|
title: [Warm-Up: What's an AST?],
|
||||||
@ -18,56 +18,59 @@ You may detach the string as you hang the painting, but it must be re-attached o
|
|||||||
|
|
||||||
#v(2mm)
|
#v(2mm)
|
||||||
|
|
||||||
#align(center, cetz.canvas({
|
#align(
|
||||||
import cetz.draw: *
|
center,
|
||||||
let s = 2.5
|
cetz.canvas({
|
||||||
|
import cetz.draw: *
|
||||||
|
let s = 2.5
|
||||||
|
|
||||||
|
|
||||||
line(
|
line(
|
||||||
(0 * s, 1 * s),
|
(0 * s, 1 * s),
|
||||||
(2 * s, 1 * s),
|
(2 * s, 1 * s),
|
||||||
(2 * s, 0 * s),
|
(2 * s, 0 * s),
|
||||||
(0 * s, 0 * s),
|
(0 * s, 0 * s),
|
||||||
close: true,
|
close: true,
|
||||||
stroke: (thickness: 0.8mm),
|
stroke: (thickness: 0.8mm),
|
||||||
)
|
)
|
||||||
|
|
||||||
line(
|
line(
|
||||||
(0.1 * s, 1 * s),
|
(0.1 * s, 1 * s),
|
||||||
(0.5 * s, 1.5 * s),
|
(0.5 * s, 1.5 * s),
|
||||||
(1.5 * s, 1.5 * s),
|
(1.5 * s, 1.5 * s),
|
||||||
(1.9 * s, 1 * s),
|
(1.9 * s, 1 * s),
|
||||||
stroke: (thickness: 0.5mm, dash: "dotted"),
|
stroke: (thickness: 0.5mm, dash: "dotted"),
|
||||||
)
|
)
|
||||||
|
|
||||||
circle((0.5 * s, 1.5 * s), radius: 0.04 * s, fill: black, stroke: none)
|
circle((0.5 * s, 1.5 * s), radius: 0.04 * s, fill: black, stroke: none)
|
||||||
circle((1.5 * s, 1.5 * s), radius: 0.04 * s, fill: black, stroke: none)
|
circle((1.5 * s, 1.5 * s), radius: 0.04 * s, fill: black, stroke: none)
|
||||||
|
|
||||||
line(
|
line(
|
||||||
(0.66 * s, 0.66 * s),
|
(0.66 * s, 0.66 * s),
|
||||||
(0.66 * s, 0.35 * s),
|
(0.66 * s, 0.35 * s),
|
||||||
(0.60 * s, 0.1 * s),
|
(0.60 * s, 0.1 * s),
|
||||||
)
|
)
|
||||||
|
|
||||||
line(
|
line(
|
||||||
(0.72 * s, 0.1 * s),
|
(0.72 * s, 0.1 * s),
|
||||||
(0.66 * s, 0.35 * s),
|
(0.66 * s, 0.35 * s),
|
||||||
)
|
)
|
||||||
|
|
||||||
line(
|
line(
|
||||||
(0.66 * s, 0.575 * s),
|
(0.66 * s, 0.575 * s),
|
||||||
(0.6 * s, 0.475 * s),
|
(0.6 * s, 0.475 * s),
|
||||||
(0.525 * s, 0.575 * s),
|
(0.525 * s, 0.575 * s),
|
||||||
)
|
)
|
||||||
|
|
||||||
line(
|
line(
|
||||||
(0.66 * s, 0.575 * s),
|
(0.66 * s, 0.575 * s),
|
||||||
(0.72 * s, 0.475 * s),
|
(0.72 * s, 0.475 * s),
|
||||||
(0.795 * s, 0.575 * s),
|
(0.795 * s, 0.575 * s),
|
||||||
)
|
)
|
||||||
|
|
||||||
circle((0.66 * s, 0.66 * s), radius: 0.07 * s, fill: white)
|
circle((0.66 * s, 0.66 * s), radius: 0.07 * s, fill: white)
|
||||||
}))
|
}),
|
||||||
|
)
|
||||||
|
|
||||||
#solution([
|
#solution([
|
||||||
Say we have a left nail and a right nail. The path of the string is as follows:
|
Say we have a left nail and a right nail. The path of the string is as follows:
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
#problem()
|
#problem()
|
||||||
Take any positive integer $n$. \
|
Take any positive integer $n$. \
|
||||||
Now, write it as sum of smaller positive integers: $n = a_1 + a_2 + ... a_k$ \
|
Now, write it as sum of smaller positive integers: $n = a_1 + a_2 + ... a_k$ \
|
||||||
Maximize the product $a_1 #sym.times a_2 #sym.times ... #sym.times a_k$
|
Maximize the product $a_1 #sym.times a_2 #sym.times ... #sym.times a_k$
|
||||||
|
|
||||||
|
|
||||||
@ -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$. \
|
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$. \
|
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. \
|
Thus, we're left with sequences that only contain 2 and 3. \
|
||||||
#note(
|
#note([Note that two twos are the same as one four, but we exclude fours for simplicity.])
|
||||||
[Note that two twos are the same as one four, but we exclude fours for simplicity.],
|
|
||||||
)
|
|
||||||
|
|
||||||
#v(2mm)
|
#v(2mm)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#import "@local/handout:0.1.0": *
|
#import "@local/handout:0.1.0": *
|
||||||
#import "@preview/cetz:0.4.2"
|
#import "@preview/cetz:0.3.1"
|
||||||
|
|
||||||
#show: handout.with(
|
#show: handout.with(
|
||||||
title: [Warm-Up: Passing Balls],
|
title: [Warm-Up: Passing Balls],
|
||||||
@ -78,25 +78,32 @@ Participant 1 has a black ball. Which balls are held by participants 2, 3, and 4
|
|||||||
|
|
||||||
let i = 1
|
let i = 1
|
||||||
for p in pts {
|
for p in pts {
|
||||||
circle(p, radius: radius * s, fill: if i == 1 {
|
circle(
|
||||||
ored
|
p,
|
||||||
} else if i == 2 {
|
radius: radius * s,
|
||||||
ogreen
|
fill: if i == 1 {
|
||||||
} else if i == 3 {
|
ored
|
||||||
oorange
|
} else if i == 2 {
|
||||||
} else if i == 4 {
|
ogreen
|
||||||
oblue
|
} else if i == 3 {
|
||||||
} else { white })
|
oorange
|
||||||
|
} else if i == 4 {
|
||||||
|
oblue
|
||||||
|
} else { white },
|
||||||
|
)
|
||||||
|
|
||||||
content(p, text(
|
content(
|
||||||
fill: if i <= 4 {
|
p,
|
||||||
white
|
text(
|
||||||
} else {
|
fill: if i <= 4 {
|
||||||
black
|
white
|
||||||
},
|
} else {
|
||||||
size: t,
|
black
|
||||||
[*#i*],
|
},
|
||||||
))
|
size: t,
|
||||||
|
[*#i*],
|
||||||
|
),
|
||||||
|
)
|
||||||
i = i + 1
|
i = i + 1
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
@ -111,25 +118,32 @@ 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
|
let l = calc.rem(((i - 1) * 5), 12) + 1
|
||||||
|
|
||||||
|
|
||||||
circle(p, radius: radius * s, fill: if l == 1 {
|
circle(
|
||||||
ored
|
p,
|
||||||
} else if l == 2 {
|
radius: radius * s,
|
||||||
ogreen
|
fill: if l == 1 {
|
||||||
} else if l == 3 {
|
ored
|
||||||
oorange
|
} else if l == 2 {
|
||||||
} else if l == 4 {
|
ogreen
|
||||||
oblue
|
} else if l == 3 {
|
||||||
} else { white })
|
oorange
|
||||||
|
} else if l == 4 {
|
||||||
|
oblue
|
||||||
|
} else { white },
|
||||||
|
)
|
||||||
|
|
||||||
content(p, text(
|
content(
|
||||||
fill: if l <= 4 {
|
p,
|
||||||
white
|
text(
|
||||||
} else {
|
fill: if l <= 4 {
|
||||||
black
|
white
|
||||||
},
|
} else {
|
||||||
size: t,
|
black
|
||||||
[*#l*],
|
},
|
||||||
))
|
size: t,
|
||||||
|
[*#l*],
|
||||||
|
),
|
||||||
|
)
|
||||||
i = i + 1
|
i = i + 1
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
@ -144,25 +158,32 @@ 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
|
let l = calc.rem(((i - 1) * 5), 12) + 1
|
||||||
|
|
||||||
|
|
||||||
circle(p, radius: radius * s, fill: if l == 1 {
|
circle(
|
||||||
oblue
|
p,
|
||||||
} else if l == 2 {
|
radius: radius * s,
|
||||||
oorange
|
fill: if l == 1 {
|
||||||
} else if l == 3 {
|
oblue
|
||||||
ored
|
} else if l == 2 {
|
||||||
} else if l == 4 {
|
oorange
|
||||||
ogreen
|
} else if l == 3 {
|
||||||
} else { white })
|
ored
|
||||||
|
} else if l == 4 {
|
||||||
|
ogreen
|
||||||
|
} else { white },
|
||||||
|
)
|
||||||
|
|
||||||
content(p, text(
|
content(
|
||||||
fill: if l <= 4 {
|
p,
|
||||||
white
|
text(
|
||||||
} else {
|
fill: if l <= 4 {
|
||||||
black
|
white
|
||||||
},
|
} else {
|
||||||
size: t,
|
black
|
||||||
[*#l*],
|
},
|
||||||
))
|
size: t,
|
||||||
|
[*#l*],
|
||||||
|
),
|
||||||
|
)
|
||||||
i = i + 1
|
i = i + 1
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#import "@local/handout:0.1.0": *
|
#import "@local/handout:0.1.0": *
|
||||||
#import "@preview/cetz:0.4.2"
|
#import "@preview/cetz:0.3.1"
|
||||||
|
|
||||||
#show: handout.with(
|
#show: handout.with(
|
||||||
title: [Warm-Up: What's an AST?],
|
title: [Warm-Up: What's an AST?],
|
||||||
@ -24,48 +24,51 @@ respecting the order of operations $[and, times, div, +, -]$.
|
|||||||
|
|
||||||
#v(2mm)
|
#v(2mm)
|
||||||
|
|
||||||
#align(center, cetz.canvas({
|
#align(
|
||||||
import cetz.draw: *
|
center,
|
||||||
|
cetz.canvas({
|
||||||
|
import cetz.draw: *
|
||||||
|
|
||||||
// spell:off
|
// spell:off
|
||||||
content((0, 0), $+$, name: "r")
|
content((0, 0), $+$, name: "r")
|
||||||
content((-0.5, -1), $3$, name: "a")
|
content((-0.5, -1), $3$, name: "a")
|
||||||
content((0.5, -1), $div$, name: "b")
|
content((0.5, -1), $div$, name: "b")
|
||||||
content((-0.3, -2), $times$, name: "ba")
|
content((-0.3, -2), $times$, name: "ba")
|
||||||
content((1.3, -2), $and$, name: "bb")
|
content((1.3, -2), $and$, name: "bb")
|
||||||
content((-0.8, -3), $9$, name: "baa")
|
content((-0.8, -3), $9$, name: "baa")
|
||||||
content((0.2, -3), $8$, name: "bab")
|
content((0.2, -3), $8$, name: "bab")
|
||||||
content((0.8, -3), $5$, name: "bba")
|
content((0.8, -3), $5$, name: "bba")
|
||||||
content((1.8, -3), $6$, name: "bbb")
|
content((1.8, -3), $6$, name: "bbb")
|
||||||
// spell:on
|
// spell:on
|
||||||
|
|
||||||
// Zero-sized arrows are a hack for offset.
|
// Zero-sized arrows are a hack for offset.
|
||||||
set-style(
|
set-style(
|
||||||
stroke: (thickness: 0.3mm),
|
stroke: (thickness: 0.3mm),
|
||||||
mark: (
|
mark: (
|
||||||
start: (
|
start: (
|
||||||
symbol: "|",
|
symbol: "|",
|
||||||
offset: 0.25,
|
offset: 0.25,
|
||||||
width: 0mm,
|
width: 0mm,
|
||||||
length: 0mm,
|
length: 0mm,
|
||||||
|
),
|
||||||
|
end: (
|
||||||
|
symbol: "|",
|
||||||
|
offset: 0.25,
|
||||||
|
width: 0mm,
|
||||||
|
length: 0mm,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
end: (
|
)
|
||||||
symbol: "|",
|
|
||||||
offset: 0.25,
|
|
||||||
width: 0mm,
|
|
||||||
length: 0mm,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
|
|
||||||
// spell:off
|
// spell:off
|
||||||
line("r", "a")
|
line("r", "a")
|
||||||
line("r", "b")
|
line("r", "b")
|
||||||
line("b", "ba")
|
line("b", "ba")
|
||||||
line("b", "bb")
|
line("b", "bb")
|
||||||
line("ba", "baa")
|
line("ba", "baa")
|
||||||
line("ba", "bab")
|
line("ba", "bab")
|
||||||
line("bb", "bba")
|
line("bb", "bba")
|
||||||
line("bb", "bbb")
|
line("bb", "bbb")
|
||||||
// spell:on
|
// spell:on
|
||||||
}))
|
}),
|
||||||
|
)
|
||||||
|
@ -1,21 +1,24 @@
|
|||||||
#import "@local/handout:0.1.0": *
|
#import "@local/handout:0.1.0": *
|
||||||
#import "@preview/cetz:0.4.2"
|
#import "@preview/cetz:0.3.1"
|
||||||
|
|
||||||
#show: handout.with(
|
#show: handout.with(
|
||||||
title: [Warm-Up: Wild Tic-Tac-Toe],
|
title: [Warm-Up: Wild Tic-Tac-Toe],
|
||||||
by: "Mark",
|
by: "Mark",
|
||||||
)
|
)
|
||||||
|
|
||||||
#let ttt = align(center, cetz.canvas({
|
#let ttt = align(
|
||||||
import cetz.draw: *
|
center,
|
||||||
let s = 0.7 // scale
|
cetz.canvas({
|
||||||
|
import cetz.draw: *
|
||||||
|
let s = 0.7 // scale
|
||||||
|
|
||||||
set-style(stroke: (thickness: 0.5mm * s))
|
set-style(stroke: (thickness: 0.5mm * s))
|
||||||
line((-1 * s, 3 * s), (-1 * s, -3 * s))
|
line((-1 * s, 3 * s), (-1 * s, -3 * s))
|
||||||
line((1 * s, 3 * s), (1 * s, -3 * s))
|
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))
|
||||||
line((3 * s, 1 * s), (-3 * s, 1 * s))
|
line((3 * s, 1 * s), (-3 * s, 1 * s))
|
||||||
}))
|
}),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
#problem()
|
#problem()
|
||||||
|
Reference in New Issue
Block a user