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

Перейти к навигации Перейти к поиску
Нет описания правки
Строка 53: Строка 53:
Цвик улучшил алгоритм Алона-Галила-Маргалита в нескольких отношениях. Самым серьезным улучшением стало снижение времени нахождения кратчайших путей между всеми парами с <math>O(n^{2.688}) \, </math> до <math>O(n^{2.575}) \, </math> для дуг единичной стоимости. Наибольшее ускорение в алгоритме Алона-Галила-Маргалита [1] было достигнуто в быстрой операции булева произведения матриц, а в алгоритме Такаоки [9] – в быстром умножении матриц расстояния по Романи; в обоих случаях мы имели дело с быстрым матричным умножением квадратных матриц.
Цвик улучшил алгоритм Алона-Галила-Маргалита в нескольких отношениях. Самым серьезным улучшением стало снижение времени нахождения кратчайших путей между всеми парами с <math>O(n^{2.688}) \, </math> до <math>O(n^{2.575}) \, </math> для дуг единичной стоимости. Наибольшее ускорение в алгоритме Алона-Галила-Маргалита [1] было достигнуто в быстрой операции булева произведения матриц, а в алгоритме Такаоки [9] – в быстром умножении матриц расстояния по Романи; в обоих случаях мы имели дело с быстрым матричным умножением квадратных матриц.
   
   
В данном разделе «ускорителем» служит алгоритм быстрого умножения матриц расстояния по Романи, созданный на основе алгоритма быстрого умножения прямоугольных матриц, разработанного Копперсмитом [4] и Хуангом и Пэном [5]. Пусть (p, q, r) – порядок временной сложности при умножении матриц (np, nq) и (nq, nr). Предположим, что произведение матриц (n, m) и (m, n) может быть вычислено за О(n((1,,1)) арифметических операций, где m = n и 0 ≤  ≤ 1. Нам известно следующее: O(n(1,1,1)) = O(n2.376) и O(n(1,0.294,1)) = Õ(n2). Для вычисления произведения квадратных матриц (n, n) требуется n1- операций матричного умножения, что дает время исполнения О(n((1,,1)+1-), которое можно преобразовать в O(n2+), где  удовлетворяет равенству (l,,1) = 2 + 1. На данный момент лучшее известное значение  составляет  = 0.575, так что временная граница превращается в O(n2.575) – это значение уступает O(n2.376). Поэтому в дальнейшем будет использоваться алгоритм для прямоугольных матриц.
В данном разделе «ускорителем» служит алгоритм быстрого умножения матриц расстояния по Романи, созданный на основе алгоритма быстрого умножения прямоугольных матриц, разработанного Копперсмитом [4] и Хуангом и Пэном [5]. Пусть <math>\omega(p, q, r) \, </math> – порядок временной сложности при умножении матриц <math>(n^p, n^q) \, </math> и <math>(n^q, n^r) \, </math>. Предположим, что произведение матриц (n, m) и (m, n) может быть вычислено за <math>O(n^{\omega (1, \mu, 1)}) \, </math> арифметических операций, где <math>m = n^{\mu} \, </math> и 0 ≤  ≤ 1. Нам известно следующее: O(n(1,1,1)) = O(n2.376) и O(n(1,0.294,1)) = Õ(n2). Для вычисления произведения квадратных матриц (n, n) требуется n1- операций матричного умножения, что дает время исполнения О(n((1,,1)+1-), которое можно преобразовать в O(n2+), где  удовлетворяет равенству (l,,1) = 2 + 1. На данный момент лучшее известное значение  составляет  = 0.575, так что временная граница превращается в O(n2.575) – это значение уступает O(n2.376). Поэтому в дальнейшем будет использоваться алгоритм для прямоугольных матриц.
Вышеприведенный алгоритм встроен в вычисление произведения (n, m)-Романи при m = n и M = nt для некоторого t > 0, а время исполнения составляет Õ(Mn((1,,1)). Следующий этап заключается во встраивании произведения (n, m)-Романи в алгоритм нахождения кратчайших путей между всеми парами. Первый алгоритм представляет собой последовательное применение операции возведения в квадрат, напоминающее второй этап алгоритма в [1]. Чтобы с пользой применить алгоритм произведения прямоугольных матриц (n, m)-Романи, нам потребуется определение мостового множества, которое будет играть ту же роль, что и множество I в алгоритме частичного вычисления матричного произведения в разделе «Постановка задачи».
Вышеприведенный алгоритм встроен в вычисление произведения (n, m)-Романи при m = n и M = nt для некоторого t > 0, а время исполнения составляет Õ(Mn((1,,1)). Следующий этап заключается во встраивании произведения (n, m)-Романи в алгоритм нахождения кратчайших путей между всеми парами. Первый алгоритм представляет собой последовательное применение операции возведения в квадрат, напоминающее второй этап алгоритма в [1]. Чтобы с пользой применить алгоритм произведения прямоугольных матриц (n, m)-Романи, нам потребуется определение мостового множества, которое будет играть ту же роль, что и множество I в алгоритме частичного вычисления матричного произведения в разделе «Постановка задачи».
Обозначим за (i,j) кратчайшее расстояние между i и j, а за n{i,j) – минимальную длину среди всех кратчайших путей от i до j. Подмножество I множества вершин V является ℓ-мостовым множеством, если удовлетворяет следующему условию: если (i,j)  ℓ, существует k  I, такое, что (i,j) = (i,k) + (k,j). I является сильным ℓ-мостовым множеством при выполнении условия: если (i,j)  ℓ, существует k  I, такое, что (i,j) = (i, k) + (k,j) и (i, j) = (i, k) + (k, j). Заметим, что для графа с дугами единичной стоимости эти множества совпадают.
Обозначим за (i,j) кратчайшее расстояние между i и j, а за n{i,j) – минимальную длину среди всех кратчайших путей от i до j. Подмножество I множества вершин V является ℓ-мостовым множеством, если удовлетворяет следующему условию: если (i,j)  ℓ, существует k  I, такое, что (i,j) = (i,k) + (k,j). I является сильным ℓ-мостовым множеством при выполнении условия: если (i,j)  ℓ, существует k  I, такое, что (i,j) = (i, k) + (k,j) и (i, j) = (i, k) + (k, j). Заметим, что для графа с дугами единичной стоимости эти множества совпадают.
4501

правка

Навигация