Ejercicios Weak Ties & Random Networks

Ejercicios básicos de redes

Ejercicio Clustering Coeficient

Calcule el coeficiente de clustering para cada nodo y en la red (sin dirección)


In [29]:
import networkx as nx
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

In [40]:
edges = set([(1,2),(2,1),(2,3), (2,4), (2,5), (4,5), (4,6), (5,6), (4,7)])

In [51]:
# nodes = set()
for x,y in edges:
    nodes.add(x)
    nodes.add(y)
print(nodes)
    
def get_vecinos(nodo):
    vecinos = set()
    for s,t in edges:
        if s == nodo:
            vecinos.add(t)
        if t == nodo:
            vecinos.add(s)
    return vecinos

def get_l_k_node(nodo):
    vecinos_nodo = get_vecinos(nodo)
    k = len(vecinos_nodo)
    l = 0
    for s in vecinos_nodo:
        for t in vecinos_nodo:
            if (s,t) in edges:
                l += 1
    return l,k

def get_clustering_coefficient(nodo):
    l,k = get_l_k_node(nodo)
    combinatoria = k*(k-1)
    if combinatoria != 0:
        c_nodo = (2*l)/(k*(k-1))
    else:
        c_nodo = 0
    return c_nodo

print("CALCULO DEL COEFICIENTE DE CLUSTERING SIN LA LIBRERIA:")
print(" ")

for x in nodes:
    clustering_coefficient_x = get_clustering_coefficient(x)
    print("Coeficiente de clustering de ", x, ":", clustering_coefficient_x)
    
print(" ")
print("CALCULO DEL COEFICIENTE DE CLUSTERING CON LA LIBRERIA NETWORKX:")
print(" ")

G=nx.Graph()
G.add_edges_from(edges)
print(nx.clustering(G))
nx.draw_networkx(G)


{1, 2, 3, 4, 5, 6, 7}
CALCULO DEL COEFICIENTE DE CLUSTERING SIN LA LIBRERIA:
 
Coeficiente de clustering de  1 : 0
Coeficiente de clustering de  2 : 0.16666666666666666
Coeficiente de clustering de  3 : 0
Coeficiente de clustering de  4 : 0.3333333333333333
Coeficiente de clustering de  5 : 0.6666666666666666
Coeficiente de clustering de  6 : 1.0
Coeficiente de clustering de  7 : 0
 
CALCULO DEL COEFICIENTE DE CLUSTERING CON LA LIBRERIA NETWORKX:
 
{1: 0.0, 2: 0.16666666666666666, 4: 0.3333333333333333, 7: 0.0, 6: 1.0, 5: 0.6666666666666666, 3: 0.0}

Ejercicio Weigthed Netwroks

Cree una red no direccionada con los siguientes pesos.

(a, b) = 0.3 (a, c) = 1.0 (a, d) = 0.9 (a, e) = 1.0 (a, f) = 0.4 (c, f) = 0.2 (b, h) = 0.2 (f, j) = 0.8 (f, g) = 0.9 (j, g) = 0.6 (g, k) = 0.4 (g, h) = 0.2 (k, h) = 1.0


In [ ]:

Imprima la matriz de adyasencia


In [ ]:

Ejercicio Weak & Strong ties

Con la misma red anterior asuma que un link debil es inferior a 0.5, cree un código que calcule si se cumple la propiedad "strong triadic closure"


In [ ]:

Cambie un peso de los links anteriores para que se deje de cumplir la propiedad y calcule si es cierto. Explique.


In [ ]:

Escriba un código que detecte puntes locales y que calcule el span de cada puente local


In [ ]:

Ejercicio Random Networks

genere 1000 redes aleatorias N = 12, p = 1/6 y grafique la distribución del número de enlaces


In [ ]:

Grafique la distribución del promedio de grados en cada una de las redes generadas del ejercicio anterior


In [ ]:

Haga lo mismo para redes con 100 nodos


In [ ]:


In [ ]:

Ejercicio Random Networks - Componente Gigante

Grafique como crece el tamaño del componente más grande de una red aleatoria con N=100 nodos y diferentes valores de p

(grafique con promedio de grado entre 0 y 4 cada 0.05)


In [ ]:

Grafique cuál es el porcentaje de nodos del componente más grande para diferentes valores de p


In [ ]:

Identifique para que valores de p el componente mas grande esta totalmente interconectado


In [ ]: