1. Trang chủ
  2. » Luận Văn - Báo Cáo

Ứ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 6
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiê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
Tác giả Nguyễn Lý Hữu Huấn
Người hướng dẫn PGS.TS. Trần Lộc Hùng
Trường học Đại Học Huế
Chuyên ngành Khoa học máy tính
Thể loại Tiểu luận
Năm xuất bản 2009
Thành phố Huế
Định dạng
Số trang 18
Dung lượng 160 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ứ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

Trang 1

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

Trang 2

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 7

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

Trang 3

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

Trang 4

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

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à ci, nhưng ngược lại thuê thì tốn chi phí rất đắt – gọi là ch Gọi m là số người được thuê, thì tổng chi phí của thuật toán này là O(nci + mch) 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 nci cho việc phỏng vấn Vì thế,

ta chỉ tập trung vào phân tích chi phí thuê mch, 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(ch)

Trang 5

- 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(nch)

Đ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 A1 = (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 A2 = (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 A3 = (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à A1, tốt nhất là A2 và trường hợp trung bình là A3

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

Trang 6

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ện0 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 XH 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)

Trang 7

Ta viết:

XH=I{H}= 1 nếu H xuất hiện0 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ị XH

E[XH] = 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

x X x X

E

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

Trang 8

mỗi ứng cử viên được thuê hoặc không được thuê Cụ thể, ta gọi Xi 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:

Xi=I{i được thuê}= 1 nếu i được thuê 0 nếu i không được thuê (2)

Theo Bổ đề 1 ta có

E[Xi] = 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, và như vậy 1/i là xác suất được thuê Theo Bổ đề 1 ta có

được:

Suy ra:

) 1 ( ln

/

1

]

[

1

1

1

O n

i

X E

X E X

E

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(ch ln n).

Chứng minh: Hiển nhiên, ta có được từ định nghĩa về chi phí thuê và

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(nch)

Trang 9

3 PHƯƠNG PHÁP SỬ DỤNG THUẬT TOÁN 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 và 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 và 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à ½ và 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ên là phương pháp đơn giản và 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, và 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

Trang 10

nằm ở trong thuật toán chứ không ở trong việc phân phối dữ liệu vào Cho 1

dữ liệu vào cụ thể, ví dụ như A3 ở 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 A3, nó tạo ra 1 hoán vị

A1 và 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ị A2 và 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 và 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 và 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 và 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

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(ch ln n)

So sánh Bổ đề 2 và Bổ đề 3 ta thấy rõ sự khác biệt giữa phân tích xác suất và 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

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

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w