Surgimiento de la conectividad en las Redes Sociales

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:

  1. Tome cualquier gráfico aleatorio con N número de Nodes.
  2. Ahora elija cualquier Node como Node inicial.
  3. Ahora agregue bordes aleatorios al gráfico y verifique cada vez si el gráfico está conectado o no.
  4. Si el gráfico no está conectado, repita los pasos 2 y 3.
  5. Si el gráfico está conectado, verifique el número de aristas que se agregan y esto será igual a NLogN.
  6. 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
Plot  of Emergence of Connectedness

Trama de Emergencia de Conectividad

 

Publicación traducida automáticamente

Artículo escrito por sankalpsharma424 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *