Разделы презентаций


Частичное упрядочение

Содержание

26.03.2007Частичное упорядочениеЧастичный порядок*Выбор← Sji (n=i+j+1)( i + 1 ) –й по возрастаниюa < bЛинейный (полный) порядок Tn на множестве из n = 5 элементовa < b, c

Слайды и текст этой презентации

Слайд 126.03.2007
Частичное упорядочение
Структуры и алгоритмы обработки данных, 2
Лекция 6
Частичное упрядочение

Частичный порядок
Алгоритм

выбора k-го элемента на основе процедуры разделения Partition
Линейный алгоритм

выбора k-го элемента

26.03.2007Частичное упорядочениеСтруктуры и алгоритмы обработки данных, 2Лекция 6Частичное упрядочениеЧастичный порядокАлгоритм выбора k-го элемента на основе процедуры разделения

Слайд 226.03.2007
Частичное упорядочение
Частичный порядок
*
Выбор
← Sji
(n=i+j+1)
( i

+ 1 ) –й по возрастанию
a < b
Линейный (полный) порядок

Tn на множестве из n = 5 элементов

a < b,
c < d < e < g,
d < f < g

Skk – медиана (n = 2k + 1)

Разделение
Wji →
(n = i + j )

26.03.2007Частичное упорядочениеЧастичный порядок*Выбор←  Sji    (n=i+j+1)( i + 1 ) –й по возрастаниюa <

Слайд 326.03.2007
Частичное упорядочение
Выбор k-го элемента
Синонимы: порядковые статистики, ранги, ранговые статистики
Даны:

список из n элементов и натуральное число k.
Требуется: найти элемент,

который в отсортированном в возрастающем порядке списке занимал бы k-ую позицию.
Более точно – получить Sn-kk-1

k –й по возрастанию

Тривиальная нижняя граница: n – 1.
При k ≤ n / log2n построить пирамиду за O(n).
Затем выбрать из неё k наименьших за время O(n + k log2n) = O(n).

26.03.2007Частичное упорядочениеВыбор k-го элемента Синонимы: 	порядковые статистики, ранги, ранговые 		статистикиДаны: список из n элементов и натуральное число

Слайд 426.03.2007
Частичное упорядочение
Выбор k-го элемента
Алгоритм на основе процедуры Partition

x –

элемент массива, p-й по порядку от начала массива (от 1-го

элемента)




x

≤ x

> x

p

L

R





L

p−1

p+1

R

k < p

k < p

k > p

k

k

26.03.2007Частичное упорядочениеВыбор k-го элемента Алгоритм на основе процедуры Partitionx – элемент массива, p-й по порядку от начала

Слайд 526.03.2007
Частичное упорядочение
Алгоритм на основе процедуры Partition
Proc Select (a, L, R,

k);
var p: Index;
begin
Partition (a, L, R, p);
if p > k

then Select (a, L, p – 1, k)
else if p < k then Select (a, p + 1, R, k)
else {p = k, ничего}
end;
Можно превратить в итеративную версию, т.к. один альтернативный рекурсивный вызов
26.03.2007Частичное упорядочениеАлгоритм на основе процедуры PartitionProc Select (a, L, R, k);var p: Index;begin	Partition (a, L, R, p);	if

Слайд 626.03.2007
Частичное упорядочение
Алгоритм на основе процедуры Partition
Анализ алгоритма
Благоприятный случай – деление

пополам

2. «Средний» случай
Пусть размер подзадачи при рекурсивном вызове есть не

более, чем αn, где n – размер текущей задачи, а 0 < α < 1.
Тогда T(n) ≤ an + T (αn).
Покажем, что T(n) ≤ Сn, т.е. T(n) = O(n).
Действительно, T(n) ≤ an + Сαn = n (a + Сα) ≤ Сn (хотим).
(a + Сα ) ≤ С → a ≤ С − Сα = С (1 − α) → С ≥ a/(1 − α).
Например, при α = 0.9 должно быть С ≥ 10a
3. Худший случай – O (n2). → Рандомизированная выборка.
26.03.2007Частичное упорядочениеАлгоритм на основе процедуры PartitionАнализ алгоритмаБлагоприятный случай – деление пополам2. «Средний» случайПусть размер подзадачи при рекурсивном

Слайд 726.03.2007
Частичное упорядочение
Линейный алгоритм выбора k-го элемента
(В худшем случае)
Идея: 1.

Находить гарантированно «удачный» опорный (разделяющий) элемент
2. Для этого породить много

маленьких порядков и из них извлечь нужный

Обозначим сложность алгоритма как T(n).
Пусть n = 7(2q + 1). (Если нет, то добавим не более 13 элементов +∞)
Шаг 1. Сортируем семерки (каждую из 2q + 1 штук) за 13(2q + 1) шагов.
13(2q + 1) = (13/7) 7(2q + 1) = (13/7)n.
В каждой семерке знаем медиану.

Шаг 2. Рекурсивно этим же алгоритмом находим медиану медиан «семерок» за время T(n/7). Получим состояние, изображенное на следующем рисунке

26.03.2007Частичное упорядочениеЛинейный алгоритм выбора k-го элемента(В худшем случае)Идея:  1. Находить гарантированно «удачный» опорный (разделяющий) элемент	2. Для

Слайд 826.03.2007
Частичное упорядочение




Линейный алгоритм выбора k-го элемента Состояние после 2-го шага




q строк
q

строк
4q+3
4q+3
3q
3q



A
A
B
B
C
D
C + D


4q+3
4q+3
К 3-му шагу:

26.03.2007Частичное упорядочениеЛинейный алгоритм выбора k-го элемента Состояние после 2-го шагаq строкq строк4q+34q+33q3qAABBCDC + D4q+34q+3К 3-му шагу:

Слайд 926.03.2007
Частичное упорядочение
Линейный алгоритм выбора k-го элемента
Шаг 3. «Разбрасываем» 6q элементов

из C + D относительно медианы медиан (ММ). Каждая тройка

распределяется за 2 сравнения. Всего имеем 4q действий:
4q ≤ 2(2q +1)=(2/7)n
Оценим размеры правой и левой частей относительно ММ.
A’=A+ (добавка из C + D ) B’=B+ (добавка из C + D )
Максимальный размер A’ или B’ равен
(4q + 3) + (6q) = 10q + 3
Остальные элементы (4q + 4) «отсекаются» на шаге 4.
10q + 3 ≤ 10q + 5 = 5(2q +1)=(5/7)n
26.03.2007Частичное упорядочениеЛинейный алгоритм выбора k-го элементаШаг 3. «Разбрасываем» 6q элементов из C + D относительно медианы медиан

Слайд 1026.03.2007
Частичное упорядочение
Линейный алгоритм выбора k-го элемента
Шаг 4. Рекурсивный вызов «вправо»

или «влево» от ММ
При номер(ММ) > k → выбор из

сегмента L..ММ−1
При номер(ММ) < k → выбор из сегмента ММ+1..R
При номер(ММ) = k → Return
Стоимость шага 4 есть T ( (5/7)n )
Итак общий баланс по всем 4-м шагам:

26.03.2007Частичное упорядочениеЛинейный алгоритм выбора k-го элементаШаг 4. Рекурсивный вызов «вправо» или «влево» от ММПри номер(ММ) > k

Слайд 1126.03.2007
Частичное упорядочение
Линейный алгоритм выбора k-го элемента
Покажем, что T(n) = O(n)

.
Пусть T(n) ≤ Сn, тогда

26.03.2007Частичное упорядочениеЛинейный алгоритм выбора k-го элементаПокажем, что T(n) = O(n) .Пусть T(n) ≤ Сn, тогда

Слайд 1226.03.2007
Частичное упорядочение
Линейный алгоритм выбора k-го элемента
Этот алгоритм лучше, чем прямая

сортировка,
при n > 210.

При разбиении на «пятерки» получили бы

T(n) ≤ 18n.


Общий метод
(проектная модель) разработки алгоритмов
Prune & Search или Отсечение и Поиск

26.03.2007Частичное упорядочениеЛинейный алгоритм выбора k-го элементаЭтот алгоритм лучше, чем прямая сортировка, при n > 210.При разбиении на

Слайд 1326.03.2007
Частичное упорядочение
Метод Prune & Search или Отсечение и Поиск

26.03.2007Частичное упорядочениеМетод Prune & Search или Отсечение и Поиск

Слайд 1426.03.2007
Частичное упорядочение
Метод Prune & Search или Отсечение и Поиск

26.03.2007Частичное упорядочениеМетод Prune & Search или Отсечение и Поиск

Слайд 1526.03.2007
Частичное упорядочение

Объява
про текущий контроль
по разделу «Сортировка»

26.03.2007Частичное упорядочениеОбъява про текущий контроль по разделу «Сортировка»

Слайд 1626.03.2007
Частичное упорядочение
КОНЕЦ ЛЕКЦИИ
КОНЕЦ ЛЕКЦИИ
КОНЕЦ ЛЕКЦИИ
КОНЕЦ ЛЕКЦИИ
КОНЕЦ

ЛЕКЦИИ
КОНЕЦ ЛЕКЦИИ
КОНЕЦ ЛЕКЦИИ
КОНЕЦ ЛЕКЦИИ

26.03.2007Частичное упорядочениеКОНЕЦ  ЛЕКЦИИКОНЕЦ  ЛЕКЦИИКОНЕЦ  ЛЕКЦИИКОНЕЦ  ЛЕКЦИИКОНЕЦ  ЛЕКЦИИКОНЕЦ  ЛЕКЦИИКОНЕЦ  ЛЕКЦИИКОНЕЦ

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика