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
  • More theorem

    • theorem: let ,
      • then following properties hold
        • proof: ,
        • then
        • proof: ,
          • thus
      • (special case of above)
        • 👨‍🏫 can be proved using definition
        • when ?
        • 👨‍🏫 False, counter example:
          • yet
        • applying multiple times
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.
    • but sometimes exist
      • e.g.
        • when
      • thus:
        • as you can multiply 's MMI, on both sides
  • 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
    • 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)
  • 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:
  • 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 )
    • what if: we want to compute on base 10 integer?
      • as
      • thus
    • theorem: let : polynomial w/ integer coefficients
      • if
        • as each
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?
    • let ,
      • then
      • and
      • can above two equations be combined?
    • let solution to individual equations
      • then following also holds
    • example
      • : 1 solution
      • then: create cycle ()
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
  • above: equivalent to previous statement, as
    • , thus exists for
      • and we can multiply to both sides
      • and let
  • for , solution:
  • proof of uniqueness
    • we can merge the first 2 equations
    • keep doing so until there are 2 equations (= base case)