Comment puis-je déterminer le nombre de chemins simples uniques dans un graphique non orienté? Soit pour une certaine longueur, soit pour une plage de longueurs acceptables.
Rappelez-vous qu'un chemin simple est un chemin sans cycle, je parle donc de compter le nombre de chemins sans cycle.
Réponses:
Il existe plusieurs algorithmes qui comptent les chemins simples de longueur en temps f ( k ) n k / 2 + O ( 1 ) , ce qui est beaucoup mieux que la force brute (temps O ( n k ) ). Voir par exemple Vassilevska et Williams, 2009 .k f(k)nk/2+O(1) O(nk)
la source
C'est # P-complete (Valiant, 1979), donc il est peu probable que vous fassiez beaucoup mieux que la force brute, si vous voulez la réponse exacte. Roberts et Kroese (2007) discutent des approximations.
B. Roberts et DP Kroese, « Estimation du nombre de chemins - t dans un graphiques t ». Journal of Graph Algorithms and Applications , 11 (1): 195-214, 2007.
LG Valiant, " La complexité des problèmes d'énumération et de fiabilité ". SIAM Journal on Computing 8 (3): 410-421, 1979.
la source
Je voudrais ajouter un autre algorithme d'approximation, un algorithme paramétré: pour un fixe (ou plus précisément, δ = Ω ( 1δ>0 ), vous pouvez calculeruneapproximation(1+δ)du nombre de chemins simples, dans un graphique non orienté ou dirigé, de longueurkdans le tempsO∗(2O(k)).δ=Ω(1poly(k)) (1+δ) k O∗(2O(k))
la source