Найти в Дзене
Chara

Обзор книги "Грокаем алгоритмы 2 издание"

Алгоритмы - это пошаговые инструкции решения задач, большинство из которых уже были кем-то решены, протестированы и доказали свою эффективность. Второе издание "Грокаем алгоритмы" упрощает изучение, понимание и использование алгоритмов. В этой книге вы найдете понятные объяснения и десятки понятных примеров примеров кода и иллюстраций. В этой главе описывается об эффективности алгоритмов, бинарный поиск, его плюсы и минусы, а также как описывается время выполнения алгоритмы (О-большое). Все это иллюстрируются с помощью наглядных примеров, что делает их понимание проще. Ключевые темы: Базовые понятия алгоритмов, время выполнения, "О-большое" (Big O) для оценки эффективности алгоритмов. Как работает память. Объяснение массивов и связанных списков. Когда нужно использовать массив, а когда лучше воспользоваться связанным списком. В этой главе объясняются плюсы и минусы этих структур. Изучение первого алгоритма сортировки, так как для большинство алгоритмов работают только с отсортирован
Оглавление

Алгоритмы - это пошаговые инструкции решения задач, большинство из которых уже были кем-то решены, протестированы и доказали свою эффективность.

Второе издание "Грокаем алгоритмы" упрощает изучение, понимание и использование алгоритмов. В этой книге вы найдете понятные объяснения и десятки понятных примеров примеров кода и иллюстраций.

СОДЕРЖАНИЕ:

1. Знакомство с алгоритмами

В этой главе описывается об эффективности алгоритмов, бинарный поиск, его плюсы и минусы, а также как описывается время выполнения алгоритмы (О-большое). Все это иллюстрируются с помощью наглядных примеров, что делает их понимание проще.

Ключевые темы: Базовые понятия алгоритмов, время выполнения, "О-большое" (Big O) для оценки эффективности алгоритмов.

2. Сортировка выбором

Как работает память. Объяснение массивов и связанных списков. Когда нужно использовать массив, а когда лучше воспользоваться связанным списком. В этой главе объясняются плюсы и минусы этих структур. Изучение первого алгоритма сортировки, так как для большинство алгоритмов работают только с отсортированными структурами.

Ключевые темы: Сортировка, временная сложность, сравнение алгоритмов.

3. Рекурсия

Рекурсия помогает справляться со сложными задачами, деля их на более простые подзадачи. Автор раскрывает эту непростую концепцию на примере старого бабушкиного чемодана. Также простыми примерами объясняется стек.

Ключевые темы: Рекурсивные функции, стек вызовов, база рекурсии.

4. Быстрая сортировка

Стратегия "разделяй и властвуй"- первая общая стратегия, с которой автор вас знакомит.

Ключевые темы: Быстрая сортировка, принцип "разделяй и властвуй", временная сложность.

5. Хеш-таблицы

Хэш-таблицы — это мощная структура данных, которая позволяет быстро находить, добавлять и удалять элементы. В этой главе автор объясняет, как работают хэш-таблицы, и обсуждает их плюсы и применение в реальных задачах.

Ключевые темы: Хэш-функции, коллизии, применение хэш-таблиц.

6. Поиск в ширину

Автор наглядно объясняет структуру данных - графы, их виды и как его использовать для поиска кратчайшего пути.. Рассматривается алгоритм поиска в ширину и топологическая сортировка.

Ключевые темы: Графы, поиск в ширину, очереди.

7. Деревья

В этой главе разъясняется понятие дерева и чем отличается от графов. Также автор с помощью иллюстраций объясняет поиск в глубину и чем он отличается от поиска в ширину.

Код Хаффмана - алгоритм сжатия.

Ключевые темы: Деревья, поиск в глубину, код Хаффмана

8. Сбалансированные деревья

Описывается структура данных, называемой бинарным деревом поиска(BST, Binary Search Tree).

Автор отвечает на следующие вопросы: 1. что такое сбалансированное дерево? 2. почему они частов эффективнее массивов или связанных структур. 3. что такое АВЛ-деревья?

Ключевые темы: Сбалансированные деревья, АВЛ-деревья.

9. Алгоритм Дейкстры

Автор объясняет, как работает этот алгоритм Дейкстры и какие у него ограничения. Продолжение изучения графов и ознакомление со взвешенными графами.

Ключевые темы: Взвешенные графы, кратчайший путь, временная сложность.

10. Жадные алгоритмы

Знакомство с жадной стратегий на примере рюкзака. Как браться за невозможные задачи, не имеющие быстрого алгоритмического решения(NP-трудные задачи).

Ключевые темы: Жадные стратегии, задачи на оптимизацию.

11. Динамическое программирование

Освоение динамического программирования(метод решения сложных задач, разбиваемых на подзадачи, которые решаются в первую очередь) на примере рюкзака.

Ключевые темы: Оптимизация, мемоизация, задачи на динамическое программирование.

12. Алгоритм k ближайших соседей

Знакомство с методом машинного обучения, который используется для классификации и регрессии на основе близости объектов в пространстве признаков на примере апельсинов и грейпфрутов.

Тренировка модели МО.

Ключевые темы: Машинное обучение, классификация, метрики расстояния.

13. Что дальше

В этой главе краткий обзор 10 алгоритмов, которые не рассматривались в книге, такие как инвертированные индексы, линейная регрессия, фильтры Блума. А также рекомендация книг, которые стоит читать дальше

14.Производительность АВЛ-деревьев

В этой главе рассматривается производительность АВЛ-деревьев

15. NP-трудные задачи

объяснений терминов задачи выполнимости, сведения, np-трудность, np-полнота, np и свойства трудных задач.

16.Ответы к упражнениям

Особенности второго издания:

  • Обновления: Возможны обновления в содержании, включая новые примеры, исправления ошибок и дополнительные объяснения.
  • Новые темы: Второе издание может включать новые разделы или расширенные объяснения по некоторым темам.
  • Практические задачи: В каждой главе приводятся задачи и упражнения для закрепления материала.

Плюсы книги:

  1. Доступность для начинающих:
    Книга написана простым и понятным языком, что делает её идеальной для тех, кто только начинает изучать алгоритмы.
    Автор избегает сложной математики, что снижает барьер входа для новичков.
  2. Иллюстрации и визуализация:
    Книга богато иллюстрирована, что помогает визуализировать сложные концепции.
    Иллюстрации делают материал более наглядным и запоминающимся.
  3. Практический подход:
    В каждой главе приводятся примеры и задачи, которые помогают закрепить материал.
    Автор объясняет, как алгоритмы применяются в реальной жизни, что делает обучение более интересным.
  4. Широкий охват тем:
    Книга охватывает основные алгоритмы и структуры данных, такие как сортировка, поиск, графы, динамическое программирование и машинное обучение.
    Это делает её хорошим введением в мир алгоритмов.
  5. Обновления во втором издании:
    Второе издание, вероятно, включает исправления ошибок, улучшенные объяснения и дополнительные примеры.
    Возможно, добавлены новые темы или разделы, чтобы книга оставалась актуальной.
  6. Лёгкость чтения:
    Книга написана в увлекательной манере, что делает её приятной для чтения.
    Автор использует юмор и простые аналогии, чтобы объяснить сложные концепции.

Минусы книги:

  1. Недостаток глубины:
    Книга ориентирована на начинающих, поэтому некоторые темы рассмотрены поверхностно.
    Для тех, кто уже знаком с основами, материал может показаться слишком простым.
  2. Ограниченный охват продвинутых тем:
    Книга не углубляется в сложные алгоритмы или математические основы.
    Например, такие темы, как алгоритмы на строках, продвинутые структуры данных (например, красно-чёрные деревья), или сложные задачи оптимизации, могут быть недостаточно раскрыты.
  3. Мало математики:
    Хотя это делает книгу доступной, для тех, кто хочет понять алгоритмы на более глубоком уровне, отсутствие математического обоснования может быть недостатком.
  4. Ориентация на начинающих:
    Книга не подходит для продвинутых читателей или тех, кто готовится к сложным техническим собеседованиям (например, в FAANG-компании).
    Для таких целей потребуется более углублённая литература.
  5. Ограниченное количество задач:
    Хотя в книге есть примеры и задачи, их количество может быть недостаточным для полноценного закрепления материала.
    Для практики может потребоваться дополнительная литература или платформы, такие как LeetCode.
  6. Язык программирования:
    В книге используется Python, что может быть плюсом для одних читателей, но минусом для тех, кто предпочитает другие языки программирования.

Для кого подходит книга?

  • Начинающие: Идеально для тех, кто только начинает изучать алгоритмы и структуры данных.
  • Студенты: Хороший ресурс для студентов, которые хотят понять основы алгоритмов.
  • Самоучки: Подходит для тех, кто изучает программирование самостоятельно и хочет разобраться в алгоритмах без сложной математики.

Для кого книга не подходит?

  • Продвинутые программисты: Тем, кто уже знаком с основами, книга может показаться слишком простой.
  • Те, кто готовится к сложным собеседованиям: Для подготовки к техническим собеседованиям в топовые компании потребуется более углублённая литература.

ВЫВОД:

"Грокаем алгоритмы" — это отличная книга для начинающих, которая помогает понять основы алгоритмов и структур данных в доступной форме. Однако для более глубокого изучения или подготовки к сложным задачам потребуется дополнительная литература. Второе издание, вероятно, улучшает и дополняет материал первого издания, делая его ещё более полезным для новичков.

Хотите больше практики, теории и стажировки выбирайте Skillfactory:

Программы обучения