Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #!/usr/bin/python
  2.  
  3. # Primero abrimos el archivo donde tenemos la matriz
  4. def cargar(file):
  5.     fl = open(file, "r")
  6.     matrix = []
  7.     for i in fl:
  8.         temp = []
  9.     i = i.replace(" ", "")
  10.     i = i[:-1]
  11.         for j in i:
  12.         temp.append( int(j) )
  13.     matrix.append(temp)
  14.     fl.close()
  15.     return matrix
  16.  
  17. # Obtenemos los grados de la matriz
  18. def obtener_grados(file):
  19.     matrix = cargar(file) # carga la matriz
  20.     grados = []
  21.     for i in matrix:
  22.         contador = 0
  23.         for j in i:
  24.             contador += j # suma los números
  25.         grados.append(contador)
  26.     return grados
  27.  
  28. def distribucion_grado(file, k):
  29.     grados = obtener_grados(file)
  30.     probabilidad = 0
  31.     for i in grados:
  32.         if i == k:
  33.             probabilidad += 1
  34.     probabilidad = float(probabilidad) / len(grados) # Formula para obtener Pr(k) = probabilidad entre el número de grados
  35.     return probabilidad
  36.  
  37. def densidad(file):
  38.     matrix = cargar(file)
  39.     vertices = float(len(matrix))
  40.     aristas = 0.0
  41.     for i in matrix:
  42.         for j in i:
  43.             aristas += j
  44.     aristas = aristas/2
  45.     return ( (2*aristas)/(vertices*(vertices-1))) # Formula para obtener la Densidad = (2)M / n(n-1)
  46.  
  47. def main():
  48.  
  49.     fl = open("distribucion.dat", "w") # Guardamos la tabla generada en un archivo .dat para graficarlo con gnuplot
  50.    
  51.     total_probabilidad = 0.0
  52.     for i in range(0, 21):
  53.         temp = distribucion_grado("zachary.txt", i)
  54.         fl.write(str(i)+" "+str(temp)+"\n")
  55.         total_probabilidad +=  temp
  56.  
  57.     print "Sumatoria de la distribucion: ", total_probabilidad
  58.     print "Densidad del grafo: ", densidad("zachary.txt")
  59.  
  60.     fl.close()
  61.  
  62. main()