- •1. Основные понятия теории множеств.
- •2. Понятие вектора.
- •3. Понятие соответствия между множествами.
- •4. Понятие отображения множеств.
- •5. Классификация множеств по мощности. Понятие счетного множества. Понятие несчётного множества.
- •6. Понятие отношения. Свойства отношений. Отношение эквивалентности, отношение строгого порядка, отношение нестрогого порядка.
- •7. Понятие операции, ассоциативной операции, дистрибутивной операции. Понятие алгебры, алгебраической системы, модели. Понятие группоида, полугруппы, коммутативной полугруппы.
- •8. Понятие группы. Группа подстановок.
- •9.Понятие кольца. Кольцо вычетов.
- •10. Определение поля
- •11. Перестановки
- •12.Перестановки с повторениями
- •13. Понятие сочетания. Теорема о числе сочетаний из n элементов по k. Свойства сочетаний.
- •Свойства сочетаний
- •14. Понятие сочетания с повторениями. Теорема о числе сочетаний с повторениями.
- •15. Понятие размещения. Теорема о числе размещений.
- •16. Понятие композиции. Теорема о числе композиций n.
- •18. Понятие композиции. Теорема о числе композиций n из k частей при рi0.
- •19. Основные понятия и определения теории графов.
- •20. Способы хранения графов в памяти эвм.
- •21. Алгоритм поиска на графах (поиск в глубину).
- •22. Алгоритм поиска на графах (поиск в ширину).
- •23. Понятие сильной связности. Анализ сильной связности с помощью алгоритмов поиска на графах.
- •25. Сильная связность. Отношение на вершинах графа называется отношением сильной связности. Сильная связность — отношение эквивалентности. Рассмотрим транзитивность:
- •26. Понятие логической функции. Способы задания логических функций.
- •27. Булева алгебра. Основные свойства операций булевой алгебры. Понятие двойственной и самодвойственной логической функции.
- •28. Алгебра Жегалкина. Основные свойства операций алгебры Жегалкина.
- •29. Алгебра Жегалкина. Представление логических функций полиномом Жегалкина.
- •33. Минимизация логических функций методом Квайна.
- •34. Понятие функционально-полной системы логических функций
- •35. 36 Понятие замкнутого класса. Класс монотонных логических функций.Понятие замкнутого класса. Класс линейный логических функций..
- •37. Теорема о функциональной полноте в слабом смысле.
- •38. Понятие замкнутого класса. Класс функций сохраняющих 0. Класс функций сохраняющих 1.
- •39. Понятие замкнутого класса. Класс самодвойственных функций.
- •40. Теорема о функциональной полноте.
21. Алгоритм поиска на графах (поиск в глубину).
Поиск в глубину (DFS – Depth First Search) – идея этого метода – идти вперед в неисследованную область, пока это возможно, если же вокруг все исследовано, отступить на шаг назад и искать новые возможности для продвижения вперед.
Обход начинается с посещения заданной стартовой вершины a, которая становится активной и единственной открытой вершиной. Затем выбирается инцидентное вершине a ребро (a,y) и посещается вершину y. Она становится открытой и активной. Если все ребра, инцидентные активной вершине x, уже исследованы, она превращается в закрытую. В противном случае выбирается одно из неисследованных ребер (x,y), это ребро исследуется. Если вершина y новая, то она посещается и превращается в открытую.
При поиске в глубину в качестве активной выбирается та из открытых вершин, которая была посещена последней. Для реализации такого правила выбора наиболее удобной структурой хранения множества открытых вершин является стек: открываемые вершины складываются в стек в том порядке, в каком они открываются, а в качестве активной выбирается последняя вершина.
Обозначим стек для открытых вершин через S. Через top(S) обозначается верхний элемент стека (т.е. последний элемент, добавленный к стеку).
Procedure DFS(a)
1. посетить вершину a
2. a => S
3. while S≠Ø do
4. x=top(S)
5. if имеется неисследованное ребро (x,y) then исследовать ребро (x,y)
6. if вершина y новая
7. then посетить вершину y
8. y => S
9. else удалить x из S
При поиске в глубину, если окрестности активной вершины x обнаруживается новая вершина y, то y помещается в стек и при следующем повторении цикла while станет активной. При этом x остается в стеке и через какое-то время снова станет активной. Иначе говоря, ребра, инцидентные вершине x, будут исследованы не подряд, а с перерывами.
В результате выполнения процедуры DFS будут посещены все вершины из компоненты связности, содержащие вершину a, и только они.
Время работы процедуры DFS есть O(m), где m – число ребер в компоненте связности, содержащей вершину a.
22. Алгоритм поиска на графах (поиск в ширину).
Поиск в ширину представляет собой один из простейших алгоритмов для обхода графа и является основой для многих важных алгоритмов для работы с графами.
Идея поиска в ширину состоит в том, чтобы посещать вершины в порядке их удаленности от некоторой заранее выбранной или указанной стартовой вершины a. Иначе говоря, сначала посещается сама вершина a, затем все вершины, смежные с a, то есть находящиеся от нее на расстоянии 1, затем вершины, находящиеся от a на расстоянии 2, и т.д.
Рассмотрим алгоритм поиска в ширину с заданной стартовой вершиной a. Вначале все вершины помечаются как новые. Первой посещается вершина a, она становится единственной открытой вершиной. В дальнейшем каждый очередной шаг начинается с выбора некоторой открытой вершины x. Эта вершина становится активной. Далее исследуются ребра, инцидентные активной вершине. Если такое ребро соединяет вершину x с новой вершиной y, то вершина y посещается и превращается в открытую. Когда все ребра, инцидентные активной вершине, исследованы, она перестает быть активной и становится закрытой. После этого выбирается новая активная вершина, и описанные действия повторяются. Процесс заканчивается, когда множество открытых вершин становится пустым.
Основная особенность поиска в ширину состоит в том, что в качестве активной вершины выбирается та из открытых, которая была посещена раньше других. Именно этим обеспечивается главное свойство поиска в ширину: чем ближе вершина к старту, тем раньше она будет посещена. Для реализации такого правила выбора активной вершины удобно использовать для хранения множества открытых вершин очередь – когда новая вершина становится открытой, она добавляется в конец очереди, а активная выбирается в ее начале.
Опишем процедуру поиска в ширину (BFS – Breadth First Search) из заданной стартовой вершины a. V(x) – множество всех вершин, смежных с вершиной x. Q – очередь открытых вершин. Предполагается, что при посещении вершины она помечается как посещенная и эта пометка означает, что вершина уже не является новой.
Procedure BFS(a)
1. посетить вершину a
2. a => Q
3. while Q!=Ø do
4. x <= Q
5. for y прин V(x) do
6. исследовать ребро (x,y)
7. if вершина y новая then посетить вершину y
8. y => Q
В результате выполнения процедуры BFS будут посещены все вершины из компоненты связности, содержащие вершину a, и только они.
Время работы процедуры BFS есть O(m), где m – число ребер в компоненте связности, содержащей вершину a.