Упорядоченное множество
Определение: |
Упорядоченное множество отношением порядка. | представляет собой коллекцию элементов , каждому из которых присваивается определенный ключ , отвечающий за порядок этого элемента в множестве. Бинарное отношение на упорядоченном множестве является
Вполне упорядоченным множеством, которое явяется важнейшим частным случаем, называется упорядоченное множество, каждое непустое подмножество которого содержит минимальный элемент.
Операции над упорядоченным множеством
Над упорядоченным множеством
заданы следующие операции:Insert
Функция
добавляет заданный элемент , имеющий ключ , в подходящее место множества (сохраняя свойство упорядоченности).Delete
Функция
удаляет элемент, имеющий ключ (сохраняя свойство упорядоченности).Search
Функция
, которая получает на вход искомый ключ , и возвращает указатель на элемент множества или специальное значение , если такого элемента нет.Minimum
Функция
возвращает указатель на минимальный элемент множества .Maximum
Функция
возвращает указатель на максимальный элемент множества .Predecessor
Функция
возвращает указатель на элемент, стоящий перед элементом множества .Successor
Функция
возвращает указатель на элемент, стоящий после элемента множества .Наивная реализация на массиве
Пусть
— упорядоченное множество (массив), состоящее из элементов. В хранятся элементы множества, в — их ключи.Функция
func insert(Set, elem, elemKey): n = n + 1 Array.Resize(Set[2], n) i = n - 1 Set[1, i] = Set[1, i - 1] Set[2, i] = Set[2, i - 1] while elemKey < Set[2, i - 1] Set[1, i - 1] = Set[1, i - 2] Set[2, i - 1] = Set[2, i - 2] i = i - 1 Set[1, i] = elem Set[2, i] = elemKey
Функция
func delete(Set, key): i = 0 while Set[2,i] < key && i < n i = i + 1 if i < n if i < n - 1 Set[1, j] = Set[1, j + 1] Set[2, j] = Set[2, j + 1] n = n - 1 Array.Resize(Set[2], n)
Функция
int search(Set, key): for i = 0 to n - 1 if Set[2, i] == key return Set[1, i] return null
Функция
int minimum(Set): return Set[1, 0]
Функция
int maximum(Set): return Set[1, n - 1]
Функция
int predecessor(Set, elem): for i = 1 to n - 1 if elem == Set[1, i] return Set[1, i - 1] return null
Функция
int successor(Set, elem): for i = 0 to n - 2 if elem == Set[1, i] return Set[1, i + 1] return null
В случае, когда упорядоченность элементов коллекции не важна, возможно использование хешей.
Примеры
- Графы;
- Пустое множество ;
- Множество натуральных чисел .
Литература
- Кормен, Т., Лейзерсон, Ч., Ривест, Р., Алгоритмы: построение и анализ = Introduction to Algorithms / — 1-е изд. — Пер. с англ под ред. А. Шеня. — М.: МЦНМО, 2002.—960 с. — ISBN 5-900916-37-5
- Александров П. С. Введение в теорию множеств и общую топологию. — М.: Наука, 1977. — 368 с.
- Н. К. Верещагин, А. Шень. Часть 1. Начала теории множеств // Лекции по математической логике и теории алгоритмов. — 2-е изд., испр. — М.: МЦНМО, 2002. — 128 с.