Научная статья на тему 'Разработка и исследование параллельных комбинаторных алгоритмов'

Разработка и исследование параллельных комбинаторных алгоритмов Текст научной статьи по специальности «Математика»

CC BY
566
131
i Надоели баннеры? Вы всегда можете отключить рекламу.
Область наук
Ключевые слова
КОМБИНАТОРНЫЕ ЗАДАЧИ / ПАРАЛЛЕЛЬНЫЕ АЛГОРИТМЫ / ДЕРЕВО ПОИСКА / МНОГОПРОЦЕССОРНАЯ СИСТЕМА / ЛИНЕАРИЗАЦИОННОЕ МНОЖЕСТВО / СИСТЕМА ЛОГИЧЕСКИХ УРАВНЕНИЙ

Аннотация научной статьи по математике, автор научной работы — Тимошевская Наталия Евгеньевна

В русле современного развития прикладной дискретной математики лежит проблема создания эффективных параллельных алгоритмов решения комбинаторных задач. В данной работе излагаются результаты, полученные автором в разное время в этом направлении: 1) методы распараллеливания комбинаторных алгоритмов методы назначаемых и выделяемых поддеревьев для параллельного обхода дерева поиска в глубину и метод нумерации для параллельного перечисления комбинаторных объектов; 2) параллельные алгоритмы решения комбинаторных задач, разработанные на основе методов распараллеливания, включая задачи перечисления (сочетаний, перестановок, разбиений) и задачи поиска (кратчайшего линеаризационного множества покрытия и решения нелинейной системы логических уравнений методом линеаризационного множества), с экспериментальными оценками их эффективности.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

The design of effective parallel combinatorial algorithms is an actual problem for the modern discrete mathematics. Here we inform about the results in this area. Two parallel methods for making tree search on a cluster computing system are proposed. Also, some results concerning the linearization-set method for solving the system of nonlinear logical equations are given. The problem under consideration is determining the shortest linearization subset for a given set cover. NP-hardness of the problem is proved. The connection with the minimum vertex cover problem is shown. The definition of linearization-equivalent coverings is entered and an effective method for equivalence checking with the help of graphs is given. The minimal, shortest and irredundant coverings in the equivalent class are defined and some their properties are researched. We have proved that the problem of finding the shortest equivalent cover is NP-hard and we propose an approximate algorithm for its solution.

Текст научной работы на тему «Разработка и исследование параллельных комбинаторных алгоритмов»

2009 Вычислительные методы в дискретной математике №2(4)

УДК 519.7, 519.17

РАЗРАБОТКА И ИССЛЕДОВАНИЕ ПАРАЛЛЕЛЬНЫХ КОМБИНАТОРНЫХ АЛГОРИТМОВ

Н. Е. Тимошевская Томский государственный университет, г. Томск, Россия E-mail: timnat@isc.tsu.ru

В русле современного развития прикладной дискретной математики лежит проблема создания эффективных параллельных алгоритмов решения комбинаторных задач. В данной работе излагаются результаты, полученные автором в разное время в этом направлении: 1) методы распараллеливания комбинаторных алгоритмов — методы назначаемых и выделяемых поддеревьев для параллельного обхода дерева поиска в глубину и метод нумерации для параллельного перечисления комбинаторных объектов; 2) параллельные алгоритмы решения комбинаторных задач, разработанные на основе методов распараллеливания, включая задачи перечисления (сочетаний, перестановок, разбиений) и задачи поиска (кратчайшего линеаризационного множества покрытия и решения нелинейной системы логических уравнений методом линеаризационного множества), с экспериментальными оценками их эффективности.

Ключевые слова: комбинаторные задачи, параллельные алгоритмы, дерево поиска, многопроцессорная система, линеаризационное множество, система логических уравнений.

Введение

Под комбинаторными задачами в работе подразумеваются перечислительные и поисковые задачи на конечных комбинаторных множествах, элементами которых служат комбинаторные объекты, представляющие собой комбинации элементов других конечных (возможно, тоже комбинаторных) множеств — сочетания, перестановки, разбиения, покрытия, линеаризационные множества переменных, решения систем логических уравнений и т. п. Перечислительная задача заключается в перечислении всех элементов некоторого подмножества конечного комбинаторного множества, а поисковая — в нахождении в последнем элемента с заданными свойствами. За редким исключением перебор (порождение, перечисление) элементов основного комбинаторного множества и их опробование (проверка на обладание нужным свойством) является единственным способом решения таких задач. Перечисляемые элементы порождаются обычно в некотором порядке. Во многих случаях это делается в порядке обхода дерева поиска, представляющего собой модель комбинаторного множества.

Почти все комбинаторные алгоритмы имеют экспоненциальную сложность. Вместе с тем на практике необходимо уметь решать комбинаторные задачи достаточно больших размерностей. Одна из возможностей уменьшения времени решения комбинаторных задач состоит в том, чтобы разбить комбинаторное множество на классы и исследовать эти классы параллельно, т. е. одновременно на нескольких процессорах вычислительной системы. Проблема заключается в том, как надо разбивать комбинаторное множество на классы и раздавать последние процессорам так, чтобы обеспечить наивысшую степень ускорения вычислений. Последнее зависит от многих факторов,

в том числе от неравномерной загрузки процессоров системы, от накладных расходов на коммуникации (что особенно важно для систем с распределенной памятью), от избыточности просматриваемой области поиска и др. В работе [1] представлен обзор существующих методов разработки параллельных алгоритмов решения комбинаторных задач.

1. Методы и алгоритмы параллельного обхода дерева

Во многих методах решения комбинаторных задач дерево используется в качестве модели пространства возможных решений, а его обход — как модель алгоритма поиска решения. Применение многопроцессорной вычислительной системы позволяет обход дерева распараллелить — воспроизводить одновременно несколько узлов в дереве. В [2] предложены два метода параллельного обхода дерева — метод назначаемых поддеревьев (МНП) и метод выделяемых поддеревьев (МВП). В первом упор делается на сокращение взаимодействия между процессорами системы, во втором — на их равномерную загрузку. В обоих методах параллельные процессы подразделяются на управляющий и рабочие. Под процессом понимается вычислительная ветвь программы, выполняющаяся на отдельном процессоре.

1.1. Метод назначаемых поддеревьев

Идея МНП заключается в разбиении дерева на большое число «маленьких» поддеревьев и назначении их для обхода в порядке освобождения процессов. На первом этапе управляющий процесс выполняет построение и обход части дерева в ширину, начиная от его корня до тех пор, пока число построенных, но еще не обработанных вершин (называемых корневыми) не достигнет заранее заданного числа т, которое много больше числа рабочих процессов. На втором этапе корневые вершины посылаются рабочим процессам по мере выполнения теми обходов в глубину ранее назначенных им поддеревьев, которые могут быть разного размера.

В данном методе управление работой процессов не требует значительных затрат. Рабочие процессы обмениваются данными с управляющим процессом лишь при назначении очередного поддерева. Вместе с тем метод не гарантирует равномерной загруженности всех процессоров, так как существует опасность, что некоторые процессы получат поддеревья, во много раз превышающие другие по размеру. Для предупреждения этого можно увеличить число т назначаемых поддеревьев. С другой стороны, это приведет к увеличению числа обменов между управляющим и рабочими процессами. Таким образом, МНП рекомендуется для использования в тех случаях, когда можно в результате разбиения получить поддеревья, близкие по размеру.

1.2. Метод выделяемых поддеревьев

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

Выбор процесса-источника для выделения поддерева выполняется управляющим процессом по стратегии оптимального выбора, нацеленной на то, чтобы направлять запрос к наиболее загруженному процессу. Каждый процесс периодически посылает управляющему информацию о пройденной части поддерева. Управляющий на основании собранной им информации выбирает из рабочих процессов, для которых еще не нарушено условие разбиения, тот процесс, который имеет наибольшую непройден-ную часть поддерева, и пересылает ему номер освободившегося процесса. Получив указанный номер, процесс-источник выделяет в своем дереве поддерево для свободного процесса. Для выделения поддерева по возможности большего размера ищется непройденная вершина, минимально удаленная от корня, которая и становится корневой вершиной выделяемого поддерева. Таким образом, этот метод позволяет обеспечить равномерную загруженность процессов системы, однако требует дополнительных накладных расходов на выделение поддеревьев.

1.3. Экспериментальное исследование м е т о д о в п а р а л л е л ь н о г о о б х о д а Предложенные методы пригодны для обхода дерева любого типа. Их экспериментальное исследование проводилось как на полных к-ичных деревьях, так и на деревьях, возникающих при решении некоторых известных комбинаторных задач — перечислительных (перечисление сочетаний и разбиений множества), поисковых (поиск подмножеств с заданной суммой — решений задачи о рюкзаке, поиск решений системы нелинейных логических уравнений) и оптимизационных (поиск оптимального назначения, поиск кратчайшего линеаризационного множества покрытия). Целью эксперимента являлась оценка величин ускорения и эффективности. На практике ускорение определяется отношением времени решения задачи на одном процессоре ко времени решения той же задачи на системе таких же процессоров, а эффективность — отношением ускорения к числу процессоров. Эффективность показывает среднюю долю времени выполнения программы, в течение которого процессоры реально используются для решения задачи, и не превышает 1. Результаты исследования (см. [2, 3]) показали высокую эффективность (больше 0,8) обоих методов для почти всех типов деревьев. Только в случае «глубоких» деревьев сочетаний, поддеревья которых сильно различаются по числу вершин, результаты эксперимента подтвердили, что МНП работает плохо. В то же время результаты экспериментального анализа показали, что для задачи о назначении МНП имеет преимущество. Эта задача относится к задачам оптимизации, для которых, так же как и для задач поиска, в которых требуется найти хотя бы одно решение, имеет место эффект несовпадения просматриваемых областей поиска для параллельного и последовательного алгоритмов и, как следствие, выполнение ими работы разного объема. В параллельном случае он может оказаться как меньше, что приводит к суперлинейному ускорению, так и больше (избыточность просматриваемой области поиска), чем в последовательном. При проведении экспериментального анализа указанный эффект наблюдался при решении задач о назначении и поиске решения системы нелинейных логических уравнений.

2. Параллельное перечисление комбинаторных объектов

методом нумерации

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

щий за ним и формулируется условие окончания перечисления. Для параллельного перечисления множество объектов надо предварительно разбить на классы, мощности которых отвечают производительности процессоров в системе, и перечислять объекты в различных классах независимо и параллельно на соответствующих процессорах. Однако, когда речь идет о множестве комбинаторных объектов, в отличие, скажем, от числового множества, провести такое разбиение в явном виде затруднительно. Решение этой проблемы возможно путем сопоставления перечисляемым комбинаторным объектам элементов некоторого «легко разбиваемого» множества. Самый простой способ состоит в нумерации объектов числами 1, 2, ... в соответствии с установленным на множестве объектов порядком. Последний, естественно, должен допускать восстановление объекта по его номеру, причем время, требуемое на восстановление, должно быть пренебрежимо мало по сравнению со временем, затрачиваемым на перечисление всех объектов одного класса. Предложенный метод нумерации включает метод построения объекта по его номеру в заданном порядке.

Пусть объекты задаются векторами конечной длины вида (ая, а2,... , ап) с компонентами из конечных упорядоченных множеств А1, А2,... , Ап (а Е А^). Такой способ представления существует для всех комбинаторных объектов. Будем считать, что объекты упорядочены в соответствии с лексикографическим порядком представляющих их векторов, и их нумерация начинается с 1. Префиксом объекта (представляющего его вектора) (а1,..., ап) называют вектор (а1,... , а*), 0 ^ ^ п. Если £ = 0, то имеем

пустой префикс ().

Пусть р = (а1,... , а*-1) есть некоторый префикс. Обозначим N(р) число объектов, которые имеют префикс р. Множество претендентов на следующую позицию за р, т. е. множество значений, которые может принимать элемент а*, обозначим Z(р). Следующие теоремы дают алгоритмы вычисления номера объекта и построения объекта по его номеру.

Теорема 1. Пусть комбинаторные объекты упорядочены в соответствии с лексикографическим порядком представляющих их векторов и пронумерованы числами натурального ряда. Тогда номер I объекта (а1, а2,... , ап) вычисляется по формуле

п- 1

I = Е Е N(а1, а2,..., а*-1, х) + N(а1, а2,..., ап-1, х).

¿=1 x£Z(al,a2,...,at—l), xGZ(аl ,а2 ,...,ап-1) ,

х<а£ х^ап

Теорема 2. Пусть р = (а1, а2,... , а4-1) есть префикс объекта с номером I в лексикографическом ряду, Z(р) = {¿1, ¿2, ..., гт} и N есть номер первого объекта с префиксом р. Тогда а* = г к, где к такое, что

к— 1 к

N + ^ N(аь ..., а4—1, г,) ^ I < N + ^ N(аь ..., а4—1, г,).

3=1 ,=1

Для применения метода к конкретным комбинаторным объектам требуется уметь вычислять число N(р) и множество Z(р). В работах [4, 5] показывается применение метода нумерации для параллельного перечисления сочетаний, перестановок и разбиений множества.

Использование метода нумерации при распараллеливании обеспечивает высокую эффективность благодаря пропорциональному распределению вычислений и отсутствию обменов данными между процессорами, о чем свидетельствуют и результаты

вычислительных экспериментов. Для параллельного перечисления сочетаний эффективность в среднем равна 0, 87, перестановок — 0, 94, эффективность параллельного алгоритма перечисления разбиений множества лежит в диапазоне 0, 8 — 0, 85.

3. Параллельное решение системы логических уравнений методом линеаризационного множества

В работах [6-8] представлены результаты исследования, связанные с решением методом линеаризационного множества системы Б логических уравнений вида

3 = Л(хь ... ,Хп),£ = 1,... ,т,

где х1,...,хп — булевы переменные; з* — булевы константы; /*(ж1,... , хп) — булевы функции, представленные суммой по модулю 2 элементарных конъюнкций, £ = 1,...,т. Множество переменных Ь С X = {х1,...,хп} называется линеариза-ционным для Б, если при любой фиксации значений переменных в Ь система Б становится линейной. Суть метода состоит в построении некоторого линеаризационного множества и в нахождении такого набора значений переменных в этом множестве, при подстановке которого в систему последняя становится совместной. Поиск набора выполняется алгоритмом, реализующим сокращенный обход бинарного дерева поиска с возвращением. Глубина такого дерева не превосходит мощности линеаризационного множества, и чем она меньше, тем быстрее ищется решение. Предложен параллельный алгоритм обхода дерева для решения системы по методу выделяемых поддеревьев.

Для проведения экспериментального анализа алгоритма использовались как случайным образом сгенерированные системы логических уравнений, так и системы, описывающие поведение генератора ключевого потока Геффе. В первой серии экспериментов решалась задача поиска всех решений системы, требующая обхода всего дерева. Для систем с достаточно большим линеаризационным множеством (свыше 30 переменных) для 12 процессов средняя эффективность равна 0,84. Во второй серии экспериментов параллельный поиск прекращался, как только один из процессов находил решение. Результаты показали, что в этом случае применение параллельного обхода дерева может сокращать время поиска в число раз, которое может быть как больше, так и меньше числа процессов. Причиной этого является несовпадение областей поиска при последовательном и параллельном обходах.

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

Пусть В есть покрытие множества X. Подмножество Ь С X называется линеариза-ционным множеством покрытия В, если |У — Ь| ^ 1 для всех У Е В. Если вернуться к системе логических уравнений Б, то здесь X есть множество переменных системы, а В — множество его подмножеств, соответствующих конъюнкциям системы Б, каждое из которых состоит из переменных, входящих в соответствующую ему конъюнкцию (с инверсией или без). В этом случае линеаризационное множество покрытия В будет линеаризационным множеством переменных системы Б, хотя обратное может и не выполняться. В задачах построения линеаризационных множеств достаточно рассматривать только покрытия, не содержащие одноэлементных блоков. Обозначим М(X) множество всех таких покрытий множества X.

Алгоритм A1 покрытию B G M(X) в соответствие ставит граф G(V, E), такой, что V = X и {u,v} G E, если и только если существует Y G B, что u G Y, v G Y и u = v. Построенный так граф G называется графическим представлением покрытия B и обозначается A1(B). Алгоритм A1 имеет полиномиальную сложность.

Утверждение 1. Множество L является линеаризационным для B G M (X ) тогда и только тогда, когда оно является вершинным покрытием графа A1(B).

Покрытия B и C из M(X) эквивалентны, если любое подмножество L Ç X является линеаризационным для B тогда и только тогда, когда оно линеаризационное для C. Класс эквивалентности на M (X), содержащий множество B G M (X), обозначим [B]. Следующая теорема дает конструктивный тест эквивалентности двух покрытий.

Теорема 3. Пусть B, B' G M(X). Покрытия B и B' эквивалентны тогда и только тогда, когда графы A1(B) и A1(B') совпадают.

Число блоков в покрытии будем называть его длиной. Число a(B) = |B0| + ... + + |Bfc_i| назовем весом покрытия B = {B0,... , B^-i}. При поиске некоторого лине-аризационного множества заданного покрытия во многих случаях имеет смысл выполнить переход к эквивалентному покрытию, например, меньшей длины или меньшего веса. Покрытие B G M(X) называется кратчайшим или минимальным, если соответственно |B| ^ |A| или a(B) ^ ^(A) для любого A G [B]. Покрытие B = {B0,... , Bk-1} G M(X) называется безызбыточным, если не существуют Bj G B и u G Bj, что B' = {B0,... , Bj_i, Bj — {u}, Bj+i,... , Bk-1} G M(X) и B' G [B]. В теоремах 4 и 5 установлены необходимое и достаточное условия безызбыточности покрытия и необходимое условие для кратчайшего покрытия.

Теорема 4. Если покрытие B = {B0,... , B^_1} является кратчайшим, то не существует таких множеств Bj1, Bj2,... , Bjr G B, что r > 1, i1 < < ■ ■ ■ < ir и множество

r

Y = U Bj. образует полный подграф в A1(B). j=1 .

Теорема 5. Покрытие B = {B0,... , Bk-1} G M(X) является безызбыточным тогда и только тогда, когда для любых Bj G B и u G Bj имеет место 3v G Bj(u = v&VBj G B(i = j ^ —({u,v} Ç Bj))).

Доказательство достаточности в теореме 5 содержит алгоритм A3 преобразования заданного покрытия в эквивалентное безызбыточное.

Для G(V, E) = A1(B) показывается, что 1) E G [B] и E безызбыточное, 2) если в G( V, E) нет клики, содержащей более двух вершин, то | [B] | = 1. Следующее утверждение позволяет выявить структуру классов эквивалентности покрытий. Утверждение 2.

1) Для любого множества X, |X| ^ 3, существует безызбыточное, но не кратчайшее и не минимальное покрытие B G M (X).

2) Для любого множества X, |X| ^ 5, существует кратчайшее, но не безызбыточное, а также кратчайшее, но не минимальное покрытие B G M(X).

3) Любое минимальное покрытие B G M(X) является безызбыточным для любого X.

4) Для любого множества X, |X| ^ 8, существует минимальное, но не кратчайшее покрытие B G M(X).

Пусть G( V, E) есть неориентированный граф без петель и кратных ребер. Покрытие B множества X = V, такое, что множество L является линеаризационным для этого покрытия тогда и только тогда, когда оно является вершинным покрытием графа

С(У,Е), будем называть соответствующим графу С. В работе [7] дается полиномиальный алгоритм А2 построения соответствующего графу О покрытия, обозначаемого А2(С). Некоторые его свойства отражены в утверждении 3.

Утверждение 3. Пусть В = {В0,..., Вк—1} = А2(С(У, Е)). Тогда

1) к ^ |Е|, причем к = |Е| тогда и только тогда, когда |Вг| = 2 для каждого г = 0,... , к — 1; в этом случае В = Е;

2) |В| < |Е|, если и только если в О есть полный подграф с тремя (или более) вершинами;

3) а(В) ^ |Е| + к, причем а(В) = 21Е| тогда и только тогда, когда В = Е.

Теорема 6. Задача построения кратчайшего покрытия, эквивалентного данному покрытию, является ЫР-трудной.

Экспоненциальная сложность алгоритмов минимизации покрытия вынуждает отказаться от поиска точного решения — кратчайшего или минимального покрытия и ограничиться существующим или с меньшими длиной и весом. Последнего в некоторых случаях можно достичь с помощью следующего полиномиального алгоритма А4. Последовательно применяются алгоритмы А1, А2 и А3, т. е. вычисляются С(У, Е) = А1(В), В' = А2(С), В'' = А3(В') и В" принимается за результат минимизации В, если |В''| < |В| и а(В'') < <г(В).

Теорема 7. Задача построения кратчайшего линеаризационного множества покрытия является АР-трудной.

Следующее утверждение позволяет, во-первых, оценить снизу мощность линеари-зационных множеств для покрытий некоторых типов и, во-вторых, разрабатывать алгоритмы построения покрытий с линеаризационными множествами ограниченной снизу мощности.

Утверждение 4.

1) Если в графе А1(В) есть клика мощности к, то любое линеаризационное множество покрытия В имеет мощность не меньше к — 1 .

2) Если А1(В) является полным двудольным графом К*,т, то всякое кратчайшее линеаризационное множество для В имеет мощность шт(£,т).

3) Если граф А1(В) состоит из г компонент связности О1,...,Ог и для каждого

г = 1,..., г в есть клика мощности кг, то для покрытия В не существует лиг

неаризационного множества мощности меньше ^ кг — г.

г=1

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

в своем поддереве линеаризационное множество меньшей мощности, то пересылает его мощность управляющему. Эффективность распараллеливания достигает в среднем величины 0,9. В компьютерном эксперименте показано также высокое качество жадного алгоритма: в подавляющем числе примеров мощность кратчайшего линеаризационно-го множества отличается от мощности множества, найденного жадным алгоритмом, не более чем на 2. Кроме того, показана полезность предварительного преобразования заданного покрытия алгоритмом А4, а именно: оно позволяет в среднем сократить число блоков в покрытии в 15 раз, а время поиска кратчайшего линеаризационного множества в некоторых случаях — в сотни раз.

Наконец, построены оценки количества покрытий, имеющих линеаризационные множества заданной мощности. Обозначим Ь(п, к) число всех покрытий множества X = {1, 2,... , п} с линеаризационными множествами мощности к.

Теорема 8. Ь(п, 1) = 1 + 2п(3п-1 — п),

2к —1 , ч 2к —1

^ Дь(2п-к+1 — 1)* ^ Ь(п, к) ^ 2п-к ^ £>к*(2п-к+1 — 1)*,

где Дкз есть число покрытий к-элементного множества, состоящих из з блоков.

Из теоремы следует, что доля покрытий с нетривиальными линеаризационными множествами ничтожно мала, но их количество велико и растет с ростом мощностей покрываемого и линеаризационного множеств, оправдывая постановку задачи поиска линеаризационных множеств для них.

ЛИТЕРАТУРА

1. Тимошевская Н. Е. О методах разработки параллельных комбинаторных алгоритмов // Третья Сибирская школа-семинар по параллельным вычислениям / Под ред. А. В. Стар-ченко. Томск: Изд-во Том. ун-та, 2006. С. 60-72.

2. Тимошевская Н. Е. Параллельные методы обхода дерева // Математическое моделирование. 2004. Т. 16. №1. С. 105-114.

3. Беляев В. А., Тимошевская Н. Е. Распараллеливание обхода дерева поиска для решения задачи о рюкзаке на кластерной системе // Высокопроизводительные параллельные вычисления на кластерных системах: Материалы Междунар. науч.-практич. сем. / Под ред. проф. Р.Г. Стронгина. Н. Новгород: Изд-во Нижегор. ун-та, 2002. С. 16-20.

4. Тимошевская Н. Е. О нумерации перестановок и сочетаний для организации параллельных вычислений в задачах проектирования управляющих систем // Изв. Томского политехнического университета. 2004. Т. 307. №6. С. 18-20.

5. Тимошевская Н. Е. Параллельное перечисление разбиений множества методом нумерации // Вестник Томского госуниверситета. Приложение. 2006. № 17. С. 260-264.

6. Тимошевская Н. Е. Задача о кратчайшем линеаризационном множестве // Вестник Томского госуниверситета. Приложение. 2005. №4. С. 79-83.

7. Тимошевская Н. Е. О линеаризационно эквивалентных покрытиях // Вестник Томского госуниверситета. Приложение. 2005. №4. С. 84-91.

8. Тимошевская Н. Е. Параллельные вычисления в решении систем логических уравнений методом линеаризации // Материалы XV Междунар. школы-семинара «Синтез и сложность управляющих систем» (Новосибирск, 18-23 октября 2004 г.). Новосибирск: Институт математики, 2004. С. 97-102.

i Надоели баннеры? Вы всегда можете отключить рекламу.