Lựa chọn ngẫu nhiên


14

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 ]Ank[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)kAkA

Phương pháp:

  • Nếu có một phần tử trong , trả lại nóA
  • Chọn một phần tử ("trục") một cách ngẫu nhiênp
  • Tính các tập hợp R = { a A : a > p }L={aA:a<p}R={aA:a>p}
  • Nếu , trở về cấp bậc k yếu tố của L .|L|kkL
  • Nếu không, trả về thứ hạng phần tử của Rk|L|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?k=n/2α(1/2,1)αn

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"2α11αα

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.α(0.5,1)

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ỉ 12đượ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?


Chúng tôi không ngồi trong bài giảng của bạn, vì vậy hãy giải thích phương pháp.
Raphael

Không biết bạn đang nói về thuật toán nào, câu hỏi của bạn không thể đọc được. Bạn dường như sử dụng trong nhiều khả năng; Tôi đã cố gắng chỉnh sửa nhưng tôi không chắc là tôi đã hiểu được ý nghĩa. Vui lòng xem lại để câu hỏi được rõ ràng. Bỏ phiếu để đóng cho đến khi đó. .5
Raphael

Đó là thuật toán lựa chọn sử dụng phương pháp ngẫu nhiên, trái ngược với phương pháp xác định.
Amumu

Có nhiều cách để chọn một yếu tố ngẫu nhiên.
Raphael

2
@Amumu: Tôi đã chỉnh sửa nó để mô tả thuật toán. Trong một diễn đàn như thế này, không phải ai cũng sẽ biết bạn đang nói về điều gì, và có một cách tiếp cận ngẫu nhiên rất khác nhau để lựa chọn dễ phân tích hơn.
Louis

Câu trả lời:


12

Giả sử mảng của bạn có phần tử. Như bạn đã lưu ý, trung vị luôn ở phần lớn hơn sau phân vùng đầu tiên. Phần lớn hơn có kích thước tối đa là α n nếu phần nhỏ hơn có kích thước ít nhất ( 1 - α ) n . Điều này xảy ra khi bạn chọn một trục không phải là một trong những trục nhỏ nhất hoặc lớn nhất ( 1 - α ) nnαn(1α)n(1α)n . Vì , bạn biết đây là các tập hợp không giao nhau, vì vậy khả năng đánh một trong những trụ xấu chỉ là 2 - 2 α , và 1 -α>1/222α .12+2α=2α1


Cảm ơn câu trả lời. Tôi vẫn còn một vài điều chưa rõ ràng. Vậy, α> 1/2 có liên quan gì đến các tập hợp rời rạc? Tôi nghĩ rằng khi chúng ta luôn có các tập hợp rời rạc với phương thức này bất kể kích thước subarray.
Amumu

Bởi vì nó làm cho , do đó ( 1 - α ) n < n - ( 1 - α ) n . 1α<1/2(1α)n<n(1α)n
Louis

Chỉ một điều cuối cùng: Trục xấu / tốt phải làm gì với điều này? Theo như tôi biết, trục tốt thường nằm trong phạm vi 25-75 (phân chia các mảng ban đầu từ 25% -75%), và trục xấu nằm ngoài phạm vi đó, và tồi tệ hơn thường là ở đầu hoặc cuối của bản gốc mảng. Nhưng điều này?
Amumu

2
Ở đây, tôi đang nói rằng một trục là "xấu" nếu nó làm cho phần lớn hơn lớn hơn bạn muốn, đó là kích thước . Những gì bạn gọi tương ứng xấu tới α = 3 / 4 . Tôi nghi ngờ quan điểm của câu hỏi là giảng viên của bạn muốn bạn để thấy rằng O ( ) theo thứ tự thời gian chạy dự kiến không thay đổi bằng cách thay đổiαnα=3/4O()α
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.