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ế.. Num
Trang 1CÁC THU Ậ T TOÁN
(PROBABILISTIC)
Trang 2Numberical 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?
Trang 3Numberical 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
Trang 4Numberical 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
Trang 5Numberical probabilistic algorithms
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
Trang 6Numberical 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)
Trang 7Numberical 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
Trang 8Numberical 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++)
y=uniform (0,1);
if (y<=f(x)) hits=hits+1;
}
return hits/n;
Trang 9Numberical 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ự
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
Trang 10Monte 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