BDM (BDM v0.5.0)
View SourceBlock Decomposition Method (BDM) implementation for approximating algorithmic complexity.
Summary
Functions
Computes the BDM complexity of a dataset.
Creates a new BDM instance.
Partitions 1D data into blocks according to boundary condition.
Partitions 2D data into blocks according to boundary condition.
Types
@type binary_matrix() :: [[0 | 1]] | Nx.Tensor.t()
@type binary_string() :: [0 | 1]
@type boundary_condition() :: :ignore | :correlated
@type t() :: %BDM{ backend: :ctm | :lzc, block_size: integer(), boundary: boundary_condition(), ctm_data: map(), ndim: 1 | 2, nsymbols: integer(), warn_missing: boolean() }
Functions
@spec compute(t(), binary_string() | binary_matrix()) :: float()
Computes the BDM complexity of a dataset.
Parameters
bdm: BDM instancedata: Input data (list for 1D, Nx.Tensor or list of lists for 2D)
@spec new( integer(), integer(), integer(), boundary_condition(), :ctm | :lzc, map() | nil, boolean() ) :: t()
Creates a new BDM instance.
Parameters
ndim: Dimensionality (1 for strings, 2 for matrices)nsymbols: Number of symbols (2 for binary)block_size: Size of blocks for decompositionboundary: Boundary condition (:ignore, :correlated)backend: CTM (default) or LZCctm_data: Optional custom CTM lookup tablewarn_missing: Whether to warn about missing CTM values
Examples
iex> BDM.new(1, 2, 2)
%BDM{ndim: 1, nsymbols: 2, block_size: 2, ctm_data: ..., warn_missing: true}
@spec partition_1d(binary_string(), integer(), boundary_condition()) :: [ binary_string() ]
Partitions 1D data into blocks according to boundary condition.
@spec partition_2d(binary_matrix(), integer(), boundary_condition()) :: [ binary_matrix() ]
Partitions 2D data into blocks according to boundary condition.