Впечатление о книге — Грокаем алгоритмы — Адитьи Бхаргавы

Книга Грокаем алгоритмы Адитьи Бхаргавы

Сразу хочу поделиться мыслями:

  1. это книга рассчитана больше на неискушенных людей, у которых почти нету или мало опыта в программировании и алгоритмах (таких как сортировка, поиск оптимальных путей)
  2. тем не менее, она здорово расширяет кругозор в подобных алгоритмах и некоторых процессах, на которых построены алгоритмы известных технологий, таких как поиск в интернете или рекомендательные системы
  3. так же, издание дает пищу для размышления по поводу современных алгоритмов, машинного обучения и советует изучать определенные технологии для дальнейшего развития

Ниже приведены, освещенные в этом труде, понятия, алгоритмы и технологии

  • Бинарный поиск (в том числе в сравнении с обычным поиском перебором) и массивы. Хотя массив поиска должен быть отсортированным чтобы им пользоваться
  • О-большое — порядок времени работы алгоритма. Важное понятие для оценки эффективности (скорости работы) алгоритмов или сравнения разных алгоритмов
  • Задача о коммивояжере (как пример задачи, которую очень тяжело выполнить точно)
  • Связанные списки, как альтернативный массивам тип данных
  • Сортировка выбором
  • Рекурсия и стек (стек вызовов)
  • Быстрая сортировка (используется понятие алгоритма «Разделяй и властвуй» и рекурсия)
  • Хеши, Хеш-таблицы, Хеш-функции
  • Графы, Поиск в ширину для описка кратчайшего пути по графу (когда весов у ребер нету)
  • Алгоритм Дейкстры для поиска наиболее выгодного (быстрого) пути по графу (когда весы у ребер появляются)
  • Жадные алгоритмы, как быстрые, но приближенного решения сверх-сложных задач (NP-полных)
  • Множества
  • Динамическое программирование, как метод решения сложных задач с помощью разбиения на более простые
  • Шутливый Алгоритм Фейнмана (1 — сформулировать задачу, 2 — хорошенько подумать, 3 — записать решение)
  • Алгоритм k-ближайших соседей, как распостраненный метод решения многих задач классификации (распределение по категориям) и регрессии (прогнозирование ответа)
  • Извлечение признаков
  • Машинное обучение на примерах OCR, спам-фильтра, прогноза биржевых торгов

В последней главе книги вскользь (тезисно) касаются следующих тем

  • Возвращаемся к деревьям
  • Инвертированные индексы
  • Преобразование Фурье
  • Параллельные алгоритмы
  • MapRecude и распределенные алгоритмы
  • Фильтры Блума и HyperLogLog
  • Алгоритмы SHA и сравнение файлов
  • Алгоритм Диффи-Хеллмана
  • Линейное программирование

Вывод: книгу следует прочитать на начальном этапе ознакомления с современными алгоритмами или же для расширения кругозора