Sự phức tạp của việc sắp xếp


8

Không khó để chỉ ra rằng việc sắp xếp một mảng các số là khó đối với . Nếu đầu vào là một mảng 1s và 0 thì thực chất đó là hàm C o u n t (đã cho n bit, xuất số 1s trong nhị phân) vì C o u n t hoàn thành cho T C 0 và hoàn toàn có thể để chuyển đổi số đơn vị thành số nhị phân và số logarit nhỏ (logarit) thành số đơn vị trong A C 0 :TC0CountnCountTC0AC0

S o r t ( x ) = U n một r y ( C o u n t ( x ) )Count(x)=Binary(Sort(x))
Sort(x)=Unary(Count(x))

Vì vậy, sức mạnh của về cơ bản là sắp xếp một chuỗi nhị phân (ví dụ: 100011 đến 000111). Điều này đúng hơn khi các số trong mảng bị chặn. Câu hỏi của tôi là nếu những con số không bị ràng buộc?TC0

Có phải vấn đề sắp xếp một mảng các số không bị chặn vẫn còn trong không? Nó đã hoàn thành cho một lớp lớn hơn như N C 1 chưa?TC0NC1


Btw, nếu bạn biết một tham chiếu cho "sắp xếp các mảng bit là -complete", vui lòng cho tôi biết. TC0
Kaveh

Bạn đã kiểm tra Cook & Nguyen chưa?
Yuval Filmus

2
@Kaveh, mức giảm là ở Chandra, Stockmeyer và Vishkin, "Giảm độ sâu liên tục", SIAM J. Comput. 13 (2), 1984.
Jan Johannsen

Câu trả lời:


9

Giả sử bạn có số x 1 , Bắn , x n chiều rộng m log n . Không mất tính tổng quát, tất cả các số khác nhau (thêm một thêm log n bậc thấp bit). Hai số có thể được so sánh trong AC 0 , vì vậy trong AC 0, chúng ta có thể tính toán, với mỗi x i , một vectơ nhị phân v , được xác định bởi v j = 1 nếu x jx i . Trong TC 0 chúng ta có thể sắp xếp v đểnx1,,xnmlognlognxivvj=1xjxiv , và sau đó xác định vị trí (trong AC0) vị trí k sao cho w k = 1 trong khi w k - 1 = 0 (trong đó w 0 = 0 , w n + 1 = 1 ). Cho các giá trị k này cho mỗi i [ n ] , chúng ta có thể tính toán mảng đã sắp xếp trong AC0. Tổng cộng, chúng tôi nhận được mộtmạchTC0.wkwk=1wk1=0w0=0wn+1=1ki[n]


mẹo hay :) (đếm số lượng số nhỏ hơn trong mảng), cảm ơn Yuval.
Kaveh
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.