template<class MoleculeLike>
class nuri::RingSetsFinder< MoleculeLike >
Wrapper class of the common routines of find_sssr() and find_relevant_rings().
- See also
- nuri::find_relevant_rings(), nuri::find_sssr()
Formally, SSSR (smallest set of smallest rings) is a minimum cycle basis of the molecular graph. As discussed in many literatures, there is no unique SSSR for a given molecular graph (even for simple molecules such as 2-oxabicyclo[2.2.2]octane), and the SSSR is often counter-intuitive. For example, the SSSR of cubane (although unique, due to symmetry reasons) contains only five rings, which is not most chemists would expect.
On the other hand, union of all SSSRs, sometimes called the relevant rings in the literatures, is unique for a given molecule, and is the "all
smallest rings" of the molecule, chemically speaking. It is more appropriate for most applications than SSSR.
We provide two functions along with this class to find the relevant rings and SSSR, respectively. If both are needed, it is recommended to construct this class first, and call find_relevant_rings() and find_sssr() member functions instead of calling the free functions directly.
This is based on the algorithm described in the following paper: Vismara, P. Electron. J. Comb. 1997, 4 (1), R9. DOI: 10.37236/1294
Time complexity: theoretically \(\mathcal{O}(\nu E^3)\), where \(\nu =
\mathcal{O}(E)\) is size of SSSR. For most molecules, however, this is \(\mathcal{O}(V^3)\).