Содержание
Благодарности
Об этой книге
Торговые марки
Форум этой книги
Об авторе
Об иллюстрации на обложке
От издательства
Введение
Почему именно Python
Что такое классическая задача программирования
Какие задачи представлены в этой книге
Для кого эта книга
Версии Python, хранилище исходного кода и аннотации типов
Никакой графики и пользовательских интерфейсов — только стандартная библиотека
Книги этой серии
Глава 1. Простые задачи
1.1. Ряд Фибоначчи
1.1.1. Первый вариант рекурсии
1.1.2. Использование базовых случаев
1.1.3. Спасение — в мемоизации
1.1.4. Автоматическая мемоизация
1.1.5. Будьте проще, Фибоначчи!
1.1.6. Генерация чисел Фибоначчи с помощью генератора
1.2. Простейшее сжатие
1.3. Невскрываемое шифрование
1.3.1. Получение данных в заданной последовательности
1.3.2. Шифрование и дешифрование
1.4. Вычисление числа π
1.5. Ханойские башни
1.5.1. Моделирование башен
1.5.2. Решение задачи о ханойских башнях
1.6. Реальные приложения
1.7. Упражнения
Глава 2. Задачи поиска
2.1. Поиск ДНК
2.1.1. Хранение ДНК
2.1.2. Линейный поиск
2.1.3. Бинарный поиск
2.1.4. Параметризованный пример
2.2. Прохождение лабиринта
2.2.1. Создание случайного лабиринта
2.2.2. Мелкие детали лабиринта
2.2.3. Поиск в глубину
2.2.4. Поиск в ширину
2.2.5. Поиск по алгоритму A*
2.3. Миссионеры и людоеды
2.3.1. Представление задачи
2.3.2. Решение
2.4. Реальные приложения
2.5. Упражнения
Глава 3. Задачи с ограничениями
3.1. Построение структуры для задачи с ограничениями
3.2. Задача раскраски карты Австралии
3.3. Задача восьми ферзей
3.4. Поиск слова
3.5. SEND + MORE = MONEY
3.6. Размещение элементов на печатной плате
3.7. Реальные приложения
3.8. Упражнения
Глава 4. Графовые задачи
4.1. Карта как граф
4.2. Построение графовой структуры
4.2.1. Работа с Edge и Graph
4.3. Поиск кратчайшего пути
4.3.1. Пересмотр алгоритма поиска в ширину
4.4. Минимизация затрат на построение сети
4.4.1. Работа с весами
4.4.2. Поиск минимального связующего дерева
4.5. Поиск кратчайших путей во взвешенном графе
4.5.1. Алгоритм Дейкстры
4.6. Реальные приложения
4.7. Упражнения
Глава 5. Генетические алгоритмы
5.1. Немного биологической теории
5.2. Обобщенный генетический алгоритм
5.3. Примитивный тест
5.4. SEND + MORE = MONEY, улучшенный вариант
5.5. Оптимизация сжатия списка
5.6. Проблемы генетических алгоритмов
5.7. Реальные приложения
5.8. Упражнения
Глава 6. Кластеризация методом k-средних
6.1. Предварительные сведения
6.2. Алгоритм кластеризации k-средних
6.3. Кластеризация губернаторов по возрасту и долготе штата
6.4. Кластеризация альбомов Майкла Джексона по длительности
6.5. Проблемы и расширения кластеризации методом k-средних
6.6. Реальные приложения
6.7. Упражнения
Глава 7. Простейшие нейронные сети
7.1. В основе — биология?
7.2. Искусственные нейронные сети
7.2.1. Нейроны
7.2.2. Слои
7.2.3. Обратное распространение
7.2.4. Ситуация в целом
7.3. Предварительные замечания
7.3.1. Скалярное произведение
7.3.2. Функция активации
7.4. Построение сети
7.4.1. Реализация нейронов
7.4.2. Реализация слоев
7.4.3. Реализация сети
7.5. Задачи классификации
7.5.1. Нормализация данных
7.5.2. Классический набор данных радужной оболочки
7.5.3. Классификация вина
7.6. Повышение скорости работы нейронной сети
7.7. Проблемы и расширения нейронных сетей
7.8. Реальные приложения
7.9. Упражнения
Глава 8. Состязательный поиск
8.1. Основные компоненты настольной игры
8.2. Крестики-нолики
8.2.1. Управление состоянием игры в крестики-нолики
8.2.2. Минимакс
8.2.3. Тестирование минимакса для игры в крестики-нолики
8.2.4. Разработка ИИ для игры в крестики-нолики
8.3. Connect Four
8.3.1. Подключите четыре игровых автомата
8.3.2. ИИ для Connect Four
8.3.3. Улучшение минимакса с помощью альфа-бета-отсечения
8.4. Другие улучшения минимакса
8.5. Реальные приложения
8.6. Упражнения
Глава 9. Другие задачи
9.1. Задача о рюкзаке
9.2. Задача коммивояжера
9.2.1. Наивный подход
9.2.2. Переходим на следующий уровень
9.3. Мнемоника для телефонных номеров
9.4. Реальные приложения
9.5. Упражнения
Приложение A. Глоссарий
Приложение Б. Дополнительные ресурсы
Б.1. Python
Б.2. Алгоритмы и структуры данных
Б.3. Искусственный интеллект
Б.4. Функциональное программирование
Б.5. Полезные проекты с открытым исходным кодом для машинного обучения
Приложение В. Коротко об аннотациях типов
В.1. Что такое аннотации типов
В.2. Как выглядят аннотации типа
В.3. Почему полезны аннотации типов
В.4. Каковы недостатки аннотаций типов
В.5. Источники дополнительной информации
Релиз издания 2020 года
Дэвид Копец | Классические задачи Computer Science на языке Python (2020) [PDF]