🤖 AI Summary
Traditional decision diagrams (DDs) suffer from high time complexity when constructing both restricted and relaxed variants, limiting their scalability in discrete optimization. This work proposes a novel construction method that implicitly stores arcs, reducing the per-layer complexity to the theoretically optimal O(w), and proves this bound is unimprovable in the black-box model. Through algorithmic refinements—including implicit DD representation, efficient state updates, and optimized merge operations—coupled with a high-performance Julia implementation, the open-source solver ImplicitDDs.jl demonstrates substantial speedups over Gurobi on the Subset Sum problem, confirming both the theoretical efficacy and practical utility of the proposed approach.
📝 Abstract
Decision Diagrams (DDs) have emerged as a powerful tool for discrete optimization, with rapidly growing adoption. DDs are directed acyclic layered graphs; restricted DDs are a generalized greedy heuristic for finding feasible solutions, and relaxed DDs compute combinatorial relaxed bounds. There is substantial theory that leverages DD-based bounding, yet the complexity of constructing the DDs themselves has received little attention. Standard restricted DD construction requires $O(w \log(w))$ per layer; standard relaxed DD construction requires $O(w^2)$, where $w$ is the width of the DD. Increasing $w$ improves bound quality at the cost of more time and memory. We introduce implicit Decision Diagrams, storing arcs implicitly rather than explicitly, and reducing per-layer complexity to $O(w)$ for restricted and relaxed DDs. We prove this is optimal: any framework treating state-update and merge operations as black boxes cannot do better. Optimal complexity shifts the challenge from algorithmic overhead to low-level engineering. We show how implicit DDs can drive a MIP solver, and release ImplicitDDs.jl, an open-source Julia solver exploiting the implementation refinements our theory enables. Experiments demonstrate the solver outperforms Gurobi on Subset Sum.