Можно ли проверить сортировку списка без сравнения соседей?


14

Список n элементов может быть проверен как отсортированный путем сравнения каждого элемента с его соседом. В моем приложении я не смогу сравнивать каждый элемент с его соседом: вместо этого сравнения иногда будут между удаленными элементами. Учитывая, что список содержит более трех элементов, а также то, что сравнение является единственной поддерживаемой операцией, существует ли когда-либо «сеть» сравнений, которая докажет, что список отсортирован, но отсутствует хотя бы один прямой сосед-сосед сравнение?

Формально для последовательности элементов ei меня есть набор пар индексов (j,k) для которых я знаю, является ли ej>ek , ej=ek или ej<ek . Существует пара (l,l+1) которая отсутствует в наборе сравнений. Можно ли когда-нибудь доказать, что последовательность отсортирована?


1
Примечание на случай, если кто-нибудь найдет эту страницу позже с вопросом о том, можете ли вы проверить, что список отсортирован, не сравнивая ничего; Только если вы можете наложить некоторые ограничения на входы и / или узнать что-либо о форме входов; (например, радикальная сортировка).
HammerN'Songs

Однако существует возможность оптимизации количества сравнений, используемых в тех случаях, когда они не отсортированы.
накопление

1
@ Накопление Есть ли на самом деле такая возможность? Должно быть тривиально взять любую такую ​​программу и составить состязательный список длины n, который вынуждает программу делать n-1 сравнений. См. Также «Убийца-противник для быстрой сортировки», который еще больше продвигает эту идею, заставляя быструю сортировку выполнять плохую часть своего асимптотического анализа.
Даниэль Вагнер

@DanielWagner Да, такая оптимизация должна быть сделана с учетом ожидаемого ввода конкретного приложения.
накопление

Вероятно, не возможно. Но, пожалуйста, уточните: вы имели в виду, что вы знаете только сравнения формы (j, j + 1), а не общие (j, k)? Например, знаете ли вы когда-нибудь сравнение двух элементов индексов (j, j + 3)?
Рон

Ответы:


34

(я,я+1)

1,2,...,я-1,я,я+1,я+2,...,N1,2,...,я-1,я+1,я,я+2,...,N

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.