Оптимизирующие преобразования алгоритмов, использующие свойства множеств, предикатов и операций над ними - page 4

жения
X
Y
=
Z
выражению
X
\
Z
Y
нетрудно убедиться.
Действительно:
X
Y
=
Z
(
x
X
)(
x
Y
x
Z
)
и
X
\
Z
Y
(
x
X
&
x /
Z
)(
x
Y
)
.
Число сравнений элементов множеств
X, Y
и
Z
при реализации
выражения
X
Y
=
Z
равно
k
op
1
=
|
X
| ×
(
|
Y
|
+
|
Z
|
)
. Для выражения
X
\
Z
Y
при
|
X
Z
|
=
число операций сравнения
k
op
2
=
|
X
| ×
× |
Z
|
+ (
|
X
| − |
X
Z
|
)
× |
Y
|
, отк уда
k
op
1
k
op
2
=
|
X
Z
| × |
Y
|
.
Докажем эквивалентность выражений
X
\{
Y
Z
}
выражению
X
\
Y
\
Z
. Известно, что
X
\{
Y
Z
}
=
X
∩ {
Y
Z
}
. По закону
де Моргана
{
Y
Z
}
=
Y
Z
. Тогда
X
\{
Y
Z
}
=
X
Y
Z
,
но
X
Y
=
X
\
Y
. Отсюда
X
\{
Y
Z
}
=
X
\
Y
Z
. С учетом
{
X
\
Y
}∩
Z
=
{
X
\
Y
}\
Z
окончательно получим
X
\{
Y
Z
}
=
X
\
Y
\
Z
.
Покажем целесообразность замены выражения
X
\{
Y
Z
}
на
X
\
Y
\
Z
. Число сравнений элементов множеств
X, Y
и
Z
при
Y
Z
=
оценивается по формуле
k
op
1
=
|
Y
| × |
Z
|
+
|
X
| ×
(
|
Y
|
+
|
Z
|
)
. Число
операций сравнения для выражения
X
\
Y
\
Z
будет максимальным в
предположении, что
X
Y
=
,
X
Z
=
и
Y
Z
=
k
op
2
=
|
X
× |
Y
|
+
|
X
| × |
Z
|
. Следовательно,
k
op
1
k
op
2
=
|
Y
| × |
Z
|
.
Рассмотрим случай
Y
,
Z
X
. При
Y
Z
=
число опера-
ций для выражения
X
\{
Y
Z
}
равно
k
op
1
=
k
op
1
и для выражения
X
\
Y
\
Zk
op
2
=
|
X
| × |
Y
|
+ (
|
X
| − |
Y
)
× |
Z
|
, отк уда
k
op
1
k
op
2
= (
|
X
|
+
+
|
Y
|
)
× |
Z
|
.
Является ли выполненный нами анализ возможных преобразова-
ний в данном случае достаточно полным и обеспечивающим тем са-
мым достижение поставленной цели — максимальное снижение вычи-
слительной сложности за счет преобразования данного вида? Вернем-
ся кзамене
X
Y
=
Z
на
{
X
\
Z
} ⊆
Y
. Ответ будет положительным,
если не существует других эквивалентных условий. Однако из теории
множеств [2] известно, что следующие условия эквивалентны:
A
B
A
B
=
A
A
B
=
B
A
\
B
=
A
B
=
U,
где
U
— универсум, под которым будем понимать все элементы дан-
ного вида, находящиеся в рассмотрении.
С учетом сказанного список эквивалентных фрагментов, которые
могут быть использованы для проверки условия в нашем алгоритме,
будет следующим:
1)
X
Y
=
Z,
2)
{
X
\
Z
} ⊆
Y,
3)
{
X
\
Z
} ∩
Y
=
{
X
\
Z
}
,
4)
{
X
\
Z
} ∪
Y
=
Y,
5)
{
X
\
Z
}\
Y
=
,
6)
{
X
\
Z
} ∪
Y
=
U.
56 ISSN 0236-3933. ВестникМГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2013. № 4
1,2,3 5,6,7,8,9,10,11,12,13,...14
Powered by FlippingBook