Struct TensorNetworkV3::Graph

Nested Relationships

This struct is a nested type of Class TensorNetworkV3.

Struct Documentation

struct Graph

Public Types

using VertexColor = std::uint32_t

The type used to encode the color of a vertex. The restriction of this being as 32-bit integer comes from how BLISS is trying to convert these into RGB values.

Public Functions

Graph() = default
int automorphism_phase(const unsigned int *aut, const container::set<Index, Index::FullLabelCompare> *named_indices = nullptr) const

Computes the phase that an automorphism of this graph incurs: an automorphism maps the network onto itself, up to the signs of the permutations it induces on the slots of antisymmetric bra/ket bundles. A network with an automorphism of phase -1 is identically zero.

Parameters:
  • aut – an automorphism of this graph

  • named_indices – indices that aut must fix, in addition to the external indices of the network; may be null

Returns:

the phase (+1 or -1) of aut, or 0 if aut moves a tensor, an aux slot, a protoindex bundle, an external index or one of named_indices; such automorphisms are not scored

std::size_t vertex_to_index_idx(std::size_t vertex) const
std::optional<std::size_t> vertex_to_tensor_idx(std::size_t vertex) const

maps vertex ordinal to tensor cluster ordinal

Note

usable as bliss::Graph::DotOptions::vertex_to_subgraph

Public Members

std::unique_ptr<bliss::Graph> bliss_graph
std::vector<std::wstring> vertex_labels
std::vector<std::optional<std::wstring>> vertex_xlabels
std::vector<std::optional<std::wstring>> vertex_texlabels
std::vector<VertexColor> vertex_colors
std::vector<VertexType> vertex_types
container::map<Index, std::size_t> idx_to_vertex
std::vector<Index> vertex_indices

the Index represented by each vertex of type VertexType::Index; a null Index for the other vertices

std::vector<bool> vertex_fixed_for_phase

whether each vertex is one that automorphism_phase() requires an automorphism to fix: a tensor core, an aux slot, a protoindex bundle, or an external index of the network

std::vector<container::svector<std::size_t, 4>> antisymm_bundles

the slot vertices of each bra and each ket bundle of an antisymmetric tensor that hold an index, in slot order; bundles 2k and 2k+1 are the bra and the ket of the same tensor

std::vector<std::pair<std::size_t, std::size_t>> antisymm_slots

for each vertex in antisymm_bundles, its bundle and its position in that bundle; {npos, npos} for the other vertices