Requisito previo: Conceptos básicos de NetworkX
La aparición de la conectividad consiste en comprobar si el gráfico es conexo o no. Dice que en un gráfico de N Nodes, solo necesitamos NLogN bordes para conectar el gráfico.
Acercarse:
Se seguirá el siguiente algoritmo:
- Tome cualquier gráfico aleatorio con N número de Nodes.
- Ahora elija cualquier Node como Node inicial.
- Ahora agregue bordes aleatorios al gráfico y verifique cada vez si el gráfico está conectado o no.
- Si el gráfico no está conectado, repita los pasos 2 y 3.
- Si el gráfico está conectado, verifique el número de aristas que se agregan y esto será igual a NLogN.
- Ahora compruebe que ambas tramas serán casi similares.
Código para verificar la conexión:
Python3
import networkx as nx import matplotlib.pyplot as plt import random # Add N number of nodes in graph g # and return the graph def add_nodes(N): g = nx.Graph() g.add_nodes_from(range(N)) return g # Add 1 random edge def add_random_edge(g): z1 = random.choice(g.nodes()) z2 = random.choice(g.nodes()) if z1 != z2: g.add_edge(z1, z2) return g # Continue adding edges in graph g till # it becomes connected def continue_add_connectivity(g): while(nx.is_connected(g) == False): g = add_random_edge(g) return g # Creates an object of entire process. # Input- number of nodes and Output- # number of edges required for graph # connectivity. def create_instance(N): g = add_nodes(N) g = continue_add_connectivity(g) return g.number_of_edges() # Average it over 100 times def create_average_instance(N): l = [] for i in range(0, 100): l.append(create_instance(N)) return numpy.average(l) # Plot the graph for different number # of edges def plot_connectivity(): a = [] b = [] # j is the number of nodes j = 10 while (j <= 1000): a.append(j) b.append(create_average_instance(j)) i += 10 plt.xlabel('Number of nodes') plt.ylabel('Number of edges required') plt.title('Emergence of connectivity') plt.plot(a, b) plt.show() a1 = [] b1 = [] j = 10 while (j <= 400): a1.append(j) b1.append(j*float(numpy.log(j)/2)) j += 10 plt.plot(a1, b1) plt.show() # main plot_connectivity()
Producción:
10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200
Publicación traducida automáticamente
Artículo escrito por sankalpsharma424 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA