2011-07-19 23 views
5

He estado leyendo VF2 algorithm para encontrar si dos gráficos son isomorfos, pero de alguna manera me falta el panorama general. Podría ser que me falta el trasfondo relevante en esta área, pero todo lo que veo es un conjunto de reglas que necesito usar en cada paso, sin ver una explicación intuitiva de por qué se están llevando a cabo los pasos.¿Algún ejemplo de funcionamiento del algoritmo VF2?

De búsqueda básica en Google, parece que esto se considera uno de los algoritmos de facto para encontrar si dos gráficos son isomorfos, pero por alguna razón no puedo encontrar una explicación que sea lo suficientemente simple para entender a un nivel alto. ¿O es este algoritmo conocido por un nombre diferente?

En cualquier caso, ¿alguien sabe de algún ejemplo en ejecución de cómo funciona este algoritmo?

+0

¿Qué le pasó a su última pregunta (relacionada)? Eliminado? También estoy interesado/trabajando en cosas muy similares en este momento. Envíeme un correo electrónico si puede (vea mi perfil de la dirección). Entonces eliminaré este comentario. – Szabolcs

+0

@Szabolcs: en realidad, aún no borré completamente la pregunta. Lo siento por eso. Todavía estoy pensando en una buena definición de estabilidad y estaba pensando en volver a publicarla en unas pocas horas cuando me quedé perplejo cuando me preguntó cómo definía la estabilidad. Pero, dejé mi pregunta por ahora. – Legend

Respuesta

8

No estoy seguro de que sea eso lo que está buscando, pero el algoritmo de VF2 procede como se muestra a continuación.

Digamos que usted tiene 2 gráficos: V y V 'y que desea hacer coincidir V con V'

El algoritmo bajar un árbol, en cada paso se intenta hacer coincidir un elemento al lado de V con una de V 'y te paras cuando pasaste por todos los nodos en V' (cuando encuentras una hoja).

Algoritmo:

  • Primer paso: coincidir V vacío con vacío gráfico V'.
  • Segundo paso: tratar de matemáticas un nodo en V con un nodo en V '
  • ...
  • enésimo paso: tratar de coincidir con un nodo en V con un nuevo nodo en V', si no se puede retroceder un paso en el árbol y probar un nuevo partido en el paso anterior .. y si no puede volver de nuevo etc ...
  • ...
  • FIN: cuando se encuentra una hoja, es decir, cuando se pasó por todos los nodos en V 'o cuando recorrió el árbol completo sin encontrar una hoja.

Ejemplo

Aquí está un ejemplo, el algoritmo procede de izquierda a derecha del árbol.

"Un < -> B" significa Partido nodo A de V con el nodo B de V'

enter image description here

esperanza me queda claro y eso es lo que tu buscas.

+0

+1 Sí. ¡Esto es lo que estoy buscando! Muchas gracias por estoSolo unas pocas preguntas más (tontas). Cuando asignó V (1) a V '(1), ¿por qué encontró un 'NO SOL' ?. Supongamos que este es el caso, ahora retrocedemos y mapeamos V (1) a V '(2) y luego mapeamos V (3) a V' (2) y finalmente V (3) a V '(1). ¿Es así como uno lee esto? En ese caso, ¿cuál es la conclusión de su diagrama? Mapeamos V (1) -V '(2), V (3) -V' (2) y V (3) -V '(1). ¿Por qué unir V (3) con dos nodos? O debo interpretarlo mal. Como has explicado hasta ahora, ¿podrías hacerlo más detallado si no te importa? – Legend

+0

Tienes razón. Acabo de corregirlo. Cometí un error en el nombre de los nodos. Debería verificar esto de nuevo: D ... es un poco confuso usar 1, 2, 3 y 1, 2, 3 en ambos gráficos. Debería haberlo cambiado a 1,2, 3 y A B C. Espero que este sea correcto. :) –

+1

¡Muchas gracias! ¡Pensé que me estaba perdiendo incluso la explicación más detallada! Gracias por arreglarlo Acepté tu respuesta como la solución, pero si tienes tiempo, ¿te importaría explicar cuál es la intuición detrás de las cinco reglas (R_pred, R_succ, R_new ...)? ¿Se usan para concluir los casos de "No Sol" en su gráfico? – Legend

Cuestiones relacionadas