# Density matrix renormalization group

The density matrix renormalization group (DMRG) is a numerical variational technique devised to obtain the low-energy physics of quantum many-body systems with high accuracy. As a variational method, DMRG is an efficient algorithm that attempts to find the lowest-energy matrix product state wavefunction of a Hamiltonian. It was invented in 1992 by Steven R. White and it is nowadays the most efficient method for 1-dimensional systems.[citation needed]

## The idea behind DMRG

The main problem of quantum many-body physics is the fact that the Hilbert space grows exponentially with size[further explanation needed]. For example, a spin-1/2 chain of length L has 2L degrees of freedom. The DMRG is an iterative, variational method that reduces effective degrees of freedom to those most important for a target state. The target state is often the ground state.[non sequitur]

After a warmup cycle[definition needed], the method splits the system into two subsystems, or blocks, which need not have equal sizes, and two sites in between. A set of representative states has been chosen for the block during the warmup. This set of left block + two sites + right block is known as the superblock. Now a candidate for the ground state of the superblock, which is a reduced version of the full system, may be found. It may have a rather poor accuracy, but the method is iterative and improves with the steps below. Decomposition of the system into left and right blocks, according to DMRG.

The candidate ground state that has been found is projected into the Hilbert subspace for each block using a density matrix, hence the name. Thus, the relevant states for each block are updated.[further explanation needed]

Now one of the blocks grows at the expense of the other and the procedure is repeated. When the growing block reaches maximum size, the other starts to grow in its place. Each time we return to the original (equal sizes) situation, we say that a sweep has been completed. Normally, a few sweeps are enough to get a precision of a part in 1010 for a 1D lattice.

The first application of the DMRG, by Steven White and Reinhard Noack, was a toy model: to find the spectrum of a spin 0 particle in a 1D box. This model had been proposed by Kenneth G. Wilson as a test for any new renormalization group method, because they all happened to fail with this simple problem. The DMRG overcame the problems of previous renormalization group methods by connecting two blocks with the two sites in the middle rather than just adding a single site to a block at each step as well as by using the density matrix to identify the most important states to be kept at the end of each step. After succeeding with the toy model, the DMRG method was tried with success on the Heisenberg model (quantum).

## Implementation Guide

A practical implementation of the DMRG algorithm is a lengthy work[opinion]. A few of the main computational tricks are these:

• The ground state for the superblock is obtained using the Lanczos algorithm of matrix diagonalization. Another choice is the Arnoldi method, especially when dealing with non-hermitian matrices.
• The Lanczos algorithm usually starts with the best guess of the solution. If no guess is available a random vector is chosen. In DMRG, the ground state obtained in a certain DMRG step, suitably transformed, is a reasonable guess and thus works significantly better than a random starting vector at the next DMRG step.
• In systems with symmetries, we may have conserved quantum numbers, such as total spin in a Heisenberg model (quantum). It is convenient to find the ground state within each of the sectors into which the Hilbert space is divided.
• An example: dmrg of Heisenberg model

## Applications

The DMRG has been successfully applied to get the low energy properties of spin chains: Ising model in a transverse field, Heisenberg model, etc., fermionic systems, such as the Hubbard model, problems with impurities such as the Kondo effect, boson systems, and the physics of quantum dots joined with quantum wires. It has been also extended to work on tree graphs, and has found applications in the study of dendrimers. For 2D systems with one of the dimensions much larger than the other DMRG is also accurate, and has proved useful in the study of ladders.

The method has been extended to study equilibrium statistical physics in 2D, and to analyze non-equilibrium phenomena in 1D.

The DMRG has also been applied to the field of Quantum Chemistry to study strongly correlated systems.

## The matrix product ansatz

The success of the DMRG for 1D systems is related to the fact that it is a variational method within the space of matrix product states. These are states of the form

$\sum _{s_{1}\cdots s_{N}}\operatorname {Tr} (A^{s_{1}}\cdots A^{s_{N}})|s_{1}\cdots s_{N}\rangle$ where $s_{1}\cdots s_{N}$ are the values of the e.g. z-component of the spin in a spin chain, and the Asi are matrices of arbitrary dimension m. As m → ∞, the representation becomes exact. This theory was exposed by S. Rommer and S. Ostlund in .

## Extensions of DMRG

In 2004 the time-evolving block decimation method was developed to implement real time evolution of Matrix Product States. The idea is based on the classical simulation of a quantum computer. Subsequently, a new method was devised to compute real time evolution within the DMRG formalism - See the paper by A. Feiguin and S.R. White .

In recent years, some proposals to extend the method to 2D and 3D have been put forward, extending the definition of the Matrix Product States. See this paper by F. Verstraete and I. Cirac, .

## Related software

• The Matrix Product Toolkit: A free GPL set of tools for manipulating finite and infinite matrix product states written in C++ 
• Uni10: a library implementing numerous tensor network algorithms (DMRG, TEBD, MERA, PEPS ...) in C++
• Powder with Power: a free distribution of time-dependent DMRG code written in Fortran 
• The ALPS Project: a free distribution of time-independent DMRG code and Quantum Monte Carlo codes written in C++ 
• DMRG++: a free implementation of DMRG written in C++ 
• The ITensor (Intelligent Tensor) Library: a free library for performing tensor and matrix-product state based DMRG calculations written in C++ 
• OpenMPS: an open source DMRG implementation based on Matrix Product States written in Python/Fortran2003. 
• Snake DMRG program: open source DMRG, tDMRG and finite temperature DMRG program written in C++ 
• CheMPS2: open source (GPL) spin adapted DMRG code for ab initio quantum chemistry written in C++ 
• Block: open source DMRG framework for quantum chemistry and model Hamiltonians. Supports SU(2) and general non-Abelian symmetries. Written in C++.