Số lượng so sánh ít nhất cần thiết để sắp xếp (thứ tự) 5 yếu tố


22

Tìm số lượng so sánh ít nhất cần thiết để sắp xếp (thứ tự) năm yếu tố và đưa ra thuật toán sắp xếp các yếu tố này bằng cách sử dụng số lượng so sánh này.

Giải pháp : Có 5! = 120 kết quả có thể xảy ra. Do đó, một cây nhị phân cho thủ tục sắp xếp sẽ có ít nhất 7 cấp độ. Thật vậy, ≥ 120 ngụ ý≥ 7. Nhưng 7 so sánh là không đủ. Số lượng so sánh ít nhất cần thiết để sắp xếp (thứ tự) năm yếu tố là 8.2hh

Đây là câu hỏi thực tế của tôi: Tôi đã tìm thấy một thuật toán thực hiện nó trong 8 so sánh nhưng làm thế nào tôi có thể chứng minh rằng nó không thể được thực hiện trong 7 so sánh?


Câu trả lời:


27

Giải pháp là sai. Demuth [1; qua 2, giây. 5.3.1] cho thấy năm giá trị có thể được sắp xếp chỉ bằng bảy so sánh, nghĩa là giới hạn dưới "lý thuyết thông tin" bị ràng buộc chặt chẽ trong trường hợp này.

Câu trả lời là một phương thức phù hợp với , không phải là thuật toán chung. Nó cũng không đẹp lắm. Đây là phác thảo:n=5

  1. Sắp xếp hai cặp đầu tiên.

  2. Đặt hàng các cặp wrt phần tử lớn hơn tương ứng của họ.

    Gọi kết quả ; chúng ta biết và .[a,b,c,d,e]a<b<dc<d

  3. Chèn vào .e[a,b,d]

  4. Chèn vào kết quả của bước 3.c

Bước đầu tiên rõ ràng có hai so sánh, thứ hai chỉ có một. Hai bước cuối cùng có hai so sánh mỗi; chúng tôi chèn vào danh sách ba phần tử trong cả hai trường hợp (đối với bước 4., lưu ý rằng chúng tôi biết từ rằng nhỏ hơn phần tử cuối cùng của danh sách) và so sánh với phần tử ở giữa trước. Điều đó làm cho tổng cộng bảy so sánh.c<dc

Vì tôi không thấy cách viết mã giả "đẹp" này, hãy xem ở đây để biết cách triển khai thử nghiệm (và hy vọng có thể đọc được).


  1. Bằng tiến sĩ. luận án (Đại học Stanford) của HB Demuth (1956)

    Xem thêm Sắp xếp dữ liệu điện tử theo HB Demuth (1985)

  2. Sắp xếp và tìm kiếm bởi Donald E. Knuth; Nghệ thuật lập trình máy tính Vol. 3 (tái bản lần 2, 1998)

5
Bài kiểm tra cho năm điểm cho thấy nó là không thể. Tự hỏi bạn sẽ nhận được bao nhiêu điểm cho câu trả lời của mình :-) (Có lẽ là 0 vì bài kiểm tra không thể sai).
gnasher729

0

Lý thuyết thấp hơn ràng buộc về sắp xếp dựa trên so sánh là log(n!) . Điều đó có nghĩa là để sắp xếp n mục chỉ sử dụng < hoặc > so sánh thì phải mất ít nhất logarit cơ sở 2 của n!, do đó log(5!)6.91 hoạt động.

Kể từ 5!=12027=128 , sử dụng cây quyết định nhị phân, bạn có thể sắp xếp 5 mục trong 7 so sánh. Cây chỉ ra chính xác trong số 120 hoán vị bạn có, sau đó thực hiện các giao dịch hoán đổi cần thiết để sắp xếp nó.

Đó không phải là mã đẹp hay ngắn và có lẽ bạn nên sử dụng các phương thức tạo mã để tạo cây quyết định và hoán đổi thay vì mã hóa bằng tay, nhưng nó hoạt động; và có thể hoạt động cho bất kỳ hoán vị có thể có của 5 mục, do đó chứng minh bạn có thể sắp xếp 5 mục trong không quá 7 so sánh.


Theo như tôi có thể nhớ, các lý thuyết thấp hơn giới hạn cho một tiệm cận giới hạn thấp hơn (ví dụ, ). Bạn có chắc chắn hệ số không đổi là 1? Ω(nlogn)
dkaeae

Lý thuyết giới hạn dưới cho trường hợp xấu nhất là ceil (log2 (n!)), Bởi vì có chính xác n! hoán vị, và nếu có k so sánh bạn cần 2 ^ k ≥ n!. Nó không chỉ là yếu tố bất biến 1, nó chính xác.
gnasher729

-1

tôi đã suy nghĩ quicksort. bạn chọn làm trục chính cho phần tử chỉ là phần tử ở giữa. so sánh trục với 4 mục còn lại dẫn đến hai cọc được sắp xếp. mỗi cọc có thể được sắp xếp trong 1 so sánh. trừ khi tôi đã phạm một sai lầm khủng khiếp, 5 mục đã được sắp xếp đầy đủ chỉ trong 6 so sánh và tôi nghĩ đó là số lượng so sánh tuyệt đối ít nhất cần thiết để thực hiện công việc. câu hỏi ban đầu là tìm ra số lượng so sánh ít nhất để sắp xếp 5 yếu tố.


1
Làm thế nào một đống 3 yếu tố có thể được sắp xếp trong 1 so sánh?
xskxzr

bạn đang nói về cái gì? những gì tôi mô tả ở trên tạo ra 2 đống 2 phần tử sau lần vượt qua đầu tiên.
scottyc

Tôi nghĩ rằng bạn sử dụng một yếu tố ngẫu nhiên như trục. Làm thế nào bạn có thể chọn phần tử ở giữa làm trục trong 4 so sánh?
xskxzr

đó không phải là điều tôi đang nói từ phía trên "Kể từ 5! = 120 .... bằng cách sử dụng cây quyết định nhị phân, bạn có thể sắp xếp 5 mục trong 7 so sánh." số lượng hoán vị của các phần tử là 120 nhưng phải có một nhánh chỉ có 6 so sánh vì một mẫu ngẫu nhiên chạy quicksort chỉ mất 6 để thực hiện công việc. một trong 120 hoán vị dành cho danh sách được sắp xếp. nhánh đó có thể chứa ít nhất 4 so sánh.
scottyc

-2

Nếu bạn có thể kiểm tra thuật toán, hãy kiểm tra nó trên tất cả các tổ hợp số. Nếu bạn có nhiều số, hãy kiểm tra nhiều kết hợp ngẫu nhiên. Không chính xác, nhưng nhanh hơn tất cả các kết hợp.

Tối thiểu
a <b <c = 2
a <b <c <d = 3
a <b <c <d <e = 4

Tối đa
3 ^ 3
4 ^ 4
5 ^ 5

Chèn vào giữa sử dụng 3-6 cho 4 số.
Sáp nhập sử dụng 4-5 cho 4 số.
So sánh tối thiểu bởi wiki là 5 cho 4 số :) Với 5 là 7. Bạn sử dụng 8, vẫn còn rất nhiều.
https://en.wikipedia.org/wiki/Comparison_sort#Number_of_comparisons_Vquired_to_sort_a_list
Nếu bạn biết tất cả trước khi so sánh, bạn có thể đi xuống so sánh. Trung bình của tôi cho 4 số là 3,96 / 1024 tất cả các kết hợp.


2
Điều này không trả lời câu hỏi. Câu hỏi hỏi làm thế nào để chứng minh rằng không có cách nào để sắp xếp chỉ sử dụng 7 so sánh. Để sử dụng phương pháp của bạn, chúng tôi phải liệt kê tất cả các thuật toán sử dụng tối đa 7 so sánh. Tôi nghĩ rằng có quá nhiều thuật toán như vậy để liệt kê trong một khoảng thời gian hợp lý. Trong mọi trường hợp, tôi không thấy những gì điều này thêm vào câu trả lời hiện có, mà đã đưa ra một câu trả lời hoàn chỉnh cho câu hỏi. Chúng tôi muốn bạn tập trung trả lời các câu hỏi mà bạn có thể thêm một cái gì đó mới.
DW

Thêm là đồ họa và mẹo cho alg. để dự đoán giá trị cmp từ trước cmp. Và min của anh ấy là 7, các nguồn khác 8, min thật. là 4 !!! 4 chỉ hoạt động cho đơn hàng asc / desc. Ex1: 00000 01234 43210 10000 ... Ex2: Chèn vào giữa: 43210, bắt đầu 4, nhận 3, cp 4> 3, nhận 2, cp 4> 2, cp 3> 3, nhận 1, cp (giữa) 3> 1, cp 2> 1, nhận 0, cp (giữa) 3> 0, cp 2> 0, cp 1> 0 ... 8 cmp. 7 có thể có thể cho thứ tự liên kết hoặc alg. Bạn có thể xem trên trang của tôi 4 số mlich.zam.slu.cz/js-sort/x-sort-x2.htm , Trung bình 3,96. tối thiểu 3-6. Có thể thay đổi trong 5 và kiểm tra alg của mình.
Peter Mlich
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.