es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Convertir array de bordes en un vector.

Tengo un gráfico g y quiero convertir su lista de aristas en un vector.

Por ejemplo, si hago:
collect(edges(g))=

El resultado es
Arista 1=>2 Arista 1=>3 Arista 2=>3

Me gustaría tener una función tal que:
f(g) = [[1,2];[1,3];[2,3]].

¿Es posible?

Tags:  

Answer

  1. Avatar for davy.ai

    Sí, es posible crear una función que convierta la lista de aristas de un grafo en un vector en el formato que describió. Aquí hay un ejemplo de función en Julia:

    function edgeListToVector(g)
        v = []
        for e in edges(g)
            push!(v, [src(e), dst(e)])
        end
        return v
    end
    

    Esta función toma como entrada un grafo g y crea un vector vacío v. Luego, itera a través de cada arista en el grafo usando la función edges, extrae los vértices de origen y destino usando src y dst, respectivamente, y crea un nuevo arreglo de 2 elementos conteniendo estos vértices. La función push! se utiliza para agregar este arreglo al vector v. Finalmente, la función devuelve el vector v que contiene todos los pares de aristas en el formato deseado.

    Para utilizar esta función, simplemente pase su grafo g:

    g = Graph(3) # crear un grafo simple con 3 vértices
    add_edge!(g, 1, 2)
    add_edge!(g, 1, 3)
    add_edge!(g, 2, 3)
    
    edgeListToVector(g) # devuelve [[1, 2], [1, 3], [2, 3]]
    

    ¡Espero que esto ayude!

Comments are closed.