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

Monte Carlo Algorithms pps

10 184 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 180,31 KB

Nội dung

Monte Carlo Algorithms Monte Carlo Algorithms - Có 2 cách để tăng độ chính xác cho kết quả của thuật toán Monte Carlo: 1.Tăng thời gian chạy của thuật toán 2.Gọi thuật toán nhiều lần Ví dụ: Monte3 (x) { One = Monte (x); Two = Monte (x); Three = Monte (x); if (One = Two) or (One = Three) return One; else return Two; } Monte Carlo Algorithms Monte Carlo Algorithms 1. Majority Element: (Phần tử chiếm đa số) - Mục đích của bài toán là tìm số chiếm đa số trong 1 dãy số  đó là số chiếm hơn 50% trong dãy số. - Giải quyết bài toán thông thường  O (n 2 ) vì phải so sánh từng cặp số 1 Monte Carlo Algorithms Monte Carlo Algorithms int Timsochiemdaso (int a[], int n) { int count =0; while (count <n/2) { for (int k=0;k<n;k++) { int choice = a[k]; for (int i=1;i<n;i++) if (a[i] = choice) count++; return choice; } } Monte Carlo Algorithms Monte Carlo Algorithms - Đối với giải thuật Monte Carlo: + Lấy ngẫu nhiên 1 số nằm trong khoảng (1,n) + Kiểm tra xem vị trí của số ngẫu nhiên đó có phải là số Majority không + Kết quả của thuật toán trả về True hoặc False + Nếu True  Đã tìm ra được số Majority + Nếu False Phép chọn không chính xác  Thử với lần tiếp theo + Giải thuật chỉ đúng khoảng 50% trong 1 số trường hợp. Vì vậy nếu gọi hàm 5 lần thì kết quả chính xác tăng lên là 97%  O(5N)=O(N) Monte Carlo Algorithms Monte Carlo Algorithms bool Majority (int a[], int n) { choice = uniform (1,n); // Hàm lấy 1 số ngẫu nhiên từ 1n int count =0; for (int i=1;i<n;i++) if (a[i] = a[choice])count++; return (count >n/2); } Monte Carlo Algorithms Monte Carlo Algorithms 2. Monte Carlo Prime Testing: - Kiểm tra số N có phải là số nguyên tố hay không bằng cách sử dụng thuật toán Monte Carlo. - Chọn 1 số A ngẫu nhiên từ 2  sqrt(N) - Nếu N chia hết cho a  N không phải là số nguyên tố - Nếu N không chia hết cho a  Chưa chắc khẳng định N là số nguyên tố - Xác suất cho kết quả đúng của bài toán chỉ 1,2% Las Vegas Algorithms Las Vegas Algorithms Giới thiệu: - Giải thuật Las Vegas không bao giờ trả về 1 kết quả sai. Tuy nhiên, thỉnh thoảng không trả về kết quả. - Số lần chạy thuật toán càng nhiều thì xác suất thành công càng cao - Ý tưởng cơ bản của giải thuật Las Vegas: Chọn ngẫu nhiên 1 quyết định, và kiểm tra xem quyết định đó có dẫn đến 1 kết quả thành công hay không - Giải thuật sẽ lặp lại cho đến khi có được 1 kết quả thành công Las Vegas Algorithms Las Vegas Algorithms Ví dụ: - Success (x) – Là số lần cho kết quả thành công. - Failure(x) – Là số lần cho kết quả sai. - P(x) – Xác suất giải thuật cho ra kết quả thành công Số lần chạy giải thuật Time(x) Time(x) = p(x) *S(x) + (1-p(x))*(F(x) + Time(x)) Time(x) = S(x) + (1-p(x))/p(x)*F(x) Las Vegas Algorithms Las Vegas Algorithms Ứng dụng: Bài toán 8 quân hậu 1. Giải bằng đệ qui quay lui 2. Las Vegas Algorithm: - Đặt quân hậu 1 tại vị trí bất kì ở hàng đầu tiên. - Tiếp theo đặt quân hậu 2 ở vị trí bất kì ở hàng 2 sao cho chúng không ăn nhau với quân hậu 1. - Tiếp tục cho đến quân hậu 8 - Kết quả của giải thuật có thể là True hoặc False. Las Vegas sẽ giải tiếp cho đến khi đạt kết quả True Las Vegas Algorithms Las Vegas Algorithms Giải thuật: bool LasVegasQueeen ( result) // đưa ra vị trí c ộ t cho m ỗ i dòng { row = 1; do{ spot =0; for (int i=1;i<=8;i++) { if (!row và i không ăn nhau ) { spot++; if uniform (1,1) =1 try =i; } } if (spot>0) result[row] = try; }while ((spot = 0) or (row =9)) . nhiều lần Ví dụ: Monte3 (x) { One = Monte (x); Two = Monte (x); Three = Monte (x); if (One = Two) or (One = Three) return One; else return Two; } Monte Carlo Algorithms Monte Carlo Algorithms 1 (count >n/2); } Monte Carlo Algorithms Monte Carlo Algorithms 2. Monte Carlo Prime Testing: - Kiểm tra số N có phải là số nguyên tố hay không bằng cách sử dụng thuật toán Monte Carlo. - Chọn 1. i=1;i<n;i++) if (a[i] = choice) count++; return choice; } } Monte Carlo Algorithms Monte Carlo Algorithms - Đối với giải thuật Monte Carlo: + Lấy ngẫu nhiên 1 số nằm trong khoảng (1,n) + Kiểm

Ngày đăng: 08/08/2014, 05:21

TỪ KHÓA LIÊN QUAN