Cố gắng để hiểu 2N lnN so sánh cho quicksort


13

Tôi đã trải qua quá trình phân tích quicksort trong cuốn sách Thuật toán của Sedgewick. Anh ta tạo ra mối quan hệ lặp lại sau đây cho số lượng so sánh trong quicksort trong khi sắp xếp một mảng gồm N mục riêng biệt.

nhập mô tả hình ảnh ở đây

Tôi đang gặp khó khăn trong việc hiểu điều này ... Tôi biết rằng cần có xác suất 1 / N để bất kỳ phần tử nào trở thành trục và nếu k trở thành trục, thì mảng con bên trái sẽ có các phần tử k-1 và phụ con phải mảng sẽ có các phần tử Nk.

1.Làm thế nào để phân vùng trở thành N + 1? Có phải so sánh N + 1 để thực hiện phân vùng không?

2.Sedgewick nói, với mỗi giá trị của k, nếu bạn thêm chúng, xác suất phần tử phân vùng là k + chi phí cho hai mảng con bạn có được phương trình trên.

  • Ai đó có thể giải thích điều này để những người có ít kiến ​​thức toán học (tôi) có thể hiểu?
  • Cụ thể làm thế nào để bạn có được thuật ngữ thứ hai trong phương trình?
  • Chính xác thì thuật ngữ đó là gì?

1
Một phần của câu trả lời, được sao chép từ en.wikipedia.org/wiki/Quicksort "Vì vậy, tính trung bình trên tất cả các phân tách có thể có và lưu ý rằng số lượng so sánh cho phân vùng là n - 1, số lượng so sánh trung bình trên tất cả các hoán vị của đầu vào trình tự có thể được ước tính chính xác bằng cách giải quyết mối quan hệ lặp lại: "Vì một số lý do, chúng tôi tắt 2 ở đây - n-1 so với n + 1.
Công việc

Câu trả lời:


7

Hàm chi phí Ccho quicksort bao gồm hai phần. Phần đầu tiên là chi phí phân vùng mảng thành hai "nửa" (các nửa không phải có kích thước bằng nhau, do đó là dấu ngoặc kép). Phần thứ hai là chi phí sắp xếp hai nửa đó.

  1. Các (N + 1)thuật ngữ thực sự là một thuật ngữ đặc, và xuất phát từ các điều khoản

    (N - 1) + 2
    

    Đây là chi phí của phân vùng trong quicksort: N-1so sánh với giá trị trục và 2 so sánh bổ sung do một số điều kiện biên trong phân vùng.

  2. Phần thứ hai của phương trình bao gồm các chi phí để sắp xếp hai "nửa" ở hai bên của giá trị trục k.

    Sau khi chọn giá trị trục, bạn còn lại hai "nửa" chưa được sắp xếp. Chi phí sắp xếp các "nửa" này phụ thuộc vào kích thước của chúng và được mô tả dễ dàng nhất là một ứng dụng đệ quy của hàm chi phí C. Nếu trục là Ngiá trị nhỏ nhất trong các giá trị, thì chi phí để sắp xếp từng "nửa" tương ứng C(0)C(N-1)(chi phí để sắp xếp một mảng có 0 phần tử và chi phí để sắp xếp một N-1phần tử với các phần tử). Nếu trục là nhỏ nhất thứ năm, thì chi phí để sắp xếp từng "hai nửa" tương ứng C(5)C(N-6)(chi phí để sắp xếp một mảng có 5 phần tử và chi phí để sắp xếp một N-6phần tử với các phần tử). Và tương tự cho tất cả các giá trị trục khác.

    Nhưng chi phí để sắp xếp hai 'nửa' đó là bao nhiêu nếu bạn không biết giá trị trục? Điều này được thực hiện bằng cách lấy chi phí cho từng giá trị có thể của trục và nhân số đó với cơ hội giá trị cụ thể đó tăng lên.

    Vì mỗi giá trị trục đều có khả năng như nhau, cơ hội để chọn một giá trị trục cụ thể là 1/Nnếu bạn có Ncác yếu tố. Để hiểu điều này, hãy nghĩ về việc gieo xúc xắc. Với một con xúc xắc thích hợp, cơ hội cho mỗi bên kết thúc đối mặt là bằng nhau, vì vậy cơ hội để cán 1 là 1/6.

    Kết hợp lại, điều này đưa ra thuật ngữ tổng hợp trong đó, với mỗi giá trị k có thể có của trục, chi phí ( C(k-1) + C(N-k)) được nhân với cơ hội ( 1/N)

  3. Việc lấy thêm biểu mẫu tổng hợp trong câu hỏi cho 2N lnNtiêu đề cần quá nhiều toán học để giải thích chi tiết ở đây, nhưng nó dựa trên sự hiểu rằng chi phí cho việc sắp xếp một mảng các Nphần tử ( C(N)) có thể được biểu thị theo cách sắp xếp một mảng các N-1phần tử ( C(N-1)) và một yếu tố tỷ lệ thuận với N.


2
  1. Có vẻ như N + 1 là số lượng so sánh cho bước phân vùng là một lỗi trong cuốn sách. Bạn cần tìm hiểu từng yếu tố không phải là trục của Níp 1 cho dù nó nhỏ hơn hoặc lớn hơn trục, trong đó có một so sánh; do đó, tổng cộng so sánh N N 1, không phải N + 1. (Xem xét trường hợp đơn giản nhất, N = 2, tức là một trục và một yếu tố khác: Hoàn toàn không có chỗ để thực hiện ba so sánh giữa hai yếu tố.)

  2. Hãy xem xét trường hợp trục được chọn xảy ra là phần tử nhỏ nhất (k = 1). Điều này có nghĩa là mảng được chia thành một phần trống ở bên trái (không có phần tử nào nhỏ hơn trục) và một phần bên phải chứa tất cả các phần tử ngoại trừ trục (tất cả các phần tử khác đều lớn hơn trục ). Điều này có nghĩa là các vấn đề phụ mà bạn muốn giải quyết đệ quy có kích thước lần lượt là 0 và NÊ 1 (kiêu 1 và Níp k) và yêu cầu so sánh C (0) và C (Nỉ 1); do đó, tổng cộng C (0) + C (NITH 1).

    Nếu trục xảy ra là phần tử nhỏ thứ hai (k = 2), kích thước của bài toán con là 1 và Niêu 2 (kiêu 1 và Niêu k; một phần tử ở bên trái, vì nó là phần tử nhỏ nhất trục). Do đó, việc giải quyết đệ quy các vấn đề phụ này đòi hỏi phải so sánh C (1) + C (Nẩu 2). Và như vậy nếu trục là phần tử nhỏ thứ ba, thứ tư, v.v ... Đây là các biểu thức trong tử số.

    Bởi vì trục được chọn ngẫu nhiên trong số các yếu tố N, mỗi trường hợp (trục là nhỏ nhất, trục là nhỏ thứ hai, v.v.) xảy ra với xác suất 1 / N bằng nhau. Đó là nơi mà N trong mẫu số xuất phát.

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.