public NDE MAPEstimation(){
		log.info("Variational Bayesian MAP estimation process started.");
		int K = m+n;
		double pi[] = new double[K];
		double sum = 0;
		for(int i=0;i<K;i++) sum += alpha[i];
		for(int i=0;i<K;i++) pi[i] = (alpha[i]-1)/(sum-K);
		double eta[] = new double[K];
		for(int i=0;i<K;i++) eta[i] = (a[i]-1)/b[i];
		double sigma[] = new double[m];
		for(int i=0;i<m;i++){
			sigma[i] = Math.sqrt(1/eta[i]);
		}
		double lambda[] = new double[n];
		for(int i=0;i<n;i++){
			lambda[i] = 1/eta[i+m];
		}
		NDE para = new NDE(pi,sigma,lambda);
		log.info("Variational Bayesian MAP estimation process finished.");
		if(log.isInfoEnabled()){
			StringBuilder sb = new StringBuilder();
			for(int i=0;i<K;i++){
				sb.append((i+1));
				sb.append(":");
				sb.append("pi=");
				sb.append(pi[i]);
				if(i<m){
					sb.append(", sigma=");
					sb.append(sigma[i]);
				}
				else{
					sb.append(", lambda=");
					sb.append(lambda[i-m]);
				}
				sb.append(";");
			}
			log.info(sb.toString());
		}
		return para;
	}