private void constructDenseGraph(ArrayList<_Doc> collection) {
		m_N = collection.size();
		
		//we need to make this very sparse!
		m_transition = new DenseDoubleMatrix2D(m_N, m_N);
		
		double sim;
		
		//construct the connection
		for(int i=0; i<collection.size(); i++) {
			_Doc di = collection.get(i);
			// transition probability is proportion to similarity
			double sum = 0;
			for(int j=0; j<collection.size(); j++) {
				if (i!=j) {
					sim = Math.exp(Utils.dotProduct(di, collection.get(j)));
					m_transition.setQuick(i, j, sim);
					sum += sim;
				}
			}
			
			for(int j=0; j<collection.size(); j++) {
				if (i!=j) {
					sim = m_transition.getQuick(i, j) / sum;
					m_transition.setQuick(i, j, sim);
				}
			}
		}
	}