Алгоритмы нужны для того, чтобы помогать людям бездельничать. Прогнозирование погоды и курсов валют, сортировка и систематизация документов, сложнейшие математические расчеты - человеку пришлось бы трудиться над выполением этих задач не один день, хотя машина способна справиться с ними за секунды. И все это заслуга алгоритмов, лежащих в основе любого машинного кода. Книга предназначена для тех, кто хочет разобраться в математических основах программирования. Она написана доступным языком и не требует от читателя знаний высшей математики. Благодаря примерам из окружающего нас мира, которые автор приводит, вы без труда разберетесь в алгоритмах и освоите различные приемы в работе с ними.
Предисловие 9
1. Разница курсов акций 19
1.1. Алгоритмы 22
1.2. Время выполнения работы и сложность 27
1.3. Используем стек для разницы курсов акций 36
Примечания 44
Упражнения 45
2. Исследуя лабиринты 47
2.1. Графы 49
2.2. Представление графов 55
2.3. Обход графа в глубину 64
2.4. Поиск в ширину 76
Примечания 82
Упражнения 83
3. Сжатие 86
3.1. Сжатие 90
3.2. Деревья и очереди с приоритетом 94
3.3. Код Хаффмана 97
3.4. Сжатие Лемпеля — Зива — Велча 107
Примечания 122
Упражнения 123
4. Секреты 126
4.1. Попробуйте расшифровать 127
4.2. Шифрование одноразовым ключом, или одноразовый блокнот 133
4.3. AES-шифрование 138
4.4. Обмен ключами по методу Диффи — Хеллмана 148
4.5. Быстрое возведение в степень и возведение в степень по модулю 153
Примечания 159
Упражнения 161
5. Делимся секретами 162
5.1. Шифрование с открытым ключом 163
5.2. Криптосистема RSA 167
5.3. Хеширование сообщения 179
5.4. Анонимизация интернет-трафика 180
Примечания 188
Упражнения 189
6. Все по порядку 190
6.1. Топологическая сортировка 192
6.2. Взвешенные графы 198
6.3. Критические пути 200
Примечания 209
Упражнения 210
7. Строки, абзацы, пути 211
7.1. Кратчайшие пути 215
7.2. Алгоритм Дейкстры 218
Примечания 227
Упражнения 229
8. Маршрутизация, арбитраж 230
8.1. Маршрутизация Интернета 235
8.2. Алгоритм Беллмана — Форда (— Мура) 241
8.3. Отрицательные веса и циклы 249
8.4. Арбитраж 253
Примечания 258
9. Что важнее всего 259
9.1. Суть пейдж-ранка 260
9.2. Матрица гиперссылок 262
9.3. Степенной метод 265
9.4. Матрица «Гугла» 270
Примечания 275
10. Прочность голосования 276
10.1. Система голосования 277
10.2. Метод Шульце 281
10.3. Алгоритм Флойда — Уоршелла 295
Примечания 297
11. Методы перебора, невесты и дихотомии 298
11.1. Последовательный поиск 299
11.2. Соответствие, сравнение, записи, ключи 301
11.3. Эффект Матфея и степенные законы 304
11.4. Самоорганизующийся поиск 311
11.5. Задача о разборчивой невесте 316
11.6. Бинарный поиск 320
11.7. Представление целых чисел на компьютере 325
11.8. И снова к бинарному поиску 331
11.9. Деревья сравнений 333
Примечания 339
12. Сортировочный компот 342
12.1. Сортировка методом выбора 343
12.2. Сортировка методом вставок 348
12.3. Сортировка кучей 354
12.4. Сортировка слиянием 364
12.5. Быстрая сортировка 377
12.6. Богатство выбора 386
Примечания 390
Упражнения 390
13. Гардероб, коллизия и слот 393
13.1. Соотнесение ключей и значений 394
13.2. Хеширование 399
13.3. Функции хеширования 402
13.4. Представление чисел с плавающей запятой и хеширование 411
13.5. Коллизии 415
13.6. Цифровые отпечатки 426
13.7. Фильтры Блума 431
Примечания 445
Упражнения 447
14. Биты и деревья 449
14.1. Предсказание как проблема коммуникации 450
14.2. Информация и энтропия 453
14.3. Классификация 460
14.4. Деревья решений 463
14.5. Выбор атрибутов 468
14.6. Алгоритм ID3 474
14.7. Основные принципы работы 482
14.8. Бритва Оккама 490
14.9. Затраты, проблемы, улучшения 492
Примечания 496
Упражнения 498
15. Немного построчим 500
15.1. Сравнение строк перебором 504
15.2. Алгоритм Кнута — Морриса — Пратта 507
15.3. Алгоритм Бойера — Мура — Хорспула 520
Примечания 529
Упражнения 530
16. Предоставим дело случаю 532
16.1. Случайные числа 535
16.2. Случайная выборка 545
16.3. Борьба за власть 553
16.4. В поисках простых чисел 566
Примечания 577
Упражнения 579
Библиография 581
Предметный указатель 595
Название: Алгоритмы для начинающих: теория и практика для разработчика
Автор: Луридас П.
Год: 2018
Жанр: программирование, компьютерная
Серия: Мировой компьютерный бестселлер
Издательство: Эксмо
Язык: Русский
Формат: pdf
Качество: eBook
Страниц: 609
Размер: 6 MB
Скачать Луридас П. - Алгоритмы для начинающих: теория и практика для разработчика (2018)