Алгоритм поиска кратчайших путей между всеми парами при помощи матричного произведения: различия между версиями

Перейти к навигации Перейти к поиску
нет описания правки
Нет описания правки
Нет описания правки
Строка 3: Строка 3:
== Постановка задачи ==
== Постановка задачи ==
Задача поиска кратчайших путей между всеми парами (APSP) заключается в нахождении кратчайших путей между всеми парами вершин в ориентированном графе с дугами неотрицательной действительной стоимости. Основное внимание уделяется кратчайшим расстояниям между вершинами, поскольку кратчайшие пути могут быть найдены с незначительным возрастанием стоимости. Классические алгоритмы решают задачу нахождения кратчайших путей между всеми парами вершин за кубическое время – O(n3). Наша задача заключается в достижении меньшего времени исполнения алгоритма для графа с небольшими целочисленными стоимостями дуг.
Задача поиска кратчайших путей между всеми парами (APSP) заключается в нахождении кратчайших путей между всеми парами вершин в ориентированном графе с дугами неотрицательной действительной стоимости. Основное внимание уделяется кратчайшим расстояниям между вершинами, поскольку кратчайшие пути могут быть найдены с незначительным возрастанием стоимости. Классические алгоритмы решают задачу нахождения кратчайших путей между всеми парами вершин за кубическое время – O(n3). Наша задача заключается в достижении меньшего времени исполнения алгоритма для графа с небольшими целочисленными стоимостями дуг.
Пусть дан ориентированный граф G = (V, E), где V = {1, ..., n} – множество вершин, а E – множество дуг. Стоимость дуги (i, j) <math>\in</math> E обозначается как <math>d_{i,j}</math>. Матрица D размера n × n содержит элемент <math>d_{i,j}</math> в позиции (i, j). Для простоты предположим, что <math>d_{i,j}</math> > 0 и <math>d_{i,i}</math> = 0 для всех i <math>\ne</math> j. Если не существует дуги из i в j, положим dij = . Стоимость, или расстояние, пути представляет собой сумму стоимостей всех дуг на пути. Длина пути равна количеству дуг на пути. Кратчайшее расстояние между вершинами i и j равняется минимальной стоимости среди всех путей, ведущих от i до j, и обозначается как d*ij . Пусть D* = {d*ij}. Значение n называется размером матрицы.
Пусть дан ориентированный граф G = (V, E), где V = {1, ..., n} – множество вершин, а E – множество дуг. Стоимость дуги (i, j) <math>\in</math> E обозначается как <math>d_{i,j}</math>. Матрица D размера <math>n \times n</math> содержит элемент <math>d_{i,j}</math> в позиции (i, j). Для простоты предположим, что <math>d_{i,j}</math> > 0 и <math>d_{i,i}</math> = 0 для всех i <math>\ne</math> j. Если не существует дуги из i в j, положим <math>d_{i,j} = \infty</math>. Стоимость, или расстояние, пути представляет собой сумму стоимостей всех дуг на пути. Длина пути равна количеству дуг на пути. Кратчайшее расстояние между вершинами i и j равняется минимальной стоимости среди всех путей, ведущих от i до j, и обозначается как <math>d_{i,j}^*</math>. Пусть <math>D^* = {d_{i,j}^*}</math>. Значение n называется размером матрицы.


Пусть A и B – матрицы n × n. Умножение матриц A и B может производиться одним из трех способов: (1) Обычное матричное произведение над кольцом C = AB; (2) булево произведение матриц C = A  B; (3) произведение матриц расстояния С = A × B, где
Пусть A и B – матрицы n × n. Умножение матриц A и B может производиться одним из трех способов: (1) Обычное матричное произведение над кольцом C = AB; (2) булево произведение матриц C = A  B; (3) произведение матриц расстояния С = A × B, где
4446

правок

Навигация