Algorithmes de largeur d'arbre rapides

18

Je voudrais calculer la largeur d' arbre d'un graphique. Il existe de très bonnes heuristiques pour d'autres problèmes de graphes NP-durs tels que VF2 pour l'isomorphisme de sous-graphe, avec du code disponible en igraph par exemple. Je les ai essayés sur mes graphiques et je trouve qu'ils fonctionnent très rapidement pour mes données.

Existe-t-il des algorithmes rapides pour le calcul de la largeur d'arbre dans la même veine?

Felix
la source
1
fyi récemment, la largeur d'arbre a été connectée à la dureté SAT par Gaspers / Szeider dans FOCS, espérons entendre d'autres personnes dans cette discussion / discussion
vzn

Réponses:

19

Pour autant que je sache, l'état de l'art est ce qui est rapporté dans

Hans L. Bodlaender, Fedor V. Fomin, Arie MCA Koster, Dieter Kratsch et Dimitrios M. Thilikos (2012), «On exact algorithms for treewidth», ACM Transactions on Algorithms 9 (1): A12, doi: 10.1145 / 2390176.2390188 .

Les méthodes décrites ici incluent un algorithme implémenté avec quelques optimisations heuristiques pour le rendre plus rapide dans la pratique.O(2n)

David Eppstein
la source
2
Je vous remercie. Les références 2, 8 et 15 qui donnent des heuristiques de limite supérieure et inférieure pourraient en pratique être les plus utiles de cet article.
felix
10

J'ai écrit un article intitulé A Fast Parallel Branch and Bound Algorithm for Treewidth, dans ICTAI 2011. Il peut calculer la largeur d'arbre en multicœur . J'ai utilisé beaucoup d'heuristiques et passé beaucoup de temps à affiner le programme.

J'étais un étudiant de premier cycle au hasard en Chine et je n'ai pas pu assister à une bonne conférence. Mais sur la base des résultats de mon expérience, je pense que mon programme est très rapide. J'ai résolu de nombreux points de repère non résolus dans Treewidth lib, et mon programme était 40 fois plus rapide qu'un algorithme proposé par Zhou et Hansen dans IJCAI 09 ..

Je ne travaille plus sur ce sujet. Mais si mon travail précédent est utile, vous pouvez télécharger mon programme (src et exe) depuis http://www.callowbird.com/undergraduate-stuff.html et essayer. (encore, c'est très très lent sur une instance légèrement plus grande)

Yang Yuan
la source
5

O(2k)

M. kanté
la source
1
2O(k)O(ckn)c
5

Voici deux enquêtes sur les algorithmes de calcul de la largeur d'arbre qui peuvent être utiles. Le premier a des comparaisons empiriques, et il a divers algorithmes implémentés comme une bibliothèque Java.

Il existe de nombreux algorithmes pour calculer une limite supérieure, une limite inférieure ou la largeur d'arbre exacte d'un graphique. Nous avons implémenté de nombreuses heuristiques de limite supérieure et inférieure et deux algorithmes exacts (une programmation dynamique et un algorithme de branchement et de liaison). Ce rapport compare les différents types d'algorithmes et montre que certains algorithmes sont préférés.

Treewidth est un paramètre graphique avec plusieurs applications théoriques et pratiques intéressantes. Cette enquête examine les résultats algorithmiques sur la détermination de la largeur d'arbre d'un graphique donné et la recherche d'une décomposition d'arbre de petite largeur. Les deux résultats théoriques, établissant la complexité de calcul asymptotique du problème, comme le travail expérimental sur l'heuristique (tant pour les limites supérieures que pour les limites inférieures), le prétraitement, les algorithmes exacts et le post-traitement sont discutés.

vzn
la source
3

Sage ne sait pas exactement comment calculer la largeur d'arbre, mais il peut vous donner la largeur de chemin des petits graphiques.

http://www.sagemath.org/doc/reference/graphs/sage/graphs/graph_decompositions/vertex_separation.html

Je serais verrryyyyyyyy heureux d'apprendre qu'il y a quelque chose d'implémenté et public pour calculer les décompositions d'arbres, cependant :-)

Nathann

Nathann Cohen
la source
1
Hé, il y a une application Android qui a un testeur de largeur d'arbre . Le code peut être réécrit pour lui donner une décomposition, mais actuellement il ne teste que si la largeur de l'arborescence est tout au plus donnéek. (avertissement: je suis l'un des développeurs)
Pål GD