Exact diagonalization: the Bose-Hubbard model as an example
  We take the Bose-Hubbard model to illustrate exact diagonalization techniques in a pedagogical way. We follow the road of first generating all the basis vectors, then setting up the Hamiltonian matrix with respect to this basis, and finally using the Lanczos algorithm to solve low lying eigenstates and eigenvalues. Emphasis is placed on how to enumerate all the basis vectors and how to use the hashing trick to set up the Hamiltonian matrix or matrices corresponding to other quantities. Although our route is not necessarily the most efficient one in practice, the techniques and ideas introduced are quite general and may find use in many other problems. 
J. M. Zhang and R. X. Dong
cond-mat.stat-mech math-ph math.MP quant-ph