Function fuse_constraints::computeEliminationOrder

Function Documentation

UuidOrdering fuse_constraints::computeEliminationOrder(const std::vector<fuse_core::UUID> &marginalized_variables, const fuse_core::Graph &graph)

Compute an efficient elimination order for the marginalized variables.

The marginalized_variables are guaranteed to be placed before any additional connected variables. Each time a variable is eliminated from the system, the resulting reduced system is independent of the eliminated variable. By eliminating the “marginalized variables” first, all of the “additional connected variables” will remain in the system, but they will not depend on any of the “marginalized variables”…which is what we want.

This function uses CCOLAMD to find a good elimination order that eliminates all the “marginalized

variables” first.

Parameters:
  • marginalized_variables[in] The variable UUIDs to be marginalized out

  • graph[in] A graph containing, at least, all constraints that involve at least one marginalized variable

Returns:

The mapping from variable UUID to the computed elimination order