Совершенный алгоритм Рафгарден Т.Совершенный алгоритм купитьСовершенный алгоритм. Графовые алгоритмы и структуры данныхСовершенный алгоритм. Основы Рафгарден Т.Совершенный алгоритм. Основы купить
Совершенный алгоритм
Совершенный алгоритм Рафгарден Т.
Совершенный алгоритм купить
Совершенный алгоритм. Графовые алгоритмы и структуры данных
Совершенный алгоритм. Основы Рафгарден Т.
Совершенный алгоритм. Основы купить

Совершенный алгоритм. Основы, Рафгарден Т.

499 грн.

Артикул: pit191 Категория: Метка:

Описание

Здесь можно купить: Совершенный алгоритм. Основы, Рафгарден Т. книга

Издательство — Питер

Язык — русский

Обложка — Мягкая обложка

Год издания — 2019

Количество страниц — 256

ISBN — 978-5-4461-0907-4

Бумага — белая, офсетная

О книге Совершенный алгоритм. Основы, Рафгарден Т.

Алгоритмы — это сердце и душа computer science. Без них не обойтись, они есть везде — от сетевой маршрутизации и расчетов по геномике до криптографии и машинного обучения. «Совершенный алгоритм» превратит вас в настоящего профи, который будет ставить задачи и мастерски их решать как в жизни, так и на собеседовании при приеме на работу в любую IT-компанию. В этой книге Тим Рафгарден — гуру алгоритмов — расскажет об асимптотическом анализе, нотации большое-О, алгоритмах «разделяй и властвуй», рандомизации, сортировки и отбора.Книга «Совершенный алгоритм» адресована тем у кого уже есть опыт программирования. Вы перейдете на новый уровень, чтобы увидеть общую картину, разобраться в низкоуровневых концепциях и математических нюансах. Познакомиться с дополнительными материалами и видеороликами автора (на английском языке) можно на сайтеwww.algorithmsilluminated.org

Совершенный алгоритм. Основы, Рафгарден Т. оглавление

Предисловие

О чем эти книги

Навыки, которые вы приобретете

В чем особенность этой книги

Для кого эта книга?

Дополнительные ресурсы

Благодарности

Глава 1. Введение

1. Зачем изучать алгоритмы?

2. Целочисленное умножение

2.1. Задачи и решения

2.2. Задача целочисленного умножения

2.3. Алгоритм начальной школы

2.4. Анализ числа операций

2.5. Можно ли добиться лучшего?

3. Умножение Карацубы

3.1. Конкретный пример

3.2. Рекурсивный алгоритм

3.3. Умножение Карацубы

4. Алгоритм MergeSort

4.1. Актуальность

4.2. Сортировка

71.4.3. Пример

4.4. Псевдокод

4.5. Подпрограмма Merge

5. Анализ алгоритма MergeSort

5.1. Время исполнения подпрограммы Merge

5.2. Время исполнения алгоритма MergeSort

5.3. Доказательство теоремы 1.2

5.4. Ответы на тестовые задания 1.1–1.2

Ответ на тестовое задание 1.1

Ответ на тестовое задание 1.2

6. Основные принципы анализа алгоритмов

6.1. Принцип № 1: анализ наихудшего случая

6.2. Принцип № 2: анализ значимых деталей

6.3. Принцип № 3: асимптотический анализ

6.4. Что такое «быстрый» алгоритм?

Задачи на закрепление материала

Задача повышенной сложности

Задача по программированию

Глава 2. Асимптотические обозначения

1. Отправная точка

1.1. Актуальность

1.2. Высокоуровневая идея

1.3. Четыре примера

1.4. Решения тестовых заданий 2.1–2.4

2. Обозначение О-большое

2.1. Определение на русском языке

2.2. Иллюстрированное определение

2.3. Математическое определение

3. Два простых примера

3.1. Для многочленов степени k О-большое является O (nk)

3.2. Для многочленов степени k О-большим не является O (nk −1)

8

2.4. Обозначение Омега-большое и Тета-большое

4.1. Обозначение Омега-большое

4.2. Обозначение Тета-большое

4.3. Обозначение о-малое

4.4. Откуда взялось обозначение?

4.5. Решение тестового задания 2.5

5. Дополнительные примеры

5.1. Добавление константы к экспоненте

5.2. Умножение экспоненты на константу

5.3. Максимум против суммы

Задачи на закрепление материала

Глава 3. Алгоритмы «разделяй и властвуй»

1. Парадигма «разделяй и властвуй»

2. Подсчет инверсий за время O (n log n)

2.1. Задача

2.2. Пример

2.3. Совместная фильтрация

2.4. Поиск полным перебором

2.5. Подход «разделяй и властвуй»

2.6. Высокоуровневый алгоритм

2.7. Ключевая идея: задействовать алгоритм MergeSort

2.8. К вопросу о подпрограмме Merge

2.9. Подпрограмма Merge и разделенные инверсии

2

Подпрограмма Merge-CountSplitlnv

2

Корректность

2

Время исполнения

2

Решения тестовых заданий 3.1 – 3.2

3. Умножения матриц по алгоритму Штрассена

3.1. Умножение матриц

3.2. Пример (n = 2)

3.3. Простой алгоритм

93.3.4. Подход «разделяй и властвуй»

3.5. Экономия времени на рекурсивном вызове

3.6. Детали

3.7. Решение тестового задания 3.3

*3.4. Алгоритм со временем O (n log n) для ближайшей пары

4.1. Задача

4.2. Разминка: одномерный случай

4.3. Предварительная обработка

4.4. Подход «разделяй и властвуй»

4.5. Тонкая настройка

4.6. Подпрограмма ClosestSplitPair

4.7. Правильность

4.8. Доказательство леммы 3.3 (a)

4.9. Доказательство леммы 3.3 (b)

4

Решение тестового задания 3.4

Задача на закрепление материала

Задачи повышенной сложности

Задачи по программированию

Глава 4. Основной метод

1. К вопросу о целочисленном умножении

1.1. Алгоритм RecIntMult

1.2. Алгоритм Karatsuba

1.3. Сравнение рекуррентных соотношений

2. Формулировка

2.1 Стандартные рекуррентные соотношения

2.2. Формулировка и обсуждение основного метода

3. Шесть примеров

3.1. К вопросу об алгоритме MergeSort

3.2. Двоичный поиск

3.3. Рекурсивное целочисленное умножение

3.4. Умножение Карацубы

10

4.3.5. Умножение матриц

3.6. Фиктивное рекуррентное соотношение

3.7. Решения тестовых заданий 4.2–4.3

*4.4. Доказательство основного метода

4.1. Преамбула

4.2. К вопросу о деревьях рекурсии

4.3. Работа, выполняемая на одном уровне

4.4. Суммирование уровней

4.5. Добро против зла: потребность в трех случаях

4.6. Предсказание границ времени работы

4.7. Заключительные расчеты: случай 1

4.8. Отклонение: геометрический ряд

4.9. Заключительные вычисления: случаи 2 и 3

4

Решения тестовых заданий 4.4–4.5

Задачи на закрепление материала

Задача повышенной сложности

Глава 5. Алгоритм QuickSort

1. Обзор

1.1. Сортировка

1.2. Разделение вокруг опорного элемента

1.3. Высокоуровневое описание

1.4. Забегая вперед

2. Разделение массива вокруг опорного элемента

2.1. Легкий выход из положения

2.2. Реализация на том же месте: высокоуровневый план

2.3. Пример

2.4. Псевдокод Partition

2.5. Псевдокод алгоритма Quicksort

3. Важность хороших опорных элементов

3.1. Наивная реализация подпрограммы ChoosePivot

115.3.2. Избыточная реализация ChoosePivot

3.3. Решения тестовых заданий 5.1– 5.2

4. Рандомизированный алгоритм Quicksort

4.1. Рандомизированная реализация подпрограммы ChoosePivot

4.2. Время работы рандомизированного алгоритма Quicksort

4.3. Интуитивное понимание: чем хороши случайные опорные элементы?

*5.5. Анализ рандомизированного Quicksort

5.1. Предварительные сведения

5.2. Схема декомпозиции

5.3. Применение схемы

5.4. Вычисление вероятностей сравнения

5.5. Заключительные вычисления

5.6. Решение тестового задания 5.3

*5.6. Сортировка требует Ω(n log n) сравнений

6.1. Алгоритмы сортировки на основе сравнения

6.2. Более быстрая сортировка при более строгих допущениях

6.3. Доказательство теоремы 5.5

Задачи на закрепление материала

Задача повышенной сложности

Задачи по программированию

Глава 6. Линейный выбор

1. Алгоритм RSelect

1.1. Задача выбора

1.2. Сведение к задаче сортировки

1.3. Подход «разделяй и властвуй»

1.4. Псевдокод для алгоритма RSelect

1.5. Время работы алгоритма RSelect

1.6. Решение тестовых заданий 6.1–6.2

Решение тестового задания 6.1

Решение тестового задания 6.2

12

*6.2. Анализ алгоритма RSelect

2.1. Отслеживание прогресса посредством фаз

2.2. Сведение к задаче подбрасывания монеты

2.3. Соединяем все вместе

*6.3. Алгоритм DSelect

3.1. Гениальная идея: медиана медиан

3.2. Псевдокод для алгоритма DSelect

3.3. Понимание алгоритма DSelect

3.4. Время работы алгоритма DSelect

*6.4. Анализ алгоритма DSelect

4.1. Работа вне рекурсивных вызовов

4.2. Грубое рекуррентное соотношение

4.3. Лемма 30–70

4.4. Решение рекуррентного соотношения

4.5. Метод догадок и проверок

Задачи на закрепление материала

Задачи повышенной сложности

Задачи по программированию

Приложения

Приложение A. Краткий обзор доказательств по индукции

A.1. Шаблон для доказательств по индукции

A.2. Пример: замкнутая формула

A.3. Пример: размер полного двоичного дерева

Приложение Б. Краткий обзор дискретной вероятности

Б.1. Выборочные пространства

Б.2. События

Б.3. Случайные величины

Б.4. Математическое ожидание

Б.5. Линейность математического ожидания

Б.6. Пример: распределение нагрузки

Также вы можете оставить вопрос или отзыв о книге: Совершенный алгоритм. Основы, Рафгарден Т.

Отзывы

Отзывов пока нет.

Будьте первым, кто оставил отзыв на “Совершенный алгоритм. Основы, Рафгарден Т.”

Ваш e-mail не будет опубликован. Обязательные поля помечены *