import networkx as nx
import json as js
a = open("data.txt")
line1 = a.readline()
print(line1)
jfile = js.loads(line1)
jfile
jfile['user']['name']
jfile['user']
G=nx.Graph()
G.add_node(1)
G.add_nodes_from([2,3])
G.nodes(),G.edges()
G.add_edge(1,2)
G.add_edge(1,4)
print(G.edges())
e = (2,3)
G.add_edge(*e)
print(G.edges())
nx.adjacency_matrix(G).toarray()
nx.google_matrix(G,0.98)
nx.pagerank(G,0.98)
G=nx.DiGraph()
G.add_edges_from(((1,2),(2,3),(1,4),(4,1),(2,1)))
print("Matriz de adyacencia",nx.adjacency_matrix(G).toarray(),
"\nMatriz de Google",nx.google_matrix(G,0.98),
"\nPagerank",nx.pagerank(G,0.98),sep='\n')
nx.adjacency_matrix(G).toarray()
No pasa nada al agregar dos veces el mismo arco. Se pueden usar strings para nombrar los nodos (otros objetos también pero no es tan importante para la tarea).
G.add_edge(1,'hola')
G.add_edge(1,'hola')
G.nodes(),G.edges()
nx.adjacency_matrix(G).toarray()
import numpy as np
M = np.array(nx.google_matrix(G,0.98))[:]
v = []
for key, value in nx.pagerank(G,0.98).items():
temp = [key,value]
v.append(temp)
v = np.array(v)[:,1].astype(np.float64)
v.astype(np.float64) , M
np.dot(v,M)
v2 = np.ones_like(v)
v2 = v2/np.sum(v2)
for i in range(1000):
v2 = np.dot(v2,M)
sum((np.dot(v2,M)-v2)**2), sum((np.dot(v,M)-v)**2)
M