1 3
2 5
3 6
4 7
というリストデータに対して、
$ cat gai3.awk { m[$2"a"$1]=1; } END{ c=0.85 for(i in m){ split(i,n,"a") Sum[n[2]]=1+Sum[n[2]]; } for( i in m){ split(i,n,"a") h[i]=-c*(m[i]/Sum[n[2]]); #print n[1],n[2],h[i] } n123=0; for(i in Sum){ n123=n123+1; } n123=n123+0.0; print n123; p_N=1.0/n123 for( i in Sum){ y[i]=p_N; } usiro=1; mae=100; while(sqrt((usiro-mae)^2)/sqrt(((usiro+mae)/2.0)^2)>=0.001){ for(i in h){ split(i,out,"a"); l[out[1]]=l[out[1]]+h[i]*y[out[2]]; } mae=suml; suml=0; for(i in y){ x[i]=(p_N-l[i]); y[i]=x[i] suml=suml+ y[i]; delete l[i] } usiro=suml; print suml; } for(i in Sum){ Sum2=Sum2+y[i]; } print "end" for(i in Sum){ print i,y[i]/Sum2; }