Учебное пособие. Издание: 6-е, дополненное. — М.: МЦНМО, 2017. —
320 с. — ISBN 978-5-4439-0685-0.
Книга содержит задачи по программированию различной трудности.
Большинство задач приводятся с решениями. Цель книги — научить
основным методам построения корректных и быстрых алгоритмов.
Для учителей информатики, старшеклассников, студентов младших курсов высших учебных заведений. Пособие может быть использовано на кружковых и факультативных занятиях в общеобразовательных учреждениях, в школах с углублённым изучением математики и информатики, а также в иных целях, не противоречащих законодательству РФ.
Предыдущее издание книги вышло в 2014 г. Несколько замечаний вместо предисловия
Переменные, выражения, присваивания
Задачи без массивов
Массивы
Индуктивные функции (по А.Г. Кушниренко)
Порождение комбинаторных объектов
Размещения с повторениями
Перестановки
Подмножества
Разбиения
Коды Грея и аналогичные задачи
Несколько замечаний
Подсчёт количеств
Обход дерева. Перебор с возвратами
Ферзи, не бьющие друг друга: обход дерева позиций
Обход дерева в других задачах
Сортировка
Квадратичные алгоритмы
Алгоритмы порядка nlog n
Применения сортировки
Нижние оценки для числа сравнений при сортировке
Родственные сортировке задачи
Конечные автоматы и обработка текстов
Составные символы, комментарии и т.п.
Ввод чисел
Типы данных
Стеки
Очереди
Множества
Разные задачи
Рекурсия
Примеры рекурсивных программ
Рекурсивная обработка деревьев
Порождение комбинаторных объектов, перебор
Другие применения рекурсии
Как обойтись без рекурсии
Таблица значений (динамическое программирование)
Стек отложенных заданий
Более сложные случаи рекурсии
Разные алгоритмы на графах
Кратчайшие пути
Связные компоненты, поиск в глубину и ширину
Сети, потоки и разрезы
Сопоставление с образцом
Простейший пример
Повторения в образце - источник проблем
Вспомогательные утверждения
Алгоритм Кнута-Морриса-Пратта
Алгоритм Бойера-Мура
Алгоритм Рабина
Более сложные образцы и автоматы
Суффиксные деревья
Анализ игр
Примеры игр
Цена игры
Вычисление цены: полный обход
Альфа-бета-процедура
Ретроспективный анализ
Оптимальное кодирование
Коды
Неравенство Крафта-Макмиллана
Код Хаффмана
Код Шеннона-Фано
Представление множеств. Хеширование
Хеширование с открытой адресацией
Хеширование со списками 242
Деревья. Сбалансированные деревья
Представление множеств с помощью деревьев
Сбалансированные деревья
Контекстно-свободные грамматики
Общий алгоритм разбора
Метод рекурсивного спуска
Алгоритм разбора для LL(1)-грамматик
Синтаксический разбор слева направо (LR)
LR-процессы
LR(0)-грамматики
SLR(1)-грамматики
LR(1)-грамматики, LALR(1)-грамматики
Общие замечания о разных методах разбора Книги для чтения
Предметный указатель
Указатель имён
Для учителей информатики, старшеклассников, студентов младших курсов высших учебных заведений. Пособие может быть использовано на кружковых и факультативных занятиях в общеобразовательных учреждениях, в школах с углублённым изучением математики и информатики, а также в иных целях, не противоречащих законодательству РФ.
Предыдущее издание книги вышло в 2014 г. Несколько замечаний вместо предисловия
Переменные, выражения, присваивания
Задачи без массивов
Массивы
Индуктивные функции (по А.Г. Кушниренко)
Порождение комбинаторных объектов
Размещения с повторениями
Перестановки
Подмножества
Разбиения
Коды Грея и аналогичные задачи
Несколько замечаний
Подсчёт количеств
Обход дерева. Перебор с возвратами
Ферзи, не бьющие друг друга: обход дерева позиций
Обход дерева в других задачах
Сортировка
Квадратичные алгоритмы
Алгоритмы порядка nlog n
Применения сортировки
Нижние оценки для числа сравнений при сортировке
Родственные сортировке задачи
Конечные автоматы и обработка текстов
Составные символы, комментарии и т.п.
Ввод чисел
Типы данных
Стеки
Очереди
Множества
Разные задачи
Рекурсия
Примеры рекурсивных программ
Рекурсивная обработка деревьев
Порождение комбинаторных объектов, перебор
Другие применения рекурсии
Как обойтись без рекурсии
Таблица значений (динамическое программирование)
Стек отложенных заданий
Более сложные случаи рекурсии
Разные алгоритмы на графах
Кратчайшие пути
Связные компоненты, поиск в глубину и ширину
Сети, потоки и разрезы
Сопоставление с образцом
Простейший пример
Повторения в образце - источник проблем
Вспомогательные утверждения
Алгоритм Кнута-Морриса-Пратта
Алгоритм Бойера-Мура
Алгоритм Рабина
Более сложные образцы и автоматы
Суффиксные деревья
Анализ игр
Примеры игр
Цена игры
Вычисление цены: полный обход
Альфа-бета-процедура
Ретроспективный анализ
Оптимальное кодирование
Коды
Неравенство Крафта-Макмиллана
Код Хаффмана
Код Шеннона-Фано
Представление множеств. Хеширование
Хеширование с открытой адресацией
Хеширование со списками 242
Деревья. Сбалансированные деревья
Представление множеств с помощью деревьев
Сбалансированные деревья
Контекстно-свободные грамматики
Общий алгоритм разбора
Метод рекурсивного спуска
Алгоритм разбора для LL(1)-грамматик
Синтаксический разбор слева направо (LR)
LR-процессы
LR(0)-грамматики
SLR(1)-грамматики
LR(1)-грамматики, LALR(1)-грамматики
Общие замечания о разных методах разбора Книги для чтения
Предметный указатель
Указатель имён