Классические задачи Computer Science на языке Python

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Многие задачи в области Computer Science, которые на первый взгляд кажутся новыми или уникальными, на самом деле уходят корнями в классические алгоритмы, методы кодирования и принципы разработки. И устоявшиеся техники по-прежнему остаются лучшим способом решения таких задач! Научитесь писать оптимальный код для веб-разработки, обработки данных, машинного обучения и других актуальных сфер применения Python. Книга даст вам возможность глубже освоить язык Python, проверить себя на испытанных временем задачах, упражнениях и алгоритмах. Вам предстоит решать десятки заданий по программированию: от самых простых (например, найти элементы списка с помощью двоичной сортировки), до сложных (выполнить кластеризацию данных методом k-средних). Прорабатывая примеры, посвященные поиску, кластеризации, графам и пр., вы вспомните то, о чем успели позабыть и овладеете классическими приемами решения повседневных задач. В этой книге • Алгоритмы поиска. • Обобщенные технологии для графов. • Нейронные сети. • Генетические алгоритмы. • Состязательный поиск. • Использование аннотаций типов в описанных задачах.

Author(s): Дэвид Копец
Series: Библиотека программиста
Edition: 1
Publisher: Питер
Year: 2020

Language: Russian
Commentary: Vector PDF
Pages: 256
City: СПб.
Tags: Algorithms; Genetic Algorithms; Neural Networks; Data Structures; Python; Classification; Clustering; Encryption; Graph Algorithms; Textbook; Fibonacci Sequence; Memoization; Towers of Hanoi; Search Algorithms; Adversarial Search; Knapsack Problem; Traveling Salesman Problem; Version Control Systems

Титульный лист
Выходные данные
Краткое содержание
Оглавление
Посвящение
Предисловия
Благодарности
Об этой книге
Торговые марки
Форум этой книги
Об авторе
Об иллюстрации на обложке
От издательства
Введение
Почему именно 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. Вычисление числа p
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. Источники дополнительной информации