Я не знаю, является ли это решением , но это решение (я бы сказал, это графическая версия грубой силы):
- Найдите MST графа, используя алгоритм Крускала или Прима. Это должно быть O (E log V).
- Генерация всех связующих деревьев. Это можно сделать в
O(Elog(V) + V + n) for n = number of spanning trees
, как я понимаю из Google за 2 минуты, можно улучшить.
- Отфильтруйте список, сгенерированный на шаге 2, по весу дерева, равному весу MST. Это должно быть O (n) для n как количество деревьев, сгенерированных на шаге № 2.
Примечание: делайте это лениво! Генерация всех возможных деревьев и последующая фильтрация результатов потребуют O (V ^ 2) памяти, а требования к полиномиальному пространству - зло .
Общая сложность времени: O(Elog(V) + V + n) for G(V,E) with n spanning trees