ITensorNetworks.jl
ITensorNetworks.jl copied to clipboard
A package with general tools for working with higher-dimensional tensor networks based on ITensor.
Define `@visualize` for `AbstractNamedGraph`.
Add functionality for reordering the vertices of a tensor network/graph to minimize the [graph bandwidth](https://en.wikipedia.org/wiki/Graph_bandwidth). It appears that a popular algorithm for this is the [Cuthill-McKee algorithm](https://en.wikipedia.org/wiki/Cuthill%E2%80%93McKee_algorithm). There is a...
Currently to make a tensor network on a grid (a finite MPS/PEPS) the interface is: ```julia using NamedGraphs using ITensorNetworks s = siteinds("S=1/2", named_grid((2, 2))) ψ = ITensorNetwork(s; link_space=4) ```...
I think ultimately `inner`/`loginner` for TT should just be designed based on calling a more general `contract` function with a contraction sequence appropriate for a tree network, and we can...
Generalize `contract(::ITensorNetwork, ::AbstractEdge)` by connecting it to the generic graph function [`merge_vertices!(::Graph, vertices)`](https://juliagraphs.org/Graphs.jl/dev/core_functions/operators/#Graphs.merge_vertices!-Union{Tuple{T},%20Tuple{SimpleGraph{T},%20Vector{U}%20where%20U%3C:Integer}}%20where%20T). `contract` can be implemented as `merge_vertices!` with a custom reduction/merge operation on the metadata of the vertices...
Define `tree_orthogonalize(tn::ITensorNetwork, vertex[, distance=nv(tn)])` for performing a _tree orthogonalization_ of a tensor network, as defined in Section II C and Fig. 3 of https://arxiv.org/abs/2206.07044 (referred to as the _tree gauge_...
Implement overloads of [`Graphs.union`](https://juliagraphs.org/Graphs.jl/dev/core_functions/operators/#Base.union-Union{Tuple{T},%20Tuple{T,%20T}}%20where%20T%3C:Graphs.SimpleGraphs.AbstractSimpleGraph) for `DataGraphs`, like `ITensorNetwork` and `IndsNetwork` (see the definition [on Wikidedia](https://en.wikipedia.org/wiki/Graph_operations#Binary_operations) as the graph resulting from taking the union of the vertices and edges of the...
Allow passing `Graphs.SimpleGraph` to `siteinds(site_type::String, graph)`. Also define a default constructor `NamedDimGraph(g::SimpleGraph) = NamedDimGraph(g, 1:nv(g))` which could be used internally in `siteinds(::String, graph)`. _Originally posted by @mtfishman in https://github.com/mtfishman/ITensorNetworks.jl/pull/6#discussion_r978956086_
This is quick PR too add support for turning off/ on normalization in the `default_message_update` function for belief propagation. This avoids having to define a new function when wishing to...