Función: Algoritmo de FleuryVolver

Descripción

Aplica el algoritmo de Fleury para obtener el camino o ciclo de Euler en un grafo euleriano. Si el grafo no es euleriano, devuelve []

https://www.geeksforgeeks.org/fleurys-algorithm-for-printing-eulerian-path/

Cadena de entrada

gr_fleury

Cadena de salida

GRAFO.fleury

Uso

gr_fleury(<grafo>)

Ejemplos



Multigrafo de los puentes de Könisgberg, no euleriano:

gr_fleury(gr_nuevo([[0,2,2,1],[2,0,0,1],[2,0,0,1],[1,1,1,0]],falso,falso,falso,verdadero))

VectorEvaluado: []

Ciclo euleriano:

eval(gr_etiquetas(g,gr_fleury(g)),g,gr_nuevo([[0,1,1,0,0,0],[1,0,1,1,1,0],[1,1,0,1,1,0],[0,1,1,0,1,1],[0,1,1,1,0,1],[0,0,0,1,1,0]],falso))

VectorEvaluado: ['v0','v1','v2','v3','v1','v4','v3','v5','v4','v2','v0']

Salida en JMEScriptGUI con visor de grafos v0.1:

eval(gr_etiquetas(g,gr_fleury(g)),g,gr_nuevo([[0,1,0,0,1,0],[1,0,1,1,0,1],[0,1,0,0,1,0],[0,1,0,0,1,0],[1,0,1,1,0,1],[0,1,0,0,1,0]],falso))

VectorEvaluado: ['v0','v1','v2','v4','v3','v1','v5','v4','v0']

Salida en JMEScriptGUI con visor de grafos v0.1:

eval(gr_etiquetas(g,gr_fleury(g)),g,gr_nuevo([[0,0,1,1,0,0,0,0],[0,0,0,0,1,0,1,0],[1,0,0,1,1,1,0,0],[1,0,1,0,0,1,1,0],[0,1,1,0,0,0,1,1],[0,0,1,1,0,0,0,0],[0,1,0,1,1,0,0,1],[0,0,0,0,1,0,1,0]],['a','b','c','d','e','f','g','h']))

VectorEvaluado: ['a','c','d','f','c','e','b','g','e','h','g','d','a']

Salida en JMEScriptGUI con visor de grafos v0.1:





Camino euleriano:

eval(gr_etiquetas(g,gr_fleury(g)),g,gr_nuevo([[0,1,1,0,0],[1,0,1,1,1],[1,1,0,1,1],[0,1,1,0,1],[0,1,1,1,0]],falso))

VectorEvaluado: ['v4','v1','v0','v2','v1','v3','v2','v4','v3']

Salida en JMEScriptGUI con visor de grafos v0.1:

eval(gr_etiquetas(g,gr_fleury(g)),g,gr_nuevo([[0,1,1,0,1,0],[1,0,1,1,0,1],[1,1,0,1,1,0],[0,1,1,0,1,1],[1,0,1,1,0,1],[0,1,0,1,1,0]],falso))

VectorEvaluado: ['v5','v1','v0','v2','v1','v3','v2','v4','v3','v5','v4','v0']

Salida en JMEScriptGUI con visor de grafos v0.1:



Desde / Última modificación

v0.6.2.0