Алгоритмы?!А оно мне надо?
Photo by Ben White on Unsplash
Всем привет!
- Бастрыков Евгений
- Программирую с 2013
- Преподаю «Алгоритмы и структуры данных»
- Разрабатываю elma365
Так для чего же изучать алгоритмы?
Photo by Mathew Schwartz on Unsplash
Так для чего же изучать алгоритмы?
О чём нам не говорили в школе?
Photo by Stefan Steinbauer on Unsplash
Литература учит формулировать мысли
Как читать книги?
Photo by Claudia on Unsplash
Как читать технические книги
- проиндексировать
- найти применение
- прочитать и применить
Задача
- теоретическая задача
- практические задачи
- условия применения
- альтернативы
Ограничения
- количество данных
- требуемые операции
- архитектура компьютера
- язык имплементации
Оценка решения
- сложность реализации;
- сложность по времени / количеству инструкций / памяти;
- учётная стоимость операций:
- сложность по количеству и размеру сетевых сообщений;
- локальность данных и кеш-независимость;
- параллелизуемость отдельных шагов;
- корректность и доказуемость решений или оценка возможных погрешностей.
Выводы
- начинайте с задачи и применимости
- изучите доказательство
- поймите ограничения
- проведите полную оценку
- зафиксируйте связи
- экспериментируйте
Книги
- Н. Вирт «Алгоритмы и структуры данных»
- Д. Кнут «Искусство программирования»
- Т. Кормен «Алгоритмы: построение и анализ»
- С. Скиена «Алгоримы. Руководство по разработке»
- М. Асанов и др. «Дискретная математика»
- У. Фоккинк «Распределённые алгоритмы»