In this paper, we propose a fast method for exactly enumerating a very large number of all lower cost solutions for various combinatorial problems. Our method is based on backtracking for a given decision diagram which represents all the feasible solutions. The main idea is to memoize the intervals of cost bounds to avoid duplicate search in the backtracking process. In contrast to usual pseudo-polynomial-time dynamic programming approaches, the computation time of our method does not directly depend on the total cost values, but is bounded by the input and output size of the decision diagrams. Therefore, it can be much faster if the cost values are large but the input/output decision diagrams are well-compressed. We demonstrate its practical efficiency by comparing our method to current available enumeration methods: for nontrivial size instances of the Hamiltonian path problem, our method succeeded in exactly enumerating billions of all lower cost solutions in a few seconds, which was hundred or much more times faster. Our method can be regarded as a novel search algorithm which integrates the two classical techniques, branch-and-bound and dynamic programming. This method would have many applications in various fields, including operations research, data mining, statistical testing, hardware/software system design, etc.
翻译:在本文中,我们提出了一个快速的方法来精确地罗列各种组合问题的所有较低成本解决方案。 我们的方法基于对代表所有可行解决方案的某个决定图的回溯跟踪。 主要的想法是记住成本界限的间隔间隔,以避免回溯跟踪过程中的重复搜索。 与通常的假极时动态编程方法相比,我们方法的计算时间并不直接取决于总成本值,而是受决定图表的输入和输出大小的约束。 因此,如果成本值很大,但投入/产出决定图受到很好的压缩,这个方法可以更快得多。 我们通过比较我们的方法和目前可用的查点方法来展示其实际效率:对于非边际大小的汉密尔顿路径问题,我们的方法成功地在几秒钟内精确地计算出数十亿个所有较低成本解决方案,这要快100倍或更多倍。 我们的方法可以被视为一种新型的搜索算法,将两种古典技术、分支和动态编程结合起来。 这种方法在各种领域, 包括研究、 数据设计、 硬件 等, 将许多应用到多种统计系统, 包括研究、 硬件 测试 。