21
правка
Изменения
Нет описания правки
'''Вполне упорядоченным множеством''', которое явяется важнейшим частным случаем, называется упорядоченное множество, каждое непустое подмножество которого содержит минимальный элемент. ==Операции над упорядоченным множеством==
Над упорядоченным множеством <tex>Set</tex> заданы следующие операции:
=== Delete =Наивная реализация на массиве ==Функция Упорядоченное множество, содержащее <tex>n</tex>\mathrm {delete(Setэлементов, key)}можно реализовать с помощью массива <tex>elements[0..n-1]</tex>. Оно будет обладать следующими полями:* <tex>elem</tex> удаляет {{---}} элементмножества, имеющий ключ * <tex>key</tex> (сохраняя свойство упорядоченности){{---}} ключ элемента.
<code>
'''func''' insert(Set, elem, elemKeykey): Set.n = Set.n + 1 Array.Resize(Set[2], n) i <font color= n - 1 Set[1, i] green>//Увеличиваем размер массива на единицу</font color= Set[1, i - 1]green> Set.elements[2, ikey] = Set[2, i - 1] '''while''' elemKey elem < Set[2, i - 1] Set[1, i - 1] font color= Set[1, i - 2] Set[2, i - 1] = Set[2, i - 2] i = i - 1 Set[1, i] = elem Set[2, i] green>//и добавляем элемент с ключом key.</font color= elemKeygreen>
</code>
Время выполнения {{---}} <tex>O(1)</tex>.
<code>
'''func''' delete(Set, key):
</code>
Время выполнения {{---}} <tex>O(n)</tex>.
<code>
'''intT''' search(Set, key): '''for''' i = 0 '''to''' Set.n - 1 '''if''' Set[2, i] == key <font color=green>//Если элемент с ключом key существует, возвращаем указатель на него,</font color=green> '''return''' *(Set[1, i].elements + key) '''return''' ''null'' <font color=green>//в противном случае возвращаем '' null''.</font color=green>
</code>
Время выполнения {{---}} <tex>O(n)</tex>.
<code>
'''intT''' minimum(Set): '''returnT''' min = Set.elements[0] <font color=green>//Принимаем первый элемент множества за минимальный.</font color=green> '''int''' res = 0 '''for''' i = 1'''to''' Set.n - 1 '''if''' min > Set.elements[i] <font color=green>//Если есть элементы меньше min, 0</font color=green> min = Set.elements[i] <font color=green>//то записывает элемент в min</font color=green> res = i <font color=green>//и его ключ в res.</font color=green> '''return''' *(Set.elements + key)
</code>
Время выполнения {{---}} <tex>O(n)</tex>.
<code>
'''intT''' maximum(Set): '''returnT''' max = Set.elements[0] <font color=green>//Принимаем первый элемент множества за максимальный.</font color=green> '''int''' res = 0 '''for''' i = 1, '''to''' Set.n - 1 '''if''' max < Set.elements[i] <font color=green>//Если есть элементы больше max,</font color=green> max = Set.elements[i] <font color=green>//то записывает элемент в max</font color=green> res = i <font color=green>//и его ключ в res.</font color=green> '''return''' *(Set.elements + key)
</code>
Время выполнения {{---}} <tex>O(n)</tex>.
<code>
'''intT''' predecessor(Set, elem): '''for''' i = 1 '''to''' Set.n - 1 '''if''' elem == Set.elements[1, i] '''return''' *(Set[1, .elements + i - 1]) '''return''''' null''
</code>
Время выполнения {{---}} <tex>O(n)</tex>.
<code>
'''intT''' successor(Set, elem): '''for''' i = 0 '''to''' Set.n - 2 '''if''' elem == Set.elements[1, i] '''return''' *(Set[1, .elements + i + 1]) '''return''''' null''
</code>
Время выполнения {{---}} <tex>O(n)</tex>.
В случае, когда упорядоченность элементов коллекции не важна, возможно использование [[Хеш-таблица|''хешей'']].
==Примеры== * Графы;Простые приверы множеств:* Пустое * {1, 2, 3, ...},** {..., 3, 2, 1},** {1, 3, 5, ..., 2, 4, 6, ...},** {1, 3, 5, ..., 6, 4, 2},** {..., 5, 3, 1, 2, 4, 6, ...},** {..., 5, 3, 1, ..., 6, 4, 2},* пустое множество <tex> \varnothing </tex>;,* Множество множество натуральных чисел <tex> \mathbb N </tex>,* файлы в директории, отсортированные в алфавитном порядке. == Источники информации ==* Кормен, Т., Лейзерсон, Ч., Ривест, Р., Алгоритмы: построение и анализ = Introduction to Algorithms / — 1-е изд. — Пер. с англ под ред. А. Шеня. — М.: МЦНМО, 2002.—960 с. — ISBN 5-900916-37-5* Александров П. С. Введение в теорию множеств и общую топологию. — М.: Наука, 1977. — 368 с.* Н. К. Верещагин, А. Шень. Часть 1. Начала теории множеств // Лекции по математической логике и теории алгоритмов. — 2-е изд., испр. — М.: МЦНМО, 2002. — 128 с. == Ссылки ==* [http://ru.wikipedia.org/wiki/Упорядоченное_множество Упорядоченное множество — Википедия]