Докажите нижнюю границу Omega(n log n) для алгоритмов сортировки, основанных только на сравнениях элементов; обсудите, какие дополнительные предположения о ключах позволяют обойти это ограничение

24 Ноя в 12:26
2 +2
0
Ответы
1
Доказательство (модель дерева решений). Рассмотрим любой алгоритм сортировки, который может опираться только на сравнения пар ключей. Его выполнение на входе из nnn различных элементов можно представить как двоичное дерево решений: каждый внутренний узел — сравнение двух элементов, каждая ветвь — результат сравнения (<<< или >>>), листья — завершённые упорядочения входа. Поскольку разные перестановки входа требуют попадания в разные листья, число листьев не меньше числа перестановок, т.е. не меньше n!n!n!. Если высота дерева равна hhh, то дерево имеет не более 2h2^h2h листьев, значит
2h≥n!⇒h≥log⁡2(n!). 2^h \ge n! \quad\Rightarrow\quad h \ge \log_2(n!).
2hn!hlog2 (n!).
Оценка log⁡2(n!)\log_2(n!)log2 (n!). По неравенству Стирлинга или простому неравенству n!≥(n/e)nn! \ge (n/e)^nn!(n/e)n получаем
log⁡2(n!)≥nlog⁡2ne=nlog⁡2n−nlog⁡2e=Θ(nlog⁡n). \log_2(n!) \ge n\log_2\frac{n}{e} = n\log_2 n - n\log_2 e = \Theta(n\log n).
log2 (n!)nlog2 en =nlog2 nnlog2 e=Θ(nlogn).
Следовательно высота любого дерева (т.е. число сравнений в худшем случае) имеет нижнюю границу
Ω(nlog⁡n). \Omega(n\log n).
Ω(nlogn).
(Это и есть информационно‑теоретическая нижняя граница для алгоритмов на сравнениях. Для случая возможных равных ключей аналогичный вывод даёт нижнюю границу, зависящую от числа различных перестановок входа — в худшем случае ключи различны, получаем ту же оценку.)
Какие дополнительные предположения позволяют обойти Ω(nlog⁡n)\Omega(n\log n)Ω(nlogn) - Ключи — целые числа из конечного диапазона {0,…,k−1}\{0,\dots,k-1\}{0,,k1}. Тогда можно использовать подсчёт (counting sort) за O(n+k)O(n+k)O(n+k), что при k=O(n)k=O(n)k=O(n) даёт O(n)O(n)O(n).
- Ключи — фиксированная длина битовой строки (слово) длины www. Тогда radix sort (с подсчётом по «цифрам») даёт время O(n⋅w/b+2b)O(n\cdot w/b + 2^b)O(nw/b+2b) для разбиения по bbb-битным цифрам; при разумном выборе параметров и при w=O(log⁡n)w=O(\log n)w=O(logn) это даёт O(n)O(n)O(n). Иными словами, при ограниченной (полиномиальной по nnn) длине ключа можно сортировать за линейное время на RAM-модели, использующей арифметические/битовые операции.
- Равномерное распределение ключей или ключи из небольших блоков позволяет применить bucket sort, дающий амортизированно O(n)O(n)O(n) при подходящих предположениях о распределении.
- Если разрешены операции, отличные от сравнений (индексация, арифметика, побитовые операции, хеширование), то появляются некомпаративные алгоритмы, обходящие информационную границу моделей на чистых сравнениях.
Коротко: нижняя граница Ω(nlog⁡n)\Omega(n\log n)Ω(nlogn) верна для любой модели, где единственное допустимое действие — сравнение двух ключей; её можно обойти, если ключи имеют дополнительную структуру (ограниченный диапазон, фиксированная длина битов, известное распределение) или если алгоритм может делать операции сильнее простого сравнения.
24 Ноя в 13:17
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир