C
C
Á
Á
C THU
C THU
Ậ
Ậ
T TO
T TO
Á
Á
N
N
X
X
Á
Á
C
C
SU
SU
Ấ
Ấ
T
T
(PROBABILISTIC)
(PROBABILISTIC)
Numberical probabilistic algorithms
Numberical probabilistic algorithms
Giới thiệu:
- Thuật toán xác suất về số dùng để tính toán 1 kết
quả gần đúng của vấn đề toán học (Kết quả gần
chính xác nhất với kết quả thực tế).
1. Buffon’s Needle:
- Gạch những đường thẳng có khoảng cách D đều
nhau trên bảng
- Có 355 que tăm có chiều dài L=1/2 D.
- Tung những que này lên bảng, thì bao nhiêu que sẽ
rơi vào giữa 2 đường thẳng?
Numberical probabilistic algorithms
Numberical probabilistic algorithms
Giải quyết bài toán:
- Số que sẽ rơi vào giữa 2 đường thẳng 0355
- Giả sử que rơi vuông góc với đường thẳng: sẽ có ½
khả năng que rơi vào giữa 2 đường thẳng
- Nếu que rơi song song với đường thẳng thì xác
suất rơi ra ngoài là rất nhỏ
Mỗi que có 1/pi khả năng để rơi vào 2 đường
thẳng
- Bài toán Buffon’s Needle tính ra được là 113 que
(355/pi) sẽ rơi vào giữa 2 đường thẳng
Numberical probabilistic algorithms
Numberical probabilistic algorithms
Kết luận:
- Từ bài toán Buffon’s needle có thể được dùng để
tính pi = n/k ( n- số que ném ban đầu, k – số que
rơi vào giữa 2 đường thẳng)
Cách giải quyết khác:
- Cho 1 hình vuông có cạnh là 2R chứa 1 hình tròn
có bán kính là R.
- Ném phi tiêu ngẫu nhiên vào trong hình vuông.
Đếm xem có bao nhiêu phi tiêu rơi vào hình tròn
Numberical probabilistic algorithms
Numberical probabilistic algorithms
Diện tích hình tròn: S
T
=pi*R
2
Diện tích hình vuông: S
V
=(2R)
2
Tỉ lệ: S
T
/S
V
= pi/4
Hay nói cách khác: pi = 4*c/s (c- số phi tiêu rơi
vào hình tròn, s- số phi tiêu được ném)
Từ kỹ thuật này có thể được ứng dụng để tính diện
tích những hình không quy tắc:
- Cho 1 hình bất kì A, và 1 hình vuông bao trùm
ngoài hình A.
- Ném ngẫu nhiên phi tiêu vào hình vuông
Numberical probabilistic algorithms
Numberical probabilistic algorithms
Tính tỉ lệ: T = phi tiêu rơi vào A / tổng phi tiêu
được ném.
T = Diện tích A/Diện tích hình vuông
2. Monte Carlo Intergration:
- Cho 1 hàm f liên tục vùng dưới đường cong của
f chính là tích phân của hàm
(Tích phân xem như diện tích S
dưới đường cong y =f(x) với x
chạy từ ab)
Numberical probabilistic algorithms
Numberical probabilistic algorithms
- Tuy nhiên có những hàm rất khó hoặc không thể
lấy tích phân
Cần sử dụng đến kỹ thuật Monte Carlo:
- Cho 1 hàm y=f(x) bất kì
- Vẽ 1 hình vuông bao bọc đoạn f(x) cần tính tích
phân
- Ném ngẫu nhiên phi tiêu vào trong hình vuông, và
đếm bao nhiêu phi tiêu rơi vào dưới đường cong
Diện tích dưới đường cong xấp xỉ = Số phi tiêu
dưới đường cong/số phi tiêu ném
Numberical probabilistic algorithms
Numberical probabilistic algorithms
Giải thuật:
float Integrate (f, n ) // n- số phi tiêu được ném
{ int hits=0;
for (int i =1;i<=n;i++)
{ x=uniform (0,1);
y=uniform (0,1);
if (y<=f(x)) hits=hits+1;
}
return hits/n;
Numberical probabilistic algorithms
Numberical probabilistic algorithms
3. Probabilistic Counting:
- Đặt cược: Chọn ngẫu nhiên ít nhất 2 người trong
25 người, sao cho 2 người này có cùng sinh nhật.
- Có N!/(N-k)! Cách để chọn k khác nhau từ tập N
có thứ tự
- Có N
k
cách khác nhau để chọn k nếu có sự lặp lại
Cơ hội để thắng cược: 1- 365!/(340!*365
25
) =
56,9%
Thực tế cơ hội chiến thắng có thể cao hơn, vì ngày
sinh nhật này không tính đến năm
Monte Carlo Algorithms
Monte Carlo Algorithms
Giới thiệu:
- Thuật toán Monte Carlo sẽ trả về 1 kết quả, và tính
chính xác của kết quả sẽ tăng dần theo những lần
chạy của thuật toán.
- Thỉnh thoảng thuật toán này cũng đưa ra kết quả
sai.
- Thuật toán Monte Carlo trả về kết quả p có độ
chính xác là: ½<p<1
- Nếu với mỗi input khác nhau, thuật toán đều trả về
chung 1 kết quả Monte Carlo đồng nhất