Слайд 2Введение
Дискретная математика - это часть математики, спецификой которой является дискретность - антипод
![Введение Дискретная математика - это часть математики, спецификой которой является дискретность -](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/837261/slide-1.jpg)
непрерывности. Она включает: теорию чисел, алгебру, математическую логику, теорию множеств, комбинаторику, теорию графов и сетей, теорию алгоритмов, формальные грамматики, теорию игр, теорию кодирования и т.д.
Слайд 3Теория множеств
Создатель теории множеств немецкий математик Георг Кантор (1845 – 1918) писал:
![Теория множеств Создатель теории множеств немецкий математик Георг Кантор (1845 – 1918)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/837261/slide-2.jpg)
«Под многообразием или множеством я понимаю вообще всякое многое, которое можно мыслить как единое, т.е. всякую совокупность определенных элементов, которая может быть связана в одно целое с помощью некоторого закона».
Слайд 4Кратко это формулируют так: «Множество — есть многое, мыслимое нами как единое».
![Кратко это формулируют так: «Множество — есть многое, мыслимое нами как единое».](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/837261/slide-3.jpg)
Но это не определение. Множество — одно из основных математических понятий, оно не определяется через другие. Мы должны его чувствовать интуитивно.
Группа студентов, спортивная команда, стая птиц, букет цветов, колония микробов — различные примеры множеств. Но множества могут состоять и из совершенно разнородных предметов.
Слайд 15Каждый объект (сущность) характеризуется упорядоченной последовательностью значений реквизитов (кортежем). Каждый реквизит принимает
![Каждый объект (сущность) характеризуется упорядоченной последовательностью значений реквизитов (кортежем). Каждый реквизит принимает](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/837261/slide-14.jpg)
значение из определенного множества - домена. Таким образом, объект определен на декартовом произведении доменов.
Введенные операции над множествами обладают следующими свойствами, которые доказываются взаимным включением.
Слайд 25Работа с множествами в Python
Множество в Python – неупорядоченная последовательность уникальных элементов.Рассмотрим
![Работа с множествами в Python Множество в Python – неупорядоченная последовательность уникальных](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/837261/slide-24.jpg)
примеры задания множества в Python (рис. 8).
Рис. 8. Задание множеств.
Слайд 26После выполнения фрагмента кода убеждаемся, что множества содержат только уникальные элементы.
Приведем примеры
![После выполнения фрагмента кода убеждаемся, что множества содержат только уникальные элементы. Приведем](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/837261/slide-25.jpg)
создания пустого множества (рис. 9).
Рис. 9. Варианты создания пустого множества
Сразу же возникает вопрос, как добавить элемент в множество. Напомню, что множества в языке Python являются объектами и, следовательно, обладают методами.
Слайд 27
Рис. 10. Добавление элемента к множеству
Итак, для добавления элемента к множеству служит
![Рис. 10. Добавление элемента к множеству Итак, для добавления элемента к множеству](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/837261/slide-26.jpg)
метод add(<элемент>). Рассмотрите пример. Объясните результат работы.
Рассмотрим теперь удаление элемента из множества.
Для этой цели предусмотрены два метода – remove(<элемент>) (рис. 11, 12) и discard(<элемент>) (рис. 13, 14).
Слайд 28
Рис. 11 Удаление из множества наличествующего в нем элемента
Выполните фрагмент кода. Убедитесь,
![Рис. 11 Удаление из множества наличествующего в нем элемента Выполните фрагмент кода.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/837261/slide-27.jpg)
что элемент 7 будет удален.
Рис. 12. Попытка удаления из множества отсутствующего в нем элемента
В этом случае получаем аварийное сообщение.
Слайд 29
Рис. 13. Удаление из множества наличествующего в нем элемента
Выполните фрагмент кода. Убедитесь,
![Рис. 13. Удаление из множества наличествующего в нем элемента Выполните фрагмент кода.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/837261/slide-28.jpg)
что элемент 7 будет удален.
Рис. 14. Попытка удаления из множества отсутствующего в нем элемента
В этом случае просто ничего не происходит.
Слайд 30Рассмотрим создание копии множества. Обратим внимание на типичную ошибку.
Рис. 15. Неудачная попытка
![Рассмотрим создание копии множества. Обратим внимание на типичную ошибку. Рис. 15. Неудачная](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/837261/slide-29.jpg)
копирования множества
Убедитесь, что действия над копией (множеством t) приводят к изменению оригинала (множества s).
Для корректного копирования множеств надо использовать метод copy() (рис. 16).
Слайд 31
Рис. 16. Корректное копирование множества
Для удаления элементов множества служит метод clear() (рис.
![Рис. 16. Корректное копирование множества Для удаления элементов множества служит метод clear()](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/837261/slide-30.jpg)
17).
Рис. 17. Очистка множества
Слайд 32Для определения количества элементов множества служит функция len(<множество>) (рис. 18).
Рис. 18. Определение
![Для определения количества элементов множества служит функция len( ) (рис. 18). Рис.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/837261/slide-31.jpg)
количества элементов множества
Обратите внимание. Данная функция не является методом объекта типа множество!
Слайд 33Мы можем в цикле перебрать все элементы множества (рис. 19).
Рис. 19. Циклический
![Мы можем в цикле перебрать все элементы множества (рис. 19). Рис. 19.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/837261/slide-32.jpg)
перебор элементов множества
Мы рассмотрели «технические» операции над множествами. Перейдем к рассмотрению теоретико-множественных операций
Слайд 34Эти операции могут выполняться с помощью «традиционных» функций и с помощью методов.
Объединение
![Эти операции могут выполняться с помощью «традиционных» функций и с помощью методов.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/837261/slide-33.jpg)
множеств (рис. 20).
Рис. 20. Объединение множеств
Объединение множеств выполняется с помощью операции “|” и метода union(<множество>). При этом множества – операнды p и q не изменяются.
Слайд 35Рассмотрим операцию добавления элементов одного множества в другое (рис. 21, 22).
Рис. 21.
![Рассмотрим операцию добавления элементов одного множества в другое (рис. 21, 22). Рис.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/837261/slide-34.jpg)
Добавление элементов множества q в множество p (1 способ)
Рис. 22. Добавление элементов множества q в множество p (2 способ)
Слайд 36Пересечение множеств также выполняется двумя способами (рис. 23).
Рис. 23. Пересечение множеств
Пересечение множеств
![Пересечение множеств также выполняется двумя способами (рис. 23). Рис. 23. Пересечение множеств](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/837261/slide-35.jpg)
выполняется с помощью операции “&” и метода intersection(<множество>). При этом множества – операнды p и q не изменяются.
Рассмотрим еще два способа реализации пересечения множеств (рис. 24, 25).
Слайд 37
Рис. 24. Построение пересечения множеств (способ 1).
Рис. 25. Построение пересечения множеств (способ
![Рис. 24. Построение пересечения множеств (способ 1). Рис. 25. Построение пересечения множеств](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/837261/slide-36.jpg)
2).
Рассмотрим два способа построения разности множеств (рис. 26).
Слайд 38
Рис. 26. Разность множеств
Существуют еще два способа получить разность множеств - с
![Рис. 26. Разность множеств Существуют еще два способа получить разность множеств -](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/837261/slide-37.jpg)
помощью операции «-=» и метода difference_update(<множество>). Студенты смогут изучить их самостоятельно.
Такой же набор способов существует для получения симметрической разности.
Слайд 39
Рис. 27. Симметричная разность множеств
Существуют еще два способа получить симметричную разность множеств
![Рис. 27. Симметричная разность множеств Существуют еще два способа получить симметричную разность](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/837261/slide-38.jpg)
- с помощью операции «^=» и метода symmetric_difference_update(<множество>). Студенты смогут изучить их самостоятельно.
Рассмотрим операции сравнения множеств.
Слайд 40
Рис. 28 Проверка принадлежности элемента множеству
Рис. 29. Проверка равенства множеств
Рис. 30. Проверка
![Рис. 28 Проверка принадлежности элемента множеству Рис. 29. Проверка равенства множеств Рис.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/837261/slide-39.jpg)
того, что множество является подмножеством другого
/
Слайд 41В итоге рассмотренной операции возвращается True и в случае равенства множеств-операндов. При
![В итоге рассмотренной операции возвращается True и в случае равенства множеств-операндов. При](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/837261/slide-40.jpg)
использовании операции «<» d в случае равенства множеств возвращается False.
Операции «>=»,issuperset(<множество>), «>» предназначены для проверки включения второго множества-операнда в первое. Студенты могут изучить их самостоятельно.
Слайд 42Для проверки, является ли пересечение множеств пустым служит метод isdisjoint(<множество>) (рис. 30).
Рис.
![Для проверки, является ли пересечение множеств пустым служит метод isdisjoint( ) (рис.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/837261/slide-41.jpg)
31. Проверка наличия пустого пересечения множеств
Перечисление всех элементов множества часто неудобно или даже невозможно. Рассмотрим некоторые способы генерации множеств.