Me gustaría calcular el ancho de árbol de un gráfico. Hay muy buenas heurísticas para otros problemas de gráficos NP-hard, como VF2 para isomorfismo de subgrafo, con código disponible en igraph, por ejemplo. Los probé en mis gráficos y encuentro que se ejecutan muy rápido para mis datos.
¿Hay algún algoritmo rápido para el cálculo del ancho de árbol en una línea similar?
Respuestas:
Hasta donde yo sé, el estado del arte es lo que se informa en
Hans L. Bodlaender, Fedor V. Fomin, Arie MCA Koster, Dieter Kratsch y Dimitrios M. Thilikos (2012), "Sobre algoritmos exactos para el ancho de árbol", Transacciones ACM en Algoritmos 9 (1): A12, doi: 10.1145 / 2390176.2390188 .
Los métodos descritos allí incluyen un algoritmo implementado con algunas optimizaciones heurísticas para que sea más rápido en la práctica.O∗( 2norte)
fuente
Escribí un artículo llamado A Fast Parallel Branch and Bound Algorithm for Treewidth, en ICTAI 2011. Puede calcular el ancho de árbol en varios núcleos . Utilicé muchas heurísticas y pasé mucho tiempo refinando el programa.
Fui un estudiante universitario aleatorio en China y no pude asistir a una buena conferencia. Pero según los resultados de mi experimento, creo que mi programa es muy rápido. Resolví muchos puntos de referencia sin resolver en Treewidth lib, y mi programa fue 40 veces más rápido que un algoritmo propuesto por Zhou y Hansen en IJCAI 09 ..
Ya no estoy trabajando en este tema. Pero si mi trabajo anterior es útil, puede descargar mi programa (src y exe) desde http://www.callowbird.com/undergraduate-stuff.html y probarlo. (Aún así, es muy muy lento en una instancia un poco más grande)
fuente
fuente
Aquí hay dos encuestas sobre algoritmos para calcular el ancho de árbol que pueden ser útiles. El primero tiene comparaciones empíricas, y tiene varios algoritmos implementados como una biblioteca Java.
fuente
Sage no sabe cómo calcular el ancho de árbol exactamente, pero puede darle el ancho de ruta de gráficos pequeños.
http://www.sagemath.org/doc/reference/graphs/sage/graphs/graph_decompositions/vertex_separation.html
Sin embargo, me alegraría saber que hay algo implementado y público para calcular las descomposiciones de los árboles.
:-)
Nathann
fuente