Внимание!!!! Книга удалена по требованию
правообладателя!!!!
Предисловие....22Вступление....23Благодарности....25О книге....27Об авторе....33Иллюстрация на обложке....34Глава 1. Введение в структуры данных....35Часть I Улучшаем базовые структуры данныхГлава 2. Улучшаем очереди с приоритетом: d-кучи....51Глава 3. Декартовы деревья: применение рандомизации для получения сбалансированных двоичных деревьев поиска....113Глава 4. Фильтры Блума: отслеживание содержимого с меньшими затратами памяти....158Глава 5. Непересекающиеся множества: обработка за сублинейное время....200Глава 6. Префиксные деревья, компактные префиксные деревья: эффективный поиск строк....228Глава 7. Примеры использования: кэш LRU....279Часть II Многомерные запросыГлава 8. Поиск ближайших соседей....326Глава 9. k-мерные деревья: индексирование многомерных данных....341Глава 10. Деревья поиска по сходству: приближенный поиск ближайших соседей для выбора похожих изображений....390Глава 11. Применение поиска ближайшего соседа на практике....451Глава 12. Кластеризация....478Глава 13. Параллельная кластеризация: MapReduce и кластеризация методом купола....532Часть III Планарные графы и минимальное число пересеченийГлава 14. Введение в графы: поиск кратчайшего пути....575Глава 15. Представление графов и планарность: рисование графа с минимальным числом пересечений ребер....617Глава 16. Градиентный спуск: оптимизация задач (не только) на графах....657Глава 17. Имитация отжига: оптимизация за пределами локальных минимумов....694Глава 18. Генетические алгоритмы: заимствованная из биологии быстросходящаяся оптимизация....732ПриложенияПриложение А. Краткое руководство по псевдокоду....786Приложение Б. Нотация «О большое»....799Приложение В. Основные структуры данных....808Приложение Г. Контейнеры в роли очередей с приоритетами....825Приложение Д. Рекурсия....830Приложение Е. Задачи классификации и рандомизированные алгоритмы....839
Познакомьтесь с самыми необходимыми алгоритмами решения сложных задач программирования в области анализа данных, машинного обучения и графов.Вы постоянно сталкиваетесь с бесчисленными проблемами программирования, которые поначалу кажутся запутанными, трудными или нерешаемыми. Не отчаивайтесь! Многие из «новых» проблем уже имеют проверенные временем решения. Эффективные подходы к решению широкого спектра сложных задач кодирования легко адаптировать и применять в собственных приложениях, а при необходимости создавать собственные структуры данных под конкретную задачу. Сбалансированное сочетание классических, продвинутых и новых алгоритмов обновит ваш инструментарий программирования, добавив в него новые перспективы и практические методы.