ผลต่างระหว่างรุ่นของ "204512/บรรยาย 1"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
 
 
(ไม่แสดง 102 รุ่นระหว่างกลางโดยผู้ใช้ 15 คน)
แถว 1: แถว 1:
การบรรยายครั้งแรกจะเป็นการแนะนำวิชา และแสดงตัวอย่างการพิสูจน์ที่น่าสนใจ โดยมีเป้าหมายเพื่อที่จะพัฒนาระบบการกระจายความลับ (secret sharing)
+
{{หัวคำบรรยาย|204512}}
 +
'''จดบันทึกคำบรรยายโดย:''' ''(กรุณาใส่ด้วย)''
 +
 
 +
การบรรยายครั้งแรกจะเป็นการแนะนำวิชา [[204512]] และแสดงตัวอย่างการพิสูจน์ที่น่าสนใจ โดยมีเป้าหมายเพื่อที่จะพัฒนาระบบการกระจายความลับ (secret sharing)
  
 
==คณิตศาสตร์มอดุโล==
 
==คณิตศาสตร์มอดุโล==
 +
เราจะเริ่มจากนิยามพื้นฐานก่อน เราจะกล่าวว่าจำนวนเต็ม a ''หารจำนวนเต็ม b ลงตัว'' ถ้ามีจำนวนเต็ม k ที่ ak = b เขียนแทนด้วย a|b
 +
 +
;นิยาม : จำนวนเต็มบวก p ที่ p > 1 และมีตัวประกอบสองจำนวนคือ 1 และตัวมันเองเรียกว่า ''จำนวนเฉพาะ''
 +
 +
;นิยาม : <math>a\ \bmod b = r </math>ถ้า<math> 0 \le r < b </math>และมีจำนวนเต็ม ''k'' ที่ <math>b\ k+r = a</math>
 +
 +
'''ตัวอย่าง'''
 +
:<math> 10\ \bmod\ 3\ =\ 1</math>
 +
 +
:<math>-10\ \bmod\ 3\ =\ 2\quad;\quad 3(-4)\ +\ 2\ =\ -10</math>
 +
;นิยาม :
 +
:<math>a \equiv b \pmod{m}</math> ถ้า  <math>a\ \bmod\ m\ =\ b\ \bmod\ m</math>
 +
 +
เราจะเริ่มพิสูจน์ความจริงพื้นฐานเกี่ยวกับการหารลงตัวก่อน  หลายครั้งเราจะพิสูจน์ความจริงในรูป <math>p\ \leftrightarrow\ q</math> โดยการพิสูจน์ <math>p\ \rightarrow\ q</math> และ <math>q \rightarrow\ p</math>.  นอกจากนี้ ในการพิสูจน์ประโยค <math>p\rightarrow q</math> เรามักใช้การพิสูจน์แบบทางอ้อม (indirect proof) โดยพิสูจน์ <math>\neg q\rightarrow\neg p</math> แทน
 +
 +
{{กล่องทฤษฎีบท|
 +
'''Proposition 1''': <math>a \equiv b \pmod{m}</math> เมื่อและต่อเมื่อ <math>m | a-b</math>}}
 +
{{เริ่มบทพิสูจน์}}
 +
'''Proof:'''
 +
 +
<math>(\Rightarrow)</math>
 +
 +
<math>a \equiv b \pmod{m}</math> นั้นคือ
 +
 +
<math>j\ m + f = a </math>
 +
 +
<math>k\ m + f = b </math>
 +
 +
โดยที่ ''j,k,f'' เป็นจำนวนเต็ม หาผลต่างของสมการทั้งสองจะได้
 +
 +
<math>(\ j\ -\ k\ )\ m = a\ -\ b </math>
 +
 +
นั้นคือ
 +
<math>m \mid a - b </math>
 +
 +
<math>(\Leftarrow)</math>
 +
 +
:เนื่องจาก  m | a-b เราจะได้ว่ามีจำนวนเต็ม k ที่
 +
<math>m\,k  = a - b</math>
 +
 +
<math>b\ = a - m\,k</math>
 +
 +
<math>b\ \bmod\ m\  =\ a\ \bmod\ m\ -\ m\,k\ \bmod\ m</math>
 +
 +
<math>b\ \bmod\ m\ =\ a\ \bmod\ m</math>
 +
{{จบบทพิสูจน์}}
 +
 +
{{กล่องเทา|
 +
;Propostition : ถ้า <math>a\ \equiv\ b \pmod{m}</math> และ <math>c\ \equiv\ d \pmod{m} </math> แล้ว
 +
 +
# <math>a+c \equiv b+d \pmod{m}</math>
 +
# <math>a\,c \equiv b\,d \pmod{m}</math>
 +
# <math>a-c \equiv b-d \pmod{m}</math>
 +
}}
 +
{{เริ่มบทพิสูจน์}}
 +
'''proof:'''
 +
:<math>a \equiv b \pmod{m} \rightarrow m|a-b </math>
 +
:<math>c \equiv d \pmod{m} \rightarrow m|c-d </math>
 +
:<math>m|(a+c)-(b+d)  \rightarrow a+c \equiv b+d \pmod{m}</math>
 +
{{จบบทพิสูจน์}}
 +
 +
สังเกตว่าประโยค
 +
<center><math>a\,c \equiv a\,d \pmod{m} \rightarrow c \equiv d \pmod{m}</math></center>
 +
นั้นไม่เป็นจริงเสมอไป
 +
 +
นิยาม: สำหรับถ้า <math>a\,b \equiv 1 \pmod{m}</math> จะเรียก  b ว่าเป็น mutiplicative inverse modulo m  ของ <math>a</math> เขียนแทนด้วย  <math>a^{-1}</math>
 +
 +
เช่น
 +
:<math>3*3 \equiv 1 \pmod{4} </math>
 +
:<math>3 = 3^{-1} \pmod{4} </math>
 +
 +
<math>\pmod 4</math>
 +
:<math>2 / 3 \equiv x</math>
 +
:<math>x \cdot 3 \equiv 2 \pmod 4</math>
 +
:<math>x \cdot 3 \cdot 3^{-1} \equiv 2 \cdot 3^{-1} \pmod 4</math>
 +
:<math>x \equiv 2 \cdot 3 \equiv 6 \equiv 2 \pmod 4</math>
 +
 +
<math>\pmod 7</math>
 +
:<math>2 / 3 \equiv x</math>
 +
:<math>3^{-1} \equiv 5 \pmod 7</math>
 +
:<math>x \equiv 2 \cdot 5 \equiv 10 \equiv 3 \pmod 7</math>
 +
 +
ถ้ามี inverse สามารถหาผลหารได้โดยเอา inverse ไปคูณ
 +
 +
<math>4/3  = 4 \cdot 3^{-1} \pmod m</math>
  
 
==ตัวหารร่วมมาก (grestest common divisors)==
 
==ตัวหารร่วมมาก (grestest common divisors)==
 +
ตัวหารร่วมมาก (gcd) ของ  a และ b คือจำนวนเต็มที่มากที่สุดที่หาร a และ b ลงตัวแทนด้วย gcd(a,b)
 +
{{กล่องทฤษฎีบท|
 +
'''Thm''':  ให้จำนวนเต็ม a ,m    a จะมี inverse การคูณ modulo m เมื่อและต่อเมื่อ gcd(a,m) เท่ากับ 1 }}
 +
{{เริ่มบทพิสูจน์}}
 +
'''Proof:'''
 +
 +
(<=)<br>
 +
สมมุติ gcd(a,m) = 1
 +
:พิจารณา
 +
:: 0 mod m
 +
:: a mod m
 +
:: 2a mod m
 +
:: 3a mod m
 +
:: . . .
 +
::(m-1)a mod m
 +
 +
{{กล่องทฤษฎีบท|'''Claim 1:''' จำนวนเหล่านี้ไม่เท่ากันเลย}}
 +
 +
จาก Claim 1 เราจะได้ว่ามีจำนวนเต็ม ''b'' ที่อยู่ระหว่าง <math>\ 0 \leq\ b\ \leq\ m-1 </math> ที่ <math>b\ a\ \bmod\ m = 1 </math> เนื่องจากมีจำนวน ''m'' จำนวนไม่ซ้ำกันจากค่าที่เป็นไปได้ระหว่าง 0 ถึง ''m''-1
 +
 +
สรุปคือ inverse การคูณ modulo m ของ a คือ b นั้นเอง
 +
{{จบบทพิสูจน์}}
 +
ต่อไปเราจะพิสูจน์ Claim 1.
 +
{{เริ่มบทพิสูจน์}}
 +
'''Proof of Claim1:''' สมมุติให้มีจำนวนเต็ม <math>\ i\  \neq\ j</math> ที่ <math>\ 0\  \leq\ i\ ,j\ \leq\ m-1</math>
 +
:ที่  <math>ia\ \bmod\ m\ =\  ja\ \bmod\ m</math>
 +
:จะได้ <math>ia \equiv\  ja \pmod{m}</math>
 +
:หรือ <math>m\mid ia\ -\ ja  \Rightarrow\ m\mid (\ i\ -\ j\ )\ a</math>
 +
นั้นคือมีจำนวนเต็ม k ที่
 +
:<math>mk\ =\ a(i-j)</math>
 +
:<math>k\ =\ \frac{a(i-j)}{ m}</math>
 +
จาก gcd(a,m ) =1 จะได้ว่า m ต้องหาร (i -j) ลงตัว
 +
แต่ (i-j) มีค่าได้ตั้งแต่ 1 ถึง m-1 (ไม่เป็น 0 เนื่องจาก <math> i\ \neq\ j\ )</math>ซึ่งน้อยกว่า m
 +
ซึ่งเป็นไปไม่ได้
 +
{{จบบทพิสูจน์}}
 +
 +
แนวทางการ
 +
Proof by Contradiction
 +
จะพิสูจน์ (P) สมมุติ <math>\sim P \rightarrow F</math>
 +
:หรือ<math> \sim(\sim P) \lor \sim F \equiv P </math>
 +
(=>)<br>
 +
ต้องการพิสูจน์ a มี inverse modulo m แล้ว gcd(a,m) = 1
 +
 +
{{เริ่มบทพิสูจน์}}
 +
;Proof(Indirect)<nowiki>:</nowiki>
 +
<math> gcd(\ a,\ m) \neq 1 \Rightarrow\ a</math> ไม่มี mutiplicative inverse modulo m
 +
 +
:ให้ <math>x\  =\ gcd(\ a,\ m)</math>
 +
:หรือ <math>a\  =\  xk_1 , m = xk_2</math>
 +
:พิจารณา <math>ai\ \bmod\ m</math>
 +
:<math>xk_1i\ \bmod\  xk_2\ =\ 1</math>
 +
:<math>xk_1i\ - xk_2j\ = 1</math>
 +
:<math>x(k_1i\ - k_2j)\ = 1</math>
 +
:ซึ่งจะเห็นว่า ผลลบของเทอมที่คูณ x เป็นจำนวนเต็ม คูณอยู่กับ x ซึ่งมากกว่าหนึ่งจึงเป็นไปไม่ได้ที่ <math>x(k_1i\ - k_2j)</math> เท่ากับ 1
 +
 +
{{จบบทพิสูจน์}}
 +
 +
==ยูคลิด gcd alg. ในลักษณะ recursive function==
 +
funtion GCD(a,b)
 +
:if b|a then return a
 +
:else return GCD(b,a mod b)
 +
 +
===การวิเคราะห์===
 +
====การวิเคราะห์ความถูกต้อง====
 +
;นิยาม:gcd(a,b) คือค่าหารรวมมากของ a กับ b
 +
assume a > b without lose in generality
 +
{{เริ่มบทพิสูจน์}}
 +
;Proof by induction on (a,b)<nowiki>:</nowiki> :GCD(a,b) = gcd(a,b)
 +
 +
;base case<nowiki>:</nowiki>: ถ้า b=0 , GCD(a,b) =a = gcd(a,b)
 +
 +
;inductive step<nowiki>:</nowiki>:ถ้า b > 0 และ a > b แล้ว
 +
 +
:'''claim 2''': gcd(b,a mod b ) = gcd(a,b)
 +
:ถ้า y|a และ y|b แล้ว y|a mod b
 +
:<math>a = kb + r </math> หรือ <math> r\ =\ a\ \bmod\ b</math>
 +
:<math>a-r = kb </math>
 +
เนื่องจาก <math> y\mid\ b </math> จะได้ว่า <math> y\mid\ kb </math>  และ <math>y \mid r</math> ด้วย
 +
:ดังนั้น <math> y\mid\ a-r </math>
 +
:<math>\Rightarrow\; a \equiv r \pmod{y} </math>
 +
 +
 +
;hypothesis สมมุติที่ GCD(x,y)=gcd(x,y)  สำหรับทุกๆ x < a , y <= b 
 +
:นั้นคือ GCD(b,a mod b) = gcd(b, a mod b)
 +
:ดังนั้น GCD(a,b) = GCD(b, a mod b)
 +
::= gcd(b ,a mod b)
 +
::= gcd(a,b) ตาม claim 2
 +
 +
Proof by Induction
 +
:พิสูจน์ว่า P(i) จริงสำหรับจำนวนเต็มบวก i ทุกๆตัว
 +
## P(1) จริง [base case] [basis]
 +
## ถ้า P(i) แล้ว P(i+1) จริงสำหรับทุกๆ i >=1 ; P(i) จริงจาก P(j) j < i  [inductive step]
 +
ถ้า (a)&(b) จะสรุปได้ว่า P(i) จริงสำหรับทุกจำนวนเต็ม i
 +
 +
====การวิเคราะห์เวลาการทำงาน====
 +
;การหา multiplicative inverse mudulo m
 +
lemma: สำหรับจำนวนเต็ม a และ b มีจำนวนเต็ม x,y ที่ ax + by = gcd(a,b)  ; x และ y หาได้จาก [[extended gcd alg.]]
 +
>จะหา \inv a (mod m) เมื่อ gcd(a,m) = 1
 +
:จะมี x,y ที่ ax + my = 1
 +
mod m
 +
: (ax + my) mod m = 1
 +
: ax mod m = 1
 +
เลือก mod p เมื่อ p เป็นจำนวนเฉพาะ จะได้ทุกๅ a e {1,2,3,...,p-1} , gcd(a,p) = 1 ; [GFp(Galois Field)]
 +
 +
==การกระจายความลับ (Secret Sharing)==
 +
ถ้า polynomial f มี degree d เราสามารถให้ <math> (x_0,y_0),\ (x_1,y_1),\  ...\  ,\ (x_d,y_d)</math> จะมี polynomial degree d เพียงตัวเดียวที่ผ่าน ทุกจุดดังกล่าว และ polynomial ดังกล่าวหาได้
 +
 +
ต้องการ key M ให้กลุ่มคน n คน ให้ทุกๆกลุ่มคน < k คน ไม่ทราบข้อมูลเกี่ยวกับ key เลย
 +
:กลุ่มคน k คนหา key ได้
 +
 +
หา prime p > key และ p - 1 > n เลือก<math> a_{k-1},a_{k-2},...,a_1</math> จากเซต { 1, 2, ... , p-1}
 +
 +
ให้ ak-1 ไม่เท่ากับ 0
  
==การกระจายความลับ==
+
ให้ <math>f(x) = a_{k-1}\,x^{k-1} + a_{k-2}\,x^{k-2} +...+a_2\,x^2+a_1\,x + M</math>
 +
เราจะเลือกจุด <math>\ x_1,\ x_2,\ ...,\ x_n</math> ที่ไม่ซ้ำกัรและไม่เท่ากับ 0 ให้ <math>(\ x_i,\ f(x_i))</math> กับคนที่ i

รุ่นแก้ไขปัจจุบันเมื่อ 01:01, 21 มีนาคม 2555

บันทึกคำบรรยายวิชา 204512 นี้ เป็นบันทึกที่นิสิตเขียนขึ้น เนื้อหาโดยมากยังไม่ผ่านการตรวจสอบอย่างละเอียด การนำไปใช้ควรระมัดระวัง

จดบันทึกคำบรรยายโดย: (กรุณาใส่ด้วย)

การบรรยายครั้งแรกจะเป็นการแนะนำวิชา 204512 และแสดงตัวอย่างการพิสูจน์ที่น่าสนใจ โดยมีเป้าหมายเพื่อที่จะพัฒนาระบบการกระจายความลับ (secret sharing)

คณิตศาสตร์มอดุโล

เราจะเริ่มจากนิยามพื้นฐานก่อน เราจะกล่าวว่าจำนวนเต็ม a หารจำนวนเต็ม b ลงตัว ถ้ามีจำนวนเต็ม k ที่ ak = b เขียนแทนด้วย a|b

นิยาม 
จำนวนเต็มบวก p ที่ p > 1 และมีตัวประกอบสองจำนวนคือ 1 และตัวมันเองเรียกว่า จำนวนเฉพาะ
นิยาม 
ถ้าและมีจำนวนเต็ม k ที่

ตัวอย่าง

นิยาม 
ถ้า

เราจะเริ่มพิสูจน์ความจริงพื้นฐานเกี่ยวกับการหารลงตัวก่อน หลายครั้งเราจะพิสูจน์ความจริงในรูป โดยการพิสูจน์ และ . นอกจากนี้ ในการพิสูจน์ประโยค เรามักใช้การพิสูจน์แบบทางอ้อม (indirect proof) โดยพิสูจน์ แทน

Proposition 1: เมื่อและต่อเมื่อ


Proof:

นั้นคือ

โดยที่ j,k,f เป็นจำนวนเต็ม หาผลต่างของสมการทั้งสองจะได้

นั้นคือ

เนื่องจาก m | a-b เราจะได้ว่ามีจำนวนเต็ม k ที่

Littlebox.png

Propostition 
ถ้า และ แล้ว

proof:

Littlebox.png

สังเกตว่าประโยค

นั้นไม่เป็นจริงเสมอไป

นิยาม: สำหรับถ้า จะเรียก b ว่าเป็น mutiplicative inverse modulo m ของ เขียนแทนด้วย

เช่น

ถ้ามี inverse สามารถหาผลหารได้โดยเอา inverse ไปคูณ

ตัวหารร่วมมาก (grestest common divisors)

ตัวหารร่วมมาก (gcd) ของ a และ b คือจำนวนเต็มที่มากที่สุดที่หาร a และ b ลงตัวแทนด้วย gcd(a,b)

Thm: ให้จำนวนเต็ม a ,m a จะมี inverse การคูณ modulo m เมื่อและต่อเมื่อ gcd(a,m) เท่ากับ 1


Proof:

(<=)
สมมุติ gcd(a,m) = 1

พิจารณา
0 mod m
a mod m
2a mod m
3a mod m
. . .
(m-1)a mod m

Claim 1: จำนวนเหล่านี้ไม่เท่ากันเลย

จาก Claim 1 เราจะได้ว่ามีจำนวนเต็ม b ที่อยู่ระหว่าง ที่ เนื่องจากมีจำนวน m จำนวนไม่ซ้ำกันจากค่าที่เป็นไปได้ระหว่าง 0 ถึง m-1

สรุปคือ inverse การคูณ modulo m ของ a คือ b นั้นเอง

Littlebox.png

ต่อไปเราจะพิสูจน์ Claim 1.


Proof of Claim1: สมมุติให้มีจำนวนเต็ม ที่

ที่
จะได้
หรือ

นั้นคือมีจำนวนเต็ม k ที่

จาก gcd(a,m ) =1 จะได้ว่า m ต้องหาร (i -j) ลงตัว แต่ (i-j) มีค่าได้ตั้งแต่ 1 ถึง m-1 (ไม่เป็น 0 เนื่องจาก ซึ่งน้อยกว่า m ซึ่งเป็นไปไม่ได้

Littlebox.png

แนวทางการ 
Proof by Contradiction
จะพิสูจน์ (P) สมมุติ 
:หรือ

(=>)
ต้องการพิสูจน์ a มี inverse modulo m แล้ว gcd(a,m) = 1


Proof(Indirect):

ไม่มี mutiplicative inverse modulo m

ให้
หรือ
พิจารณา
ซึ่งจะเห็นว่า ผลลบของเทอมที่คูณ x เป็นจำนวนเต็ม คูณอยู่กับ x ซึ่งมากกว่าหนึ่งจึงเป็นไปไม่ได้ที่ เท่ากับ 1
Littlebox.png

ยูคลิด gcd alg. ในลักษณะ recursive function

funtion GCD(a,b)

if b|a then return a
else return GCD(b,a mod b)

การวิเคราะห์

การวิเคราะห์ความถูกต้อง

นิยาม
gcd(a,b) คือค่าหารรวมมากของ a กับ b

assume a > b without lose in generality


Proof by induction on (a,b):
GCD(a,b) = gcd(a,b)
base case:
ถ้า b=0 , GCD(a,b) =a = gcd(a,b)
inductive step:
ถ้า b > 0 และ a > b แล้ว
claim 2: gcd(b,a mod b ) = gcd(a,b)
ถ้า y|a และ y|b แล้ว y|a mod b
หรือ

เนื่องจาก จะได้ว่า และ ด้วย

ดังนั้น


hypothesis สมมุติที่ GCD(x,y)=gcd(x,y) สำหรับทุกๆ x < a , y <= b
นั้นคือ GCD(b,a mod b) = gcd(b, a mod b)
ดังนั้น GCD(a,b) = GCD(b, a mod b)
= gcd(b ,a mod b)
= gcd(a,b) ตาม claim 2

Proof by Induction :พิสูจน์ว่า P(i) จริงสำหรับจำนวนเต็มบวก i ทุกๆตัว ## P(1) จริง [base case] [basis] ## ถ้า P(i) แล้ว P(i+1) จริงสำหรับทุกๆ i >=1 ; P(i) จริงจาก P(j) j < i [inductive step] ถ้า (a)&(b) จะสรุปได้ว่า P(i) จริงสำหรับทุกจำนวนเต็ม i

การวิเคราะห์เวลาการทำงาน

การหา multiplicative inverse mudulo m

lemma: สำหรับจำนวนเต็ม a และ b มีจำนวนเต็ม x,y ที่ ax + by = gcd(a,b) ; x และ y หาได้จาก extended gcd alg. >จะหา \inv a (mod m) เมื่อ gcd(a,m) = 1

จะมี x,y ที่ ax + my = 1

mod m

(ax + my) mod m = 1
ax mod m = 1

เลือก mod p เมื่อ p เป็นจำนวนเฉพาะ จะได้ทุกๅ a e {1,2,3,...,p-1} , gcd(a,p) = 1 ; [GFp(Galois Field)]

การกระจายความลับ (Secret Sharing)

ถ้า polynomial f มี degree d เราสามารถให้ จะมี polynomial degree d เพียงตัวเดียวที่ผ่าน ทุกจุดดังกล่าว และ polynomial ดังกล่าวหาได้

ต้องการ key M ให้กลุ่มคน n คน ให้ทุกๆกลุ่มคน < k คน ไม่ทราบข้อมูลเกี่ยวกับ key เลย

กลุ่มคน k คนหา key ได้

หา prime p > key และ p - 1 > n เลือก จากเซต { 1, 2, ... , p-1}

ให้ ak-1 ไม่เท่ากับ 0

ให้ เราจะเลือกจุด ที่ไม่ซ้ำกัรและไม่เท่ากับ 0 ให้ กับคนที่ i