private void calAlpha(){
		chart[0][words.length-1].alpha=1.0;
		for(int d=words.length-1;d>=0;d--){
			for(int i=0;i+d<words.length;i++){
				//for every p=i,q=i+d
				Chart c=chart[i][i+d];
				for(int j=i+d+1;j<words.length;j++){//left 
					Chart cc=chart[i][j];
					if(cc.lC==c){
						double p=srules.get(new SyntacticRule(cc.s,cc.lC.s,cc.rC.s));
						c.alpha+=p*cc.alpha*cc.rC.beta;
					}
				}
				for(int j=0;j<=i-1;j++){
					Chart cc=chart[j][i+d];
					if(cc.rC==c){
						double p=srules.get(new SyntacticRule(cc.s,cc.lC.s,cc.rC.s));
						c.alpha+=p*cc.alpha*cc.lC.beta;
					}
				}
				c.printDebug();
			}
		}
	}