Generador de grafos aleatorio con Sagemaths

Un sencillo generador de grafos aleatorios con sagemath

Se llama matriz de adyacencia de un grafo a una matriz cuadrada para representar relaciones entre pares de vértices. Un 1 en la fila i columna j representa una arista entre los vertices i y j.
Es decir, la matriz de adyacencia:

M=Matrix([[1,0,1,1],[0,1,0,1],[1,1,0,1],[0,1,0,1]])
M

[1 0 1 1]
[0 1 0 1]
[1 1 0 1]
[0 1 0 1]

Ejecutada con este código:
M=Matrix([[1,0,1,1],[0,1,0,1],[1,1,0,1],[0,1,0,1]])
G = Graph(M)
G.plot().show()

Representa el siguiente grafo
sage0.png

Modificando ese código se puede construir un sencillo generador de grafos aleatorio.
Para generar un 1 o un 0 aleatoriamente utilizamos: int(round(random()))
y para crear un vector de 10 componentes [i for i in range(10)]. Combinando ambas [int(round(random())) for i in range(10)] se generan vectores como:
[0, 0, 1, 0, 0, 0, 1, 1, 0, 0]

Así que finalmente el generador de grafos aleatorio quedaría así

print("Generador de grafos aleatorio")
nVect=12
M=Matrix([[int(round(random())) for i in range(nVect)] for i in range(nVect)])
G = Graph(M);
G.plot().show()

sage1.png

Artículos relacionados:

Leave a Reply