🐾Алгоритмы в реальной жизни
Я, конечно, жутко бугурчу на алкосекции и литркод и на всю абстрактную фигню (отсылка к этому посту), но надо признать, что какие-то задачи имеют место быть в реальной жизни.
И вот примеры.
Задача 1
Даны n отрезков на оси (Ox) a_i, b_i (где a_i начало отрезка, b_i конец отрезка). нужно найти максимально число отрезков, которые пересекаются в одной точке.
Задача с литкода, решение писать конечно же не буду.
Но как эта задача может применяться в жизни?
Представим, что у нас есть отель. В отель каждый день кто-то заезжает и выезжает. На каждого жителя мы заказываем еду. Хочется понять, какое максимально количество еды надо будет заказать в какой то из дней?
Задача 2 Поля Галуа из высшей алгебры.
Каждый раз, когда вы пытаетесь сканировать qr код не обходится без теории из высшей алгебры, хотя при узучении этой темы казалось, что это просто абстрактная теория.
Задача 3. Алгоритмы на графах. Дейкстра/Breadth-First Search (BFS)(нахождение кратчайшего пути в графе).
Представим, что нам надо купить билеты из города A в город B и мы хотим найти самый дешевый путь.
Переформулируем задачу в терминах графов. Есть Ориентированный граф, где вершины – это города. Если между городоми A и B есть прямой рейс то она будет ребром с весом равным цене билета.
После представления такого графа сразу приходит мысль писать дейкстру и находить путь.
Задача 4. Алгоритмы на графах. Depth-First Search (DFS)
Есть список библиотек и их зависимостей, например:
[{E: []}, {A: [B, С]}, {B, [C]}, {C: [D]}, {D: []}]
Распечатайте их в порядке, в котором их можно подгружать с учетом этих зависимостей.
Не зная графов быстро решение не придумать.
Но как только переформулировать задачу в терминах графов, то решение почти сразу на ладони.
Переформулируем.
Пусть вершины это библиотеки. Если библиотека A зависит от библиотеки B, то будем соединять эти две вершинки направленным ребром.
Теперь чтобы решить задачу нам надо выстроить все библиотеки в ряд, что бы ребра были только в одном направлении. А это просто топологическая сортировка! Чуть-чуть модифицируем dfs и радуемся.
Тут тоже описан пример литкодовской задачи и ее применение
Post #334
2.01K
- 🔥 7
- 😐 2