Графы за 40 минут | самое душное видео для лютых программистов
Максим Фатин
0:00 / 0:00
Графы за 40 минут | самое душное видео для лютых программистов
53 004 просмотра · 7 месяцев назад
Максим Фатин
12,1 тыс. подписчиков
53 004 просмотра · 7 месяцев назад
Полный гайд по алгоритмам поиска на графах для подготовки к собеседованиям! Разбираем DFS (поиск в глубину) и BFS (поиск в ширину) с примерами кода на Python, Java, JavaScript, C++ и Go. Упор делаем на клетчатое 2D поле, которое встречается чаще всего на собеседованиях.
🎯 ЧТО УЗНАЕШЬ:
Когда использовать DFS, а когда BFS
Как искать путь между точками
Поиск кратчайшего маршрута
Подсчет компонент связности
Проблемы переполнения стека и их решение
Оценка сложности в Big O
Как рассказывать решение на собеседовании
💻 КОД НА 5 ЯЗЫКАХ:
Python
Java
JavaScript
C++
Go
⏱️ ТАЙМКОДЫ:
00:00 - Хай
00:21 - Зачем нужны алгоритмы на графах
00:38 - Про карты
00:46 - Что учитывают карты при построении маршрута
00:56 - Проверка пути на поле из клеток
01:44 - Думай как компьютер...
02:10 - Алгоритм поиска в глубину (DFS)
02:22 - Анимация поиска в глубину (DFS)
02:58 - Логика обхода графа в DFS
03:45 - Возвращаемся к анимации поиска пути от А до Б
04:37 - Что если сократить путь?
05:19 - Что если пути нет? Как DFS работает тогда?
05:32 - Какой план дальше?
05:55 - Секрет понимания графов
06:04 - Хранение графа в виде карты в памяти
06:25 - Код для проверки пути от А до Б через поиск в глубину (Python)
07:30 - Магия поиска в глубину
07:45 - Структура написания поиска в глубину (DFS)
08:07 - Понять все сразу не просто...
08:26 - Java, JavaScript, C++, Go: поиск в глубину
08:40 - Задача: раскраска по номерам
09:30 - Учимся закрашивать соседние клетки поиском в глубину
10:36 - Код для заливки соседей
11:05 - Java, JavaScript, C++, Go: заливка соседей
11:12 - Учимся считать число заливок
12:21 - Код для подсчета заливок (Python)
12:57 - Java, JavaScript, C++, Go: подсчет компонент связности
13:10 - Проблема больших матриц...
13:33 - Основные области памяти
13:44 - Ограничения стековой области памяти
14:12 - Решаем проблему переполнения стека
14:37 - Код итеративной реализации подсчета компонент связности (Python)
15:02 - Про использование стека
15:13 - Возвращаемся к коду
15:58 - Java, JavaScript, C++, Go: итеративный подсчет компонент связности
16:09 - Важный дисклеймер
16:19 - Оценим время и памяти в Big O
17:21 - Худший случай оценки по памяти
17:25 - Типичная оценка для обхода в глубину (DFS)
17:32 - Время и память при проверке пути от А до Б
17:50 - Что от тебя ждут на собеседовании
17:57 - Рекурсивный vs итеративный обход в глубину
18:18 - Ты красавчик!
18:30 - Про практику
19:20 - Алгоритмы поиска кратчайшего пути
19:31 - Задача поиска минимального расстояния от А до Б
19:58 - Анимация поиска в ширину (BFS)
20:22 - База, чтобы написать поиск в ширину...
20:44 - Чем можно заменить очередь в поиске в ширину (BFS)
21:11 - Идея решения поиска кратчайшего расстояния от А до Б
23:15 - Код поиска в ширину (Python)
24:12 - Java, JavaScript, C++, Go: поиск в ширину
24:22 - Более подробно разбираем обход соседей клетки
24:42 - Типичная ошибка при реализации поиска в ширину
25:09 - Интересный факт про поиск в ширину
25:32 - Оцениваем поиск расстояния от А до Б в Big O
26:15 - Оцениваем максимальный размер очереди в поиске в ширину (BFS)
27:34 - Возвращаемся к оценке по памяти
27:56 - Поиск кратчайшего маршрута
28:25 - Модификация BFS для поиска маршрута
28:42 - Смотрим код (Python)
29:42 - Разбираем восстановление пути
30:45 - Java, JavaScript, C++, Go: восстановление кратчайшего пути
30:52 - Оцениваем время и память в Big O
31:32 - Чилим
32:45 - Делаем систему быстрого реагирования
33:40 - Как решить проблему множественного запуска поиска в ширину
34:30 - Реализуем Multy Source BFS (Python)
35:32 - Java, JavaScript, C++, Go: Multy Source BFS
35:43 - А точно ли Multy Source BFS нужен?
36:02 - Код альтернативного решения (Python)
36:07 - Java, JavaScript, C++, Go
36:18 - Сравниваем варианты решения
36:40 - Где использовать обход в ширину, а где в глубину (BFS vs DFS)
37:18 - Зачем нужен DFS если есть BFS
37:42 - Как решают задачи на графы на собесах
38:09 - Как я рассказываю идею решения на собеседовании
39:18 - Как усилить конкурентное преимущество
🔥 ПРАКТИКА И ПОДГОТОВКА К СОБЕСАМ:
Практика по графам и подготовка к алгоритмическим собеседованиям:
https://clck.ru/3RAkSo
⚠️ По ссылке доступен промокод со скидкой! Финальные условия промокода могут измениться и всегда отображаются на сайте.
📱 МОЙ TELEGRAM КАНАЛ:
https://t.me/algocode_algorithms
Здесь я делюсь дополнительными материалами, разборами задач и анонсами новых видео. Подписывайся!
По поводу мини-групп писать в ТГ: fatinmaks
Реклама. ИП Фатин. ИНН: 525406426719. Erid: 2Vtzqv9yRzv