Tải bản đầy đủ (.doc) (18 trang)

Ứ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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (177.59 KB, 18 trang )

ĐẠ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
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
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 và các thuật toán ngẫu nhiên trong quá trình phân tích và ướ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 và đá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 và 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 và chỉ bảo cho tôi những kiến thức bổ ích về môn học. Do khả
năng và thời gian có hạn nên tiểu luận không tránh khỏi những thiếu sót và
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 và 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 và 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 và 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 và 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, và 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 và 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 và 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 và 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
và 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ả và 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 và 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 và 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 và kỳ vọng. Giả sử rằng ta có một
không gian mẫu S và 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) và mặt sấp (T) của đồng xu với xác suất xuất hiện mặt
ngửa và 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 và 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 và 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) và
đị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

×