Калькулятор кратчайшего пути Дейкстры
Найдите кратчайший путь между узлами в взвешенном графе с помощью алгоритма Дейкстры. Включает интерактивную визуализацию графа, пошаговое отслеживание очереди с приоритетами и отображение дерева кратчайших путей.
Ваш блокировщик рекламы мешает показывать объявления
MiniWebtool бесплатен благодаря рекламе. Если этот инструмент помог, поддержите нас через Premium (без рекламы + быстрее) или добавьте MiniWebtool.com в исключения и обновите страницу.
- Или перейдите на Premium (без рекламы)
- Разрешите показ рекламы на MiniWebtool.com, затем перезагрузите страницу.
О Калькулятор кратчайшего пути Дейкстры
Добро пожаловать в Калькулятор кратчайшего пути Дейкстры, интерактивный инструмент для поиска кратчайших путей во взвешенных графах с использованием алгоритма Дейкстры. Независимо от того, являетесь ли вы студентом факультета информатики, изучающим теорию графов, специалистом по сетям, анализирующим протоколы маршрутизации, или разработчиком, реализующим поиск пути, этот калькулятор обеспечивает визуальное пошаговое исследование одного из самых фундаментальных алгоритмов в информатике.
Что такое алгоритм Дейкстры?
Алгоритм Дейкстры, изобретенный голландским ученым Эдсгером В. Дейкстрой в 1956 году, представляет собой алгоритм поиска на графах, который решает задачу о кратчайшем пути из одного источника для взвешенного графа с неотрицательными весами ребер. Для заданного исходного узла он находит кратчайший путь от этого узла к любому другому узлу в графе.
Алгоритм работает путем поддержания набора непосещенных узлов и многократного выбора непосещенного узла с наименьшим предварительным расстоянием (жадная стратегия). Именно это делает его одновременно элегантным и эффективным — как только узел становится «посещенным», его кратчайшее расстояние гарантированно будет окончательным.
Псевдокод алгоритма
for each node v in Graph:
dist[v] ← ∞
prev[v] ← undefined
dist[source] ← 0
Q ← priority queue of all nodes
while Q is not empty:
u ← node in Q with minimum dist[u]
remove u from Q
for each neighbor v of u still in Q:
alt ← dist[u] + weight(u, v)
if alt < dist[v]:
dist[v] ← alt // релаксация
prev[v] ← u
return dist[], prev[]
Основная формула
Где:
- d[u] = текущее кратчайшее известное расстояние от источника до узла u
- w(u, v) = вес ребра от u к v
- d[v] = текущее кратчайшее известное расстояние от источника до узла v
Как использовать этот калькулятор
- Определите ребра вашего графа: Введите ребра в формате
источник, назначение, вес, по одному на строку. Каждая строка представляет собой связь между двумя узлами. - Выберите тип графа: Выберите «Неориентированный» для двусторонних ребер (например, дороги) или «Ориентированный» для односторонних ребер (например, авиамаршруты или веб-ссылки).
- Установите исходный узел: Введите начальный узел, от которого будут рассчитываться все кратчайшие пути.
- Найдите кратчайшие пути: Нажмите кнопку, чтобы запустить алгоритм Дейкстры. Изучите интерактивную визуализацию графа, таблицу расстояний и пошаговое отслеживание.
- Пройдите по шагам: Используйте кнопки «Вперед»/«Назад», чтобы увидеть выполнение алгоритма по одному шагу за раз, при этом на графе в реальном времени будут подсвечиваться обновленные узлы и ребра.
Понимание результатов
Таблица расстояний
Показывает кратчайшее расстояние от источника до каждого узла, а также полный путь. Узлы, помеченные ∞, недостижимы из источника.
Визуализация графа
Интерактивный холст показывает ваш граф с цветовой кодировкой узлов и ребер:
- Синий узел = Исходный узел
- Зеленые узлы = Посещенные (окончательное расстояние)
- Оранжевый узел = Обрабатывается в данный момент
- Серые узлы = Еще не посещенные
- Зеленые ребра = Дерево кратчайших путей
Пошаговое отслеживание
Показывает выполнение алгоритма, включая извлечение из очереди с приоритетом, релаксацию ребер и обновление расстояний на каждом шагу. Это неоценимо для понимания того, как работает алгоритм.
Временная сложность
Эффективность алгоритма Дейкстры зависит от структуры данных, используемой для очереди с приоритетом:
| Очередь с приоритетом | Временная сложность | Лучше всего для |
|---|---|---|
| Двоичная куча | \( O((V + E) \log V) \) | Общего назначения, разреженные графы |
| Фибоначчиева куча | \( O(V \log V + E) \) | Плотные графы (теоретически) |
| Массив (без кучи) | \( O(V^2) \) | Очень плотные графы, малое V |
Где V — количество вершин (узлов), а E — количество ребер. Этот калькулятор использует реализацию с двоичной кучей.
Ориентированные и неориентированные графы
- Неориентированный граф: Ребро между A и B означает, что вы можете перемещаться как A→B, так и B→A. Примеры: дорожные сети, социальные сети друзей, электрические цепи.
- Ориентированный граф: Ребро от A к B позволяет перемещаться только A→B, но не обязательно B→A. Примеры: веб-гиперссылки, подписчики в Twitter, авиамаршруты, течение реки.
Ограничения алгоритма Дейкстры
- Нет отрицательных весов: Алгоритм Дейкстры выдает неверные результаты при наличии отрицательных весов ребер. Используйте алгоритм Беллмана-Форда для графов с отрицательными весами (но без отрицательных циклов).
- Один источник: Находит кратчайшие пути от одного источника. Для нахождения кратчайших путей между всеми парами используйте алгоритм Флойда-Уоршелла или запускайте алгоритм Дейкстры от каждого узла.
- Нет отрицательных циклов: Отрицательные циклы делают кратчайшие пути неопределенными (вы всегда можете пройти по циклу, чтобы бесконечно уменьшать расстояние).
Реальные применения
GPS-навигация
Картографические службы используют варианты алгоритма Дейкстры (часто с эвристикой A*) для поиска самого быстрого маршрута между двумя точками. Перекрестки дорог являются узлами, а сегменты дорог — взвешенными ребрами (по времени или расстоянию).
Сетевая маршрутизация
Протоколы интернет-маршрутизации, такие как OSPF (Open Shortest Path First) и IS-IS, используют алгоритм Дейкстры для вычисления кратчайших путей в топологиях сетей. Каждый маршрутизатор строит дерево кратчайших путей для определения пересылки пакетов.
Анализ социальных сетей
Поиск кратчайшего пути связи между пользователями (степени разделения), вычисление мер центральности и идентификация влиятельных узлов в сети.
Разработка игр
Поиск пути NPC в видеоиграх использует алгоритм Дейкстры или A* (который расширяет алгоритм Дейкстры эвристикой) для навигации по игровым картам и поиска оптимальных путей движения.
Цепочки поставок и логистика
Оптимизация маршрутов доставки, путей от склада к магазину и мультимодальных транспортных сетей, где различные способы транспортировки имеют разную стоимость.
Часто задаваемые вопросы
Что такое алгоритм Дейкстры?
Алгоритм Дейкстры — это алгоритм поиска на графах, который находит кратчайший путь от исходного узла до всех остальных узлов в взвешенном графе с неотрицательными весами ребер. Он использует жадную стратегию с очередью с приоритетом (min-heap), всегда обрабатывая непосещенный узел с наименьшим известным расстоянием. Временная сложность составляет O((V + E) log V) с двоичной кучей.
Может ли алгоритм Дейкстры обрабатывать отрицательные веса ребер?
Нет, алгоритм Дейкстры требует, чтобы все веса ребер были неотрицательными. Отрицательные веса могут привести к неверным результатам, так как после того, как узел помечен как посещенный, его расстояние считается окончательным. Для графов с отрицательными весами (но без отрицательных циклов) используйте алгоритм Беллмана-Форда.
В чем разница между ориентированными и неориентированными графами?
В ориентированном графе ребра имеют направление — ребро от A к B не означает наличие ребра от B к A. В неориентированном графе ребра работают в обе стороны — если есть связь между A и B, вы можете перемещаться в любом направлении. Дорожные сети обычно моделируются как неориентированные графы, а веб-ссылки и авиамаршруты — как ориентированные.
Что такое релаксация ребер в алгоритме Дейкстры?
Релаксация ребер — это основная операция в алгоритме Дейкстры. При посещении узла u для каждого соседа v алгоритм проверяет, является ли путь через u (dist[u] + weight(u,v)) короче текущего известного расстояния до v (dist[v]). Если он короче, расстояние обновляется (релаксируется), и v добавляется в очередь с приоритетом с новым расстоянием.
Что такое дерево кратчайших путей?
Дерево кратчайших путей (SPT) — это подграф с корнем в исходном узле, который содержит кратчайшие пути от источника ко всем достижимым узлам. Каждый узел (кроме источника) имеет ровно одного родителя — предшественника на его кратчайшем пути. SPT является побочным продуктом алгоритма Дейкстры и полезен для маршрутизации и проектирования сетей.
Каковы реальные применения алгоритма Дейкстры?
Алгоритм Дейкстры используется в системах GPS-навигации, протоколах сетевой маршрутизации (OSPF, IS-IS), анализе социальных сетей, оптимизации авиамаршрутов, планировании траекторий роботов, поиске пути в ИИ игр, логистике цепочек поставок и проектировании телекоммуникационных сетей. Любая задача, которую можно смоделировать как поиск кратчайшего пути или пути с наименьшей стоимостью в графе, выигрывает от использования этого алгоритма.
Дополнительные ресурсы
Ссылайтесь на этот контент, страницу или инструмент так:
"Калькулятор кратчайшего пути Дейкстры" на сайте https://ru.miniWebtool.com// от MiniWebtool, https://MiniWebtool.com/
от команды miniwebtool. Обновлено: 19 февраля 2026 г.
Вы также можете попробовать наш AI Решатель Математических Задач GPT, чтобы решить ваши математические проблемы с помощью вопросов и ответов на естественном языке.