1. Trang chủ
  2. » Công Nghệ Thông Tin

De cuong on tap mo hinh thuat toan

15 545 14

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 733,26 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

1 Verifying Polynomial Identities Giả sử ta có một chương trình nhân các đa thức. Ví dụ: (x + 1)(x − 2)(x + 3(x − 4)(x + 5)(x − 6) ≡ x6 − 7x3 + 25 Chương trình của ta sẽ output kết quả la x6 − 7x3 + 25 Ta muốn kiểm tra tính đúng đắn của kết quả này. Ta có thế nhân lần lượt các số hạng với nhau. Thế nhưng việc làm này rất tốn kém, mà thực tế ta lại thực hiện lại giải thuật nhân đa thức cũ như vậy là đi theo con đường cũ rồi. Nếu đã sai vẫn ra kết quả

Trang 1

Mục lục

1 Verifying Polynomial Identities 2

2 Axioms of Probability 2

3 Verifying Matrix Multiplication 3

4 A Randomized Min-Cut Algorithm (Karger Algprithm) 3

5 Random Variables and Expectation 5

6 The Bernoulli and Binomial Random Variables 6

7 Conditional Expectation 6

8 Extra: Recursive Procedure Calling 7

9 The Geometric Expectation 8

10 Extra: Coupon Collector's Problem 9

11 Application: The Expected Run-Time of Quicksort 9

12 The Birthday Paradox 10

13 Balls into Bins 11

14 Problem Set Membership 12

Trang 2

1 Verifying Polynomial Identities

Giả sử ta có một chương trình nhân các đa thức

Ví dụ:

(x+ 1)(x − 2)(x + 3(x − 4)(x + 5)(x − 6) ≡ x6 − 7x3 + 25

Chương trình của ta sẽ output kết quả la x6 − 7x3 + 25

Ta muốn kiểm tra tính đúng đắn của kết quả này Ta có thế nhân lần lượt các số hạng với nhau Thế nhưng việc làm này rất tốn kém, mà thực tế ta lại thực hiện lại giải thuật nhân đa thức cũ như vậy là đi theo con đường cũ rồi Nếu đã sai vẫn ra kết quả sai mà thôi

Bây giờ ta sẽ sử dụng giải thuật random để giải quyết câu hỏi : F(x) ? ≡ G(x)

ALGORITHM 1.1:

Chọn một số x = a bất kỳ Kiểm tra nếu F(a) ≠ G(a)ta kết luận ngay F(x) ≠ G(x)

PROBABILISTIC ANALYSIS:

Khi F(a) = G(a) ta chưa thế kêt luận ngay F(x) ≡ G(x) hơn bởi a có thể là nghiệm của phương trình F(x) − G(x) = 0

Giả sử F(x) là đa thức bậc d Khi đó F(x) - G(x) không thế có quá d nghiệm Tức nếu như F(x) ≠ G(x) trong tất cả số nguyên ta chọn chỉ có d trường hợp mà F(a) = G(a)

Nếu như ta chọn a trong khoảng {0, 100d} tức không gian mẫu có 100d khả năng > Xác suất chọn trúng nghiệm của F(x) - G(x) là 1/100 Đây cũng là xác suất để ALGORITHM 1.1 sai

Thực hiện thuật toán n lần độc lập Áp dụng công thức cho các sự kiên độc lập ta có xác suất thất bại của thuật toán 1.1 là (1001 )n

2 Axioms of Probability

Không gian mẫu (Sample Space) Ω là tập hợp tất cả các khả năng có thể xảy ra của một sự kiện

Hàm xác suất là một ánh xạ từ tập các sự kiện vào tập số thực R

Ta gọi hàm số này là: Pr(E) = Xác suất của sự kiện E

Conditional Probability: Pr(E | F) = Pr(E∩F)

Pr(F)

Law of Total Probability: E1, E2 là các sự kiện xung khắc (E1∩ E2 =⊘) mà E1

và E2 lấp đầy không gian mẫu Khi đó với một sự kiện bất kỳ B ta có:

Pr(B) = Pr(B ∩ E1) + Pr(B ∩ E2)

=> Bayes' Law: Pr(E1 | B) = Pr(B ∩ E1) / Pr(B) =Pr(B∩E1)+ Pr(B∩E2)Pr(B∩E1)

Trang 3

3 Verifying Matrix Multiplication

Cho 3 ma trận n*n là A, B và C Ta cần kiểm tra xem A*B ?= C

Trong đó A,B là các ma trận đơn vị, chỉ bao gồm các số 0 và 1

GIải thuật cổ điển: Tính A*B và so sánh với C Time: ⊖ (n3 )

ALGORITHM(1.3) : chọn một vector đơn vị n chiều ngẫu nhiên r = (r1,r2, ,rn), ri

= 0 or 1, 1<=i <= n

PROBABILISTIC ANALYSIS:

Ta tính A*B*r = A * (B *r) rồi so sánh với C*r

Case 1: A∗ B ∗ r ≠ C ∗ r suy ra A ∗ B ≠ C

Case 2: A∗ B ∗ r = C ∗ r Lúc nãy vẫn có thể A ∗ B ≠ C

Ta tính xác suất để : A∗ B ≠ C và A ∗ B ∗ r = C ∗ r Tức xác suất giải thuật thất bại

Đặt D = AB - C Lúc này D ≠ 0 và D ∗ r = 0

Do D ≠ 0 nên tồn tại một phần tử dij trong ma trận D mà dij ≠ 0

Thêm vào đó D∗ r = 0 nên ∑n

j=1 dij ∗ rj = 0 ⇔ ri = −∑nj=1,j i dij ∗rj

dij (3.1) Trong đó các rj đều được chọn ngẫu nhiên Giả sử ta đã chọn ngẫu nhiên tất các các rj(j = 1 đến n) chỉ còn lại ri Lúc này −∑nj=1,j i dij ∗rj

dij nhận một giá trị nào đó có thể là

0, 1 hay khác đi Suy ra khả năng chọn ri thỏa mãn phương trình (3.1) là không quá 1/2 bởi ri chỉ có thể nhận giá trị 0 hoặc 1

Vậy xác suất thất bại trong một lần chạy ALGORITHM(1.3) là 1/2

Chạy n lần độc lập cho ta xác suất thất bại là (12)n

Độ tin cậy của E sau n lần kiểm tra

Pr(E/B) >= 1- 1/(2^i +1)

4 A Randomized Min-Cut Algorithm (Karger Algprithm)

Cho đồ thị G = (V,E) Ta định nghĩa cut-set là tập các cạnh của đồ thị mà nếu bỏ các

Trang 4

cạnh đó đi số thành phần liên thông của đồ thị sẽ tăng lên Min-Cut của đồ thị G là cut-set nhỏ nhất của đồ thị ấy

Bài toán đặt ra là tìm min-cut của đồ thị Tính số cạnh trong min-cut đó

Giải thuật cổ điển có độ phức tạp n^3

ALGORITHM:

Ở mỗi iteration ta thực hiện một edge contraction (chú giải phần takenote)

Sau khi thực hiện n-2 iteration: ta còn lại 2 đỉnh

Return Min-Cut = Số cạnh nối 2 đỉnh này

PROBABILISTIC ANALYSIS:

Gọi S và V - S là hai tập đỉnh bị chia rẽ bởi Min-Cut Nếu ta chỉ contract các đỉnh trong S hoặc V-S giải thuật sẽ cho kết quả chính xác Bất cứ contract nào làm mất cạnh trong Min-Cut, kêt quả không chắc sẽ chính xác

Ta gọi Ei là sự kiện tại iteration thứ i ta không contract bất cứ cạnh nào trong Min-Cut Đặt Fi là sự kiện không có bất cứ lần nào trong số i iteration đầu tiên contract mất một cạnh trong Min-Cut

Ta có: Fi = ∩i

j = 1 Ej

Ta cần tính Pr(Fn−2)

Ban đầu:

Gọi n,m là số đỉnh và số cạnh của đồ thị G

Gọi MC là Min-Cut trong G và c là số cạnh trong MC

Giả sử đỉnh A có bậc nhỏ nhất trong đồ thị deg(A) = k

Suy ra c <= k (4.1) (Có thể chứng minh bằng phản đề)

Theo định lý về cái bắt tay (hand-shaking)

Suy ra m ≥ n×k2 (4.2)

Iteration thứ nhất:

Thực hiện edge contraction cho 2 đỉnh chọn ngẫu nhiên trong G

Sự kiện E1 = cạnh được chọn không nằm trong Min-Cut

Kết hợp với (4.1) và (4.2) ta được:

Pr(E1 ) = Pr(F1 ) = 1 − c

m≥ 1 − n× kk

2

= 1 −2

n

Nhận xét: xác suất thất bại không phụ thuộc vào số cạnh của đồ thị mà chỉ phụ thuộc

vào số đỉnh

Iteration thứ 2:

Trang 5

Sau lần chạy đầu tiên đồ thì còn n-1 cạnh

Do vậy Pr(E2 |F1 ) = 1 − 2

n−1 Tương tự như vậy tại iteration thứ i:

Đồ thì còn n - i + 1 cạnh

Pr(Ei |Fi−1) = 1 −n−i+12

Tổng kết lại ta có:

Pr(Fn−2) = Pr(En−2 ∩ Fn−3) = Pr(En−2|Fn−3) × Pr(Fn−3)

= Pr(En−2|Fn−3) × Pr(En−3 ∩ Fn−4)

=

= Pr(En−2|Fn−3) × Pr(En−3|Fn−4) × × Pr(E2 |F1 ) × Pr(F1 ) ≥ ∏ni=1 ( 1 − 2

n−i+1) = ∏n

i=1 (n−i−1n−i+1) = n∗(n−1)2

Xác xuất tìm đúng Min cut sau N lần thí nghiệm thuật toán là:

Ta lấy kết quả nhỏ nhất trong ln lần chạyc chương trình sử dụng ALGORITHM 1.4 Pr(fail) = (n∗(n−1)2 )n(n−1)ln n ≤ e−2 ln n =n12

5 Random Variables and Expectation

Random Variable: một biến ngẫu nhiên X là một ánh xạ từ tập không gian

mẫu Ω vào tập các số thực R

Discrete Random Variable: một biến ngẫu nhiên rời rạc X là một biến ngẫu

nhiên mà tập giá trị của nó không phải là R nữa mà là một tập có thể đếm được

The Expectation of a Random Variable: E[X] = ∑x x ∗ Pr(X = x); x ∈ Ω

Linearity of Expectation

X và Y là các biến ngẫu nhiên rời rạc

E[X +Y] = E[X] + E[Y]

Trang 6

6 The Bernoulli and Binomial Random Variables

Bernoulli Random Variable [ or indicator random variable]

Xét kết quả của một thử nghiệm:

● Y = 1 nếu kết quả thành công

● Y = 0 nếu ngược lại

với Pr(Y = 1) = p;

E[Y] = 1 p + 0 (1-p) = p

Binomial Random Variable

Ta gọi X là một Binomial random variable with parameters n and p nếu:

Pr (X = k) = n

i × pk × (1 − p)n−k

Diễn giải rõ hơn X là số lần thành công của n trials, T1,T2, , Tn trong mà

Pr(T1 = 1 ) = Pr(T2 = 1 ) = = p

E[X] = np

7 Conditional Expectation

Conditional Expectation

Xét một không gian mẫu con của không gian mẫu Ω, thỏa mãn Z = z;E[Y | Z = z] = ∑y∈Ω y × Pr(Y = y | Z = z)

được gọi là expectation của biến ngẫu nhiên Y với điều kiện Z = z

Decomposition Law

E[X ] = ∑y∈Ω Pr(Y = y) × E[X | Y = y]

Chứng minh công thức này tương tự như chứng minh linearity of expectation

Định lý về kỳ vọng của kỳ vọng:

Trang 7

E[Y] = E[E[Y | Z]

8 Extra: Recursive Procedure Calling

Problem: Ta viết một chương trình sử dụng giải thuật đề quy Trong giải thuật

có n lần gọi chính no

PROGRAM recursive()

for(i = 1;i<=n;i++)

{

double x = rand(1); // 0 <= x <= 1

if (x<p) recursive();

}

Hỏi với giá trị nào của n và p thì chương trình trên nhất định sẽ dừng?

Problem Analysis:

Chương trình trên sử dụng giải thuật đệ quy Khi chạy trên máy tính quá trình diễn ra như sau

Ban đầu ta có 1 process S Ở mỗi iteration Process S gọi một process khác với xác suất là p Việc gọi này là hoàn toàn độc lập giữa các iteration Như thế ta xây dựng được n stack dệ quy Ta gọi các ngăn có cũng độ sâu trong các stack

đệ quy này là một thế hệ (generations) Gọi Yi là số process ở thế hệ thứ i; i = 0,1,2,

Tổng số process được sinh ra là

Y = ∑∞i=0 Yi ;

Để trả lời câu hỏi của đề bài ta cần tính E[Y]

Proof:

Ban đầu Y0 = 1;

Bởi vì thế hệ thứ i phụ thuộc thế hệ thứ i-1 nên ta sẽ tính E[Y_i] theo E[Y_i-1]

Ở thế hệ thứ i-1 ta có Y_i-1 processes Gọi Z_k ( k = 1, 2, ,Y_i-1) là số process sinh với process thứ k Ta có:

Yi = ∑Yi−1

k = 1 Zk

Nhận thấy Z_k hoàn toàn không phụ thuộc vào Y_i-1

E[Yi |Yi−1] = E[ ∑

Yi−1

k = 1

Zk |Yi−1] = E[ ∑

Yi−1

k = 1

Zk ] Hơn nữa các Z_k là binomial random variables nên with parameters n and p nên: E[Z_k] = np

Suy ra: E[Yi |Yi−1] = E[∑Yi−1

k = 1 Zk ] = ∑Yi−1

k = 1 E[Zk ]

Trang 8

= ∑

Yi−1

k = 1

np = Yi−1× n × p Suy ra:

E[Yi ] = E[E[Yi |Yi−1]] = E[Yi−1np] = npE[Yi−1]

Ta đã xây dựng được công thức đệ quy để tính E[Y_i]

E[Y] = E[∑

∞ i=0

Yi ] = ∑

∞ i=0

E[Yi ] = ∑

∞ i=0

(np)i

Case 1:

+ np >= 1 : E[Y] = inifinite Chương trình sẽ chạy mãi

+ np < 1; E[Y] = 1/(1-np) Tức về mặt lý thuyết chương trình chắc chắn sẽ dừng lại

9 The Geometric Expectation

Geometric Distribution

X là một geometric random variable with parameter p nếu:

Pr(X = n) = (1 − p)n−1× p

Từ đây ta tính được:

Pr(X ≥ n) = ∑∞i=n Pr(X = n) = ∑∞i=n (1 − p)n−1× p

= p × (1 − p)n−1 × ∑

∞ i=0

(1 − p)i = p × (1 − p)n−1× 1

1 − (1 − p)

= (1 − p)n−1

Công thức tính expectation cho biến nguyên dương::

Cho X là một biến ngẫu nhiên rời rạc chỉ nhận các giá trị nguyên dương: E[X] = ∑∞i=1 Pr(X ≥ 1)

Áp dụng công thức trên ta tính được expectation của geometric random variable: E[X] = ∑∞i=1 Pr(X ≥ 1) = ∑∞i=1 (1 − p)n−1 = 1−(1−p)1 =p1

Trang 9

10 Extra: Coupon Collector's Problem

Problem: Có n loại coupons trong hộp, số lượng mỗi loại rất rất lớn. Mỗi lần

ta lấy ra 1 coupon Hỏi ta phải lấy bao nhiều lần để có thế thu thập được đủ n loại coupons này

Problem Analysis:

Bài toán yêu cầu tìm sô lần lấy để có thể thu được n loại Nếu vậy sự khác nhau giữa n-1 loại và n loại là gì? Lúc ta lấy được 1 loại coupon rồi Khả năng

có thêm loại nữa là rất dễ, xác suất để lần lấy tiếp theo có thêm 1 loại coupon là (n-1)/n Còn nếu xét khi đã có n-1 loại rồi, để lấy được loại thứ n kia xác suất chỉ là 1/n Như vậy việc lấy thêm được một loại coupon mới không phụ thuộc vào công việc ta đã làm trước đó mà chỉ phụ thuộc vào số coupon tính đến thời điểm hiện tại Tức số coupon cần lấy thêm để đi từ i-1 loại đến i loại chỉ phụ thuộc vào giá trị của i

Proof:

Gọi X_i là số coupon cần lấy thêm tính từ lúc ta có i-1 loại đến lúc ta có i loại Mỗi X_i (i=1,2, ,n) là một geometric random variable with parameter

pi = 1 −i−1

n =n−i+1

n Suy ra: E[Xi ] = 1

pi = n n−i+1 Suy ra:

E[X] = E[∑ni = 1 Xi ] = ∑ni = 1 E[Xi ] = ∑ni = 1 n−i+1n

Đặt k = n - i + 1 ta dược: (H(n) = ln n)

= n × ∑

n

k = 1

1

k = n × H(n)

11 The Expected Run-Time of Quicksort

Quick sort là một giải thuật tương đối đơn giản và hiệu quả Vấn đề chốt cùng trong quik sort chính là chọn pivot sao cho hơp lý, để trong rơi vào worst case n^2 của giải thuật Nếu như ở đây ta chọn pivot một cách ngẫu nhiên liệu giải thuật trên có trở nên tốt hơn không?

Để trả lời cậu hỏi trên ta sẽ phân tích thời gian tính của Quick Sort với pivot chọn ngẫu nhiên

Probabilistic Analysis:

Trong giải thuật Quick Sort, sau khi đã chọn xong pivot công việc của ta là so sánh pivot với từng số trong dãy con Ở đây nếu phân tích kỹ hơn thì câu lệnh

so sánh này chính là câu lệnh đặc trưng của vòng lặp trong Quick Sort Do đó, chỉ cần tính sô lần so sánh này ta sẽ thu được thời gian tính của thuật toán Gọi

Trang 10

số lần so sánh này là X

Giả sử y_1,y_2, ,y_n là dãy đã được xắp xếp

Gọi X_ij là biến ngẫu nhiên Beunoulli thỏa mãn:

X_ij = 1 nếu trong quá trình sắp xếp ta có so sánh y_i và y_j

i,j = 1,2,3 ,n ; i<>j;

X_ij = 0 nếu ngược lại

Ta có:

X = ∑n−1

i=1 ∑n

j=i+1 Xij Suy ta:

E[X] = E[∑n−1i=1 ∑n

j=i+1 Xij] = ∑n−1i=1 ∑n

j=i+1 E[Xij] (5.1) Công việc tiếp theo của ta là đi tính E[X_ij}

Xét các số trong khoảng từ vị trí i đến vị trí j :

y_i,y_i+1, y_j ; (i <= j)

Rõ rang đến một lúc nào đó pivot được chọn phải làm việc với cả y_i và y_j (Có thể chứng minh bằng phản chứng)

Lúc này pivot sẽ phải là một trong j-i+ số trên

Trong đó có 2 trường hợp dẫn đến việc ta phải so sánh y_i và y_j

Do đó: Pr(X_ij = 1) = 2/(j-i+1)

Kỳ vọng 2 số i,j được so sánh với nhau là:

E[X_ij] = 2/(j-i+1) ( vì X là biến ngẫu nhiên Bernoulli)

Thay đẳng thức trên vào (5.1) ta được:

E[X] = ∑n−1i=1 ∑n

j=i+1 j−i+12

Kỳ vọng số phép toán so sánh:

E[X] = 2nln(n)

12 The Birthday Paradox

Problem:

Có 30 người trong phòng, Hỏi xác suất để tồn tại 2 người có ngày sinh trùng nhau là bao nhiêu?

Problem Analysis:

Ngày sinh có 365 khả năng Số người là 30, 29 hay chỉ có 1 ,2 có khác gì nhau không? Khi có 1 người chắc chắn là không trùng với ai Khi có 2 người thì khả

Trang 11

năng không trùng chính là khả năng người 2 sinh khac ngày người 1 Khi đó có

364 tường hợp trong số 365 trường hợp có thể Xác suất là 364/365 Như vậy xác suất để người thứ i không trùng với ngày sinh của những người trước đó

hoàn toàn không phụ thuộc vào người trước đó sinh ngày nào mà chỉ phụ thuộc

vào giá trị của i Và xác suất này là:

1 - (i-1)/365

Proof:

Đi theo lập luận trên ta tính dược xác suất để 30 người không sinh trùng ngày là:

∏30i=1 ( 1 −365i−1) ≈ 0.2937

Tổng quát bài toán cho n ngày sinh và m người có ngày sinh không trùng nhau:

Pr = ∏m−1i=0 ( 1 −ni) ≈ ∏m

i=0 e−

i

n = e∑mi=0 −

i

n = e−

m×(m−1) 2n (1)

Ở trên ta đã sử dụng công thức 1 − x ≈ e−x với x tương đối gần 0

Tổng quát:

13 Balls into Bins

Tổng quát vấn đề Birthday Paradox trên ta xây dựng được một mô hình toán học gọi là balls into bins

Ở đây có sự tương ứng số người là số bóng và số ngày sinh là số hộp Nếu bây giờ ta ném m balls vào n bins (giả sử không ném trượt quả nào) , lúc này mỗi

bins sẽ có một số bóng nhất định Ta gọi maximum load là số bóng chứa trong

hộp có nhiều bóng nhất

Định lý: Xác suất để maximum load lớn hơn 3 ln n/ln ln n là không quá 1/n Proof:

Xét bin thứ nhất Xác suất để có ít nhất M balls trong bin 1 sẽ là:

n

M× (1n)M

(chọn ra M quả trong số n quả Xác suất để mỗi quả vào hộp 1 là 1/n)

n

M× (1n)M ≤M!1 ≤ (Me)M

Tron bất đẳng thức thứ 2 ta sử dụng công thức:

kk

k! < ∑∞i=0 ki!i = ek ]

Do đố xác suất để tồn tại một bin chứa nhiều hơn M balls là:

Trang 12

n×Mn × (1n)M ≤ n × (Me)M

Thay M = 3 ln n/ln ln n vào rồi chuyển toàn bộ sang dạng exp ta chứng minh được xác suất này không quá 1/n

Câu hỏi 1: Xác suất để 2 bóng bất kì ở cùng 1 thùng: 1/n

Câu hỏi 2: Kì vọng số va chạm (nhiều bóng chung thùng)

E(X) = 1/n * Tổ hợp chập 2 của m

Áp dụng vào bài toán sinh nhật:

n = 365

m = ?

Ta tính được để E(X) = 1 (có 1 cặp cùng ngày sinh) thì m >= 23

Để E(X) = 2 (có 2 cặp trùng ngày sinh) thì m >= 38

Câu hỏi 3: Xác xuất để 1 thùng rỗng (bin is empty): P(bin i is empty) = (1 -

1/n)^n ~1/e

Kì vọng số thùng rỗng: E(n bin is empty) = n/e

Câu hỏi 4: Xác suất để thùng i có k bóng: <= 1/k!

Pr(bin i has k ball) = C(k,n) * (1/n)^k * (1 - 1/n)^(n - k) <= 1/k!

Câu hỏi 5: Xác suất để thùng có ít nhất k bóng

Pr(bin i has at least k balls) = C(k,n) * (1/n)^k <= (e/k)^k

Câu hỏi 6: Thùng nhiều nhất chứa số bóng: E(maximize) = 3 ln(n)/ln(ln(n))

Xác suất để thùng nhiều nhất chứa số bóng này là: Pr = ln(ln(n))/ln(2)

14 Problem Set Membership

Problem:

Cho tập S = {s_1,s_2, ,s_m} là tập con của một tập rất lớn universe U Với một phần từ x bất kỳ chọn từ U, ta phải trả lời câu hỏi:" x có là phẩn tử của S hay không?"

Câu hỏi này được gọi là Set Membership Problem

1 Chain Hashing

Phương pháp cổ điển nhất là tạo một bảng băm tìm kiếm, Bạn có thể dùng hàm băm ngẫu nhiên.Phương pháp này luôn cho kết quả chính xác và thời gian khá nhỏ Theo phần tính ở mục 2, maximum load bằng ln n/ln ln n là không quá 1/n Vậy thì thời gian tìm kiếm lớn hơn Θ(ln n/ln ln n ) với xác suất không quá n

Ngày đăng: 21/08/2016, 21:11

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w