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

Теперь вы умеете:

  • Применять метод полного перебора и оптимизировать его с помощью сокращения пространства решений.
  • Использовать жадные алгоритмы, доказывать их корректность или искать контрпримеры.
  • Решать задачи с помощью динамического программирования, запоминая результаты подзадач и избегая лишних вычислений.
  • Строить рекурсивные алгоритмы и понимать их временную сложность.
  • Применять подход «Разделяй и властвуй» — разбивать задачи, решать части и объединять результат.
  • Оценивать эффективность рандомизированных алгоритмов и понимать, как случайность может дать преимущество.

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

Чтобы добавить в заметки выделенный текст, нажмите Ctrl + E
Предыдущий параграф6.6. Рандомизированные алгоритмы

Случайность в действиях алгоритма может приводить к неопределённости в точности результатов или времени работы. В этом параграфе спроектируем и оценим трудоёмкость рандомизированного алгоритма для задачи сортировки.

Следующий параграф7.1. Задача «Размен»