Адитья Бхаргава - Грокаем алгоритмы
Иллюстрированное пособие для программистов и любопытствующихНазвание: | Грокаем алгоритмы | |
Автор: | Адитья Бхаргава | |
Жанр: | Современные российские издания, Литература ХXI века (эпоха Глобализации экономики), Алгоритмы и структуры данных, Python | |
Изадано в серии: | Библиотека программиста | |
Издательство: | Питер | |
Год издания: | 2022 | |
ISBN: | 978-5-4461-0923-4 | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Грокаем алгоритмы"
Алгоритмы - это всего лишь пошаговые алгоритмы решения задач, и большинство таких задач уже были кем-то решены, протестированы и проверены. Можно, конечно, погрузится в глубокую философию гениального Кнута, изучить многостраничные фолианты с доказательствами и обоснованиями, но хотите ли вы тратить на это свое время? Откройте великолепно иллюстрированную книгу и вы сразу поймете, что алгоритмы - это просто. А грокать алгоритмы - это веселое и увлекательное занятие.
К этой книге применимы такие ключевые слова (теги) как: Искусство программирования, Обучение программированию, Просто о сложном, Эффективные алгоритмы
Читаем онлайн "Грокаем алгоритмы" (ознакомительный отрывок). [Страница - 4]
Что вы узнаете о решении задач
Вы освоите методы решения задач, которые вам сейчас, возможно, неизвестны. Примеры:• Если вы любите создавать видеоигры, вы можете написать систему на базе искусственного интеллекта, моделирующую действия пользователя с применением алгоритмов из теории графов.
• Вы узнаете, как построить рекомендательную систему на базе k ближайших соседей.
• Некоторые проблемы не решаются за разумное время! В части книги, посвященной NP-полноте задач, рассказано о том, как идентифицировать такие задачи и построить алгоритм для получения приближенного ответа.
А если брать шире, к концу этой книги вы освоите некоторые широко применяемые алгоритмы. После этого вы сможете воспользоваться новыми знаниями для изучения более специализированных алгоритмов из области искусственного интеллекта, баз данных и т.д. или взяться за решение более сложных задач в практической работе.
Что необходимо знать
Чтобы читать эту книгу, необходимо знать базовую алгебру. Например, возьмем следующую функцию: f (x) = x × 2. Чему равен результат f(5)? Если вы ответили «10» — читайте спокойно.
Кроме того, вам будет проще понять эту главу (и всю книгу), если вы владеете хотя бы одним языком программирования. Все приведенные примеры написаны на Python. Если вы не знаете ни одного языка программирования, но хотите изучить — выбирайте Python: это отличный язык для начинающих. Если вы уже знаете другой язык (скажем, Ruby) — все в порядке.
Бинарный поиск
Предположим, вы ищете фамилию человека в телефонной книге (какая древняя технология!). Она начинается с буквы «К». Конечно, можно начать с самого начала и перелистывать страницы, пока вы не доберетесь до буквы «К». Но скорее всего для ускорения поиска лучше раскрыть книгу на середине: ведь буква «К» должна находиться где-то ближе к середине телефонной книги.Или предположим, что вы ищете слово в словаре, и оно начинается с буквы «О». И снова лучше начать с середины.
Теперь допустим, что вы вводите свои данные при входе на Facebook. При этом Facebook необходимо проверить, есть ли у вас учетная запись на сайте. Для этого ваше имя пользователя нужно найти в базе данных. Допустим, вы выбрали себе имя пользователя «karlmageddon». Facebook может начать с буквы A и проверять все подряд, но разумнее будет начать с середины.
Перед нами типичная задача поиска. И во всех этих случаях для решения задачи можно применить один алгоритм: бинарный поиск.
Бинарный поиск — это алгоритм; на входе он получает отсортированный список элементов (позднее я объясню, почему он должен быть отсортирован). Если элемент, который вы ищете, присутствует в списке, то бинарный поиск возвращает ту позицию, в которой он был найден. В противном случае бинарный поиск возвращает null.
Например:
Ищем компанию в телефонной книге с применением бинарного поиска
Рассмотрим пример того, как работает бинарный поиск. Сыграем в простую игру: я загадал число от 1 до 100.
Вы должны отгадать мое число, использовав как можно меньше попыток. При каждой попытке я буду давать один из трех ответов: «мало», «много» или «угадал».
Предположим, вы начинаете перебирать все варианты подряд: 1, 2, 3, 4 …. Вот как это будет выглядеть.
Плохой способ угадать число
Это пример простого поиска (возможно, термин «тупой поиск» был бы уместнее). При каждой догадке исключается только одно число. Если я загадал число 99, то, чтобы добраться до него, потребуется 99 попыток!
Более эффективный поиск
Существует другой, более эффективный способ. Начнем с 50.
Слишком мало… но вы только что исключили половину чисел! Теперь вы знаете, что все числа 1–50 меньше загаданного. Следующая попытка: 75.
--">Книги схожие с «Грокаем алгоритмы» по жанру, серии, автору или названию:
Джулиан М. Бакнелл - Фундаментальные алгоритмы и структуры данных в Delphi Жанр: Учебники и самоучители по компьютеру Год издания: 2003 Серия: Программирование в delphi |
Эрик Мэтиз - Изучаем Python. Программирование игр, визуализация данных, веб-приложения Жанр: Интернет Серия: Библиотека программиста |
Роберт Сесил Мартин - Чистый Agile. Основы гибкости Жанр: Современные российские издания Год издания: 2020 Серия: Библиотека программиста |
Джеффри Фридл - Регулярные выражения. 2-е изд. Жанр: Литература ХXI века (эпоха Глобализации экономики) Год издания: 2003 Серия: Библиотека программиста |
Другие книги из серии «Библиотека программиста»:
Роберт Сесил Мартин - Чистый Agile. Основы гибкости Жанр: Современные российские издания Год издания: 2020 Серия: Библиотека программиста |
Уолтер Шилдс - SQL: быстрое погружение Жанр: Базы данных Год издания: 2022 Серия: Библиотека программиста |
Грант Бейлевельд, Джон Крон, Аглаэ Бассенс - Глубокое обучение в картинках. Визуальный гид по искусственному интеллекту Жанр: Искусственный интеллект Год издания: 2020 Серия: Библиотека программиста |
Яцек Галовиц - C++17 STL Стандартная библиотека шаблонов Жанр: Базы данных Год издания: 2018 Серия: Библиотека программиста |