Advertisement
B4rr

Untitled

May 14th, 2018
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.78 KB | None | 0 0
  1. # In[7]:
  2.  
  3. def SimpD(_f1,_f2,_g1,_g2,_m1,_m2):
  4.     s=0
  5.     for i in range(1,_m1+1):
  6.         s+=binomial(_f1[i],2)+binomial(_f2[i]-_f1[i],2)+binomial(_m2-_f2[i],2)
  7.     for j in range(1,_m2+1):
  8.         s+=binomial(_g1[j],2)+binomial(_g2[j]-_g1[j],2)+binomial(_m1-_g2[j],2)
  9.     return(binomial(_m1+_m2,3)-binomial(_m1,3)-binomial(_m2,3)-s)
  10.  
  11.  
  12. # In[8]:
  13.  
  14. def g12(_f1,_f2,_m1,_m2):
  15.     _g1=[0]+[max(i for i in range(_m1+1) if _f2[i]<j) for j in range(1,_m2+1)]
  16.     _g2=[0]+[max(i for i in range(_m1+1) if _f1[i]<j) for j in range(1,_m2+1)]
  17.     return [_g1,_g2]
  18.  
  19.  
  20. # In[9]:
  21.  
  22. def int2base(x, base, length):
  23.         digits = []
  24.  
  25.         k=0
  26.         while k<length:
  27.             digits.append(int(x % base))
  28.             x = int(x / base)
  29.             k+=1
  30.  
  31.         digits.reverse()
  32.  
  33.         return digits
  34.  
  35.  
  36. # In[10]:
  37.  
  38. def allfunctions(_m1,_m2):
  39.     return[[i for i in int2base(idx,_m2+1,_m1)] for idx in range((_m2+1)^_m1)]
  40.          
  41.  
  42.  
  43. # In[21]:
  44.  
  45. N=8
  46. OptSigma=0
  47. Optm1=0
  48. Optm2=N
  49. for m1 in range(N+1):
  50.     m2=N-m1
  51.    
  52.     for tmp1 in allfunctions(m1,m2):
  53.         tmp1=[0]+sorted(tmp1)                                               #Jetzt einen loop weiter aussen
  54.         for tmp2 in allfunctions(m1,m2):
  55.             tmp2=[0]+sorted(tmp2)
  56.             f1=[min(tmp1[i],tmp2[i]) for i in range(m1+1)]
  57.             f2=[max(tmp1[i],tmp2[i]) for i in range(m1+1)]
  58.             [g1,g2]=g12(f1,f2,m1,m2)
  59.            
  60.          
  61.             sigma=SimpD(f1,f2,g1,g2,m1,m2)
  62.            
  63.             if sigma>OptSigma or (sigma>=OptSigma and m1-m2>Optm1-Optm2):
  64.                 Opt=[f1,f2,g1,g2]
  65.                 OptSigma=sigma
  66.                 Optm1=m1
  67.                 Optm2=m2
  68.  
  69.  
  70. # In[22]:
  71.  
  72. print Opt
  73. print OptSigma
  74.  
  75.  
  76.        
  77. # Out[22]:
  78.  
  79. [[0, 0, 0, 1, 2], [0, 1, 2, 3, 4], [0, 0, 1, 2, 3], [0, 2, 3, 4, 4]]
  80. 32
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement