- •1. Понятие множества.
- •2. Способы представления множеств.
- •3. Операции над множествами.
- •4. Разбиения и покрытия.
- •5. Свойства операций над множествами. Доказательства.
- •6. Универсальное множество. Булеан.
- •7. Представление множеств в эвм.
- •8. Реализация операций над подмножествами заданного универсума.
- •9. Генерация всех подмножеств универсума. Алгоритм генерации всех подмножеств данного множества.
- •10. Алгоритм построения бинарного кода Грея.
- •11. Представление множеств упорядоченными списками.
- •12. Алгоритм проверки включения.
- •13. Алгоритм вычисления объединения множеств.
- •14. Алгоритм вычисления пересечения множеств.
- •15. Упорядоченное множество. Прямое произведение множеств.
- •16. Отношения. Композиция отношений.
- •17. Свойства отношений. Доказательство. Представление отношений в эвм.
- •18. Отношение эквивалентности. Класс эквивалентности.
- •19. Отношение порядка. Минимальный элемент.
- •20. Отношение преобладания (доминирования).
- •21. Симметричное отношение. Композиция отношений.
- •22. Функциональное отношение.
- •23. Типы отображений (инъекция, биекция, сюръекция).
- •24. Способы задания функций.
- •25. Функции алгебры логики.
- •26. Задание функций алгебры логики.
- •27. Существенная и несущественная переменные.
- •28. Примеры логических функций.
- •29. Представление булевых функций формулами.
- •30. Представление булевых функций формулами. Примеры.
- •31. Разложение булевых функций по переменным. Теорема.
- •32. Совершенная дизъюнктивная нормальная форма
- •33. Эквивалентные преобразования. Доказательство.
- •34. Правила подстановки, замены.
- •35. Некоторые эквивалентные преобразования.
- •36. Приведение дизъюнктивной нормальной формы к совершенной дизъюнктивной нормальной форме.
- •37. Замкнутые классы. Свойства замыкания.
- •38. Класс функций, сохраняющих значение 0.
- •39. Класс функций, сохраняющих значение 1.
- •40. Принцип двойственности. Класс самодвойственных функций.
- •41. Класс монотонных функций.
- •42. Класс линейных функций.
- •43. Алгебра Жегалкина. Полином Жегалкина.
- •44. Полином Жегалкина. Теорема.
- •45. Полнота.
- •46. Лемма о немонотонных функциях.
- •47. Лемма о нелинейных функциях.
- •48. Функциональная полнота. Первая теорема о функциональной полноте.
- •49. Функциональная полнота. Теорема Поста.
- •50. Логические исчисления.
- •51. Высказывания. Формулы.
- •52. Интерпретация формулы. Теорема.
- •53. Логическое следование и логическая эквивалентность.
- •54. Логические эквивалентности. Доказательство.
- •55. Исчисление высказываний.
- •56. Понятие предиката.
- •57. Понятие квантора. Квантор существования. Квантор всеобщности.
- •58. Исчисление предикатов.
- •59. Аксиомы исчисления предикатов. Правила логического вывода.
- •60. Графы. Типы задач теории графов.
- •61. Графы. Основные определения.
- •62. Способы представления графов.
- •63. Идентификация графов, заданных своими представлениями.
- •64. Обходы графов.
- •65. Степени вершин графа.
- •66. Операции с частями графа.
- •67. Маршруты, цепи, циклы.
- •68. Связные компоненты графа.
- •69. Расстояния в графе.
- •70. Диаметр, радиус, центр графа.
- •71. Произведение графов.
- •72. Прямое произведение графов.
- •73. Эйлеровы циклы.
- •74. Теорема Эйлера.
- •75. Эйлеровы цепи.
- •76. Гамильтоновы циклы.
- •77. Некоторые классы графов и их частей. Дерево и лес.
- •78. Концевые вершины и ребра.
- •82. Цикломатическое число графа.
- •83. Ориентированные графы. Пути и циклы в ориентированном графе.
- •86.Деревья
- •49.Функциональная полнота. Теорема Поста
- •94. Блок-схемы алгоритмов
- •95.Машины Тьюринга. Основные определения.Машина
- •96.Машины Тьюринга.Сложение
- •96.Машины Тьюринга.Копирование
- •80.Типы вершин
- •84.Начальные и конечные вершины. Ранги вершин
- •90. Бінарне дерево
- •79. Дерево с корнем. Ветви.
- •81. Центры деревьев. Теорема.
- •85. Отношение достижимости. Базисный граф
- •88.Способы представления деревьев
9. Генерация всех подмножеств универсума. Алгоритм генерации всех подмножеств данного множества.
Генерация всех подмножеств универсумов
В алгоритмах часто бывает необходимо рассмотреть все подмножества заданного множества.
В памяти ЭВМ целые числа представляются кодами в двоичной системе счисления, при чем 2k – 1 задается последовательностью из 1111111…11(k-раз)
Двоичное представление целых чисел дает возможность сгенерировать все подмножества универсума.
Алгоритм генерации всех подмножеств данного множества.
Вход: n – мощность множества
Выход: последовательность колов подмножеств
for i from 0 to 2n – 1 do
yield i
end
Алгоритм выдает 2n различных целых чисел, т.е. 2n различных двоичных кодов.
С увеличением числа n, увеличивается количество двоичных разрядов необходимых для представления этого числа.
Недостаток этого алгоритма заключается в том, что порядок генерации подмножеств никак не связан с их составом.
Такое состояние(положение) не всегда удобно при рассмотрении переборных задач, наиболее удобным является случай, когда очередное рассматриваемое подмножество не сильно отличается по набору элементов от предыдущего, потому что в этом случае возможно использование информации, полученной на предыдущем шаге. несильное отличие в рассматриваемых подмножествах позволяют ускорить процесс перебора вариантов решения.
10. Алгоритм построения бинарного кода Грея.
Алгоритм генерирует все подмножества n – элементного множества, при чем каждое следующее подмножество получается из предыдущего путем добавления или удаления одного элемента.
Вход: n – мощность множества
Выход: последовательность подмножеств
В:array [1..n] of 0..1
for i from 1 to n o
B[i]=0
end for
yield B
for i from 1 to 2n – 1 do
p=Q(i)
B[p]=1-B[p]
yield B
end for/
proc Q(i)
q:=1 i:=i
while j=четное do
j=j/2; q:=q+1
endwhile
return q
endproc.
Тестирование алгоритма
n=3
i |
P |
B |
|
|
|
1 |
1 |
001 |
2 |
2 |
011 |
3 |
1 |
010 |
4 |
3 |
110 |
5 |
1 |
111 |
6 |
2 |
101 |
7 |
1 |
100 |
11. Представление множеств упорядоченными списками.
Представление множеств в виде битовых шкал не является эффективным с точки зрения экономии памяти.
Во избежание трудностей множество удобно представлять в виде списков элементов.
Поэтому для представления множеств можно использовать списки элементов.
Список элементов задается записью с 2 полями: одно из которых является информационным, а второе – поле указателей.
elem = record
i:=info
n:=elem
info |
|
Петров |
|
Иванов |
|
|
|
nil |
|
Если элементы в списке упорядочены, то трудоемкость операций над множествами значительно снижается.
Эффект реализации операций над множествами, представленными упорядоченными списками, основан на алгоритме слияния.
Алгоритм слияния просматривает параллельно 2 множества. На каждом шаге продвижение происходит на том множестве, в котором элемент оказываются меньшими.