ỨNG DỤNG PHƯƠNG PHÁP PHÂN TÍCH XÁC SUẤT VÀ CÁC THUẬT TOÁN NGẪU NHIÊN TRONG QUÁ TRÌNH PHÂN TÍCH CÁC BÀI TOÁN

18 1.3K 4
ỨNG DỤNG PHƯƠNG PHÁP PHÂN TÍCH XÁC SUẤT VÀ CÁC THUẬT TOÁN NGẪU NHIÊN TRONG QUÁ TRÌNH PHÂN TÍCH CÁC BÀI TOÁN

Đ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

ỨNG DỤNG PHƯƠNG PHÁP PHÂN TÍCH XÁC SUẤT VÀ CÁC THUẬT TOÁN NGẪU NHIÊN TRONG QUÁ TRÌNH PHÂN TÍCH CÁC BÀI TOÁN

ĐẠI HỌC HUẾ TRƯỜNG ĐẠI HỌC KHOA HỌC  TIỂU LUẬN MÔN: MÔ PHỎNG NGẪU NHIÊN ĐỀ TÀI: ỨNG DỤNG PHƯƠNG PHÁP PHÂN TÍCH XÁC SUẤT CÁC THUẬT TOÁN NGẪU NHIÊN TRONG QUÁ TRÌNH PHÂN TÍCH CÁC BÀI TOÁN Giáo viên giảng dạy: PGS.TS. Trần Lộc Hùng Học viên thực hiện: Nguyễn Lý Hữu Huấn Lớp: Khoa học máy tính, Khóa năm: 2008-2010 Huế, 6/2009 MỤC LỤC LỜI MỞ ĐẦU .1 1. GIỚI THIỆU BÀI TOÁN .2 1.1 Mô tả bài toán Thuê nhân viên .2 1.2 Phương pháp phân tích truyền thống .2 2. PHƯƠNG PHÁP PHÂN TÍCH XÁC SUẤT .3 2.1 Khái niệm phân tích xác suất .3 2.2 Biến chỉ thị ngẫu nhiên .4 2.3 Phân tích bài toán bằng cách sử dụng biến chỉ thị ngẫu nhiên 5 3. PHƯƠNG PHÁP SỬ DỤNG THUẬT TOÁN NGẪU NHIÊN 6 3.1 Khái niệm thuật toán ngẫu nhiên 7 3.2 Ứng dụng thuật toán ngẫu nhiên trong phân tích bài toán .7 3.3 Các thuật toán hoán đổi ngẫu nhiên dữ liệu vào 9 3.4 Mở rộng bài toán 13 TÀI LIỆU THAM KHẢO 16 Tiểu luận môn học: Mô phỏng ngẫu nhiên LỜI MỞ ĐẦU Tiểu luận này trình bày về phương pháp sử dụng phép phân tích xác suất các thuật toán ngẫu nhiên trong quá trình phân tích ước lượng chi phí của một bài toán. Trong tiểu luận này, tôi đưa ra một bài toán cụ thể, đó là bài toán Thuê nhân viên để tiến hành phân tích đánh giá chi phí thực hiện ở các trường hợp sử dụng phương pháp phân tích xác suất phương pháp ứng dụng thuật toán ngẫu nhiên. Tôi xin chân thành cảm ơn Thầy giáo – PGS.TS. Trần Lộc Hùng đã tận tình giảng dạy chỉ bảo cho tôi những kiến thức bổ ích về môn học. Do khả năng thời gian có hạn nên tiểu luận không tránh khỏi những thiếu sót hạn chế. Tôi mong tiếp tục nhận được sự chỉ bảo của Thầy để có thể hoàn chỉnh hơn nữa những hiểu biết của mình. Học viên thực hiện Nguyễn Lý Hữu Huấn 1 Tiểu luận môn học: Mô phỏng ngẫu nhiên 1. GIỚI THIỆU BÀI TOÁN 1.1 Mô tả bài toán Thuê nhân viên Giả sử bạn cần thuê một nhân viên văn phòng mới thông qua dịch vụ môi giới việc làm. Nhà môi giới sẽ lần lượt gửi cho bạn một ứng cử viên mỗi ngày. Bạn sẽ phỏng vấn mỗi người sau đó bạn quyết định có thuê người đó hay không. Để phỏng vấn một người xin việc, bạn phải tốn một chi phí nhỏ để trả cho nhà môi giới, tuy nhiên để thuê được một người thì rất tốn kém vì bạn phải sa thải nhân viên hiện tại trả một khoản chi phí thuê rất lớn cho nhà môi giới. Vì vậy, sau khi phỏng vấn một người, nếu người đó tốt hơn người hiện tại bạn sẽ sa thải người hiện tại thuê người mới. Mục tiêu của bài toán này là nhằm ước tính xem chi phí đó là bao nhiêu. Thủ tục HIRE-ASSISANT dưới đây sẽ mô tả quá trình này. Giả sử số lượng các ứng cử viên là từ 1 đến n. Sau khi phỏng vấn ứng cử viên thứ i, thủ tục có thể cho bạn xác định ứng cử viên nào là tốt nhất trong các ứng cử viên trước đó. Để khởi gán giá trị ban đầu, thủ tục tạo ra 1 ứng cử viên mang giá trị 0 (gọi là ứng cử viên bù nhìn, có chất lượng tệ nhất). * Thủ tục HIRE-ASSITANT 1. BEST:=0 {ứng cử viên bù nhìn} 2. For i:=1 to n do 3. <phỏng vấn ứng cử viên thứ i> 4. if <ứng cử viên i tốt hơn ứng cử viên BEST> then 5. BEST: = i 6. <thuê ứng cử viên i> Ở đây ta không đề cập đến thời gian thực hiện của thủ tục, mà chỉ quan tâm đến chi phí thực hiện thông qua việc phỏng vấn thuê. Việc phỏng vấn thì tốn chi phí thấp – gọi là c i , nhưng ngược lại thuê thì tốn chi phí rất đắt – gọi là c h . Gọi m là số người được thuê, thì tổng chi phí của thuật toán này là O(nc i + mc h ). Dù ta thuê bao nhiêu người đi chăng nữa thì ta cũng phải luôn phỏng vấn hết n người, như vậy ta luôn tốn nc i cho việc phỏng vấn. Vì thế, ta chỉ tập trung vào phân tích chi phí thuê mc h , con số này biến đổi ứng với mỗi lần thực thi thuật toán. 1.2 Phương pháp phân tích truyền thống - Trường hợp tốt nhất Trong trường hợp tốt nhất, ta chỉ cần thực hiện việc thuê đúng 1 lần. Tức là các ứng cử viên đến theo thứ tự giảm dần về chất lượng, như vậy ta đã phỏng vấn n lần thuê 1 lần với tổng chi phí thuê là O(c h ). 2 Tiểu luận môn học: Mô phỏng ngẫu nhiên - Trường hợp xấu nhất Trong trường hợp xấu nhất, mọi ứng cử viên phỏng vấn ta đều thuê cả. Tức là các ứng cử viên đến theo thứ tự tăng dần về chất lượng, như vậy ta đã thuê n lần với tổng chi phí thuê là O(nc h ). Điều đó có thể xảy ra, tuy nhiên các ứng cử viên không phải lúc nào đến cũng theo thứ tự tăng dần. Thực tế, ta không biết hoặc không thể điều khiển thứ tự mà họ đến. Ví dụ: Cho một danh sách đã được xếp hạng theo thứ tự sau A 1 = (1,2,3,4,5,6,7,8,9,10), thì sẽ mất 10 lần thuê ứng cử viên mới, vì mỗi ứng cử viên đến sau đều tốt hơn ứng cử viên trước như vậy việc thuê (dòng 5-6 của giải thuật HIRE-ASSITANT) sẽ luôn được thực hiện với mỗi ứng cử viên. Cho danh sách được xếp hạng theo thứ tự ngược lại A 2 = (10,9,8,7,6,5,4,3,2,1), thì chỉ cần mất 1 lần thuê ứng cử viên mới, vì mỗi ứng cử viên đến sau đều tệ hơn ứng cử viên trước như vậy dòng 5-6 của giải thuật HIRE-ASSITANT chỉ thực hiện một lần đối với ứng cử viên đầu tiên. Cho danh sách được xếp hạng theo thứ tự như sau A 3 = (5,2,1,8,4,7,10,9,3,6), thì mất 3 lần thuê ứng cử viên mới, đó là ứng cử viên có thứ hạng 5, 8, 10. Tóm lại, độ phức tạp của thuật toán này tùy thuộc vào số lần mà ta thuê một nhân viên mới, ta có trường hợp xấu nhất là A 1 , tốt nhất là A 2 trường hợp trung bình là A 3 . 2. PHƯƠNG PHÁP PHÂN TÍCH XÁC SUẤT 2.1 Khái niệm phân tích xác suất Phân tích xác suất là sử dụng xác suất trong việc phân tích các bài toán. Hầu hết, ta sử dụng phân tích xác suất để phân tích thời gian thực hiện của thuật toán. Đôi khi ta sử dụng nó để phân tích các đại lượng khác như phân tích chi phí thuê nhân viên trong thủ tục HIRE-ASSISTANT. Để phân tích xác suất, ta phải mô tả được sự phân phối bộ dữ liệu vào hoặc giả định về sự phân phối bộ dữ liệu vào hợp lý. Sau đó, ta phân tích thuật toán, tính toán một kỳ vọng về thời gian thực thi. Kỳ vọng này là dựa trên sự phân phối dữ liệu vào. Như vậy, ta có thể tính được trung bình thời gian thực thi dựa trên dữ liệu vào. Vậy, ta phải rất cẩn thận trong việc quyết định phân phối bộ dữ liệu vào. Ở một số bài toán, nếu ta có thể giả sử một tập hợp các bộ dữ liệu vào hợp lý thì ta có thể sử dụng phân tích xác suất như một kỹ thuật để thiết kế một thuật toán hiệu quả như là một phương tiện để hiểu rõ bài toán. Còn 3 Tiểu luận môn học: Mô phỏng ngẫu nhiên nếu ở một bài toán, ta không thể mô tả một bộ phân phối dữ liệu vào hợp lý thì ta không thể sử dụng phân tích xác suất. Ở bài toán thuê nhân viên, ta có thể giả sử rằng các ứng cử viên đến theo một thứ tự ngẫu nhiên. Điều đó có nghĩa là gì? Giả sử rằng ta có thể so sánh bất kỳ 2 ứng cử viên nào quyết định người nào tốt hơn; như vậy ta sẽ có được thứ tự toàn bộ các xếp hạng của các ứng cử viên. Ta có thể xếp hạng mỗi ứng cử viên ứng với 1 số duy nhất từ 1 đến n, sử dụng rank(i) là vị thứ của ứng cử viên i ta quy ước rằng vị thứ cao hơn ứng với người có chất lượng tốt hơn. Danh sách thứ tự (rank(1), rank(2), …, rank(n)) là một sự hoán vị của (1, 2, …, n). Ta nói các ứng cử viên đến theo thứ tự ngẫu nhiên tương đương với việc nói rằng danh sách các hoán vị của các vị thứ là như nhau đối với mỗi hoán vị trong n! hoán vị của 1 đến n. Ta nói rằng các vị thứ tạo nên một hoán vị ngẫu nhiên đều (uniform radom permution) tức là mỗi hoán vị trong n! hoán vị xuất hiện với xác suất bằng nhau. Để thuê chính xác một lần thì ứng cử viên đến phỏng vấn đầu tiên phải là ứng cử viên tốt nhất. Như vậy xác suất để thuê chính xác một lần chính bằng xác suất để ứng cử viên tốt nhất nằm ở vị trí thứ nhất trong dãy dữ liệu vào (có n vị trí), vậy xác suất này bằng 1/n. Để thuê chính xác n lần thì các ứng cử viên phải đến theo thứ tự tăng dần về chất lượng, đây là trường hợp xấu nhất của thuật toán. Các hoán vị bộ dữ liệu vào có khả năng như nhau, mà có tất cả là n! hoán vị. Như vậy xác suất để các ứng cử viên đến theo thứ tự tăng dần là 1/n!. Nên xác suất mà bạn sẽ thuê chính xác n lần là 1/n!. 2.2 Biến chỉ thị ngẫu nhiên Để phân tích nhiều thuật toán như Bài toán thuê nhân viên ở trên ta sẽ sử dụng biến chỉ thị ngẫu nhiên. Biến chỉ thị ngẫu nhiên cho ta một phương pháp thuận tiện để chuyển đổi giữa xác suất kỳ vọng. Giả sử rằng ta có một không gian mẫu S một sự kiện A, thì biến chỉ thị ngẫu nhiên I{A} gắn với sự kiện A được định nghĩa như sau: I{A}= 1 nếu A xuất hiện 0 nếu A không xuất hiện (1) Một ví dụ đơn giản, để xác định được kỳ vọng của số lần xuất hiện mặt ngửa khi ta tung một đồng xu cân đối. Ta gọi không gian mẫu S = {H,T} đại diện cho mặt ngửa (H) mặt sấp (T) của đồng xu với xác suất xuất hiện mặt ngửa mặt sấp Pr{H}=Pr{T}=1/2. Ta có thể định nghĩa biến chỉ thị ngẫu nhiên X H là số mặt ngửa của đồng xu xuất hiện – gắn với sự kiện H. Biến này tính số mặt ngửa xuất hiện khi tung đồng xu nó bằng 1 nếu là mặt ngửa, bằng 0 nếu ngược lại (mặt sấp). 4 Tiểu luận môn học: Mô phỏng ngẫu nhiên Ta viết: X H =I{H}= 1 nếu H xuất hiện 0 nếu H không xuất hiện Kỳ vọng của số mặt ngửa xuất hiện trong một lần tung đồng xu chính là giá trị kỳ vọng của biến chỉ thị X H . E[X H ] = E[I{H}] = 1.Pr{H}+ 0.Pr{T} = 1.(1/2) +0.(1/2) = 1/2 Như vậy, kỳ vọng của số lượng mặt ngửa xuất hiện với một lần tung đồng xu ngẫu nhiên là 1/2. Bổ đề sau cho thấy, giá trị kỳ vọng của một biến chỉ thị ngẫu nhiên với sự kiện A chính bằng xác suất để sự kiện A xảy ra. Bổ đề 1 Cho không gian mẫu S sự kiện A trong không gian mẫu. Gọi XA=I{A}, thì E[XA]=Pr{A} Chứng minh: Từ định nghĩa biến chỉ thị ngẫu nhiên ở công thức (1) định nghĩa giá trị kỳ vọng, ta có: E[XA] = E[I{A }] = 1.Pr{A}+ 0.Pr{ A } = Pr{A} Với A thể hiện sự kiện S-A (phần bù của A) Mặc dầu, biến chỉ thị ngẫu nhiên có thể làm cho ứng dụng trở nên nặng nề hơn ví dụ như việc tính kỳ vọng của số mặt ngửa xuất hiện khi tung đồng xu, nhưng nó lại rất cần thiết trong các trường hợp phân tích các mẫu thử nghiệm lặp ngẫu nhiên. 2.3 Phân tích bài toán bằng cách sử dụng biến chỉ thị ngẫu nhiên Trở lại Bài toán thuê nhân viên, ta muốn tính kỳ vọng của chi phí về thời gian khi ta thuê một nhân viên mới. Để sử dụng phương pháp phân tích xác suất, ta giả sử rằng các ứng cử viên đến theo thứ tự ngẫu nhiên. Gọi X là biến ngẫu nhiên chỉ chi phí thời gian mà ta thuê một nhân viên mới. Ta có thể áp dụng định nghĩa giá trị kỳ vọng: [ ] { } ∑ = == n i xXxXE 1 Pr Nhưng cách tính toán này không được thuận tiện lắm. Vì vậy, thay vào đó ta sẽ sử dụng biến chỉ thị ngẫu nhiên để đơn giản hóa việc tính toán. Thay vì tính E[X] bằng cách định nghĩa một biến chỉ chi phí về thời gian thuê một nhân viên mới, ta dùng n biến logic riêng biệt tương ứng với 5 Tiểu luận môn học: Mô phỏng ngẫu nhiên mỗi ứng cử viên được thuê hoặc không được thuê. Cụ thể, ta gọi X i là biến chỉ thị ngẫu nhiên tương ứng với sự kiện ứng cử viên thứ i được thuê. Như vậy: X i =I{i được thuê}= 1 nếu i được thuê 0 nếu i không được thuê (2) X = X 1 + X 2 + … + X n (3) Theo Bổ đề 1 ta có E[X i ] = Pr{i được thuê} Vì thế ta phải tính xác suất ở dòng 5-6 của thủ tục HIRE-ASSISTANT. Ở dòng 5, ứng cử viên i được thuê khi ứng cử viên thứ i tốt hơn các ứng của viên từ 1 đến i-1. Bởi vì ta đã giả định rằng các ứng cử viên đến theo thứ tự ngẫu nhiên nên i ứng cử viên đầu tiên đã xuất hiện theo thứ tự ngẫu nhiên. Bất kỳ một ứng cử viên nào trong i ứng cử đầu tiên đều có thể được xem là tốt nhất. Ứng cử viên thứ i có xác suất là 1/i khả năng tốt hơn các ứng cử viên từ 1 đến i-1, như vậy 1/i là xác suất được thuê. Theo Bổ đề 1 ta có được: E[X i ] = 1/i (4) Suy ra: [ ] )1(ln /1 ][ 1 1 1 On i XE XEXE n i n i i n i i += = =       = ∑ ∑ ∑ = = = (Theo công thức (3)) (5) (Theo tính chất tuyến tính của kỳ vọng) (Theo công thức (4)) (6) Mặc dù ta phỏng vấn n người nhưng thực tế trung bình ta chỉ thuê xấp xỉ ln n lần. Ta tóm tắt kết quả này trong bổ đề sau: Bổ đề 2 Giả sử rằng các ứng cử viên đến theo thứ tự ngẫu nhiên, thì thuật toán HIRE – ASSISTANT có độ phức tạp là O(c h ln n). Chứng minh: Hiển nhiên, ta có được từ định nghĩa về chi phí thuê công thức (6). Kỳ vọng của chi phí thuê là sự cải tiến dựa trên trường hợp xấu nhất có độ phức tạp O(nc h ). 3. PHƯƠNG PHÁP SỬ DỤNG THUẬT TOÁN NGẪU NHIÊN 6 Tiểu luận môn học: Mô phỏng ngẫu nhiên 3.1 Khái niệm thuật toán ngẫu nhiên Để sử dụng phân tích xác suất, ta cần biết một vài điều về sự phân phối bộ dữ liệu vào. Trong nhiều trường hợp, ta biết rất ít về sự phân phối dữ liệu vào. Thậm chí nếu ta về sự phân phối này thì ta cũng không thể mô hình được điều mà ta biết. Trong Bài toán thuê nhân viên, các ứng cử viên được đưa đến theo thứ tự ngẫu nhiên nhưng ta không có cách nào để biết được điều đó. Vì vậy, để phát triển thuật toán ngẫu nhiên đối với Bài toán thuê nhân viên này, ta điều khiển thứ tự các ứng cử viên khi vào phỏng vấn bằng cách chọn ngẫu nhiên các ứng cử viên để phỏng vấn. Mặc dù ta không biết gì về các ứng cử viên (ngoài tên của họ) nhưng ta đã tạo ra một sự thay đổi có ý nghĩa. Thay vì tin vào một phỏng đoán là các ứng cử viên đến theo thứ tự ngẫu nhiên thì ta đã điều khiển được tiến trình buộc nó phải theo một thứ tự ngẫu nhiên. Nói chung, ta gọi thuật toán ngẫu nhiên nếu hành vi của nó được xác định không chỉ bởi dữ liệu vào mà còn bằng các giá trị được tạo ra bởi bộ tạo số ngẫu nhiên (random-number generator). Giả sử ta có sẵn hàm sinh số ngẫu nhiên RANDOM. Một lời gọi RANDOM(a,b) trả về 1 số nguyên giữa a b, với mỗi giá trị trả về như vậy có xác suất bằng nhau. Ví dụ, RANDOM(0,1) cho kết quả 0 với xác suất là ½ cho kết quả 1 với xác suất ½. Một lời gọi RANDOM(3,7) trả về kết quả là 3, 4, 5, 6 hoặc 7 với xác suất là 1/5. Mỗi số nguyên được trả về bởi hàm RANDOM không phụ thuộc vào các số nguyên trả về ở các lời gọi trước đó. Thông thường, hầu hết các môi trường lập trình đều đề cập đến pseudo-random number generator - bộ tạo số giả ngẫu nhiên. 3.2 Ứng dụng thuật toán ngẫu nhiên trong phân tích bài toán Trong phần trước, ta đã chỉ ra cách để phân phối dữ liệu vào để phân tích trường hợp trung bình của thuật toán. Nhiều khi, ta không hoặc không thể phân tích trường hợp trung bình của thuật toán. Như đã đề cập trong phần 1, ta có thể sử dụng thuật toán ngẫu nhiên. Thuật toán ngẫu nhiênphương pháp đơn giản hiệu quả nhất để giải quyết các bài toán. Chẳng hạn như Bài toán thuê nhân viên ở trên, giả định rằng tất cả các hoán vị của dữ liệu vào đều như nhau thì việc phân tích xác suất sẽ hướng cho ta phát triển thành thuật toán ngẫu nhiên. Thay vì cho một bộ dữ liệu vào, ta tráo đổi bộ dữ liệu đó. Cụ thể là trước khi thực hiện thuật toán, ta hoán đổi các ứng cử viên một cách ngẫu nhiên để chứng tỏ rằng các hoán vị đều như nhau. Điều này không làm thay đổi kỳ vọng của chi phí thời gian để thuê một nhân viên mới (có giá trị xấp xỉ ln n). Khi sử dụng phương pháp thuật toán ngẫu nhiên, đầu tiên chúng ta hoán đổi ngẫu nhiên danh sách các ứng cử viên, sau đó tiến hành phỏng vấn để ghi nhận ứng cử viên tốt nhất. Trong trường hợp này, sự ngẫu nhiên nằm ở trong thuật toán chứ không ở trong việc phân phối dữ liệu vào. Cho 1 7 Tiểu luận môn học: Mô phỏng ngẫu nhiên dữ liệu vào cụ thể, ví dụ như A 3 ở trên, ta không biết được số lần tối đa phép toán được thực hiện là bao nhiêu bởi vì con số này thay đổi với mỗi lần thực hiện thuật toán. Lần đầu tiên, ta thực thi thuật toán trên A 3 , nó tạo ra 1 hoán vị A 1 thực hiện 10 lần cập nhật, trong khi thuật toán thực thi lần thứ 2, nó sẽ tạo ra 1 hoán vị A 2 thực hiện 1 lần cập nhật. Lần thực hiện thuật toán thứ 3, nó sẽ tạo ra 1 hoán vị ngẫu nhiên khác sẽ thực hiện một số lần cập nhật nào đó. Cứ mỗi lần thực thi thuật toán, việc thực thi thuật toán tùy thuộc vào sự lựa chọn ngẫu nhiên được tạo ra ban đầu lúc nào cũng khác với các lần thực thi ở trước. Đối với thuật toán này nhiều thuật toán ngẫu nhiên khác, không có trường hợp dữ liệu vào cho ra trường hợp xấu nhất. Thuật toán ngẫu nhiên thực hiện chỉ xấu khi hàm sinh số ngẫu nhiên tạo ra một hoán vị không may mắn. Nên đối với Bài toán thuê nhân viên, chỉ có một thay đổi là thêm vào phép hoán vị ngẫu nhiên dãy dữ liệu vào ở đầu thuật toán. * Thủ tục RANDOMIZED-HIRE-ASSITANT 1. Thực hiện hoán đổi ngẫu nhiên danh sách các ứng cử viên 2. BEST:=0 {ứng cử viên bù nhìn thứ 0 có chất lượng tệ nhất} 3. For i:=1 to n do 4. <phỏng vấn ứng cử viên thứ i> 5. if <ứng cử viên i tốt hơn ứng cử viên BEST> then 6. BEST: = i 7. <thuê ứng cử viên i> Bổ đề 3 Kỳ vọng của độ phức tạp đối với thuật toán RANDOMIZED-HIRE- ASSITANT là O(c h ln n) So sánh Bổ đề 2 Bổ đề 3 ta thấy rõ sự khác biệt giữa phân tích xác suất thuật toán ngẫu nhiên. Ở Bổ đề 2, ta gán một bộ dữ liệu vào, còn ở Bổ đề 3, ta không làm như vậy, mặc dù ta mất một lượng thời gian để hoán đổi ngẫu nhiên dữ liệu vào. Dưới đây ta sẽ thảo luận một vài vấn đề liên quan đến việc hoán đổi ngẫu nhiên dữ liệu vào. 8 [...]... Mô phỏng ngẫu nhiên 3.3 Các thuật toán hoán đổi ngẫu nhiên dữ liệu vào Có nhiều thuật toán hoán đổi ngẫu nhiên dữ liệu vào (có nhiều cách hoán đổi) Ở đây ta sẽ thảo luận hai phương pháp Giả sử rằng A là một dãy gồm các phần tử từ 1 đến n, mục đích của ta là tạo ra một hoán đổi ngẫu nhiên của dãy này Cả hai phương pháp dưới đây đều sử dụng hàm Random(a, b) dùng để sinh ra một số ngẫu nhiên nằm trong khoảng... nằm trong khoảng giữa a b Khi đưa các thuật toán này vào phần mềm R, trong R có rất nhiều hàm sinh số ngẫu nhiên theo các luật phân phối khác nhau Ở đây ta chỉ cần sử dụng hàm runif(n, min=a, max=b) để tạo ra một dãy gồm n số ngẫu nhiên nằm trong khoảng min max (ở đây tương ứng là min=a max=b), dãy này tuân theo luật phân phối đều a Thủ tục PERMUTE-BY-SORTING Phương pháp thứ nhất là gán mỗi... sinh hoán vị ngẫu nhiên đều 3.4 Mở rộng bài toán Tiếp theo, ta sẽ xét Bài toán thuê nhân viên theo cách khác Giả sử rằng ta không muốn phỏng vấn hết tất cả các ứng cử viên để tìm ra ứng cử viên tốt nhất Ta cũng không muốn cứ sa thải thuê mới khi thấy các ứng cử viên đến mỗi lúc càng tốt hơn Thay vào đó, ta sẵn sàng chấp nhận ứng cử viên gần tốt nhất để chỉ cần sa thải thuê chính xác một lần Ta... giống chứng minh trên Vì vậy, nếu ta tính xác suất của một hoán vị bất kỳ nào đó thì thu được kết quả giống như trên Như vậy xác suất của sự hoán vị này luôn luôn là 1/n! 10 Tiểu luận môn học: Mô phỏng ngẫu nhiên Có thể nói rằng để chứng minh một hoán vị là hoán vị ngẫu nhiên đều thì đủ để chứng tỏ rằng với mỗi phần tử A[i] xác suất mà A[i] nằm ở vị trí j là 1/n b Thủ tục RANDOM-IN-PLACE Một phương pháp. .. n, xác suất bộ hoán vị-n trong dãy A[1 n] là (n – n)!/n! = 1/n! Như vậy, thuật toán RANDOM-IN-PLACE tạo ra một hoán vị ngẫu nhiên đều Bây giờ giả sử rằng thay vì hoán đổi phần tử A[i] với phần tử ngẫu nhiên trong dãy A[i n], ta hoán đổi A[i] với phần tử ngẫu nhiên bất kỳ trong toàn bộ dãy A[1 n]: RANDOM-WITH-ALL (A) 1 n:= length(A); 2 For i:= 1 to n do 3 Ta chứng... bất biến của vòng lặp để chứng tỏ rằng thuật toán RANDOM-IN-PLACE sinh ra một hoán vị ngẫu nhiên đều Cho tập hợp gồm n phần tử, một bộ hoán vị-k là dãy chứa k phần tử trong n phần tử Ta có n!/(n-k)! hoán vị như thế Bổ đề 5 Thuật toán RANDOM-IN-PLACE sinh ra một hoán vị ngẫu nhiên đều Chứng minh: Ta sử dụng sự bất biến của vòng lặp sau đây: Chỉ lần lặp thứ i trở về trước trong vòng For ở dòng 2 – 3,... rỗng bộ hoán vị-0 không có phần tử Như vậy, dãy A[1 0] chứa bộ hoán vị-0 với xác suất là 1 vòng lặp bất biến đúng cho đến lần lặp đầu tiên 11 Tiểu luận môn học: Mô phỏng ngẫu nhiên - Ở các lần lặp tiếp theo: Ta giả sử rằng trước lần lặp thứ i, xác suất mà mỗi bộ hoán vị-(i – 1) xuất hiện trong dãy A[1 i-1] là (n – i +1)!/n! ta sẽ chứng tỏ rằng sau lần lặp thứ i, mỗi bộ hoán vị-i xuất hiện trong. .. i, đặt xi ở vị trí A[i] Bộ hoán vị-i (x1, x2, ,xi) được tạo thành trong dãy A[1 i] khi cả hai sự kiện E1 E2 cùng xuất hiện, ta sẽ tính được Pr{E2∩E1} Theo công thức xác suất có điều kiện, ta có: Pr{E2∩E1} = Pr{E2 |E1} Pr{E1} Xác suất Pr{E2 |E1} = 1/(n – i +1) vì ở dòng 3 trong thuật toán chọn xi ngẫu nhiên từ n – i +1 giá trị trong các vị trí của A[i n] Như vậy, ta có: Pr{E2∩E1} = = P{E2 |E1} Pr{E1}... vị Chứng tỏ rằng thuật toán tạo ra một hoán vị ngẫu nhiên đều tức là mỗi hoán vị từ 1 đến n đều có khả năng như nhau Bổ đề 4 Giả sử tất cả các thứ tự ưu tiên đều khác nhau, thì thủ tục PERMUTEBY-SORTING tạo ra một hoán vị ngẫu nhiên đều Chứng minh: Ta xét một hoán vị cụ thể mà ở đó mỗi phần tử A[i] nhận i là thứ tự ưu tiên nhỏ nhất Ta cần chứng minh rằng hoán vị này xuất hiện với xác suất chính xác. .. học: Mô phỏng ngẫu nhiên 1 kết quả thì dãy A vẫn được sắp xếp theo P, lúc này các phần tử có thứ tự ưu tiên bằng nhau ứng liên tiếp nhau Vì dãy có n phần tử, nên ta luôn có n! hoán vị, xác suất của mỗi hoán vị là 1/n! cho dù có hai hay nhiều thứ tự ưu tiên P[i] bằng nhau đi chăng nữa.) Trong thuật toán này, bước đòi hỏi mất nhiều thời gian nhất là ở dòng 4 Ta biết rằng nếu sử dụng thuật toán sắp xếp

Ngày đăng: 26/04/2013, 10:40

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan