Алгоритмы? Аха! - Аха Лей - E-Book

Алгоритмы? Аха! E-Book

Аха Лей

0,0

Beschreibung

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

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 208

Veröffentlichungsjahr: 2024

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Аха Лей

Алгоритмы? Аха!. — СПб.: Питер, 2024.

ISBN 978-5-4461-2412-1

© ООО Издательство "Питер", 2024

Оглавление

От автора
Благодарности
О научном редакторе русского издания
От издательства
1. На старт, внимание, сортировка!
1.1. Быстро и просто — блочная сортировка
1.2. Рассказ о добрых соседях — сортировка пузырьком
1.3. Самая популярная — быстрая сортировка
1.4. Сеня покупает книги
2. Стеки, очереди, связные списки
2.1. Расшифровка номера — очереди
2.2. Проверка палиндромов — стеки
2.3. Карточная игра «пьяница» по-восточному
2.4. Добавление элемента в последовательность — связные списки
2.5. Аналоговые связные списки
3. Перебор! Это жестко
3.1. Полный перебор
3.2. Бомбермен
3.3. Уравнения из спичек
3.4. Перестановки чисел
4. Всемогущий поиск
4.1. Только вперед, пока не упретесь в стену, — поиск в глубину
4.2. Спасти малышку Сашу
4.3. Шаг за шагом — поиск в ширину
4.4. Продвинутый бомбермен
4.5. Первый герой
4.6. Игра в сантехника
5. Обход графа
5.1. Что на самом деле означают «глубина» и «ширина»
5.2. Карты и маршруты — обход графа в глубину
5.3. Минимум пересадок — обход графа в ширину
6. Кратчайший путь
6.1. Всего пять строк кода — алгоритм Флойда — Уоршелла
6.2. Алгоритм Дейкстры — кратчайшие пути из одного источника
6.3. Алгоритм Беллмана — Форда: решение проблемы отрицательных весов ребер
6.4. Оптимизированный алгоритм Беллмана — Форда
6.5. Сравнение алгоритмов нахождения кратчайшего пути
7. Волшебное дерево
7.1. Начинаем путешествие по деревьям
7.2. Бинарные деревья
7.3. Куча — волшебная очередь приоритетов
7.4. Борьба с преступностью
8. Более сложные алгоритмы
8.1. Торговые пути — поиск минимального остовного дерева
8.2. И снова задача о минимальном остовном дереве
8.3. Выбираем цель — вершина разреза графа
8.4. Ключевые связи — нахождение ребра разреза с помощью алгоритма Тарьяна
8.5. Американские горки — поиск наибольшего паросочетания в двудольном графе
9. Попробуйте улучшить решение
Интервью в Microsoft Research Asia
Рекомендуем прочитать

От автора

Я давно собирался написать легкую для понимания книгу об алгоритмах. У большинства людей слово «алгоритм» прочно ассоциируется с чем-то чрезвычайно сложным. Когда-то я и сам не был исключением из этого правила. Например, когда я начал разбираться с задачей определения ребра и вершины разреза в графах, то прочитал четыре или пять книг, включая классические труды, а также кучу материалов в интернете, прежде чем понял алгоритм и реализовал его в коде. На самом деле это несложный алгоритм — основной код составляет не более 20 строк. Но многие книги содержат неполное описание, приводят разные варианты кода, а некоторые вообще не предлагают примеров с кодом, что значительно усложняет обучение. Я потратил целую ночь, чтобы разобраться с этим алгоритмом (конечно, о способностях и уровне подготовки тоже не нужно забывать).

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

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

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

Благодарности

Я хотел бы поблагодарить издателя — господина Ченя Бина из компании Turing — за то, что он сделал возможным появление этой книги. Спасибо, что обратились ко мне, внушили уверенность в том, что я смогу завершить работу над книгой, и за бесценные советы. Меня поразило, что вы проверили всю рукопись, включая каждую строчку кода, и помогли исправить множество ошибок.

В процессе создания книги я имел честь общаться со многими прекрасными специалистами. Я хотел бы поблагодарить Ли Кайфэн из Уханьской средней школы № 2, Ли Цзяхао, Сюн Цзыцзянь, Чэн Юхэ, Го Мингда и Ли Дин из Уханьской школы иностранных языков за то, что они находили время выслушать меня, обменяться мнениями и предложениями.

Я должен поблагодарить прекрасного иллюстратора Цзяси Чжэн за то, что благодаря ее вдохновляющим иллюстрациям эта книга стала легче для понимания.

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

Спасибо моей ученице Ху Мэнцин, которая вопреки всему участвовала в конкурсе NOIP. Этот поступок подтверждает, что в 18 лет мы должны быть настойчивыми, неустрашимыми и смело двигаться к своей мечте.

Отдельное спасибо моей невесте Сноуин, которая почти год вместе со мной без выходных работала над этой книгой.

И наконец, я хотел бы поблагодарить своих родителей. Вам было так тяжело меня воспитывать… Я вас люблю!

Аха Лей. 6 мая 2014 г.

О научном редакторе русского издания

Евгений Войнов — эксперт по Java, Team Lead проектов по разработке программного обеспечения в компании КРОК. Имеет более 15 лет опыта создания систем для государственного и коммерческого сектора, преподает в учебных программах BrainZ by CROC для студентов и школьников.

От издательства

В работе над книгой принимали участие многие специалисты. Но мы хотим сказать отдельное спасибо литературному редактору Дмитрию Гудилину. Нелегкий труд превращения перевода с китайского языка в легкий, остроумный и понятный текст на хорошем русском языке заслуживает уважения!

Мы также выражаем благодарность компании КРОК за помощь в работе над русскоязычным изданием книги и их вклад в повышение качества переводной литературы.

Ваши замечания, предложения, вопросы отправляйте по адресу [email protected] (издательство «Питер», компьютерная редакция).

Мы будем рады узнать ваше мнение!

На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.