You are on page 1of 30

Models and Algoritms for

Internet Computing

Chương 1.
SỰ KIỆN VÀ XÁC SUẤT
Lịch trình
• Dẫn dắt: một câu chuyện giản dị về ứng dụng của randomness
• Các tiên đề xác suất- các bổ đề cơ sở
• Phân tích xác suất cho thuật toán RANDOM_TEST: vấn đề lấy
mẫu (sampling)
• Sự kiện độc lập; lấy mẫu không thay thế
• Sự kiện phụ thuộc; lấy mẫu có thay thế
• Biến ngẫu nhiên; kỳ vọng
• BNN Bernoulli và Nhị thức (Binomial)
• Ứng dụng: Bài toán tuyển dụng trợ lý và phân tích
• Khái niệm phân tích xác suất và thuật toán ngẫu nhiên
Ứng dụng của randomness
• “Máy tính có thể bị lỗi” – một hiện tượng không hiếm
• Lỗi lập trình
• Lỗi phần cứng

 Để phát hiện lỗi lập trình, “randomness can help”!


• Verifying Polynomial Identities: Một cô giáo phổ thông dạy nhân đa th ức mu ốn ra
các bài tập mới liên tục cho học sinh rèn luyện và muốn có 1 công cụ chương trình để
kiểm tra kết quả của các em
Chẳng hạn: (x+1)(x-2)(x+3)(x-4)(x+5)(x-6) ?= x6-7x3+25
• Bài toán tổng quát; kiểm tra F(x) = G(x) ? Trong đó F ko chính tắc
• Có thể nhờ 1 LTV viết 1 chương trình test nhưng nhỡ chương trình có l ỗi?

• Để kiểm tra có thể:


• Nhờ thêm 1 LTV viết chương trình khác để đối sánh kết quả
• Chưa chắc OK: Cả 2 LTV có thể có cùng 1 lối tiếp cận và người th ứ 2 cũng t ạo bug theo cách đúng
như người đầu tiên. (Không hiếm: vd. do kiến thức toán hổng giống nhau)
4
Sử dụng randomness
• Giả sử bậc cao nhất của F & G là d. Xét thuật toán đơn giản sau:
RANDOM_TEST
1. Pick a uniform random number r from:
{1,2,3, … 100d}
2. Check if F(r)=G(r) then output “equivalent”, otherwise “non-equivalent”

• Tiếp cận này còn nhanh hơn giải pháp trên (chạy 1 chương trình khác): đ ộ ph ức t ạp
O(d) vs. O(d2)
• Tuy nhiên phạm phải 1 vấn đề là “lỗi một phía” (One-sided error):
(1) Trả lời “non-equivalent” là luôn luôn đúng
(2) Nhưng trả lời “equivalent” là có thể sai

• Tại sao (2):


• Có thể RANDOM_TEST tình cờ chọn nhầm nghiệm (root) của phương trình F(x)-G(x) = 0
• Tuy nhiên xác suất của sự tình cờ này là không thể vượt quá 1/100

5
Các tiên đề xác suất – axioms of prob.
• Chúng ta cần một nền lý thuyết toán để thiết lập một đánh giá hình thức
(chặt chẽ) cho RANDOM_TEST
• Bất cứ mệnh đề xác suất nào cũng cần dựa trên một không gian xác su ất
(probability space) được định nghĩa theo h ệ tiên đ ề
• Sau đây chúng ta sẽ ôn tập lại các đ ịnh nghĩa XS c ơ sở

• ĐN 1: Một không gian XS (probability space) có 3 thành phần:


• KG mẫu (sample space) , là một tập hợp các kết cục (possible outcomes) c ủa một
quá trình ngẫu nhiên – đối tượng mô hình hóa của KGXS
• Một họ các tập hợp  đại diện cho các sự kiện khả thi, trong đó mỗi phần tử của 
là một tập con của không gian mẫu.
• Một hàm xác suất Pr:  R thỏa mãn tiên đề 2 ở slide sau.
Một phần tử của  được gọi là một sự kiện đơn hay cơ sở.
• Ví dụ: Trong RANDOM_TEST, KG mẫu là tập hợp của các số nguyên {1,
…100d}.
• Mỗi lựa chọn (mẫu) r trên khoảng số này chính là một sự ki6ện đơn.
Các tiên đề XS
• Def2: Một hàm XS là bất kỳ hàm Pr: FR mà thỏa mãn các điều
kiện sau:
1. Với sự kiện E bất kỳ: 0  Pr(E) 1;
2. Pr(W) =1; và
3. Với một chuỗi sự kiện đôi một tách rời nhau E1, E2, E3 …, thì
Pr(i1Ei) = i1Pr(Ei)
• Các sự kiện có thể xem như các tập con (đại diện chúng) trong không gian
mẫu  có thể sử dụng các ký hiệu tập hợp để biển diễn sự kết hợp các sự
kiện.
• Trong TT RANDOM_TEST:
• Mỗi lựa chon số nguyên r là một sự kiện đơn
• Tất cả các sự kiện đơn có xác suất bằng nhau
• KG mẫu có đúng 100d sự kiện đơn, và tổng của tất cả XS các SK đ ơn ph ải là 1
 mỗi SK đơn có XS là đúng 1/100d 7
Bổ đề
• BĐ1: Với 2 SK bất kỳ E1, E2:
Pr(E1E2)= Pr(E1) + Pr(E2)- Pr(E1E2)
• BĐ(Union bound): Với một dãy vô hạn hoặc đếm được các SK
E1, E2, E3 …, thì
Pr(i1Ei)  i1Pr(Ei)
• BĐ3 (inclusion-exclusion principle) Cho E1, E2, E3 … là n sk bất kỳ. Then

Pr(i=1,nEi) =i=1,nPr(Ei) - i<jPr(EjEj) +


i<j<kPr(EiEj Ek) - …
+(-1)l+1i1...il Pr(r=1,lEir) +…

8
RANDOM_TEST: Phân tích xác suất

• Thuật toán RT sẽ trả lời sai số ngẫu nhiên r là trùng với


nghiệm của đa thức F-G
• Hãy gọi E là sk mà RANDOM_TEST trả lời sai
• Các phần tử trong tập con mẫu ứng với sk E chính là các
nghiệm của đa thức F-G mà nằm trong tập {1,…100d}
• Vì F-G bậc không vượt quá d nên có không quá d nghiệm  E
có không quá d sk đơn
• Vậy, Pr( RANDOM_TEST fails) = Pr(E)  d/(100d) =
1/100

9
Làm thế nào để giảm thiểu XS lỗi của RT?
• Có một giải pháp là mở rộng KG mẫu
• VD như {1,…, 1000d}
• Nhưng không thật sự tốt: phép lấy ngẫu nhiên mẫu sẽ trễ lâu h ơn

• Giải pháp khác: Thực hiện lặp RT nhiều lần vòng lặp, với lựa chọn r
ngẫu nhiên khác nhau
• Nếu chỉ cần F(r)=G(r) chỉ trong một vòng lặp thì báo “non-equivalent”

• Có thể lấy mẫu trên {1,…100d} nhiều lần theo 2 cách cơ bản: with or
without replacements
• Lấy mẫu có thay thế: Không nhớ gì về các kết quả sampling các vòng tr ước, coi
như sau khi “lấy hàng” đi là có “hàng mới” thay th ế bỏ vào
• Các phép lấy mẫu các vòng lặp sẽ là độc lập với nhau
10
Tính độc lập của các sự kiện
• Def3: Hai sk E & F là độc lập iff (nếu và chỉ nếu)
Pr(EF)= Pr(E) . Pr(F)
Khái quát hơn, các sk E1, E2, …, Ek là độc lập với nhau iff với mọi tập con các chỉ
số I[1,k]: Pr(iIEi)= PiIPr(Ei)
• Với phép lấy mẫu có thay thế, ta phân tích RT nh ư sau:
• Kết quả phép lấy mẫu r trong mỗi vòng lặp là độc lập với nhau
• Gọi Ei là sk tại vòng lặp i RT chọn “đúng phải” một nghiệm ri sao cho F(ri)-G(ri)=0
• XS để cho thuật toán chung bị lỗi là
Pr(E1 E2 … Ek) = Pi=1,kPr(Ei)  Pi=1,k (d/100d) = (1/100)k
• Giờ ta hãy chuyển sang khảo sát khi lấy mẫu không có thay th ế (Sampling
without replacement):
• The probability of choosing a given number is conditioned on the events of the
previous iterations

11
Xác suất có điều kiện

• ĐN 4: XS (có điều kiện) của sk E xảy ra khi đã biết F


xảy ra được định nghĩa là
Pr(E|F) = Pr(EF)/Pr(F)
• Chú ý rằng XS có ĐK chỉ được định nghĩa khi Pr(F)>0
• Khi E & F là độc lập và Pr(F)>0 thì
Pr(E|F) = Pr(EF)/Pr(F) = Pr(E).Pr(F)/Pr(F) = Pr(E)
Ý nghĩa của điều này: Intuitively, if two events are
independent then information about one event should not
affect the probability of the other event.

12
Lấy mẫu không thay thế
• Giả sử FG
• Ta lặp RT k lần: thực hiện k lần lấy mẫu NN từ [1,…100d]
• Cần tính XS của sk tất cả các lần đó đều lấy trùng nghiệm của F-G,
gây ra lỗi trả lời sai của thuật toán chung?
• Ta cần ước lượng chặn trên cho Pr(E1 E2 … Ek)
Pr(E1 E2 … Ek)= Pr(Ek|E1 … Ek-1) . Pr(E1 E2 … Ek-1)
= Pr(E1). Pr(E2|E1). Pr(E3|E1 E2) … Pr(Ek|E1 … Ek-1)
• Nhận xét Pr(Ej|E1 … Ej-1):  d-(j-1)/100d-(j-1) Hãy lập luận cho điều này?
Từ đó Pr(E1 E2 … Ek)  Pj=1,k d-(j-1)/100d-(j-1)  (1/100)k, tức là XK lỗi này nhỏ
hơn chút so với tiếp cận lấy mẫu cho thay thế.
• If using d+1 iterations: always give correct answer. Why? Efficient?
13
Các biến ngẫu nhiên

• ĐN 5: Một BNN X trên không gian mẫu W là 1


hàm số giá trị thực trên W; tức là X: WR. BNN
rời rạc là BNN chỉ nhận các giá trị trong 1 tập
hữu hạn hoặc vô hạn đếm được
• SK “X=a” thể hiện qua tập kết cục {s |X(s)=a}
• Pr(X=a) =  X(s)=a Pr(s)
VD. X là BNN xác định bởi tổng giá trị mặt ngửa khi
reo 2 con xúc xắc. Hãy tính XS của X=4?

14
Biến ngẫu nhiên

• Def6: Hai BNN X & Y là độc lập iff với mọi x & y:
Pr( (X=x)(Y=y) ) = Pr(X=x). Pr(Y=y)

15
Kỳ vọng
• ĐN 7: Kỳ vọng của BNNRR X, ký hiệu E[X], được xác
định bởi E[X] = ii.Pr(X=i)
• Phép lấy tổng xác định trên miền mọi giá trị của X
• VD: Hãy tính kỳ vọng của BNN X xác định bởi tổng giá trị mặt
ngửa khi reo 2 xúc xắc

16
Tính chất tuyến tính của kỳ vọng
• Định lý:
• E[i=1,nXi] = i=1,nE[Xi]
• E[c X] = c E[X] cho các hằng số c

17
BNN Bernoulli & Nhị thức -Binomial
• Hãy xét các thí nghiêm mà thành công với xác suất p và
thất bại với xác suất 1-p
• Gọi là BNN Bernoulli hay BNN chỉ báo (indicator)
• Nếu Y là BNN Bernoulli thì E[Y] = p
• Liên quan: Khảo sát BNN X, là số lần thành công khi thực hiện 1
chuỗi n thí nghiệm Bernoulli độc lập và giống hệt nhau
• BNN nhị thức (binomial) X với tham số n và p, ký hiệu
B(n,p), được xác định là một phân phối xác suất với j=0,1,2,
…, n:
Pr(X=j) = C(n;j) * pj(1-p) n-j
Trong đó C(n;j) là số tổ hợp chập j của n phần tử

18
ƯD: Bài toán Tuyển dụng trợ lý
• Chúng ta sẽ làm quen với một bài toán th ực s ự có ý nghĩa th ực t ế mà thu ật gi ải đ ề
xuất mang tính ngẫu nhiên, chỉ có thể đánh giá đ ược thông qua phân tích xác su ất
• Tuyển dụng trợ lý – assistant hiring
• Tuyển dụng cho 1 lãnh đạo quan trọng hay cho 1 hội đ ồng, 1 ủy ban hay 1 ch ương trình ph ối
hợp (khi đó có thể gọi là thư ký, hay đi ều ph ối viên …)
• Đây là 1 vị trí tuyển dụng duy nhất (chỉ 1) và có nhi ều đ ặc thù, đôi khi ch ỉ qua ph ỏng v ấn và
CV, bằng cấp sẽ không tìm được người thực s ự phù h ợp t ốt nh ất.
• Nét đặc thù: sẽ là tốt nhất nếu cho ứng viên đang đ ược đánh giá t ốt làm th ử, qua đó s ẽ d ễ
đánh giá được các phẩm chất “kín”– các k ỹ năng m ềm
• Thuật toán đề xuất: Khi phỏng vấn 1 ứng viên b ất kỳ n ếu th ấy người đó th ể hi ện
xem như tốt nhất tời giờ thì lập tức “test hiring” tức “làm th ử”, thay th ế ng ười đã
làm thử trước
• Thuật toán này dường như có 1 “điểm y ếu”: có th ể d ẫn đ ến s ố l ần hiring quá nhi ều, t ốn kém
chi phí và công sức để train và hỗ trợ ứng viên (v ị lãnh đ ạo có th ể m ất nhi ều th ời gian)
Tuyển dụng trợ lý: thuật toán đề xuất

HIRE-ASSISTANT(n)
1 best←0
candidate 0 is a least-qualified dummy candidate
2 for i←1 to n
3 do interview candidate i
4 if candidate i is better than candidate best
5 then best←i
6 hire candidate i

20
Phân tích chi phí
• Trái với thông lệ, không cần chú ý nhiều đến thời
gian thực hiên của HIRE-ASSISTANT, mà quan tâm
đến chi phí thực hiện bao gồm phỏng vấn & thuê thử
(interviewing & hiring).
• Phỏng vấn có chi phi thấp hơn, ký hiệu ci, trong khi
thuê sẽ chiếm chi phí lớn, ký hiệu ch. Gọi m là số ứng
viên được thuê thử; chi phí thực hiện sẽ là O
(nci+mch).
• Chi phí phỏng vấn luôn là cố định vì tất cả ứng viên đều phải PV
• Chi phí thuê sẽ là biến động, có thể cao và khó lường
• Cảm nhận tự nhiên là mọi người có thể cho rằng khó chấp nhận thuật
toán này vì chi phí cao và thay thế bằng những cách làm truyền thống
hơn (chỉ thông qua phỏng vấn hoặc giới thiệu, tiến cử)
21
Phân tích trường hợp xấu nhất

• Phân tích worst-case, có thể dẫn đến là tất cả đ ều đ ược thuê


thử
• Xảy ra nếu mỗi ƯV mới xuất hiện đều dường như giỏi hơn những
người trước. Chi phí thuê là O(nch).
• Điều này là nguyên nhân chính dẫn đến mỗi e ng ại cho vi ệc vận
dụng thực tế
• Trong thực tế thì thứ tự trình độ của chuỗi ứng viên lần lượt
phỏng vấn sẽ không thể biết trước được
• Ta có thể đưa ra giả thiết nó là một phân phối ngẫu nhiên đ ều: Th ứ t ự
trình độ (ngầm vì chưa thể biết) của n ứng viên được coi như 1 trong
số n! khả năng (chuỗi sắp xếp) đều có xác suất khả thi nh ư nhau.

22
Phân tích XS – Probabilistic analysis

• Probabilistic analysis is the use of


probability in the analysis of problems. In
order to perform a probabilistic analysis, we
must use knowledge of the distribution of the
inputs.
• For the hiring problem, we can assume that
the applicants come in a random order.

23
Thuật toán NN – Randomized algorithm

• We call an algorithm randomized if its behavior is


determined not only by its input but also by values
produced by a random-number generator.

24
BNN chỉ báo (indicator)
BNN chỉ báo I[A] gắn với sk A được định
nghĩa
1 i f A occur s
I [ A]  
0 i f A does not occur
• Bổ đề: Với không gian mẫu  và sự kiện A
trên , gọi XA=I{A}. Thếthì E[XA]=Pr(A).

25
Phân tích BT Tuyển Trợ lý sử dụng BNN Chỉ báo

• Gọi X là BNN cho biết số lần người ta thuê thử trong thuật
toán AH(tức số ƯV được cho làm thử), Xi là BNN chỉ báo sự
kiện ƯV thứ i được thuê. Dễ thấy là,
X=X1+X2+…+Xn
Từ bổ đề trên ta có:
E[Xi]=Pr{ƯV i được thuê} = 1/i. BTTL: Hãy chứng minh
điều này
Vậy,
E[X]=1+1/2+1/3+…+1/n=ln n+O(1)
Nếu n= 100 thì kỳ vọng X chỉ cỡ ~5. Hóa ra AH cũng rất khả
thi; cảm nhận ban đầu là không đúng!

26
Randomized algorithms
Ta có phiên bản “ngẫu nhiên hóa” để đảm bảo áp dụng được cách
phân tích trên (không cần giả thiết thứ tự chất lượng ƯV là NN)
RANDOMIZED-HIRE-ASSISTANT(n)
1 randomly permute the list of candidate
2 best←0
3 for i←1 to n
4 do interview candidate i
5 if candidate i is better than candidate best
6 then best←i
7 hire candidate i

27
Ví dụ khác về thuật toán ngẫu nhiên

PERMUTE-BY-SORTING(A)
1 n←length[A]
2 for i←1 to n
3 do P[i] ←RANDOM(1,n3)
4 sort A, using P as sort keys
5 return A
Lemma: Procedure PERMUTE-BY-SORTING
produces a uniform random permutation of
input, assuming that all priorities are distinct.
28
Ví dụ khác về thuật toán ngẫu nhiên

RANDOMIZE-IN-PLACE(A)
1 n←length[A]
2 for i←1 to n
3 do swap A[i ]↔A[RANDOM(i,n)]

Lemma: Procedure RANDOMIZE-IN-PLACE


computes a uniform random permutation.

29
Thank you for​
your attentions!​

You might also like