Thuật toán sắp xếp, sao cho mỗi phần tử được so sánh


39

Có bất kỳ thuật toán sắp xếp so sánh đã biết nào không giảm xuống để sắp xếp các mạng, sao cho mỗi phần tử được so sánh lần?O(logn)

Theo tôi biết, cách duy nhất để sắp xếp với so sánh trên mỗi phần tử là xây dựng mạng sắp xếp AKS cho đầu vào và chạy đầu vào trên mạng sắp xếp.nO(logn)n

AKS không dễ thực hiện và có yếu tố không đổi không thực tế, vì vậy có những động lực để tìm kiếm các thuật toán khác.

Một thuật toán với các so sánh cho mỗi mục dường như không ngụ ý một mạng sắp xếp được trình bày ở đây . (iirc, đây là lần đầu tiên được trình bày bởi Rob Johnson tại hội thảo thuật toán của Stony Brook).O(log2n)


2
Tôi không hiểu câu hỏi: nhiều thuật toán tuần tự dường như tương ứng với yêu cầu của bạn. ví dụ: Sắp xếp hợp nhất là một thuật toán sắp xếp cổ điển và không tạo ra nhiều hơn so với so với mỗi phần tử. Có thể bạn đang hỏi về thuật toán sắp xếp song song ? logn
Jeremy

4
@Jeremy: Nếu bạn hợp nhất hai danh sách, và , cuối cùng bạn có thể so sánh với từng , nghĩa là, so sánh trên một yếu tố. Và đây chỉ là một bước "hợp nhất". Tất nhiên số lượng so sánh trung bình nhất thiết phải nhỏ, nhưng câu hỏi là về độ phức tạp trong trường hợp xấu nhất . ( b 1 , . . . , B n ) một 1 b 1 , . . . , b n Ω ( n )(a1,...,an)(b1,...,bn)a1b1,...,bnΩ(n)
Jukka Suomela

6
Tôi tin rằng điều đó là có thể. Các mạng sắp xếp là dữ liệu không biết và có cách so sánh được xác định trước, nhưng thuật toán sắp xếp có thể có thể chọn giữa các nhóm hoạt động khác nhau tùy thuộc vào dữ liệu. Người ta có thể sửa đổi sắp xếp hợp nhất thành một thuật toán với so sánh cho mỗi phần tử và dường như không ngụ ý một mạng sắp xếp reddit.com/comments/9jqsi/ LỗiO(log2n)
Chao Xu

1
Jukka: Cảm ơn, tôi nhận được quan điểm của bạn. Nhưng đó chỉ là khi sử dụng hợp nhất ngây thơ: người ta có thể hợp nhất với bằng cách sử dụng tìm kiếm nhân đôi để đặt từng phần tử, trong đó vẫn là so sánh trong trường hợp xấu nhất, nhưng so sánh tối đa cho mỗi phần tử, tạo ra phiên bản sắp xếp hợp nhất được ám chỉ bởi Chao. ( b 1 , Mạnh , b n ) n lg n(a1,,an)(b1,,bn)nlgn
Jeremy

2
Bây giờ có một câu hỏi mới liên quan (nhưng hy vọng dễ dàng hơn nhiều): cstheory.stackexchange.com/questions/8073/ mẹo
Jukka Suomela

Câu trả lời:


17

Khi thảo luận điều này với Michael T. Goodrich, có vẻ như thuật toán sắp xếp song song của Cole cho EREW PRAM thực hiện công việc. Xem

Trong thuật toán đó có các vòng và trong mỗi vòng, mỗi phần tử tham gia vào các phép so sánh O ( 1 ) . (Người ta phải hiểu thuật toán để thấy rằng chúng ta không lạm dụng việc tạo các bản sao của từng yếu tố.)O(logn)O(1)

Một phần mở rộng của thuật toán đó cho máy con trỏ song song được đưa ra trong


Chúng tôi muốn biết bạn là ai! : D
Tayfun Trả tiền

@someone là Sergio Cabello
một người nào đó vào

O(logn)O(logn)
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.