How to code Tensor Networks?
Answers
Answered by
0
If you aren't familiar with tensor networks, first see this post.
Tensor networks are very useful in quantum many-body systems where the number of coefficients required to specify the quantum state grows exponentially, i.e., for a -level system of particles, the number of required coefficients is . This is obviously "required" if we need to take into account all possible states, including entangled ones. But the truth is that we may not need to.
It can be shown that, under suitable conditions, that the region of Hilbert space accessible by arbitrary unitary operations is exponentially small [0]. The "suitable conditions" are (1) that your Hamiltonian is "local", meaning that it can be written as a sum of -body Hamiltonians where is independent of system size, and (2) that the evolution time scales polynomially with system size. In other words, you would need exponential amounts of time to explore the entire Hilbert space if you restrict yourself to local Hamiltonians. This is completely reasonable since almost all physical interactions are local in nature. And, by the way, notice that we have no restriction on the correlation length between particles.
So instead of screwing around with a ridiculously large state-space, we should find a way to ignore unphysical regions of the state-space and work with the tiny portion that matters. The tensor network is a tool for understanding how to decompose the wavefunction so that it can be stored and operated on efficiently in computer memory. The particular decomposition strategy is represented as a type of tensor network, where tensors are vertices of a graph and edges between tensors represent sums over tensor indices. Open edges correspond to non-summed indices, the preserved degrees of freedom. As an example, consider these two (special) tensor networks
Tensor networks are very useful in quantum many-body systems where the number of coefficients required to specify the quantum state grows exponentially, i.e., for a -level system of particles, the number of required coefficients is . This is obviously "required" if we need to take into account all possible states, including entangled ones. But the truth is that we may not need to.
It can be shown that, under suitable conditions, that the region of Hilbert space accessible by arbitrary unitary operations is exponentially small [0]. The "suitable conditions" are (1) that your Hamiltonian is "local", meaning that it can be written as a sum of -body Hamiltonians where is independent of system size, and (2) that the evolution time scales polynomially with system size. In other words, you would need exponential amounts of time to explore the entire Hilbert space if you restrict yourself to local Hamiltonians. This is completely reasonable since almost all physical interactions are local in nature. And, by the way, notice that we have no restriction on the correlation length between particles.
So instead of screwing around with a ridiculously large state-space, we should find a way to ignore unphysical regions of the state-space and work with the tiny portion that matters. The tensor network is a tool for understanding how to decompose the wavefunction so that it can be stored and operated on efficiently in computer memory. The particular decomposition strategy is represented as a type of tensor network, where tensors are vertices of a graph and edges between tensors represent sums over tensor indices. Open edges correspond to non-summed indices, the preserved degrees of freedom. As an example, consider these two (special) tensor networks
Answered by
0
knowing of c++ is needed, . This is mostly geared towards DMRG but it also provides a library for general tensor operations, and the "tutorials" on SVD and tensor diagrams are pretty general.
Similar questions