library(gtools) library(parallel) #vari?ci?k (sorok) ?s permut?ci?k (oszlopok) m?trixa #az "x" vektorb?l megn?zz?k, hogy az "y" melyik helyen van s1=function(x,y){ s1=which(x==y) } #az "x" vektorb?l megn?zz?k, hogy az "yvektor" elemei mely helyeken vannak s2=function(x,yvektor){ s2=sapply(c(1:length(yvektor)),function(i){s1(x,yvektor[i])}) } #Megn?zz?k, hogy a "z" vektorban az elemek n?vekv? sorrendben vannak-e s3=function(z){ s3=prod(sapply(c(1:(length(z)-1)),function(i){(z[i]0]) #saj?tvektorm?trix svmatrix=rep(0,dim(b)[1]*kk) dim(svmatrix)=c(dim(b)[1],kk) row.names(svmatrix)=c(1:dim(b)[1]) colnames(svmatrix)=mgysertek[mgysertek>0] #bubi-adik vari?ci?, dama-adik saj?tvektor for (dama in 1:kk){ C=C0 d=1 for (i in 1:(n-2)){ for (h in (i+1):(n-1)){ C[i,h]=CC[d,dama] d=d+1 } } for (bubi in 1:dim(b)[1]){ row.names(svmatrix)[bubi]=paste("[",paste(b[bubi,],collapse = ","),"]",sep = "") w=b[bubi,] if ((alpha %in% w)*(1-(beta %in% w))>0){ s=s1(w,alpha) svmatrix[bubi,dama]=sum(sapply(c(2:(n-1)), function(h){gfv(1,h,s,n,k)*sum(C[1:(h-1),h])})) } if ((beta %in% w)*(1-(alpha %in% w))>0){ s=s1(w,beta) svmatrix[bubi,dama]=-sum(sapply(c(2:(n-1)), function(h){gfv(1,h,s,n,k)*sum(C[1:(h-1),h])})) } if ((alpha %in% w)*(beta %in% w)>0){ s=s1(w,alpha) r=s1(w,beta) if (sr){ sseged=sum(sapply(c(1:(n-2)), function(i){sum(sapply(c((i+1):(n-1)),function(h){ffv(i,h,r,s,n,k)*C[i,h]}))})) svmatrix[bubi,dama]=-sseged } } } } svmatrix[abs(svmatrix)<10^(-6)]=0 baloldalisv=svmatrix } rovidtabl1=function(k){ q=choose(k,2)+k rovidtabl1=rep("",q) u=1 for (i in 1:(k-1)){ for (j in (i+1):k){ uu=c(1:k) uu[i]=1 uu[j]=2 uu[setdiff(c(1:k),c(i,j))]=c(3:k) rovidtabl1[u]=paste("[",paste(uu,collapse = ","),"]",sep = "") u=u+1 } } for (i in 1:k){ uu=c(1:k) uu[i]=1 uu[setdiff(c(1:k),c(i))]=c(3:(k+1)) rovidtabl1[u]=paste("[",paste(uu,collapse = ","),"]",sep = "") u=u+1 } rovidtabl1 } ###X oszlopai Y (vagy -Y) mely oszlopának valahányszorosával egyeznek meg #x vektor megegyezik-e y vektorral vagy -y-al (konstanszorosával) u3=function(x,y){ x[abs(x)<10^(-6)]=0 y[abs(y)<10^(-6)]=0 if ((abs(x)>0)!=(abs(y)>0)){ u3=100000 } if ((abs(x)>0)==(abs(y)>0)){ x=x[abs(x)>0] y=y[abs(y)>0] a=max(x/y)-min(x/y) u3=100000*(a>10^(-4))+(1-(a>10^(-4))) } u3 } #x vektor megegyezik-e Y vagy -Y mátrix valamely oszlopának valahányszorosával, különben 100000 u4=function(x,Y){ q2=dim(Y)[2] a=sapply(c(1:q2),function(j){j*u3(x,Y[,j])}) u4=min(100000,min(a)) } oszlopegyez2=function(X,Y){ oszlopegyez2=list() q1=dim(X)[2] q2=dim(Y)[2] oszlopegyez2[[1]]=sapply(c(1:q1), function(i){u4(X[,i],Y)}) a=oszlopegyez2[[1]] a=a[a!=100000] oszlopegyez2[[2]]=setdiff(c(1:q2),a) oszlopegyez2 }