Discrete structures are foundational materials for computer science and mathematics, which are related to set theory, symbolic logic, inductive proof, graph theory, combinatorics, probability theory, etc. Many problems are decomposed into discrete structures using simple primitive algebraic operations. A Binary Decision Diagram (BDD) is a representation of a Boolean function, one of the most basic models of discrete structures. After the epoch-making paper [1] by Bryant in 1986, BDD-based methods have attracted a great deal of attention. The BDD was originally developed for the efficient Boolean function manipulation required in VLSI logic design, however, later they are also used for sets of combinations which represent many kinds of combinatorial patterns. A Zero-suppressed BDD (ZDD) [2] is a variant of the BDD, customized for representing a set of combinations. ZDDs have been successfully applied not only to VLSI design, but also for solving various combinatorial problems, such as constraint satisfaction, frequent pattern mining, and graph enumeration. Recently, ZDDs have become more widely known, since D. E. Knuth intensively discussed ZDD-based algorithms in the latest volume of his famous series of books [3]. Although a quarter of a century has passed since Bryant first put forth his idea, there are still many interesting and exciting research topics related to BDDs and ZDDs [4]. One of the most important topics would be that, Knuth presented an extremely fast algorithm "Simpath" [3] to construct a ZDD which enumerates all the paths connecting two points in a given graph structure. This work is important because many kinds of practical problems are efficiently solved by some variations of this algorithm. We generically call such ZDD construction methods "frontier-based methods." The above techniques of data structures and algorithms have been implemented and published as an open software library, named "Graphillion"[5], [6]. Graphillion is a library for manipulating very large sets of graphs, based on ZDDs and frontier-based method. Graphillion is implemented as a Python extension in C++, to encourage easy development of its applications without introducing significant performance overhead. In order to organize an integrated method of algebraic operations for manipulating various types of discrete structures, and to construct standard techniques for efficiently solving large-scale and practical problems in various fields, A governmental agency in Japan started a nation-wide project: ERATO MINATO Discrete Structure Manipulation System Project in 2009. The project was successfully finished in this year, and a successor project, JSPS KAKENHI(S), is now running until 2020. Many interesting research results were produced in the last ERATO project, and some of topics are still attractive to be explored more. In this talk, we first show an overview of our research project, and then explain the basic techniques of BDDs and ZDDs used for various discrete structure manipulation. We also present a brief history of the research activity related to BDDs and ZDDs. We then show an overview of the frontier-based method for efficiently enumerating and indexing the solutions of combinatorial problems. We also present several topics on various applications of those stateof- the-art techniques.
['Shin-ichi Minato']
Power of Enumeration -- BDD/ZDD-Based Techniques for Discrete Structure Manipulation