Comptage du nombre de chemins simples dans un graphique non orienté

18

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.

Ryan
la source
2
Cela a déjà été demandé sur mathoverflow: mathoverflow.net/questions/18603/…
Listing
5
En fait, la question sur mathoverflow était de trouver tous les chemins et de ne pas les compter. Les trouver peut être beaucoup plus difficile.
DCTLib
1
Outre les références qui sont données dans les réponses, une observation banale est que si l'on peut compter le nombre de chemins de longueur alors on peut répondre à la question de l'existence d'un chemin hamiltonien. Donc, ce n'est probablement pas P.n1
Saeed

Réponses:

20

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 .kf(k)nk/2+O(1)O(nk)

Andreas Björklund
la source
18

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 graphiquest ». 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.

David Richerby
la source
4
Le papier Roberts et Kroese ne semble pas donner de garanties d'approximation. Existe-t-il un PTAS connu pour ce problème?
Sasho Nikolov
3
@SashoNikolov, il semble peu probable qu'il existe un algorithme d'approximation raisonnable. Étant donné obtenir G ′ à partir de G en remplaçant chaque nœud par une clique de taille N = n cn = | V | et c 1 . Pour chaque chemin simple de longueur dans G, il y a environ ( N ! ) chemins dans G . Donc, si G a unG=(V,E)GGN=ncn=|V|c1G(N!)GG chemin hamiltonien, il y aura au moins ( N ! ) n ou si simples s - t chemins dans G , et sinon tout au plus quelque chose comme ( n - 1 ) ! ( N ! ) N - 1 chemins s - t simples. Il devrait donc être difficile de se rapprocher d'un facteur d'environ N ! / ( n - 1 ) ! n c -st(N!)nstG(n1)!(N!)n1st. N!/(n1)!nc1!
Neal Young
6

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+δ)kO(2O(k))

RB
la source