Как я могу определить количество уникальных простых путей в неориентированном графе? Либо для определенной длины, либо диапазона приемлемых длин.
Напомним, что простой путь - это путь без циклов, поэтому я говорю о подсчете количества путей без циклов.
Ответы:
Есть несколько алгоритмов, которые подсчитывают простые пути длины за время f ( k ) n k / 2 + O ( 1 ) , что намного лучше, чем время грубой силы ( O ( n k ) ). Смотри, например, Vassilevska and Williams, 2009 .k f(k)nk/2+O(1) O(nk)
источник
Это # P-complete (Valiant, 1979), так что вы вряд ли будете делать намного лучше, чем грубая сила, если вам нужен точный ответ. Аппроксимации обсуждаются Roberts and Kroese (2007).
Б. Робертс и Д. П. Кроуз, " Оценка числа - t путей в графеs t ". Журнал графовых алгоритмов и приложений , 11 (1): 195-214, 2007.
Валиант Л.Г. « Сложность перечисления и проблемы надежности ». Журнал SIAM по вычислительной технике 8 (3): 410-421, 1979.
источник
Я хотел бы добавить другой алгоритм аппроксимации, параметризованный: для фиксированного (или, что более точно, δ = Ω ( 1)δ>0 ), можно вычислитьс(1+& delta)-аппроксимации числа простых путей, в любом неориентированного или ориентированного графа, длиныквременивывода*(2O(K)).δ=Ω(1poly(k)) (1+δ) k O∗(2O(k))
источник