The idea of CASP can be traced back to 1960s pioneer works by Corey et. al. In recent decades, this research area became highly active because of the dramatically improved computing power and the associated explosion of interest in new algorithms. Most CASP systems are developed based on two technologies: expert-coded rules and Machine Learning (ML). Expert-coded reaction rules had been applied in automatic generation of reactions. This approach is reliable yet limited to a specific set of rules (which should be continuously updated); as such, it lacks flexibility and is, potentially, biased by the process of how rules are generated. In contrast, millions of reaction templates, analogues to expert-coded rules but much more numerous, can be extracted from large reaction datasets using Machine Learning (ML) algorithms. However, a new issue arises as there may be too many options for each individual reaction step. The number of possible synthesis routes increases exponentially with the number of synthetic steps in a route. This problem is termed "combinatorial explosion". Algorithms for ranking and selecting templates were developed to reduce the computing load, but it is non-trivial to balance computing cost and quality of results without, potentially risking losing important routes.