Сортировки
{a1,…,an}, ai∈ X
1)∀ a,b∈ X верно ровно одно из трех соотношение:
a=b
a<b
a>b
2)Для них верна транзитивность:
a,b,c∈ X,
a<b,b<c =>
a<c
a>b,b>c =>
a>c
a=b,b=c => a=c
Сортировка = такая перестановка s: {1,…n} → {1,…n}, что ∀ 1<i≤ n: as(i-1)<as(i) или as(i-1)=as(i)
Существует ли сортировка?
Контрпример: ∀ a,b∈ X: a>b
3)Симметричность:
∀ a,b∈ X: a<bób>a
Теорема.
Пусть
выполняются соотношения 1-3, то сортировка ∃ и ! с
точностью до перестановки равных элементов.
∃. По индукции.
Утв.: равные элементы в отсортированной последовательности идут подряд:
невозможна ситуация:
a<b, b<c, a=c
a=b,
b<c, a=c
a<b,
b=c, a=c
легко д-ть.
То заменяем все подпосл-ти равных эл-тов одним эл-том.
Введем ф-цию
t(x), x∈ X: t(x) = к-во эл-тов
посл-ти, меньших x
t(x) однозначно определяет положение
x
в отсорт.посл-ти
Ч.Т.Д.
Для
построения сортировки достаточно определить одно соотношение <
Сортировки
пузырьком.
Теорема.Φ (n)=Θ(n2)
– верхняя оценка времени работы алгоритма пузырька
ϕ
(n)=
Θ(n2)
– нижняя оценка времени работы алгоритма пузырька.
Модель: допустимые операции =
транспозиция; время на транспозицию эл-тов с
индексами i и
j
= Θ(|i-j|)
Теорема. В рамках модели ϕ (n)=
Θ(n2)
– нижняя оценка времени решения задачи.
Д-во: рассмотрим {n,n-1,…,1}…
Сортировки, основанные на
сравнениях.
Дерево
решений = бинарное дерево(из каждой вершины исходит
либо 2 либо 0 вершин; если 0, то назовем вершину концевой); на корень подается
последовательность {ai}
вершина
→fвершины{ai}
* 0
ребро
→ транспозицияребра {ai}
Алгоритм основан
на сравнениях = он сводится
к дереву решений.
Пусть t(fвершины{ai})=Θ(1), t(транспозицияребра {ai})=0
Высота
дерева h(T)=макс.длин ветвей.
Длина
ветви = к-во вершин в ветви
Удалим из дерева все
недостижимые вершины.
Утв.
для
нашей модели нижняя оценка времени работы алгоритма = Θ(h(T))
Сколько
концевых вершин в нашем дереве?
Рассмотрим все перестановки s(1,…,n)
Каждая ветвь дерева задает
перестановку s-1(1,…,n), обратную s(1,…,n)
Количество концевых вершин N = n!
N≤
2h(T)-1
ln2(N)≤
h(T)-1
h(T)≥ ln2(N)+1
h(T)≥ ln2(n!)+1
Формула Стирлинга: n!=√
(2π n) nne-n(1+o(1))
h(T)≥ ln2(√
(2π n) nne-n(1+o(1)))+1=
ln2(√
(2π )) +0.5ln(n) + n ln(n) – n ln( e) + o(1) +1 = Θ(n ln
n)
Теорема. Для алгоритмов, основанных на сравнениях, существует нижняя оценка
времени работы алгоритма = Θ(n ln n)
Дерево решений алгебраическое степени n если deg(fвершины{ai})≤ n
Алгоритм основан на простых сравнениях
если в каждой вершине происходит только сравнение двух элементов
последовательности
Теорема. Для алгоритма сортировки слиянием с рекурсией существует верхняя оценка
времени работы алгоритма Φ(n)=Θ
(n
ln
n);
алгоритм требует Θ(n)
дополнительной памяти в куче и Θ(ln n) дополнительной памяти в стеке.
Теорема. Для алгоритмов основанных на сравнениях
алгоритм Merge
для
двух массивов длины n
строго
оптимален по количеству сравнений. Т.е. если время сравнения = 1 , время
остальных операций =0, то ϕ(n)=2n-1 – строгая нижняя оценка
времени работы алгоритма Merge.
Д-во: рассмотрим отсортированные
массивы {a1,…,an} и {b1,…,bn}: ai<bi, ai+1>bi, т.е. в отсорт.массиве эл-ты лежат так: a1, b1, a2, b2, a3, b3,…
К-во соотношений = 2n-1. Утверждается, что все эти
соотношения надо проверить.
Например: не проверим a2<b2 , то две последовательности
удовлетворяют всем остальным соотношениям:
a1,
b1, a2, b2, a3,
b3,…
a1,
b1, b2, a2, a3,
b3,…
Т.е. хотя бы 2n-1 сравнение надо обязательно
сделать для сортировки.
Ч.Т.Д.
OpenMP