Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.78 KB | None | 0 0
  1. grafo.py
  2.  
  3.     # Recibe un vertice a borrar y elimina todas las relaciones con otros vertices y luego elimina el vertice recibido.
  4.     def borrar_vertice(self, vertice_a_borrar):
  5.         if vertice_a_borrar not in self.vertices: return
  6.         adyacentes = self.adyacentes(vertice_a_borrar)
  7.         for vertice in adyacentes:
  8.             self.vertices[vertice].pop(vertice_a_borrar)
  9.             self.cant_aristas -= 1
  10.         self.vertices.pop(vertice_a_borrar)
  11.         self.cant_vertices -= 1
  12.  
  13.     # Devuelve el promedio de grado del grafo
  14.     def promedio_grado(self):
  15.         return (2*self.cant_aristas)/self.cant_vertices
  16.        
  17.     # Devuelve el estimador de máxima verosimilitud de la varianza del promedio del grado del grafo
  18.     def varianza_grado(self):
  19.         sumatoria = 0
  20.         for vertice in self.vertices:
  21.             sumatoria += ((len(self.adyacentes(vertice)) - self.promedio_grado()) ** 2)
  22.         return sumatoria/self.cant_vertices
  23.    
  24.     # Devuelve el estimador de máxima verosimilitud del desvío estándar del promedio del grado del grafo
  25.     def desvio_estandar_grado(self):
  26.         return math.sqrt(self.varianza_grado())
  27.  
  28.     def dicc_grados(self):
  29.         dicc_grados = {}
  30.         i=0
  31.         for vertice in self.vertices:
  32.             grado_vertice = len(self.adyacentes(vertice))
  33.             dicc_grados[grado_vertice] = dicc_grados.get(grado_vertice, 0) + 1
  34.         return dicc_grados
  35. ************************************************************************************************
  36. tp3.py
  37.  
  38. from grafo import *
  39. import csv
  40. import sys
  41. import random
  42. import heapq
  43. import nodo_heap
  44. import queue
  45. import merge_sort
  46. import matplotlib.pyplot as plt
  47. import numpy as np
  48. import pylab as pl
  49. from time import time
  50.  
  51. def similares_recomendar_auxiliar(grafo, vertice_inicial, cantidad_usuarios_semejantes, operacion):
  52.     try:
  53.         if vertice_inicial not in grafo:
  54.             print(MENSAJE_ERROR_USUARIO_INVALIDO)
  55.             return
  56.         puntajes = random_walks(grafo, vertice_inicial, LARGO_RECORRIDO_RW, CANTIDAD_RECORRIDOS_RW, None)
  57.         if operacion.lower() == 's': maximos = k_maximos_diccionario(puntajes, cantidad_usuarios_semejantes, None, vertice_inicial)
  58.         elif operacion.lower() == 'r': maximos = k_maximos_diccionario(puntajes, cantidad_usuarios_semejantes, grafo, vertice_inicial)
  59.         else: raise ValueError
  60.         for nodo in maximos:
  61.             print(nodo.obtener_dato(), end=' ')
  62.         print()
  63.     except ValueError: print("Parámetro operación inválido ('s' o 'r')")
  64.  
  65. def similares(grafo, vertice_inicial, cantidad_usuarios_semejantes):
  66.     similares_recomendar_auxiliar(grafo, vertice_inicial, cantidad_usuarios_semejantes, "s")
  67.  
  68. def recomendar(grafo, vertice_inicial, cantidad_usuarios_semejantes):
  69.     similares_recomendar_auxiliar(grafo, vertice_inicial, cantidad_usuarios_semejantes, "r")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement