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

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
 
(ไม่แสดง 103 รุ่นระหว่างกลางโดยผู้ใช้ 7 คน)
แถว 1: แถว 1:
ขออภัย
+
{{หัวคำบรรยาย|204512}}
Lecture Note ที่ท่านเรียก ยังไม่เปิดให้ใช้บริการค่ะ
+
'''จดบันทึกคำบรรยายโดย:'''
 +
:นายมนต์ชัย สารทอง
 +
:นายอุกฤษณ์ กุลดิลก 50653971
  
 +
บทนี้จะกล่าวถึงทฤษฎีความน่าจะเป็นพื้นฐาน จากนั้นจะพิจารณาโครงสร้างข้อมูลแบบสุ่มสองแบบ คือ skip list และ universal hash
  
 +
==Balls & Bins==
 +
:มีถัง n ถัง
 +
:มีบอล n ลูก
 +
:<math>{\rm Pr[first\ bin\ is\ empty] = }\left( {{\rm 1 - }\frac{{\rm 1}}{{\rm n}}} \right)^{\rm n} </math>
  
 +
==Random Variable==
  
 +
;นิยาม
 +
:สำหรับตัวแปรสุ่ม X
  
 +
:<math>\sum\limits_{i=-\infty}^\infty {i \cdot \Pr [X = i]} </math>
  
  
 +
----
  
  
 +
'''<u>Ex.1</u>''' มีลูกเต๋า 2 ลูก โยนทีละลูก
  
 +
ให้ตัวแปรสุ่ม
 +
:<math>Y_1 = </math>แต้มบนลูกเต๋าลูกที่ 1
 +
:<math>Y_2 = </math>แต้มบนลูกเต๋าลูกที่ 2
 +
:<math>Y = </math>แต้มรวม
  
 +
:<math>E[Y_1] = (1 + 2 + 3 + ... + 6) \cdot \frac{1}{6} = 3.5</math>
 +
:<math>E[Y_2] = (1 + 2 + 3 + ... + 6) \cdot \frac{1}{6} = 3.5</math>
 +
:<math>E[Y] = 2 \cdot \frac{1}{6} \cdot \frac{1}{6} + 3 \cdot 2 \cdot \frac{1}{{36}} + 4 \cdot 3 \cdot \frac{1}{{36}} + 5 \cdot .....  = 7</math>
  
 +
==Linearity of Expectation==
 +
{{กล่องเทา|สำหรับตัวแปรสุ่ม X, Y
 +
<center><math>E[X+Y] = E[X]+E[Y]</math></center>}}
  
 +
จาก '''<u>Ex.1</u>''' ให้ตัวแปรสุ่ม X แทนจำนวนถังว่าง
  
 +
:<math>E[X] = ?</math>
  
 +
ให้ตัวแปรสุ่ม
 +
:<math>X_i = 1</math> ถ้าถังที่ i ว่าง
 +
:<math>X_i = 0</math> กรณีอื่นๆ
  
 +
สังเกตว่า
 +
:<math>X = \sum\limits_{i = 1}^n {X_i } </math>
  
 +
ดังนั้น
 +
:<math>E[X] = E[\sum\limits_{i = 1}^n {X_i } ]</math>
 +
:<math>E[X] = \sum\limits_{i = 1}^n {E[X_i] } </math> โดย Linearity of Expectation
  
  
 +
----
  
  
 +
:<math>E[X_i] = 0 \cdot Pr[X_i = 0] + 1 \cdot Pr[X_i = 1]</math>
 +
:<math>E[X_i] = Pr[X_i = 1]\,</math>
 +
:<math>E[X_i] = (1-\frac{1}{n})^n</math>
  
  
 +
:<math>E[X] = \sum\limits_{i = 1}^n {E[X_i ]} </math>
 +
:<math>E[X] = \sum\limits_{i = 1}^n {(1-\frac{1}{n})^n} </math>
 +
:<math>E[X] = n(1-\frac{1}{n})^n</math>
 +
:<math>E[X] \approx \frac{n}{e}</math>
  
  
 +
----
  
  
 +
:<math>1+X \le e^X</math>
 +
:<math>(1-\frac{1}{n})^n \le (e^{-\frac{1}{n}}) = e^{-1}</math>
 +
:<math>(1-\frac{t}{n})^n \le (e^{-\frac{t}{n}}) = e^{-t}</math>
  
  
 +
----
  
  
 +
มีบอล m ลูก
 +
มีถัง n ถัง
  
 +
ให้ <math>X = </math> จำนวนถังว่าง
  
 +
หา E[X]
 +
:<math>E[X] = E[\sum\limits_{i = 1}^n {X_i}]</math>
 +
:<math>E[X] = \sum\limits_{i = 1}^n {E[X_i]}</math>
 +
:<math>E[X] = \sum\limits_{i = 1}^n {(1-\frac{1}{n})^m}</math>
 +
:<math>E[X] = n(1-\frac{1}{n})^m</math>
  
  
 +
ต้องโยนบอลกี่ลูก X จะเข้าใกล้ 0
  
 +
:<math>E[X] = n(1-\frac{1}{n})^m</math>
 +
:<math>E[X] = [n(1-\frac{1}{n})^n]^\frac{m}{n}</math>
 +
:<math>E[X] \le n(e^{-1})^\frac{m}{n} = \frac{n}{e^\frac{m}{n}}</math>
  
  
 +
:<math>\frac{n}{e^\frac{m}{n}} = 1</math>
 +
:<math>n = e^\frac{m}{n}</math>
 +
:<math>ln\ n = \frac{m}{n}</math>
 +
:<math>m = n\ ln\ n</math>
  
  
 +
ให้ <math>m = cn\ ln\ n</math>
 +
:<math>E[X] = n(1-\frac{1}{n})^{cn\ ln\ n}</math>
 +
:<math>E[X] \le \frac{n}{n^c} = \frac{1}{n^{c-1}}</math>
  
  
 +
----
  
  
 +
;Thm
 +
:สำหรับตัวแปรสุ่ม X, Y
 +
:<math>E[X+Y] = E[X] + E[Y]</math>
  
 +
;Proof
 +
:<math>E[X+Y] = \sum\limits_{i=-\infty}^\infty {i \cdot Pr[X+Y=i]}</math>
 +
:<math>E[X+Y] = \sum\limits_{i=-\infty}^\infty {i \cdot [\sum\limits_{j=-\infty}^\infty {Pr[X=j, Y=i-j]}] }</math>
 +
:ให้ <math>i = a + b, j = b</math>
 +
:<math>E[X+Y] = \sum\limits_{a=-\infty}^\infty {\sum\limits_{b=-\infty}^\infty {(a+b)Pr[X=b, Y=a]}}</math>
 +
:<math>E[X+Y] = \sum\limits_{a=-\infty}^\infty {\sum\limits_{b=-\infty}^\infty {a \cdot Pr[X=b, Y=a]}} + \sum\limits_{a=-\infty}^\infty {\sum\limits_{b=-\infty}^\infty {b \cdot Pr[X=b, Y=a]}}</math>
 +
:<math>E[X+Y] = \sum\limits_{a=-\infty}^\infty {a[\sum\limits_{b=-\infty}^\infty {Pr[X=b, Y=a]}]} + \sum\limits_{b=-\infty}^\infty {b[\sum\limits_{a=-\infty}^\infty {Pr[X=b, Y=a]}]}</math>
 +
:<math>E[X+Y] = Pr[Y=a]+Pr[X=b]</math>
 +
:<math>E[X+Y] = E[X] + E[Y]</math> ตามต้องการ
  
 +
== ตัวแปรสุ่มที่สำคัญ ==
  
 +
=== 1. ตัวแปรสุ่มแบบ indicator ===
 +
มีตัวแปรสุ่มที่มีค่า 0 หรือ 1  สังเกตว่า
  
 +
{{thm-box|
 +
'''Proposition:''' ถ้า X เป็น Indicator R.V.
 +
<center><math>E[X] = \Pr[X=1]</math></center>}}
 +
{{begin-pf}}
 +
'''Proof:''' จากนิยาม เราได้ว่า <math>E[X] = 0\cdot\Pr[X=0] + 1\cdot\Pr[X=1] = \Pr[X=1]</math>
 +
{{end-pf}}
  
 +
=== 2. ตัวแปรสุ่มแบบ binomial ===
 +
:มีการทดลองสำเร็จด้วยความน่าจะเป็น p
 +
:ทดลอง n ครั้ง แบบไม่ขึ้นต่อกัน
  
==Balls & Bins==
+
:จำนวนครั้งของการทดลองที่สำเร็จ จะเป็นตัวแปรสุ่มแบบ
:มีถัง n ถัง
+
:binomial => มี พารามิเตอร์ (n, p)
:มีบอล n ลูก
+
 
<math>Pr[</math>ถังใบแรกว่าง<math>] = </math><math>(1 - \frac{1}{n}) ^ n</math>
+
สำหรับตัวแปรสุ่ม X แบบ binomial ที่มี parameter (n, p)
  
==ตัวหารร่วมมาก (grestest common divisors)==
+
ให้
ตัวหารร่วมมาก (gcd) ของ  a และ b คือจำนวนเต็มที่มากที่สุดที่หาร a และ b ลงตัวแทนด้วย gcd(a,b)
+
:<math>X_i = 1 </math> ถ้าการทดลองครั้งที่ i สำเร็จ
 +
:<math>X_i = 0 </math> กรณีอื่นๆ
  
;Thm: ให้จำนวนเต็ม a ,m    a จะมี inverse การคูณ modulo m เมื่อและต่อเมื่อ gcd(a,m) = 1
+
:<math>X = \sum\limits_{i=1}^n {X_i}</math>
;Proof:
 
(<=) สมมุติ gcd(a,m) = 1
 
:พิจารณา
 
:: 0 mod m
 
:: a mod m
 
:: 2a mod m
 
:: 3a mod m
 
:: . . .
 
::(m-1)a mod m
 
  
;claim 1: จำนวนเหล่านี้ไม่เท่ากันเลย
+
ดังนั้น
----
+
:<math> E[X] = E[X_1 + X_2 + ... + X_n] = \sum\limits_{i=1}^n {E[X_i]} = np</math>
จาก claim 1 จะมีจำนวนเต็ม b ที่อยู่ระหว่าง 0 <= b <= m-1 ที่ b*a mod m = 1 เนื่องจากมีจำนวน m จำนวนไม่ซ้ำกันจากค่าที่เป็นไปได้ระหว่าง 0 ถึง m-1
 
 
;Proof Claim1:
 
สมมุติให้มีจำนวนเต็ม i =/= j ที่ 0 <= i ,j<= m-1
 
ที่  i*a mod m = j*a mod m
 
จะได้ i*a \eqv j*a (mod m)
 
หรือ m| i*a - j*a  => m|(i-j)*a
 
นั้นคือมีจำนวนเต็ม k ที่
 
mk = a (i-j)
 
k = a(i-j) / m
 
จาก gcd(a,m ) =1 จะได้ว่า m ต้องหาร (i -j) ลงตัว
 
แต่ (i-j) มีค่าได้ตั้งแต่ 1 ถึง m-1 (0; i=/=j)ซึ่งน้อยกว่า m
 
ซึ่งเป็นไปไม่ได้ []
 
  
แนวทางการ
+
:<math>Pr[X=a] = C(n,a) \cdot p^a(1-p)^{n-a}</math>  
Proof by Contradiction
 
จะพิสูจน์ (P) สมมุติ <math>\sim P \rightarrow F</math>
 
:หรือ<math> \sim(\sim P) \lor \sim F \equiv P </math>
 
  
 +
เมื่อ <math>C(n,a)</math> แทนสัมประสิทธิ์ทวินาม ที่มีค่าเท่ากับ
 +
<center><math>\frac{n!}{a!(n-a)!}</math></center>
 +
ทั้งนี้เนื่องจาก ในการทดลอง n ครั้ง จะทดลองสำเร็จ a ครั้ง มีจำนวนรูปแบบที่เป็นไปได้ทั้งหมดเท่ากับ <math>C(n,a)</math>แบบ และแต่ละแบบ มีความน่าจะเป็นที่จะเกิดขึ้นเท่ากับ <math>p^a(1-p)^{n-a}</math>
  
(=>)  สมมุติ a มี inverse การคูณ modulo m และ gcd(a,m) = 1
+
=== 3. Geometric R.V. ===
พิสูจน์ gcd(a,m)=/= 1 a จะไม่มี inverse
+
:มีเหรียญที่ออกหัวด้วยความน่าจะเป็น p
:ให้ x = gcd(a,m)
+
:จำนวนครั้งที่โยนจนได้หัว เป็นตัวแปรสุ่มแบบ geometric [พารามิเตอร์ p]
:หรือ a = x*k1 , m = x*k2
 
:พิจารณา ai (mod m)
 
:x*k1 i mod x*k2
 
  
 +
:ให้ r.v. X เป็นตัวแปรสุ่มแบบ geometric ที่มี parameter p
  
 +
:<math>Pr[X=i] = p(1-p)^{i-1}</math>
 +
:<math>E[X] = \frac{1}{p}</math>
  
ยูคลิด gcd alg. ในลักษณะ recursive function
+
== Skip List ==
  
funtion GCD(a,b)
+
#---------------->O---------->#
:if b|a then return a
+
                  |
:else return gcd(b,a mod b)
+
#---->O---------->O------->O->#
 +
      |          |        |
 +
#---->O------->O->O---->O->O->#
 +
      |        |  |    |  |
 +
#->O->O->O->O->O->O->O->O->O->#
  
===การวิเคราะห์===
+
ในการตัดสินใจว่าแต่ละโหนดจะมีความสูงขึ้นไปเท่าไหร่ จะใช้ความน่าจะเป็น เช่น การโยนเหรียญ เมื่อมีการเพิ่มข้อมูลใหม่ จะค้นหาจนกระทั่งพบช่องที่สามารถลงได้ จากนั้นก็ใช้ความน่าเป็น ในการดูว่าจะให้โหนดที่เพิ่มลงไปใหม่ควรจะมีความสูงเท่าไหร่
====การวิเคราะห์ความถูกต้อง====
 
กรณี b|a ลงตัวจัดเจน
 
กรณี GCD(b,a mod b)
 
  
assume a > b without lose in generality
+
เมื่อกล่าวว่าเหตุการณ์ใดเกิดขึ้นด้วยความน่าจะเป็นสูง จะหมายความว่า เหตุการณ์ดังกล่าวขะไม่เกิดขึ้นด้วยความน่าจะเป็นไม่เกิน <math>\frac{1}{n^c}</math> เมื่อ c>0 และ n คือ parameter ของระบบ
;Proof: GCD(a,b) = gcd(a,b)
 
พิสูจน์  by induction on (a,b)
 
  
base case: ถ้า b=0 , GCD(a,b) =a = gcd(a,b)
+
{{thm-box|'''Lemma:''' skip list ที่มีข้อมูล ''n'' ตัวจะมีความสูง ''O''(log ''n'') ด้วยความน่าจะเป็นสูง}}
 +
{{begin-pf}}
 +
'''Proof:''' พิจารณาข้อมูล x ใดๆ ความน่าจะเป็นที่ระดับของ x>k
 +
:'''Pr[ระดับ x>k] =''' <math>\frac{1}{2^k}</math>
 +
ให้เหตุการณ์ <math>A_i</math> แทนเหตุการณ์ที่ข้อมูลตัวที่ i มีระดับมากกว่า k
 +
:'''Pr[<math>A_i</math>] = <math>\frac{1}{2^k}</math>
 +
ให้เหตุการณ์ A แทนเหตุการณ์ที่มีข้อมูลบางตัวมีระดับมากกว่า k
 +
:<math>A = \bigcup_{i=1}^{n} A_i</math>
 +
ดังนั้น
 +
:<math>Pr[A] \le \sum_{i=1}^k Pr[A_i] = \frac{n}{2^k}</math>
 +
ให้ K = c log n = O(log n) จะได้ว่า
 +
:'''Pr[ความสูงไม่เกิน k] = 1 - Pr[มีข้อมูลบางตัวมีระดับมากกว่า k]''' <math>\le 1 - \frac{n}{2^k} = 1 - \frac{n}{2^{clogn}} = 1 - \frac{1}{n^{c-1}}</math>
 +
ถ้า c>2 , เหตุการณ์ดังกล่าวจะเกิดด้วยความน่าจะเป็นสูง
 +
{{end-pf}}
  
inductive step:ถ้า b > 0 และ a > b แล้ว
+
:'''Pr[เดิน k node] =''' <math>k\cdot\frac{1}{2^k}</math>
  
:claim 2: GCD(b,a mod b ) = gcd(a,b)
+
{{thm-box|'''Theorem:''' Expected search time ของ skip list ที่มีข้อมูล ''n'' ตัว คือ ''O''(log ''n'')}}
 +
{{begin-pf}}
 +
'''<u>Proof</u>'''
 +
:ให้ H = ความสูง = O(log n)
 +
:ให้ <math>T_i</math> เป็นเวลาที่ใช้ในชั้นที่ i
 +
:<math>T = \sum_{i=1}^H T_i</math>
 +
:<math>E[T] = E[\sum_{i=1}^H T_i] = \sum_{i=1}^H E[T_i] = O(\log n)</math>
 +
{{end-pf}}
  
ถ้า y|a และ y|b แล้ว y|a mod b
+
== Hashing ==
 +
ในส่วนนี้ จะให้ <math>{\mathbb K}=\{1,\ldots,M\}</math> แทนเซตของคีย์
 +
และ <math>{\mathbb I}=\{1,\ldots,N\}</math> แืทนเซตของดัชนีในตาราง
  
a = kb + r เขียน r = a mod b
+
hash function <math>h:{\mathbb K}\rightarrow{\mathbb I}</math> จะส่งคีย์ไปยังตำแหน่งในตาราง
  
a-r =kb เนื่องจาก y|b ,y|kb นั้นคือ
+
{{def-box|
 +
'''นิยาม:''' Family of hash function <math>\mathcal H</math> เป็น '''2-universal''' ถ้า สำหรับทุก ๆ
 +
สมาชิก <math>x,\ y \in\ {\mathbb K}</math> ที่ <math>x \ne y</math>,
 +
<center><math>\Pr_{h \in H}[h(x) \ne h(y)] \le \frac{1}{N}</math></center>}}
  
<math> y|a-r \rightarrow a \equiv r \pmod{y} </math>
 
  
สรุปว่า y|r
+
เลือกจำนวนเฉพาะ p > M<br />
 +
ให้ <math>h_{ab}</math> สำหรับ <math> a \in {1, ..., p-1}</math> และ <math>b \in {0, ..., p-1}</math>
 +
:<math>h_{ab}(x) = ((ax+b) \bmod p) \bmod N</math>
 +
:<math>|H| = (p-1)p</math>
  
assume  ที่ GCD(x,y)=gcd(x,y)  สำหรับทุกๆ x < a , y <= b ) ; (hypothesis)
 
นั้นคือ 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
+
;Lemma
:พิสูจน์ว่า P(i) จริงสำหรับจำนวนเต็มบวก i ทุกๆตัว
+
:สำหรับ x, y ที่ <math>x \ne y</math>
## P(1) จริง [base case] [basis]
+
:จำนวน <math>h_{ab} \in H</math> ที่
## ถ้า P(i) แล้ว P(i+1) จริงสำหรับทุกๆ i >=1 ; P(i) จริงจาก P(j) j < i  [inductive step]
+
:<math>h_{ab}(x) = h_{ab}(y)</math>
ถ้า (a)&(b) จะสรุปได้ว่า P(i) จริงสำหรับทุกจำนวนเต็ม i
+
:ไม่เกิน <math>\frac{(p-1)p}{N}</math> ตัว
  
====การวิเคราะห์เวลาการทำงาน====
 
;การหา 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)==
+
;Proof
ถ้า polynomial f มี degree d เราสามารถให้ <math> (x_0,y_0),\ (x_1,y_1),\ ...\ ,\ (x_d,y_d)</math> จะมี polynomial degree d เพียงตัวเดียวที่ผ่าน ทุกจุดดังกล่าว และ polynomial ดังกล่าวหาได้
+
:ให้
 +
::<math>ax+b \equiv r \pmod p</math>
 +
::<math>ay+b \equiv s \pmod p</math>
  
ต้องการ key M ให้กลุ่มคน n คน ให้ทุกๆกลุ่มคน < k คน ไม่ทราบข้อมูลเกี่ยวกับ key เลย
+
:(1) ถ้า <math>x \ne y, r \not\equiv s \pmod p</math>
:กลุ่มคน k คนหา key ได้
+
::พิสูจน์ด้วยข้อขัดแย้ง
 +
:::assume
 +
::::<math>ax \equiv ay \pmod p</math>
 +
::::x = y
  
หา prime p > key และ p - 1 > n เลือก<math> a_{k-1},a_{k-2},...,a_1</math> จากเซต { 1, 2, ... , p-1}
+
:(2) ถ้า <math>h_{ab}(x) = h_{ab}(y)</math> แล้ว <math>r \equiv s \pmod N</math>
 +
::จำนวนคู่ r, s ที่สอดคล้อง <math>\le p[\frac{p}{N} - 1] \le \frac{p(p-1)}{N}</math>
  
ให้ ak-1 ไม่เท่ากับ 0
+
:(3) พิจารณา คู่ r, s คู่หนึ่ง ที่ <math>r \equiv s \pmod N</math>
 +
::จะหาค่า a, b ที่
 +
:::<math>ax+b \equiv r \pmod p</math>
 +
:::<math>ay+b \equiv s \pmod p</math>
 +
:::<math>ax-ay \equiv r-s \pmod p</math>
 +
:::<math>a(x-y) \equiv r-s \pmod p</math>
 +
:::<math>a \equiv (r-s) \cdot (x-y)^{-1} \pmod p</math>
 +
::แต่ละคู่ r, s จะมี a, b คู่เดียว
  
ให้ <math>f(x) = a_{k-1}\,x^{k-1} + a_{k-2}\,x^{k-2} +...+a_2\,x^2+a_1\,x + M</math>
+
จาก (1), (2), (3), มี a, b ไม่เกิน <math>\frac{(p-1)p}{N}</math> คู่
เราจะเลือกจุด <math>\ x_1,\ x_2,\ ...,\ x_n</math> ที่ไม่ซ้ำกัรและไม่เท่ากับ 0 ให้ <math>(\ x_i,\ f(x_i))</math> กับคนที่ i
 

รุ่นแก้ไขปัจจุบันเมื่อ 15:04, 8 ตุลาคม 2550

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

จดบันทึกคำบรรยายโดย:

นายมนต์ชัย สารทอง
นายอุกฤษณ์ กุลดิลก 50653971

บทนี้จะกล่าวถึงทฤษฎีความน่าจะเป็นพื้นฐาน จากนั้นจะพิจารณาโครงสร้างข้อมูลแบบสุ่มสองแบบ คือ skip list และ universal hash

Balls & Bins

มีถัง n ถัง
มีบอล n ลูก

Random Variable

นิยาม
สำหรับตัวแปรสุ่ม X




Ex.1 มีลูกเต๋า 2 ลูก โยนทีละลูก

ให้ตัวแปรสุ่ม

แต้มบนลูกเต๋าลูกที่ 1
แต้มบนลูกเต๋าลูกที่ 2
แต้มรวม

Linearity of Expectation

สำหรับตัวแปรสุ่ม X, Y

จาก Ex.1 ให้ตัวแปรสุ่ม X แทนจำนวนถังว่าง

ให้ตัวแปรสุ่ม

ถ้าถังที่ i ว่าง
กรณีอื่นๆ

สังเกตว่า

ดังนั้น

โดย Linearity of Expectation











มีบอล m ลูก มีถัง n ถัง

ให้ จำนวนถังว่าง

หา E[X]


ต้องโยนบอลกี่ลูก X จะเข้าใกล้ 0



ให้




Thm
สำหรับตัวแปรสุ่ม X, Y
Proof
ให้
ตามต้องการ

ตัวแปรสุ่มที่สำคัญ

1. ตัวแปรสุ่มแบบ indicator

มีตัวแปรสุ่มที่มีค่า 0 หรือ 1 สังเกตว่า

Proposition: ถ้า X เป็น Indicator R.V.


Proof: จากนิยาม เราได้ว่า

Littlebox.png

2. ตัวแปรสุ่มแบบ binomial

มีการทดลองสำเร็จด้วยความน่าจะเป็น p
ทดลอง n ครั้ง แบบไม่ขึ้นต่อกัน
จำนวนครั้งของการทดลองที่สำเร็จ จะเป็นตัวแปรสุ่มแบบ
binomial => มี พารามิเตอร์ (n, p)

สำหรับตัวแปรสุ่ม X แบบ binomial ที่มี parameter (n, p)

ให้

ถ้าการทดลองครั้งที่ i สำเร็จ
กรณีอื่นๆ

ดังนั้น

เมื่อ แทนสัมประสิทธิ์ทวินาม ที่มีค่าเท่ากับ

ทั้งนี้เนื่องจาก ในการทดลอง n ครั้ง จะทดลองสำเร็จ a ครั้ง มีจำนวนรูปแบบที่เป็นไปได้ทั้งหมดเท่ากับ แบบ และแต่ละแบบ มีความน่าจะเป็นที่จะเกิดขึ้นเท่ากับ

3. Geometric R.V.

มีเหรียญที่ออกหัวด้วยความน่าจะเป็น p
จำนวนครั้งที่โยนจนได้หัว เป็นตัวแปรสุ่มแบบ geometric [พารามิเตอร์ p]
ให้ r.v. X เป็นตัวแปรสุ่มแบบ geometric ที่มี parameter p

Skip List

#---------------->O---------->#
                  |
#---->O---------->O------->O->#
      |           |        |
#---->O------->O->O---->O->O->#
      |        |  |     |  |
#->O->O->O->O->O->O->O->O->O->#

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

เมื่อกล่าวว่าเหตุการณ์ใดเกิดขึ้นด้วยความน่าจะเป็นสูง จะหมายความว่า เหตุการณ์ดังกล่าวขะไม่เกิดขึ้นด้วยความน่าจะเป็นไม่เกิน เมื่อ c>0 และ n คือ parameter ของระบบ

Lemma: skip list ที่มีข้อมูล n ตัวจะมีความสูง O(log n) ด้วยความน่าจะเป็นสูง


Proof: พิจารณาข้อมูล x ใดๆ ความน่าจะเป็นที่ระดับของ x>k

Pr[ระดับ x>k] =

ให้เหตุการณ์ แทนเหตุการณ์ที่ข้อมูลตัวที่ i มีระดับมากกว่า k

Pr[] =

ให้เหตุการณ์ A แทนเหตุการณ์ที่มีข้อมูลบางตัวมีระดับมากกว่า k

ดังนั้น

ให้ K = c log n = O(log n) จะได้ว่า

Pr[ความสูงไม่เกิน k] = 1 - Pr[มีข้อมูลบางตัวมีระดับมากกว่า k]

ถ้า c>2 , เหตุการณ์ดังกล่าวจะเกิดด้วยความน่าจะเป็นสูง

Littlebox.png

Pr[เดิน k node] =

Theorem: Expected search time ของ skip list ที่มีข้อมูล n ตัว คือ O(log n)


Proof

ให้ H = ความสูง = O(log n)
ให้ เป็นเวลาที่ใช้ในชั้นที่ i
Littlebox.png

Hashing

ในส่วนนี้ จะให้ แทนเซตของคีย์ และ แืทนเซตของดัชนีในตาราง

hash function จะส่งคีย์ไปยังตำแหน่งในตาราง

นิยาม: Family of hash function เป็น 2-universal ถ้า สำหรับทุก ๆ สมาชิก ที่ ,


เลือกจำนวนเฉพาะ p > M
ให้ สำหรับ และ


Lemma
สำหรับ x, y ที่
จำนวน ที่
ไม่เกิน ตัว


Proof
ให้
(1) ถ้า
พิสูจน์ด้วยข้อขัดแย้ง
assume
x = y
(2) ถ้า แล้ว
จำนวนคู่ r, s ที่สอดคล้อง
(3) พิจารณา คู่ r, s คู่หนึ่ง ที่
จะหาค่า a, b ที่
แต่ละคู่ r, s จะมี a, b คู่เดียว

จาก (1), (2), (3), มี a, b ไม่เกิน คู่