COMP 2711H: Lecture 23
Date: 2024-10-27 23:59:41
Reviewed:
Topic / Chapter:
summary
❓Questions
Notes
Congruence
-
Congruence
- congruence: iff
- alternative notation: ,
- example:
- theorem: iff has same remainders when divided by
- proof:
- if , ()
- then
- same, and unique remainder!
- if same remainder
- then
- if , ()
- congruence: iff
-
More theorem
- theorem: let ,
- then following properties hold
-
- proof: ,
- then
-
- proof: ,
- thus
- proof: ,
- (special case of above)
-
- 👨🏫 can be proved using definition
-
- when ?
- 👨🏫 False, counter example:
- yet
-
- applying multiple times
- theorem: let ,
Modular Multiplicative Inverse
-
Modular multiplicative inverse
- if we have multiplicative inverse
- we can cancel, like:
- 👨🏫 which is why division is closed within real numbers:
- all real numbers (except ): has multiplicative inverse
- modular multiplicative inverse : integer s.t.
- MMI: doesn't always exist
- e.g.
- no number s.t. exist
- as: will always be even
- and subtraction of from even no. will return in even no.
- e.g.
- but sometimes exist
- e.g.
- when
- thus:
- as you can multiply 's MMI, on both sides
- e.g.
- if we have multiplicative inverse
-
Finite field
- when calculating , range are
- shift function (all in )
- e.g.
- (modulo)
- claim: shift function is a permutation
- 👨🏫 trivial, but one can prove by showing
- it's one-to-one and onto
- 👨🏫 trivial, but one can prove by showing
- for every permutation: we can create a graph
- e.g. edge from vertex to vertex
graph LR 0((0)) 1((1)) 2((2)) 3((3)) 4((4)) 5((5)) 0-->2; 2-->4; 4-->0 1-->3; 3-->5; 5-->1
- graph of permutation: multiple disjoint cycles
- finding an MMI of : must be within the same cycle
- for , it's finding starting from
- also, must be within the same cycle as
- unless: cannot reach how many times we multiply
- to find MMI of , draw cycle again
graph LR 0((0)) 1((1)) 2((2)) 3((3)) 4((4)) 5((5)) 0-->5; 5-->4; 4-->3 3-->2; 2-->1; 1-->0
- because <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6444em;"></span><span class="mord">5</span></span></span></span> is in the same cycle as <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6444em;"></span><span class="mord">1</span></span></span></span>: <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8141em;"></span><span class="mord"><span class="mord">5</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">−</span><span class="mord mtight">1</span></span></span></span></span></span></span></span></span></span></span></span> exists in <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em;"></span><span class="mord mathnormal">n</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.6444em;"></span><span class="mord">6</span></span></span></span>
- when are in the same cycle (of )
- multiple of can definitely reach
- as it means
- but, when are and in the same cycle?
- = when there is only one cycle (as can be added to generate other numbers)
- multiple of can definitely reach
- claim: all cycles have the same size
- as every cycle: shift of another
- suppose:
- each cycle: has size
- proof
- let
- then the cycle including :
- all numbers appearing in cycle (including ):
- linear combination of
- which: are always divisible by
- claim:
- then no. of cycles:
- size of each cycle:
- proof
- as
- also appears in cycle involving
-
- 👨🏫 after traverse from , we will find which is effectively
- after traversing times, we reach
- for
- thus the cycle containing contains all multiples of
- so size:
- and as all cycles of same size:
- as
- theorem: has MMI iff
- this case: will be in the cycle
- and thus: all numbers will be in the cycle
- (easier) proof: finding inverse = finding s.t.
- if , can we obtain weaker result?
- theorem: let and
- then
- proof:
-
- apply: Euclid's lemma
- as and
- thus proved
- 👨🏫 graph is more intuitive, yet this is more concise
-
Fast modular exponentiation
- finding :
- e.g.
- stupid way: computing , then computing
- workload would be immense if:
- smarter way
- or:
- pseudocode
pow(a, b, c): if a == 0: return 0 if b == 0: return 1 if b == 1: return 1 % c d = pow(a, b / 2, c) d *= d d %= c if (b % 2 == 1): a %= c # if we want small a d *= a d %= c return d
- example: divisibility by
- a number: divisible by iff its digits are divisible by
- e.g. in base 10: number equals
- where : -th digit (from the back, starting from )
- and claim:
- holds as
- 👨🏫: same for 9
- for modulo , it also works it's base (basically any )
- holds as
- what if: we want to compute on base 10 integer?
- as
- thus
- as
- theorem: let : polynomial w/ integer coefficients
- if
- as each
- finding :
Chinese Remainder Theorem
-
Chinese remainder theorem
- linear equation
- solvable iff
- consider: cycle starting w/ for
- : must be in the cycle
- how may solutions to exist if ?
- no. of solutions:
- proof:
- consider: cycle, which has size (as )
- if : must be somewhere in cycle, as
- s.t.
- we can traverse extra times to reach the same point
- 👨🏫 no other solutions!
- as ,
- generally:
- as we want
- for following systems of equation
- assume:
- and
- and
- 👨🏫 to ensure that there will be exactly 1 solution
- find value of satisfying all conditions
- finding solution: is it always possible?
- assume:
- let ,
- then
- and
- can above two equations be combined?
- let solution to individual equations
- then following also holds
- then following also holds
- example
- : 1 solution
- then: create cycle ()
- linear equation
graph LR 0((0)) 1((1)) 2((2)) 3((3)) 4((4)) 5((5)) 6((6)) 3-->1 1-->6 6-->4 4-->2 2-->0 0-->5 5-->3
- find <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6444em;"></span><span class="mord">1</span></span></span></span> (<span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8444em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal">b</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span>) from the cycle
- as <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8444em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal">n</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">⊥</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.5806em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal">n</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span>, it can always be done
- as <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mop"><span style="margin-right:0.01389em;">g</span>cd</span><span class="mopen">(</span><span class="mord"><span class="mord mathnormal">n</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord"><span class="mord mathnormal">n</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.6444em;"></span><span class="mord">1</span></span></span></span> is in cycle with <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6444em;"></span><span class="mord">0</span></span></span></span>
- and such solution: unique in <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">[</span><span class="mord">0</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord"><span class="mord mathnormal">n</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord"><span class="mord mathnormal">n</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span></span></span></span>
- unique as, within the cycle <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.7333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.8444em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal">n</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathnormal" style="margin-right:0.03148em;">k</span><span class="mspace allowbreak"></span><span class="mspace" style="margin-right:0.6667em;"></span></span><span class="base"><span class="strut" style="height:0.8444em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord"><span class="mord mathrm">mod</span></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord"><span class="mord mathnormal">n</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span>, there is only place to access <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8444em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal">b</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span>
- without repeating
- Chinese Remainder Theorem: can the value be found exactly?
- let : positive integers
- s.t.
- and system of linear congruences exist:
- has: unique solution
- let : positive integers
- above: equivalent to previous statement, as
- , thus exists for
- and we can multiply to both sides
- and let
- , thus exists for
- for , solution:
- proof of uniqueness
- we can merge the first 2 equations
- keep doing so until there are 2 equations (= base case)