Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # coding: utf-8
- # In[1]:
- def SimpD(_f1,_f2,_g1,_g2,_m1,_m2):
- s=0
- for i in range(1,_m1+1):
- s+=binomial(_f1[i],2)+binomial(_f2[i]-_f1[i],2)+binomial(_m2-_f2[i],2)
- for j in range(1,_m2+1):
- s+=binomial(_g1[j],2)+binomial(_g2[j]-_g1[j],2)+binomial(_m1-_g2[j],2)
- return(binomial(_m1+_m2,3)-binomial(_m1,3)-binomial(_m2,3)-s)
- # In[2]:
- def g12(_f1,_f2,_m1,_m2):
- _g1=[0]+[max(i for i in range(_m1+1) if _f2[i]<j) for j in range(1,_m2+1)]
- _g2=[0]+[max(i for i in range(_m1+1) if _f1[i]<j) for j in range(1,_m2+1)]
- return [_g1,_g2]
- # In[3]:
- def All_Increasing_Sorted_Function_Pairs(_m1,_m2L,_m2U):
- if _m1==0: return[[[0],[0]]]
- return [[_f1+[i],_f2+[j]]
- for [_f1,_f2] in All_Increasing_Sorted_Function_Pairs(_m1-1,_m2L,_m2U)
- for i in range(max(_f1),_m2U+1)
- for j in range(max(_f2+[i]),_m2U+1)]
- # In[ ]:
- N=11
- OptSigma=-1
- Optm1=0
- Optm2=N
- Opt=set()
- for m1 in range(N+1):
- m2=N-m1
- for [f1,f2] in All_Increasing_Sorted_Function_Pairs(m1,0,m2):
- [g1,g2]=g12(f1,f2,m1,m2)
- #print (f1,f2,g1,g2)
- sigma=SimpD(f1,f2,g1,g2,m1,m2)
- if sigma==OptSigma:
- if not ((f1,f2,g1,g2,m1,m2) in Opt):
- Opt+=[(f1,f2,g1,g2,m1,m2)]
- NOpt+=1
- if sigma>OptSigma:
- Opt=[(f1,f2,g1,g2,m1,m2)]
- OptSigma=sigma
- NOpt=1
- # In[70]:
- print NOpt
- # In[71]:
- Opt
- # In[49]:
- print OptSigma
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement