Материал: Алгебра_кортежей

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

свидетельствует о непустоте всей системы.

Теорема 3.3 непосредственно пригодна для решения практических задач, но чаще применяются ее следствия, для рассмотрения которых введем некоторые обозначения и теоремы.

Конфликтующая пара D-системы есть непересекающаяся пара непустых компонент в одном атрибуте.

Конфликтный атрибут D-системы – это атрибут, в котором пересечение всех непустых компонент пусто, в противном случае атрибут называется

бесконфликтным.

Бесконфликтный блок D-системы (BlNC) – ее вертикальный блок, содержащий только бесконфликтные атрибуты. Соответственно вертикальный блок с конфликтными атрибутами называется конфликтным блоком (BlC). Из определений ясно, что в бесконфликтном блоке могут содержаться пустые компоненты, но в то же время пересечение всех непустых компонент в каждом атрибуте этого блока непусто.

Монотонным атрибутом D-системы является бесконфликтный атрибут, не содержащий пустых компонент.

Монотонным блоком D-системы (BlM) называется бесконфликтный блок, не содержащий D-кортежей со всеми пустыми компонентами.

Для D-системы Q, содержащей монотонный блок BlM(Q), построим C-кортеж Cint, в котором все компоненты проекции монотонного блока равны пересечению всех непустых компонент исходной D-системы Q в соответствующем атрибуте, а все остальные компоненты – фиктивные, т.е. равны " ".

Теорема 3.4. Если D-система Q содержит монотонный блок, то она непуста и Cint Q.

Доказательство. По условиям теоремы Cint , и для каждого D-кортежа Qi системы Q по теореме 2.16 соблюдается Cint Qi, так как в монотонном блоке всегда существует непустая компонента, такая что соответствующая компонента Cint включена в нее. Отсюда в силу теоремы 2.17 получаем Cint Q.

Конец доказательства.

В качестве примера возьмем D-систему

110

 

 

 

 

 

{A,B} {f ,g} {a,c,d}

T =

 

{e}

{b,c}

.

{A}

{g,h}

 

 

 

 

 

 

 

Нетрудно убедиться, что первый и третий атрибуты в T бесконфликтны и вместе образуют монотонный блок. Соответственно Cint = [{A} {c}]. Из теоремы 1.2 следует, что T – непуста и Cint T, это легко проверяется с помощью теорем 2.16 и 2.17.

Рассмотрим теперь D-системы с бесконфликтными блоками, которые содержат D-кортежи со всеми пустыми компонентами. Пусть D-система Q содержит бесконфликтный блок T1 = BlNC(Q). Тогда после соответствующих перестановок строк и столбцов D-систему Q можно изобразить как блочную

 

T

T

 

матрицу T =

T11

T12

, где T11 – подматрица Q, не содержащая D-кортежей со

 

21

22

 

всеми пустыми компонентами и являющаяся монотонным блоком, T21 – подматрица Q с D-кортежами, содержащими только пустые компоненты.

Теорема 3.5. Если в D-системе Q имеется бесконфликтный блок, то Q непуста, если и только если при разложении ее в блочную матрицу T непуста D-система, представленная блоком T22.

Доказательство. Необходимость. Ясно, что одна из D-систем в формуле

T11

(3.2) из теоремы 3.3 может быть представлена блочной матрицей T22 .

Поскольку T11 монотонна, то существует непустой C-кортеж C11, такой что C11 T11. Если T22 непуста, то в проекции, соответствующей T22, имеется C-кортеж C22, такой что C22 T22. При пересечении C11 и C22 образуется непустой C-кортеж C0, так как всем нефиктивным компонентам кортежа C11 соответствуют фиктивные компоненты кортежа C22, и наоборот. Согласно теоремам 2.16 и 2.17 C0 T. Достаточность. Предположим, что T22 пуста, а Q непуста. Тогда T22 эквивалентна D-системе той же размерности, все компоненты которой – пустые множества. Если вместо T22 вставить эту D-систему, то нижняя часть блочной матрицы будет содержать D-кортежи со всеми пустыми компонентами и, следовательно, соответствующая ей D-система окажется пустой. Конец доказательства.

Приведем пример. Дана D-система

111

{A,B} {e, f} {a,b}

 

 

 

 

{g,h}

 

{e}

 

Q =

{A}

{e}

{b}

 

.

 

{f ,g}

 

 

{e,h}

 

 

 

 

{g,h}

Первый и третий столбцы в ней – бесконфликтные. Следовательно, после соответствующей перестановки столбцов и строк Q можно преобразовать в эквивалентную ей блочную матрицу:

{A,B} {a,b}

 

{e, f}

 

 

 

{A}

{b}

 

{e} {f ,g}

Q1 =

 

 

 

 

 

.

 

 

 

{g,h}

{e}

 

 

 

 

 

 

 

 

 

{e,h} {g,h}

 

 

 

Для проверки непустоты этой D-системы достаточно проверить непустоту

D-системы T22 = {g,h}

{e}

. Первый столбец этой D-системы монотонный,

 

 

{e,h}

{g,h}

 

 

следовательно, она непуста и содержит C-кортеж C22 = [{h} ]. Монотонный блок T11 содержит C-кортеж [{A} {b}]. Пересечение этих C-кортежей после приведения к одной схеме отношения равно C-кортежу C0 = [{A} {b} {h} ], он при перестановке атрибутов в соответствии со схемой отношения исходной D-системы Q преобразуется в C-кортеж [{A} {h} {b} ], который и является выполняющей подстановкой D-системы Q. Проверить правильность этой подстановки можно с помощью теорем 2.16 и 2.17.

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

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

112

частности, матричные свойства АК-объектов активно используются в алгоритмах решения задач проверки выполнимости КНФ и включения АКобъектов, например С-кортежа в С-систему.

3.3. Алгоритм проверки включения C-системы в C-систему

Этот алгоритм, как и его частный случай (проверка включения C-кортежа в C-систему), лежит в основе методов уменьшения трудоемкости многих не полиномиальных по вычислительной сложности алгоритмов. При общем подходе к решению этих задач требуется преобразовать вторую C-систему в D-систему (см. п. 2.2), чтобы использовать соотношения из теорем 2.16 и 2.17, которые позволяют осуществить проверку за время, полиномиально зависящее от размерности исходных АК-объектов. Однако при преобразовании АК-объекта в альтернативный класс не только требуется алгоритм из класса

#P-полных (класс более трудный, чем NP), но еще может получиться АК-объект с размерностью, экспоненциальной относительно исходного АК-объекта. Рассмотрим менее трудоемкий алгоритм проверки включения C-кортежа в C-систему. Пусть заданы C-кортеж C и C-система R. Необходимо проверить выполнение соотношения C R.

Алгоритм 3.1 (проверка включения C-кортежа в C-систему):

1)проверить, существует ли в R такой C-кортеж Ci, для которого C Ci. Если существует, то выход с ответом "да";

2)вычислить R0 = C R;

3)если R0 = , то выход с ответом "нет";

4)если R0 содержит один C-кортеж Ci, то выход с ответом "нет";

5)проверить, существуют ли в R0 атрибуты, у которых все компоненты равны между собой и равны соответствующим компонентам C-кортежа C. Если такие атрибуты существуют, то удалить их из R0 и из C (т.е. вычислить проекции этих АК-объектов по остальным атрибутам), в результате чего будут получены АК-объекты R1 и C1;

6)считая полученный на шаге 5 C-кортеж C1 универсумом отношения R1,

вычислить D-систему R1 .

7) проверить непустоту полученной D-системы R1 , при возможности

113

используя соотношения, приведенные в разделе 3.2. Если D-система пуста, то ответ "да", в противном случае – "нет".

Ясно, что все шаги этого алгоритма, за исключением шага 7, полиномиальны относительно размерностей исходных объектов. Шаг 7 может потребовать экспоненциального времени выполнения, но при этом на шагах 1, 3 и 4 возможен выход из алгоритма с однозначным ответом, а на шагах 2 и 5 возможно сокращение размерности исходных АК-объектов.

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

{a,d}

{c,d}

R[XYZV] = {d}

{a,b}

{a,b} {b,c} {d} {b.d} {a,b} {a,d} {b,d} {a,b} {c} {b}

задана в универсуме X Y Z V = {a, b, c, d}4 и в этой же схеме отношения сформирован C-кортеж С = [{a, b, c} {b} {a, d}]. Проверить, выполняется ли включение C R.

Шаг 1. Условие не выполнено.

{a}

{a,b} {b} {d}

Шаг 2. R0 = {c}

{b,d} {b}

{a,d} .

{a,b}

{c} {b}

{a,d}

 

 

 

Шаги 3 и 4. Условия не выполняются.

Шаг 5. Условие выполнено. Вычисляем проекции

{a}

{a,b} {d}

R1 = R0[XYV] = {c}

{b,d} {a,d} ; C1 = C[XYV] = [{a, b, c} {a, d}].

{a,b}

{c} {a,d}

 

 

 

114