elcocodrilotito

6.5.4

Mar 22nd, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.91 KB | None | 0 0
  1. #Daniel Bedialauneta
  2. def rep(v): #n=len(v)
  3.     d=dict() #1
  4.     for i in v: #n
  5.         if i in d: #Mirar si está en el diccionario tiene un coste fijo que no depende del tamaño del diccionario
  6.             d[i]+=1
  7.         else:
  8.             d[i]=1
  9.     lista=[] #1
  10.     for i in d: #k
  11.         if d[i]>1:
  12.             lista.append(i)
  13.     return lista #1
  14.  
  15. """
  16. Si decimos que k=numero de elementos diferentes
  17. t(n)=1+n+1+k+1=n+k+3
  18.  
  19. Mejor caso: k=1 (todos los elementos iguales)
  20. t(n)=n+4
  21. t(n) está en O(n)
  22.  
  23. Peor caso: k=n (todos los elementos diferentes)
  24. t(n)=2n+3
  25. t(n) está en O(n) también
  26.  
  27. Aunque ambos pertenezcan al mismo O(g(n)) (en este caso O(n)), a efectos prácticos, en el peor caso se tarda el doble que en el mejor.
  28. Es decir, t(n) pertenece a Theta(n)
  29. """
  30.  
  31. #Prueba de la última afirmación verde y de que crecen linealmente
  32. import time
  33. import random
  34. longitud=10000000
  35. v1=[0 for i in range(longitud)] #Mejor caso, todos repetidos
  36. v2=[]
  37. for i in range(longitud): #Peor caso, todos diferentes
  38.     v2.append(i)
  39.  
  40. t1=time.process_time()
  41. rep(v1)
  42. t2=time.process_time()
  43. rep(v2)
  44. t3=time.process_time()
  45.  
  46. t_mejor_caso=t2-t1
  47. t_peor_caso=t3-t1
  48.  
  49. print(longitud)
  50. print("t_mejor_caso = {0:.40f}".format(t_mejor_caso))
  51. print("t_peor_caso  = {0:.40f}".format(t_peor_caso))
  52.  
  53. """
  54. Para longitud=10.000 (diez mil)
  55. t_mejor_caso = 0.0       (todos repetidos)
  56. t_peor_caso  = 0.0156250 (todos diferentes)
  57.  
  58. longitud=100.000 (cien mil)
  59. t_mejor_caso = 0.0156250
  60. t_peor_caso  = 0.0312500
  61.  
  62. longitud=1.000.000 (un millón) Más significativo que los anteriores
  63. t_mejor_caso = 0.1406250
  64. t_peor_caso  = 0.2812500
  65.  
  66. longitud=10.000.000 (diez millones)
  67. t_mejor_caso = 1.3906250
  68. t_peor_caso  = 2.8906250
  69.  
  70. En 1.000.000 y en 10.000.000 (que son los más significativos) apreciamos
  71. que el peor caso es doblemente más costoso que el mejor.
  72. Además, entre estas dos longitudes observamos la linealidad de la función
  73. """
Add Comment
Please, Sign In to add comment