Thuật toán lựa chọn ngẫu nhiên là như sau:
Dữ liệu vào: Một mảng gồm n số (riêng biệt, đơn giản) và một số k ∈ [ n ]
Đầu ra: " Phần tử xếp hạng " của A (nghĩa là phần tử ở vị trí k nếu A được sắp xếp)
Phương pháp:
- Nếu có một phần tử trong , trả lại nó
- Chọn một phần tử ("trục") một cách ngẫu nhiên
- Tính các tập hợp và R = { a ∈ A : a > p }
- Nếu , trở về cấp bậc k yếu tố của L .
- Nếu không, trả về thứ hạng phần tử của R
Tôi đã được hỏi câu hỏi sau đây:
Giả sử rằng , vì vậy bạn đang tìm kiếm trung bình, và để cho alpha ∈ ( 1 / 2 , 1 ) là một hằng số. Xác suất mà trong lần gọi đệ quy đầu tiên, tập hợp chứa trung vị có kích thước tối đa là α n là bao nhiêu?
Tôi được cho biết rằng câu trả lời là , với lời biện minh "Trục được chọn phải nằm trong khoảng từ 1 - α đến α lần so với mảng ban đầu"
Tại sao? Như , bất kể yếu tố được chọn là trục hoặc là lớn hơn hoặc nhỏ hơn so với hơn một nửa các yếu tố gốc. Trung vị luôn nằm trong phân đoạn lớn hơn, bởi vì các phần tử trong phân đoạn phụ được phân vùng luôn nhỏ hơn trục.
Nếu trục nằm ở nửa đầu của mảng ban đầu (ít hơn một nửa trong số chúng), thì trung vị chắc chắn sẽ ở nửa lớn thứ hai, bởi vì một khi trung vị được tìm thấy, nó phải ở vị trí chính giữa của mảng và tất cả mọi thứ trước khi trục nhỏ hơn như đã nêu ở trên.
Nếu trục nằm ở nửa sau của mảng ban đầu (hơn một nửa các phần tử), thì trung vị chắc chắn sẽ lớn hơn một nửa, vì lý do tương tự, mọi thứ trước khi trục được coi là nhỏ hơn.
Thí dụ:
3 4 5 8 7 9 2 1 6 10
Trung vị là 5.
Giả sử trục được chọn là 2. Vì vậy, sau lần lặp đầu tiên, nó trở thành:
1 2 .... phần lớn hơn ....
Chỉ 1
và 2
được hoán đổi sau lần lặp đầu tiên. Số 5 (trung vị) vẫn ở nửa đầu tiên lớn hơn (đi vào trục 2). Vấn đề là, trung vị luôn nằm trên một nửa lớn hơn, làm thế nào nó có thể có cơ hội ở trong một phân khúc nhỏ hơn?