Дискретная математика для программистов, Хаггарти Р., 2003.
Элементарное введение в дискретную математику, без знания которой невозможно успешно заниматься информатикой и программированием. Ни одно из немногочисленных изданий по этой дисциплине, вышедших на русском языке, не читается с таким удовольствием и пользой. В доступной и весьма увлекательной форме автор рассказывает о фундаментальных понятиях дискретной математики — о логике, множествах, графах, отношениях и булевых функциях. Теория изложена кратко и иллюстрируется многочисленными простыми примерами, что делает её доступной даже школьнику. После каждой главы (начиная со второй) рассматривается приложение описанных методов к информатике.
Книга будет полезна студентам, изучающим курс дискретной математики, а также всем желающим проникнуть в технику написания и проверки корректности алгоритмов, включая программистов-практиков.
ЛОГИКА И ДОКАЗАТЕЛЬСТВО.
Логика необходима в любой формальной дисциплине и состоит из правил получения обоснованного вывода (заключения). Логику можно выделить из контекста тех дисциплин, в которых она используется, и изучать как отдельный раздел науки. Акцент в этой главе будет сделан именно на логике, лежащей в основе неоспоримых рас-суждений и доказательств.
Мы познакомимся с логикой высказываний, имеющей дело с истинностью (или ложностью) простых описательных утверждений, что можно рассматривать как короткое введение в логику предикатов. Скажем сразу, что предикатами принято называть утверждения, содержащие переменные величины. Кроме того, в этой главе описаны различные методы доказательств (прямое рассуждение, метод «от противного» и обратное рассуждение), снабженные простыми примерами проверки фактов о четных и нечетных числах, иллюстрирующими методологию рассуждений. Наконец, мы рассмотрим сильный метод доказательства, называемый методом математической индукции.
После упражнений, размещенных в конце главы, мы встретимся с первыми приложениями изучаемых методов к информатике. В них мы увидим, как логические методы доказательств используются при проверке корректности алгоритмов.
Содержание.
Указатель обозначений.
Предисловие.
Глава 1. Введение.
1.1. Моделирование.
1.2. Псевдокод.
Набор упражнений 1.
Краткое содержание главы.
Глава 2. Логика и доказательство.
2.1. Высказывания и логика.
2.2. Предикаты и кванторы.
2.3. Методы доказательств.
2.4. Математическая индукция.
Набор упражнений 2.
Краткое содержание главы.
Приложение. Корректность алгоритмов.
Глава 3. Теория множеств.
3.1. Множества и операции над ними.
3.2. Алгебра множеств.
3.3. Дальнейшие свойства множеств.
Набор упражнений 3.
Краткое содержание главы.
Приложение. Система с базой знаний.
Глава 4. Отношения.
4.1. Бинарные отношения.
4.2. Свойства отношений.
4.3. Отношения эквивалентности и частичного порядка.
Набор упражнений 4.
Краткое содержание главы.
Приложение. Системы управления балами данных.
Глава 5. Функции.
5.1. Обратные отношения и композиция отношений.
5.2. Функции.
5.3. Обратные функции и композиция функций.
5.4. Принцип Дирихле.
Набор упражнений 5.
Краткое содержание главы.
Приложение. Языки функционального программирования.
Глава 6. Комбинаторика.
6.1. Правила суммы и произведения.
6.2. Комбинаторные формулы.
6.3. Бином Ньютона.
Набор упражнений 6.
Краткое содержание главы.
Приложение. Эффективность алгоритмов.
Глава 7. Графы.
7.1. Графы и терминология.
7.2. Гамильтоновы графы.
7.3. Деревья.
Набор упражнений 7.
Краткое содержание главы.
Приложение. Сортировка и поиск.
Глава 8. Ориентированные графы.
8.1. Ориентированные графы.
8.2. Пути в орграфах.
8.3. Кратчайший путь.
Набор упражнений 8.
Краткое содержание главы.
Приложение. Коммуникационные сети.
Глава 9. Булева алгебра.
9.1. Булева алгебра.
9.2. Карта Карно.
9.3. Функциональные схемы.
Набор упражнений 9.
Краткое содержание главы.
Приложение. Проектирование 2-битного сумматора.
Решения упражнений.
Дополнение.
Д.1. Генератор случайных графов.
Д.1.1. Алгоритм построения случайного неориентированного графа.
Д.1.2. Алгоритм построения случайного ориентированного графа.
Д.1.3. Алгоритм построения случайного ориентированного бесконтурного графа.
Д.2. Связность в графах.
Д.2.1. Алгоритм Уоршелла, вычисляющий матрицу связности.
Д.2.2. Выделение компонент связности.
Д.3. Эйлеровы циклы.
Д.3.1. Алгоритм построения эйлерова цикла в графе.
Д.3.2. Алгоритм Терри.
Д.4. Операции над множествами.
Д.4.1. Объединение множеств.
Литература.
Предметный указатель.
Купить .
Теги: учебник по программированию :: программирование :: Хаггарти
Смотрите также учебники, книги и учебные материалы:
- Идеальный программист, Как стать профессионалом разработки ПО, Мартин Р., 2018
- Легкий способ выучить Python 3, Шоу З., 2019
- Язык программирования Python, практикум, Жуков Р.А., 2019
- Думай как программист, Креативный подход к созданию кода, C++ версия, Спрол А., 2018
- Стандартная библиотека Python 3, справочник с примерами, Хеллман Д., 2019
- Грокаем глубокое обучение, Траск Э., 2019
- Head First, Программирование для Android, Гриффитс Д., 2018
- Глубокое обучение, Погружение в мир нейронных сетей, Николенко С., Кадурин А., Архангельская Е., 2018