Computation-tree constructions#

Computation-tree constructions encode multivariate functions in MPS form by explicitly representing their algebraic evaluation as a directed tree (see Ref. https://arxiv.org/abs/2206.03832). Rather than approximating the function globally, these methods follow the structure of its computation, combining intermediate results locally and compressing them at each node.

In SeeMPS, computation trees are built by composing elementary nodes that apply binary functions to an incoming value and a local grid variable. Two main variants are supported:

  1. Chain-like trees, represented by ChainTree.

  2. Branching trees, represented by BinaryTree.

Internal nodes are represented by BranchNode, while terminal nodes are given by ChainRoot for chain-like structures and BinaryRoot for branching structures.

These structures are converted into MPS representations using mps_chain_tree() and mps_binary_tree(), respectively. At each node, intermediate images are optionally compressed, yielding highly sparse MPS cores that reflect the hierarchical structure of the computation. Computation-tree constructions are particularly effective for procedurally defined functions and functions with sharp features, where polynomial expansions and tensor cross interpolation may suffer from slow convergence or Gibbs-type artifacts.

mps_chain_tree(chain_tree[, allowed_support])

Compute the MPS representation of a multivariate function encoded as a ChainTree.

mps_binary_tree(binary_tree)

Compute the MPS representation of a multivariate function encoded as a BinaryTree.

ChainTree

Chain-like computation-tree representation of a multivariate function.

BinaryTree

Binary computation-tree representation of a multivariate function.

ChainRoot

Terminal node for a ChainTree, representing the final binary functional dependence.

BinaryRoot

Terminal node for a BinaryTree, representing the final ternary functional dependence.

BranchNode