Задача посчитать все возможные пути (графы)

Есть массив с такими ключами и значениями (пути графа со значением силы каждого из них):

array(
	a:c => 26
	a:d => 30
	b:a => 25
	b:d => 33
	c:b => 29
	c:e => 24
	d:c => 28
	e:a => 23
	e:b => 27
	e:d => 31
)

Нужно собрать все возможные пути. Например, я указываю a:b и должен получить:

Задача не просто найти все пути, но и чтобы это работало на любом массиве исходных данных, т.е. букв (пар) может быть сколько угодно много!

--

Нужно мне это было для создания голосования по методу Шульце: https://ru.wikipedia.org/wiki/Метод_Шульце

Шаг 2 Вычисление силы пути

Сила пути вычисляется как максимальное значение из всех минимальных вариантов путей. В данном примере все минимальные значения путей для a:b - это 24, 26, 28, максимальное из этих значений будет силой пути, т.е. 28.

Самый быстрый способ вычисления силы путей - это алгоритм Флойда: https://ru.wikipedia.org/wiki/Алгоритм_Флойда_—_Уоршелла