We give an algorithm that takes as input an $n$-vertex graph $G$ and an integer $k$, runs in time $2^{O(k^2)} n^{O(1)}$, and outputs a tree decomposition of $G$ of width at most $k$, if such a decomposition exists. This resolves the long-standing open problem of whether there is a $2^{o(k^3)} n^{O(1)}$ time algorithm for treewidth. In particular, our algorithm is the first improvement on the dependency on $k$ in algorithms for treewidth since the $2^{O(k^3)} n^{O(1)}$ time algorithm given by Bodlaender and Kloks [ICALP 1991] and Lagergren and Arnborg [ICALP 1991]. We also give an algorithm that given an $n$-vertex graph $G$, an integer $k$, and a rational $\varepsilon \in (0,1)$, in time $k^{O(k/\varepsilon)} n^{O(1)}$ either outputs a tree decomposition of $G$ of width at most $(1+\varepsilon)k$ or determines that the treewidth of $G$ is larger than $k$. Prior to our work, no approximation algorithms for treewidth with approximation ratio less than $2$, other than the exact algorithms, were known. Both of our algorithms work in polynomial space.
翻译:我们给出一个算法,输入为$n$顶点图$G$和整数$k$,运行时间为$2^{O(k^2)} n^{O(1)}$,若存在宽度至多为$k$的树分解,则输出$G$的这样一个树分解。这解决了关于是否存在$2^{o(k^3)} n^{O(1)}$时间算法求解树宽的长期未决问题。特别地,自Bodlaender与Kloks [ICALP 1991] 以及Lagergren与Arnborg [ICALP 1991] 提出$2^{O(k^3)} n^{O(1)}$时间算法以来,我们的算法首次改进了树宽算法中关于$k$的依赖关系。我们还给出另一个算法:输入为$n$顶点图$G$、整数$k$和有理数$\varepsilon \in (0,1)$,运行时间为$k^{O(k/\varepsilon)} n^{O(1)}$,要么输出$G$的宽度至多为$(1+\varepsilon)k$的树分解,要么判定$G$的树宽大于$k$。在我们工作之前,除精确算法外,尚无已知近似比小于2的树宽近似算法。我们的两个算法均在多项式空间内工作。