Việc sắp xếp danh sách có thể được xác minh mà không so sánh hàng xóm không?


14

Một danh sách n -item có thể được xác minh là được sắp xếp bằng cách so sánh mọi mục với hàng xóm của nó. Trong ứng dụng của mình, tôi sẽ không thể so sánh mọi mặt hàng với hàng xóm của nó: thay vào đó, sự so sánh đôi khi sẽ nằm giữa các yếu tố xa xôi. Cho rằng danh sách chứa nhiều hơn ba mục và so sánh là hoạt động được hỗ trợ duy nhất, có tồn tại một "mạng" so sánh sẽ chứng minh rằng danh sách đó được sắp xếp, nhưng thiếu ít nhất một hàng xóm trực tiếp với hàng xóm so sánh?

Chính thức, đối với một chuỗi các phần ei , tôi có một tập hợp các cặp chỉ số (j,k) mà tôi biết liệu ej>ek , ej=ek hay ej<ek . Tồn tại một cặp (l,l+1) bị thiếu trong tập so sánh. Có bao giờ có thể, sau đó, để chứng minh rằng trình tự được sắp xếp?


1
Một lưu ý trong trường hợp bất kỳ ai tìm thấy trang này sau đó với câu hỏi liệu bạn có thể xác minh danh sách được sắp xếp mà không so sánh bất cứ điều gì; Chỉ khi bạn có thể đặt một số giới hạn cho đầu vào và / hoặc biết điều gì đó về hình dạng của đầu vào; (ví dụ như loại cơ số).
HammerN'Songs

Tuy nhiên, có khả năng tối ưu hóa số lượng so sánh được sử dụng trong trường hợp không được sắp xếp.
Tích lũy

1
@Acccumulation Có thực sự có khả năng như vậy? Nên tầm thường để thực hiện bất kỳ chương trình nào như vậy và đưa ra một danh sách đối nghịch có độ dài n buộc chương trình phải thực hiện so sánh n-1. Xem thêm Kẻ thù giết người đối với QuickSort , đưa ý tưởng này đi xa hơn nữa để buộc quicksort vào phần xấu của phân tích tiệm cận của nó.
Daniel Wagner

@DanielWagner Có, việc tối ưu hóa như vậy phải được thực hiện đối với đầu vào dự kiến ​​của ứng dụng cụ thể.
Tích lũy

Có lẽ là không thể. Nhưng xin vui lòng làm rõ: bạn có nghĩa là bạn chỉ biết so sánh các hình thức (j, j + 1), không chung chung (j, k)? Ví dụ, bạn có bao giờ biết so sánh hai mục của chỉ số (j, j + 3) không?
Ron

Câu trả lời:


34

Nó là không thể. Giả sử rằng bạn có kết quả của tất cả các so sánh ngoại trừ cặp (i,i+1) . Sau đó, bạn sẽ không thể phân biệt giữa hai trường hợp sau:

1,2,,i1,i,i+1,i+2,,n1,2,,i1,i+1,i,i+2,,n

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.