LDA algorithm