  This paper proposes a new general technique for maximal subgraph enumeration
which we call proximity search, whose aim is to design efficient enumeration
algorithms for problems that could not be solved by existing frameworks. To
support this claim and illustrate the technique we include output-polynomial
algorithms for several problems for which output-polynomial algorithms were not
known, including the enumeration of Maximal Bipartite Subgraphs, Maximal
k-Degenerate Subgraphs (for bounded k), Maximal Induced Chordal Subgraphs, and
Maximal Induced Trees. Using known techniques, such as reverse search, the
space of all maximal solutions induces an implicit directed graph called
"solution graph" or "supergraph", and solutions are enumerated by traversing
it; however, nodes in this graph can have exponential out-degree, thus
requiring exponential time to be spent on each solution. The novelty of
proximity search is a formalization that allows us to define a better solution
graph, and a technique, which we call canonical reconstruction, by which we can
exploit the properties of given problems to build such graphs. This results in
solution graphs whose nodes have significantly smaller (i.e., polynomial)
out-degree with respect to existing approaches, but that remain strongly
connected, so that all solutions can be enumerated in polynomial delay by a
traversal. A drawback of this approach is the space required to keep track of
visited solutions, which can be exponential: we further propose a technique to
induce a parent-child relationship among solutions and achieve polynomial space
when suitable conditions are met.
