Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пособие рязанова.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
1.55 Mб
Скачать

1.6. Способы представления множества в памяти эвм

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

1. Элементы множества А хранятся в переменной А типа массив, мощность множества А – в переменной KA. Количество элементов в массиве А равно мощности универсума. Элементы массива А неупорядочены.

2. Элементы множества А хранятся в переменной А типа массив, мощность множества А – в переменной KA. Количество элементов в массиве А равно мощности универсума. Элементы массива А упорядочены по возрастанию.

3. Элементы универсума нумеруются: U={u1,…,un}. Элементы множества А хранятся в переменной А типа массив, элементы которого типа boolean. Если uiA, то Аi=true, иначе Ai=false. Количество элементов в массиве А равно мощности универсума.

4. Элементы универсума нумеруются: U={u1,…,un}. Множество А представляется кодом С в котором: Ci=1, если uiA и Ci=0, если uiA, где Сi – i-й разряд кода С. В зависимости от мощности универсума код С может храниться в простой переменной или в массиве.

5. Для хранения множества можно использовать множественный тип.

1.7. Алгоритмы реализации операций над множествами

Алгоритмы реализации операций над множествами зависят от способа представления множества в памяти ЭВМ. Будем считать, что универсум U представляет собой KU натуральных чисел:

U={x | xN и xKU}.

Если это не так, то элементы множества U можно пронумеровать и определить однозначное соответствие между элементами множества U и их номерами.

1. Элементы множества А хранятся в переменной А типа массив, мощность множества А – в переменной KA. Количество элементов в массиве А равно мощности универсума. Элементы массива А неупорядочены.

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

Вход: А-массив, хранящий элементы множества А, КА=|A|;

B-массив, хранящий элементы множества B, КB=|B|;

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

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

Алгоритм 1.2 (рис.1.4) вычисления равенства А и В (А=В).

Вход: А-массив, хранящий элементы множества А, КА=|A|;

B-массив, хранящий элементы множества B, КB=|B|;

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

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

Алгоритм 1.3 (рис.1.5) вычисления объединения А и В (АВ).

Вход: А-массив, хранящий элементы множества А, КА=|A|;

B-массив, хранящий элементы множества B, КB=|B|;

Выход: С-массив, хранящий объединение множеств А и B, КС=|С|;

+

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

Алгоритм 1.4 (рис.1.6) вычисления пересечения А и В (АВ).

Вход: А-массив, хранящий элементы множества А, КА=|A|;

B-массив, хранящий элементы множества B, КB=|B|;

пусть КА  KB;

Выход: С-массив, хранящий пересечение множеств А и B, КС=|С|;

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

Алгоритм 1.5 (рис.1.7) вычисления разности А и В (А-В).

Вход: А-массив, хранящий элементы множества А, КА=|A|;

B-массив, хранящий элементы множества B, КB=|B|;

Выход: С-массив, хранящий разность множеств А и B, КС=|С|;

+

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

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

Вход: А-массив, хранящий элементы множества А, КА=|A|;

B-массив, хранящий элементы множества B, КB=|B|;

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

множеств А и B, КС=|С|;

1. C:=A-BB-A; {или C:=(AB)-(AB) }

2. Конец.

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

Вход: А-массив, хранящий элементы множества А, КА=|A|;

Выход: С-массив, хранящий дополнение множества А, КС=|С|;

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

2. Элементы множества А хранятся в переменной А типа массив, мощность множества А – в переменной KA. Количество элементов в массиве А равно мощности универсума. Элементы массива А упорядочены по возрастанию.

Алгоритм 1.8 (рис.1.9) вычисления равенства А и В (А=В).

Вход: А-массив, хранящий элементы множества А, КА=|A|;

B-массив, хранящий элементы множества B, КB=|B|;

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

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

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

Вход: А-массив, хранящий элементы множества А, КА=|A|;

B-массив, хранящий элементы множества B, КB=|B|;

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

+

+

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

Алгоритм 1.10 (рис.1.11) вычисления объединения А и В (АВ).

Вход: А-массив, хранящий элементы множества А, КА=|A|;

B-массив, хранящий элементы множества B, КB=|B|;

Выход: С-массив, хранящий объединение множеств А и B, КС=|С|

+

+

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

Алгоритм 1.11 (рис.1.12) вычисления пересечения А и В (АВ).

Вход: А-массив, хранящий элементы множества А, КА=|A|;

B-массив, хранящий элементы множества B, КB=|B|;

Выход: С-массив, хранящий пересечение множеств А и B, КС=|С|;

+

+

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

Алгоритм 1.12 (рис.1.13) вычисления разности А и В (А-В).

Вход: А-массив, хранящий элементы множества А, КА=|A|;

B-массив, хранящий элементы множества B, КB=|B|;

Выход: С-массив, хранящий разность множеств А и B, КС=|С|;

+

+

KC:=KC+1; CKC:=Ai; i:=i+1

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

Алгоритм 1.13 (рис.1.14) вычисления симметрической разности

А и В (АВ).

Вход: А-массив, хранящий элементы множества А, КА=|A|;

B-массив, хранящий элементы множества B, КB=|B|;

Выход: С-массив, хранящий симметрическую разность АВ, КС=|С|;

+

+

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

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

Вход: А-массив, хранящий элементы множества А, КА=|A|;

Выход: С-массив, хранящий дополнение множества А, КС=|С|;

+

+

KC:=KC+1; CKC:=u; u:=u+1

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

3. Элементы универсума нумеруются: U={u1,…,un}. Элементы множества А хранятся в переменной А типа массив, элементы которого типа boolean. Если uiA, то Аi=true, иначе Ai=false. Количество элементов в массиве А равно мощности универсума.

Алгоритм 1.15 (рис.1.16) вычисления равенства А и В (А=В).

Вход: А-массив, хранящий элементы множества А;

B-массив, хранящий элементы множества B;

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

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

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

Вход: А-массив, хранящий элементы множества А;

B-массив, хранящий элементы множества B;

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

АВ

F := Ai  Bi; i:=i+1

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

Алгоритм 1.17 (рис.1.18) вычисления объединения А и В (АВ).

Вход: А-массив, хранящий элементы множества А;

B-массив, хранящий элементы множества B;

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

Ci := Ai or Bi

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

Алгоритм 1.18 (рис.1.19) вычисления пересечения А и В (АВ).

Вход: А-массив, хранящий элементы множества А;

B-массив, хранящий элементы множества B;

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

Ci := Ai and Bi

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

Алгоритм 1.19 (рис.1.20) вычисления разности А и В (А-В).

Вход: А-массив, хранящий элементы множества А;

B-массив, хранящий элементы множества B;

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

Ci:= Ai > Bi

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

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

Вход: А-массив, хранящий элементы множества А;

B-массив, хранящий элементы множества B;

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

множеств А и B;

Ci := Ai  Bi

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

разности А и В

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

Вход: А-массив, хранящий элементы множества А;

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

Ci := not Ai

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

4. Элементы универсума нумеруются: U={u1,…,un}. Множество А представляется кодом С в котором: Ci=1, если uiA и Ci=0, если uiA, где Сi – i-й разряд кода С. В зависимости от мощности универсума код С может храниться в простой переменной или в массиве.

Алгоритмы реализации операций при таком способе представления множества в памяти ЭВМ можно получить путём замены логических операций на побитовые в предшествующих алгоритмах и корректировкой конечного значения параметра циклов.

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