Другие журналы
|
научное издание МГТУ им. Н.Э. БауманаНАУКА и ОБРАЗОВАНИЕИздатель ФГБОУ ВПО "МГТУ им. Н.Э. Баумана". Эл № ФС 77 - 48211. ISSN 1994-0408![]()
Операции над упорядоченными множествами
# 06, июнь 2011
Файл статьи:
![]() УДК 004 УДК 004.3 + 519.6 МГТУ им. Н.Э. Баумана В ходе реализации алгоритмов над графами неоднократно приходится выполнять над представляющими их множествами операции пересечения, объединения, дополнения и др. Асимптотическая оценка вычислительной сложности «в худшем» этих операций над неупорядоченными множествами X и Y равна O(n×m), где n = | X |, m = |Y |. В [1] показано, что операции пересечения, объединения и дополнения над упорядоченными множествами требуют меньшего количества операций сравнения, что позволит снизить вычислительную сложность алгоритмов. Однако остальные операции там исследованы не были. Будем считать, что множества заданы перечислением элементов, а элементы представлены их номерами в универсуме. Упорядочивание множеств в данном случае рассматривается как сортировка номеров, т. е. целых чисел, например по их возрастанию. Для сравнения эффективности операций над неупорядоченными и упорядоченными множествами будем оценивать их вычислительную сложность по количеству сравнений элементов множеств. Проверку условий выхода из циклов учитывать не будем. Рассмотрим особенности реализации операций над упорядоченными множествами. Упорядоченность элементов множеств X и Y позволит нам в общем случае исключать сравнение их индексов, лежащих в определенных диапазонах. Например, если при проверке условия xi = yj выяснится, что x1 не равно и больше y8, то все следующие элементы множества Х нет необходимости сравнивать с y1, y2,…, y8. Напомним, что для реализации операций пересечения, объединения и дополнения над неупорядоченными множествами в худшем случае требуется сравнение каждого элемента со всеми. Для получения объективной оценки сверху вычислительной сложности операций над упорядоченными множествами необходимо определить, какие операции отношения номеров следует выполнять, и сконструировать такие наборы данных, которые потребуют максимального числа проверок. Вид операций над номерами и их количество зависят от типа операции над множествами и соотношения целых констант, задающих элементы xi Отметим важный факт – множество, полученное в результате выполнения любой операции над упорядоченными множествами, является упорядоченным. Принадлежность элемента упорядоченному множеству. При поиске y = xi в упорядоченном множестве методом двоичного деления меньшее количество операций сравнения будет, если проверять данное условие (или инверсное y Nср. пр = 2 log2n, где n = |X|. Алгоритм выполнения этой операции показан на рис.1. Рис. 1. Схема алгоритма выполнения операции принадлежности элемента упорядоченному множеству Считая, что cортировка массива, состоящего из n элементов, требует n log2n операций сравнения, получим суммарное количество сравнений, необходимых для предварительного упорядочивания множеств и выполнения операции y
Таким образом, асимптотическая оценка вычислительной сложности выполнения операции y K = n2 / 3n log2n = n / 3 log2n. Реализация операции проверки включения упорядоченных множеств X i где r = 0 – признак того, что ситуация xi При выполнении условия xi = yj необходимо переходить к сравнению следующих элементов рассматриваемых множеств. Алгоритм установления справедливости отношение нестрогого включения множеств Х и Y показан на рис. 2. Рис. 2. Схема алгоритма выполнения операции нестрогого включения упорядоченных множеств Вариантом исходных данных, при котором количество операций сравнения элементов множеств максимально, будет например такой, при котором ym–1 < x1 & x1 Максимальное количество операций сравнения (оценка в худшем) определяется по формуле Nср. вкл = 2 m. Суммарное количество сравнений, требуемых для предварительного упорядочивания множеств и выполнения операции Х
Отсюда, количество операций сравнения, необходимых для выполнения операции Х K = n m / (n×log2n + m (log2m + 2)) раз. При достаточно большом m (m >> n) K = n / log2m. Реализация операций отношения строгого включения и равенства упорядоченных множеств X Реализация операции объединения упорядоченных множеств Z = X При выполнении условия xi > yj следует переходить к сравнению xi с yj+1. Однако, если для некоторого xi справедливо xi > ym, это означает, что все элементы xi+1, xi+1,…, xn > ym. Для обнаружения этой ситуации и выполнения соответствующих операций после выхода из цикла сравнения элементов множеств X и Y необходимо проверять условие i Рис. 3. Схема алгоритма выполнения операции объединения упорядоченных множеств Обратимся теперь к задаче конструирования худшего варианта данных. При m > n количество операций сравнения будет наибольшим, если 1-й элемент множества X придётся сравнивать со всеми элементами множества Y, а остальные элементы x2, x3,…, xn с элементом ym. Т.е. худший вариант данных должен удовлетворять условию: (ym–1 < xi < ym) & (xn Нетрудно видеть, что максимальное количество операций сравнения (оценка в худшем) будет определяться по формуле Nср. о = 2 (n + m – 1). (2) При |X| = |Y| = n суммарное количество сравнений, требуемых для предварительного упорядочивания множеств и выполнения операции объединения:
Отсюда, количество операций сравнения, необходимых для выполнения операции объединения, сократится за счет упорядочивания в K = n2 / (2n×log2n + 4n – 2) раз. При достаточно большом n K = n / log2n (3). Например, K = 102 при n = 1024 и k = 1170 при n = 16384. Реальное сокращение количества операций будет более существенным, чем мы оценили по (3), если операция объединения (и другие, ей подобные) осуществляются в ходе работы алгоритма неоднократно. Реализация операции пересечения упорядоченных множеств Z = X Схема алгоритма, основанного на изложенных соображениях, представлена на рис. 4. Рис. 4. Схема алгоритма выполнения операции пересечения упорядоченных множеств Ясно, что количество операций сравнения элементов будет максимальным, если множества X и Y не пересекаются (для общих элементов пересекающихся множеств проверка xi < yj не будет выполняться и два элемента – xi и yj будут исключены из рассмотрения). Учитывая, что Х и Y упорядоченные множества, максимальное количество операций сравнения будет, например при n < m, если выполняется условие (1). Нетрудно видеть, что максимальное количество операций сравнения (оценка в худшем) будет определяться по формуле (2). Реализация операции относительного дополнения множества Y до X: Z = X \ Y. По определению операции в множество Z необходимо заносить те элементы множества X, которые не равны никакому элементу множества Y. Следовательно, алгоритм этой операции должен отличаться от алгоритма операции Z = X Рис. 5. Алгоритм выполнения операции дополнения упорядоченных множеств Максимальное количество операций сравнения будет при выполнении условия (1) и оценивается по формуле (2). Реализация операции симметрической разности упорядоченных множеств X и Y: Z = X Рис. 6. Алгоритм выполнения операции симметрической разности упорядоченных множеств Худший вариант исходных данных и вычислительная сложность те же, что и у предыдущей операции. Литература 1. Овчинников В. А. Алгоритмизация комбинаторно-оптимизационных задач при проектировании ЭВМ и систем: Учеб. для вузов.– М.: Изд-во МГТУ им. Н. Э. Баумана, 2001. – 288с. Публикации с ключевыми словами: операции, упорядоченные множества, вычислительная сложность Публикации со словами: операции, упорядоченные множества, вычислительная сложность Смотри также: Тематические рубрики: Поделиться:
|
|
||||||||||||||||||||||||||||||||
|