Como otros comentaristas han señalado, no es sencillo algoritmo para todos los gráficos que se ejecuta muy rápido. Sé que 'muy rápido' es vago, pero yo no soy capaz de analizar la complejidad del problema se da especialmente bien.
Sin embargo...
Para muchas clases de gráfico, tales como las de los delimitada grado, treewidth, etc - hay varios algoritmos para determinar un isomorfismo de la función que le asignan uno a la otra.
Un enfoque se basa en la partición de refinamiento. Esto es muy bien descrito aquí , pero voy a dar una breve descripción de como yo la entiendo. Tenga en cuenta que esto es a grandes rasgos la técnica utilizada por nAUTy y programas similares (bliss, rastros, descarado) para calcular gráfico isomorphisms y automorfismos.
Lo que se requiere para isomorfismo entre los dos gráficos - G, H - es un canónica de etiquetado (cl) para cada una de las que cl(G) = cl(H). Si usted simplemente querían probar para isomorfismo, entonces usted podría calcular un "certificado" para ambos. Por un par de árboles, esto es tan simple como una cadena formada por recursivamente de la construcción de las hojas (que llevan la etiqueta '01'), la clasificación en cada etapa, hasta llegar a la raíz (ver la descripción de partida "Para los árboles..." en la página de la wiki para canónica de etiquetado).
Para obtener la actual asignación, necesitamos crear una canónica de etiquetado - en otras palabras, elegir un determinado permutación para cada gráfico que 'reetiqueta' en la forma canónica. Aquí es donde la partición de refinamiento. Comenzando con una partición root - tales como la partición de los vértices de grado - nos sucesivamente 'refinar' la partición hasta que llegamos permutaciones. Las permutaciones son, en este punto de vista, sólo 'discretos' particiones con un vértice en cada bloque.
Aquí, una partición de Un es "más fino" que el de otra partición de B si tenemos dividir uno o más de los bloques de conseguir B. Dependiendo de cómo deseamos que el bloque de dividir, y cómo los bloques están ordenados en el refinado niño partición, tenemos un especial de etiquetado. El procedimiento de refinamiento de las formas de un árbol de particiones, con permutaciones como las hojas - y elegimos (decir) la primera de ellas nos alcance.
Es evidente que hay mucho más en este tema, pero es una buena introducción a este que he encontrado en este libro llamado "los Algoritmos de cálculo : la Generación de la Enumeración y de la Búsqueda" por Kreher y Stinson.