https://effect.systems/blog/egraph-extraction.html The E-graph extraction problem is NP-complete Yihong Zhang June 22, 2023 In this quick note, I will show that the E-graph extraction problem is NP-complete. The E-graph extraction problem is defined as follows: Input: An E-graph G and a cost function mapping E-nodes to positive numbers. Output: A DAG t represented by G such that t has the lowest cost possible. First, the extraction problem is in NP^1 because it can be reduced to integer linear programming (ILP). Moreover, we show the extraction problem is NP-hard by reducing the minimum set cover problem to it. The minimum set cover problem is defined as follows (adapted from the Wikipedia): Input: A set of elements {1, 2, ..., n} (called the universe) and a collection S of m sets whose union equals the universe. Output: The smallest sub-collection of S whose union equals the universe. We show an instance of how this minimum set cover problem can be reduced to E-graph extraction: consider the universe \(U = \{1, 2, 3, 4, 5\}\) and the collection of sets \(S = \{ \{1, 2, 3\}, \{2, 4\}, \ {3, 4\}, \{4, 5\} \}\). The smallest subset of \(S\) that covers all of the elements is { {1, 2, 3}, {4, 5} }. Our construction is as follows: 1. For each \(j\in U\), we create a corresponding E-class \(c_{j}\). 2. For each collection \(S_i\), we create an E-class \(c_{S_i}\) with a singleton E-node \(S_i\). 3. For each \(S_i=\{j_1, \ldots, j_{l_m}\}\), we create a new E-node \(u_{j_k}(c_{S_i})\) in E-class \(c_{j_k}\) for all \(j_k\). 4. We create a root E-class with a special E-node whose children include all \(C_{j_k}\). 5. Every E-node has a uniform cost of 1.^2 This will produce the following E-graph for our example. The E-graph from our example and the optimal extraction The E-graph from our example and the optimal extraction The intuition behind this construction is that, to extract the root E-class, we have to cover all the elements in the universe, so we need to pick an E-node from each \(c_{j}\). To cover all \(c_{j}\)s with the smallest cost means picking as fewer \(S_i\) E-nodes as possible, which corresponds to a minimum set cover. As a side note, the construction here uses function symbols with non-constant arities (i.e., the root E-node). This can be fixed by replacing the root E-node with \(O(n)\) many E-nodes with binary function symbols forming a depth-\(O(\log n)\) binary tree, so our reduction only requires unary and binary function symbols. --------------------------------------------------------------------- 1. Here we consider the optimization variant of the NP complexity class. The decision version of the extract problem is, given an E-graph and a cost function, does there exist a DAG represented by the E-graph with a given cost \(n\)?-[?] 2. In fact, the costs of the root E-node and \(u_{j_k}\)'s do not matter and can be set as zero, as these E-nodes will be in the extracted DAG anyway. We (arbitrarily) set their cost to be 1 (instead of say 0) to make sure the cost model is strictly monotonic.-[?]