Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Дискретка_Экзамен_Ответы / отн / 3 Алгоритмы реализации операций над отношениями

.docx
Скачиваний:
62
Добавлен:
11.03.2015
Размер:
34.74 Кб
Скачать

3.4. Алгоритмы реализации операций над отношениями

Бинарное отношение R на множестве A будем задавать характеристической функцией R(x,y), представленной матрицей R размером NN, где N=|A| и Rx,y принимает истинное значение, если (x,y)R и ложное – в противном случае. Для хранения матрицы будем использовать двумерный массив R с элементами типа boolean.

Алгоритм 3.1(рис.3.6)вычисления равенства отношений А и В (А=В).

Вход: А - двумерный массив, хранящий матрицу отношения А;

B - двумерный массив, хранящий матрицу отношения B;

N - мощность множества.

Выход: F=true, если А=В, иначе F=false.

A=B

F:=true; x:=1

xN и F=true

y:=1

yN и F=true

F:=Ax,y = Bx,y; y:=y+1

x:=x+1

Конец

Рис.3.6. Блок-схема алгоритма вычисления равенства отношений

Алгоритм 3.2 (рис.3.7) вычисления включения отношения А в В (АВ).

Вход: А - двумерный массив, хранящий матрицу отношения А;

B - двумерный массив, хранящий матрицу отношения B;

N - мощность множества.

Выход: F=true, если АВ, иначе F=false.

AB

F:=true; x:=1

x  N и F=true

y:=1

y  N и F=true

F:=Ax,y  Bx,y; y:=y+1

x:=x+1

Конец

Рис.3.7. Блок-схема алгоритма вычисления

включения отношения А в В

Алгоритм 3.3 (рис.3.8) вычисления объединения отношений А и В (АВ).

Вход: А - двумерный массив, хранящий матрицу отношения А;

B - двумерный массив, хранящий матрицу отношения B;

N - мощность множества.

Выход: С - двумерный массив, хранящий матрицу объединения А и B.

АВ

x:=1,N

y:=1,N

Cx,y := Ax,y or Bx,y

Конец

Рис.3.8. Блок-схема алгоритма вычисления объединения отношений

Алгоритм 3.4(рис.3.9) вычисления пересечения отношений А и В (АВ).

Вход: А - двумерный массив, хранящий матрицу отношения А;

B - двумерный массив, хранящий матрицу отношения B;

N - мощность множества.

Выход: С - двумерный массив, хранящий матрицу пересечения А и B.

АВ

x:=1,N

y:=1,N

Cx,y := Ax,y and Bx,y

Конец

Рис.3.9. Блок-схема алгоритма вычисления пересечения отношений

Алгоритм 3.5(рис.3.10) вычисления разности отношений А и В (А-В).

Вход: А - двумерный массив, хранящий матрицу отношения А;

B - двумерный массив, хранящий матрицу отношения B;

N - мощность множества.

Выход: С - двумерный массив, хранящий матрицу разности А и B.

А-В

x:=1,N

y:=1,N

Cx,y := Ax,y > Bx,y

Конец

Рис.3.10. Блок-схема алгоритма вычисления разности отношений

Алгоритм 3.6(рис.3.11) вычисления симметрической разности отношений А и В (АВ).

Вход: А - двумерный массив, хранящий матрицу отношения А;

B - двумерный массив, хранящий матрицу отношения B;

N - мощность множества.

Выход: С - двумерный массив, хранящий матрицу симметрической разности А и B.

Рис.3.11. Блок-схема алгоритма вычисления

симметрической разности отношений

Алгоритм 3.7(рис.3.12) вычисления дополнения отношения А ().

Вход: А - двумерный массив, хранящий матрицу отношения А;

N - мощность множества.

Выход: С - двумерный массив, хранящий матрицу дополнения А.

А-В

x:=1,N

y:=1,N

Cx,y := not Ax,y

Конец

Рис.3.12. Блок-схема алгоритма вычисления дополнения отношения

Алгоритм 3.8(рис.3.13) вычисления обращения отношения А (А-1).

Вход: А - двумерный массив, хранящий матрицу отношения А;

N - мощность множества.

Выход: С - двумерный массив, хранящий матрицу обращения А.

Рис.3.13. Блок-схема алгоритма вычисления обращения отношения

Алгоритм 3.9(рис.3.14) вычисления композиции отношений А и В (АВ).

Вход: А - двумерный массив, хранящий матрицу отношения А;

B - двумерный массив, хранящий матрицу отношения B;

N - мощность множества.

Выход: С - двумерный массив, хранящий матрицу отношения АB.

AoB

x:=1,N

y:=1,N

Cx,y := false

z:=1,N

Cx,y:=Cx,y or Ax,z and Bz,y

Конец

Рис.3.14. Блок-схема алгоритма вычисления композиции отношений

Алгоритм вычисления композиции (произведения) отношений представляет собой обычный алгоритм вычисления произведения матриц, в котором арифметические операции (+,*) заменены логическими (or,and). Учитывая то, что элементы матрицы имеют булевский тип, самый вложенный цикл с фиксированным числом повторений целесообразно заменить итерационным циклом с предусловием, в котором выражение Cx,y = false и zN является условием входа в цикл.