Алгоритмы для начинающих. Теория и практика для разработчика


Привет всем. Как мы знаем, любую задачу можно представить в виде алгоритма. А грамотно составленный алгоритм составляет 90% успеха выполненной задачи. Мы уже проводили обзор книги «Грокаем алгоритмы», так любимой многими за свою простоту и подход к подаче материала.

Сегодня мы будем рассматривать «Алгоритмы для начинающих. Теория и практика для разработчика».

Немного об авторе

Панос Луридас — профессор Афинского Университета Экономики с 16-летним стажем, а также программист с почти двадцатилетним опытом. До 2012 года вел свой блог.

Содержание

Книга построена таким образом: Алгоритм – Тема – Упражнение. Так что, без практики совсем не останетесь. Пройдемся по оглавлению:

  • Глава 1. Разница курсов акций — в этой главе вы рассмотрите основы алгоритмизации, изучите время выполнения работы и сложность алгоритмов. Потом рассмотрите стек как средство для слежения за разницей курсов акций. А в конце закрепите знания на упражнениях.
  • Глава 2. Исследуя лабиринты — что, как не графы, лучше подойдет для нахождения самого короткого пути из лабиринта? Именно они и будут изучены в этой главе. А по итогам рассмотрим парочку упражнений, призванных укрепить ваши знания о графах.
  • Глава 3. Сжатие — каждый из вас хоть раз пользовался архиваторами. Как раз в этой главе вы и поймете, как они работают. А также узнаете несколько алгоритмов, которые помогают сжимать данные. Ну и упражнения, куда без них…
  • Глава 4. Секреты — представьте, что вы секретный агент. Или просто хотите спрятать некоторые файлы от некоторых лиц. На помощь придет шифрование. А как оно осуществляется? Конечно же, с помощью алгоритмов шифрования. Вот о них и будет идти речь в главе под номером 4. В конце вас ждут упражнения и секреты быстрого возведения в степень.
  • Глава 5. Делимся секретами — так, данные мы зашифровали. А как их теперь просмотреть? Вероятно, нам понадобятся некоторые ключи, которые мы и научимся создавать и передавать. Немного углубимся в анонимность и закрепим свои знания.
  • Глава 6. Все по порядку — допустим, у нас уже есть и данные, и ключ, и вообще всё. Но данных так много… И все они расположены хаотично. Что ж, надо сортировать. Но не руками же! Научимся создавать алгоритмы сортировки, вернемся к графам, решим пару задачек.
  • Глава 7. Строки, абзацы, пути — научимся находить кратчайшие пути и поговорим об алгоритме Дейкстры. Его, кстати, знают все, кто хоть немного изучал математическое моделирование. Ах, да, упражнения по алгоритму тоже будут.
  • Глава 8. Маршрутизация, арбитраж — вы когда-нибудь думали, каким образом интернет понимает, на какой сайт вы хотите попасть? А кому именно отправить сообщение? Как это всё устроено внутри? Вот об этом и будет идти речь в этой главе. Потому что всё, что было названо выше — тоже алгоритмы.
  • Глава 9. Что важнее всего? — когда вы что-нибудь гуглите, страницы определенным образом попадают в результаты поиска. Но каким образом строится их порядок? Примерно об этом и говорится в 9ой главе. Не забудьте про упражнения!
  • Глава 10. Прочность голосования — да, для голосования существуют целые системы и алгоритмы. Например, алгоритм Флойда–Уоршелла. Вот о нем и узнаем. Упражнений, кстати, тут не будет.
  • Глава 11. Методы перебора, невесты и дихотомии — когда что-то нельзя сортировать, придется перебирать. Для этого тоже есть алгоритмы. Все вы слышали про бинарный поиск. Вот, он тоже является перебором. Узнаем о нем и еще парочке алгоритмов перебора.
  • Глава 12. Сортировочный компот — в этой главе будут представлены 5 (пять!) алгоритмов сортировки. Конечно, их намного больше. Но это основные. Всё с примерами, в конце упражнения.
  • Глава 13. Гардероб, коллизия и слот — вы когда-нибудь думали, как работают словари в Python. Словарь — это некая хеш-таблица. А как работает эта таблица, вы поймете при помощи этой главы. Еще узнаете немного о коллизиях.
  • Глава 14. Биты и деревья — давайте условимся: биты не бейсбольные, а компьютерные. Те самые, которые мельчайшие единицы информации. Больше узнаем о деревьях. Тоже, кстати, не о тех, из которых делают биты, которые бейсбольные.
  • Глава 15. Немного построчим — работаем со строками, сравниваем их перебором, как раз из 11ой главы. Потом еще алгоритм изучим. И еще один. А почему бы и нет?
  • Глава 16. Предоставим дело случаю — даже пресловутый random.org, который позиционирует себя как «самый настоящий рандом», не такой уж и настоящий. Любую случайность можно предугадать. Вопрос стоит лишь в сложности и целесообразности. А об алгоритмах случайностей пойдет речь в этой главе.

Таким образом, спустя 15 глав этой книги, можно прийти на собеседование, открыв дверь с ноги. Ладно, конечно, делать так не стоит. Но база будет серьезная.

Подведем итоги

Эта книга станет отличным началом для вхождения в мир алгоритмов. Читать ее можно как новичкам, так и продвинутым ребятам. Книга действительно большая, но материал преподнесен шикарно. Стоит учесть, что русская локализация не слишком хорошо написана. Если у вас есть знания английского, лучше присмотреться именно к этой версии.

Купить книгу