Дискретка_Экзамен_Ответы / отн / 3 Алгоритмы реализации операций над отношениями
.docx
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
xN и F=true
y:=1
yN и 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.
AB
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 и zN является условием входа в цикл.